From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 21410 invoked from network); 8 Dec 2022 08:45:32 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 8 Dec 2022 08:45:32 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1670489132; b=YTlwt3vHzDOZl+JeHGup68OgmIPZ6gB3QQXRIiiJYgg7VgAOEoLiletpx0FNuwnGcsWj5lzopa soui1NlaWvDoJWT5NfsmAg3jomsPsSSpdlcFwjA17/0iBF8iLS7ykQwexM22VBRjvZxIAFYeSL x8LTjRY7Qal2sK5nZGu3DTPev1WfgkNouIp1Va7PzYJy0XHkvEL5QsI0ar95+k/5tpe7L3iKPE gjuTAJgUbw55kIoOHMOBSLNBSALLK2YNiK9i2FBD3TtmA0f/xn04pzQdNOAVnYX8XE1U5y578w 9jCi/wgi58rsOEeIn7W3nEPxNF0JvYtTs+4yERAb3VOVCQ==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-yb1-f172.google.com) smtp.remote-ip=209.85.219.172; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1670489132; bh=QBFKdq3DOVBid1NDP7vqytpi+BPHuDF7pcrNg7ORijk=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=EYgK7E+hEdi1Uwbvm6qdrZS9a6klO4eVYLRPmJHeqfWV0opLMfXeRGm8r1JWUnR5aNYu36fG3v VPZdUyQe4yQDMyv3h6KGO67f+MQloLfFzeHW2SYhpUJGo0GDCuZ1xwP9bl8Qmele27nOgInMFN lIXSHw8hLg9HwpnNny8rjQ2rTk9L5OFUrAYP9XNQXJV50yQv92AkpF7tBis5aSUr6PxcVrbXCN oMHpAMcUWa14FyBB3xFHgEp+XObOXl/3GacWyMNXULroUPvYLtakycMI1fO8B/CbCFNeCVGTCM ShkqgNbqOvwoiLOCHIO2ILqm5d2o+5GyNua7RWYmnozIVA==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID :Date:From:In-Reply-To:References:MIME-Version:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=C+nUUxEt/z+sDIl6W/U4FUZPjgXJKaWV2XHNh740mzo=; b=apZhr2I6wV1pPm6EAXGtGTVEw1 vhx2HHjghYKkRAMXidcJvoQvnkCbtGtRabz47af2hIdq3oeefr3s+aWTHs2Z5EwBmtRlWFN981sS6 SQ9b+dfnOBj3UsKNfu4Du+IU7R1l5g9/AHreK0qqK4F2YkxqBuXNO4Yt4zRBHbPgdmnVuLbvwgH5R 7KIZnsFzqXvib+6CQmprJu9bqOmqYzQ+zQz7mTCpESwaH5XDwmxyJJyHk80QV/rgGfKVZKdOupFRI iq+dc90rIWMw02ToOVcsXV35QGda1IYuAp28LF/ZXvHguReeMKz7AkQyOpZjMjsld6YUbrzruyrP9 wigsmeBQ==; Received: by zero.zsh.org with local id 1p3CX5-0006uD-Fi; Thu, 08 Dec 2022 08:45:31 +0000 Authentication-Results: zsh.org; iprev=pass (mail-yb1-f172.google.com) smtp.remote-ip=209.85.219.172; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-yb1-f172.google.com ([209.85.219.172]:40512) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1p3CWp-0006bB-Db; Thu, 08 Dec 2022 08:45:16 +0000 Received: by mail-yb1-f172.google.com with SMTP id g4so822572ybg.7 for ; Thu, 08 Dec 2022 00:45:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=C+nUUxEt/z+sDIl6W/U4FUZPjgXJKaWV2XHNh740mzo=; b=oAaCHR95REhj68oFk84HaGRuE9AJPpdqsdBl8yGmA91qh2ZoMhV/YPnTWc3M6ygJ5P BDshbbHmTtVNhmE5ktCr36QvgypOo3nInf5b1gZ3sM99B0TuvlqmJOCqFFLPY95a4NsK jTeo/CUDk2U7IMVhNEOnaQiAZX2tntuB+hpUAtLG4xjbWy+n2u8+y73pRIOzCAYm4R+o R7nrbIgBOnfyJQNZqlSpWIszHWQox/lJAt3rlaFE57gAqbqEz/N3N2D4tVgl0SVCexWR K3UX9FlXaYiPJjvqkWIBHdprMxz5Ht5ZMhS1doFFV2KbuZSSFS1MYuNS184wp32STsvh mu7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=C+nUUxEt/z+sDIl6W/U4FUZPjgXJKaWV2XHNh740mzo=; b=Q71L8dedaZYIpY9xF58nCGbNLk2nlYA2NeYNcdwoslkkLVZdQX/HezCKpqiiNZjEHi 1XO5RYnQwuj+tebtSZAWTo2LbnegDmJ+awTDV/iokmEHy2TljuHDXz/f2lYVyLgmSZK6 eyBFzqrn4Q4vCHy/TIiRxoruESi/Km4T8NaVuwgDqDzYsp+oRBxEizutjCN0jea0cr+C HTv5/RtlWVFYFHnca1f8Xeq56D91XpUauUBZli4gPYomUvYI0XBAWNzeAFT6yxu1uaFd 8dFrU2IZZmKjsFatYeXcX83r8AjiS8/4nSPFJdpCfcc9+qBm7cOKJXh/ZCd9WlAPnU8u 2ydg== X-Gm-Message-State: ANoB5pn2bA/w6gT3NiZqoyd01elyl20dnWJ04v1FSkzVQvNcc8CjyNcx bOcnocrlZ0UxGpPd6d7mirNYZyzC0moA/DO70B2/XRcqVfM= X-Google-Smtp-Source: AA0mqf5IahEPBpuxLeb6PoLy419nzlnHVbf5o+SOr4nQQerOEShL7U2vQhTJsrfcALE7CP3T5pFp76PM9BcMbQD78eI= X-Received: by 2002:a25:ac2:0:b0:6e9:3d7a:8012 with SMTP id 185-20020a250ac2000000b006e93d7a8012mr68122414ybk.449.1670489114078; Thu, 08 Dec 2022 00:45:14 -0800 (PST) MIME-Version: 1.0 References: <9e3026aa-39a1-dd50-4d29-a64724d4eaaf@irit.fr> In-Reply-To: From: Roman Perepelitsa Date: Thu, 8 Dec 2022 09:45:02 +0100 Message-ID: Subject: Re: [bug report] prompt can erase messages written on the terminal by background processes To: Bart Schaefer Cc: Millian Poquet , zsh-workers@zsh.org Content-Type: text/plain; charset="UTF-8" X-Seq: 51133 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: On Thu, Dec 8, 2022 at 4:46 AM Bart Schaefer wrote: > > On Wed, Dec 7, 2022 at 2:57 PM Roman Perepelitsa > wrote: > > > > On Wed, Dec 7, 2022 at 8:04 PM Millian Poquet wrote: > > > > > > prompt can erase messages written on the terminal by background processes > > > > There is no way around it. Zle assumes that nobody else prints to the terminal. > > Perhaps try this. > > get_cursor_pos() { > print -n $'\e[6n' > IFS=$'\e[;' read -s -d R -A ${1:-reply} > shift 3 ${1:-reply} > } > precmd() { > local rowcol > get_cursor_pos rowcol > if (( $rowcol[1] > 1 )) > then print > fi > } Here's the simplified version of Millian's test: % setopt prompt_subst; PS1='%# $(sleep 2)'; ( sleep 1; print -n hello ) &! This prints "hello" and then erases it. The precmd hook runs before prompt expansion, so it has no effect. Even if this somehow worked for this test case, it would merely mask the problem. Zle has to assume that nobody else writes to the TTY. It's user error to violate this assumption. Roman.