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, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 11126 invoked from network); 29 Nov 2021 11:37:11 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 29 Nov 2021 11:37:11 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1638185831; b=kYDRJU008GVEEr9Hp6a3+jK0OXO9wZ7sp53Tz0K86UC4gFeRG/4auEP4Si7ExOrBzCnOhS7TNm s+SkMORXeuLOdx5rA7sQSe3tTCV8VFktjaosG3xZsOATifwm+Bw7YjlDPerffV1y2qoA1iNBau 5gb/ece2q7eZ4yUvkyo/4L6iSTeBDCPnvS/DFr2vLTADG4+g9wlhLXogExGiLMIh7u+qH+pS3L AZ6m/50COMK5LoLF6DeaFS5G0qidUjGLGDZRqRETgnnbeEC4Kq1cWbSYMdYK/wVBQwtPvx1ELF AzXqLrfFOU3chEKLuGKK8aW67NvDLiTpiS4e4p+ymnRFbA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-qk1-f171.google.com) smtp.remote-ip=209.85.222.171; 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=1638185831; bh=CuVUIP36qnxMINo8/YwYmjd/1jN9LevjeYKeUdOylw8=; 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=LTdMuGYoOZ/4snpL+WYeVeYCf67nISnDWZydNwxPGqzq49cK+qMyJxQ8TkzG9VsarFriRsQQrW aKBGmYplxXkJalJZFgQGPpAzOZ1WLIkxLpE5c5lC+i82U861c3WRU2lbEDx2pd+tsNmg9qeBRW /RqZp7qU73MRwXvrgq+rZVx6dfZ6DECK1YUezGFp+9W62YT1GKGGB2YEjllpbvkO0Co4vouFQw 07hbuNlL+BU2+5hN0ngLEsfL7gJY6cL6puXYEOPtTPOVeBWS/DOaIXfN3UQ/wnRr6DZaWnDa0L zw0LiNvSX6k25L546HaEuZezk9+iuk5loDs3MOLgoGkUYw==; 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=XtTK3ovpD417pRLDMTVHRbC68bGi7/zKBbj9LKcPpl4=; b=mW+MkA90r8j+DwioDIiALAKIPz /ZU3rUkiCtkmDtEW3Vkflxg1Ll2Vc16HL96hduVwSlkECMokUcs8Vw1NVDeSGC66vsn1c22iuZmnZ Kh4lZ9Hu4jWmaWhcfSHZjXL2dXXLIVAn412afLgOkBbiDsC/ta5oJcEY4sqNu2yzpqesdyAGGvbWt 6nTI/hW6PsvnqSmH9Ws4MCfaQeFBSlxYtD09W1CH+mDC0/jZyFqlm0volbSqlS9S6CD68/hVBPqRc 4N8JxOBYggJ4sRpPjBpp2zo6vG/1f6/FCWYkbJ/QzO/RJ6fy4s6AZfKDDn/wQGNjO9mSHqbBJzbMr T0P8MgZw==; Received: from authenticated user by zero.zsh.org with local id 1mrey5-000H8i-L0; Mon, 29 Nov 2021 11:37:09 +0000 Authentication-Results: zsh.org; iprev=pass (mail-qk1-f171.google.com) smtp.remote-ip=209.85.222.171; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-qk1-f171.google.com ([209.85.222.171]:34738) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1mrexo-000Grs-6t; Mon, 29 Nov 2021 11:36:53 +0000 Received: by mail-qk1-f171.google.com with SMTP id t6so22520884qkg.1 for ; Mon, 29 Nov 2021 03:36:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=XtTK3ovpD417pRLDMTVHRbC68bGi7/zKBbj9LKcPpl4=; b=jT5xZuJ/vudcNEpPPaZzw5EeD641rrnPudLcePRuZbTXgM5V4V/9L/vNGwlolTwIsU 8Gpa4kEME/XXKWaJz1b7xbbOqYiyoIGIg4pI9bxMw4Orn6xF8XEy6wHRqiMIguY6PNHL IRtDcPbht9f1TEYxFHiw41QB7j+nKnoDFwWHnl5/MHNY1hzBG/wBZCWgG+wp/5fs0jUu DUPU7//6K/040rDB/hD67TlbL6oeouqrwj65IYZl+VcrPvsit2lC5gUiYHQw18dh8d7q 2LQTacYttwtTxO0KNalzAxZUJtLGlB2nca+5qqyFnIVjS7SqzSgP04JyuqCos/5+oPD8 e/RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=XtTK3ovpD417pRLDMTVHRbC68bGi7/zKBbj9LKcPpl4=; b=dpYQBPc/E/+5vcW4tb6ScPRgLKsRD90JepQVmekjUeguUlq/ioe0l5B59g2/8QN9qY 92ZT/9RgZt2v28bLri/qF2+LcjWCY44N0fyS3K/9sjbXfqPaWvs8WHav7eYg+PGsFzSG NBmW38EXDNMr96RpYltobc87qC4yELIv9d1FGYyojXiYNP5KWMQa0Jer7KfSpQgmvhpz ao1Z7FHIUyeAUAVNfsbvA8bpGbOuuLEVOThXouXRmHBKMCqp3lt41c3aN3K5Q5RIavH0 Fm/kV9Jwy1cmmewHbtTffDSJ53KIrk/H9SNI/sp1xVeJZqj2ROVRmveEH6jXY4SWjkqj gIrA== X-Gm-Message-State: AOAM531zaOU1uevoj0nGp/L1rIISLR9IARmrdELmjdT80CTVXOjt0gXW hOOfmpc67AcYZZNj7BjWxK6YQ6zEmjEKtkZZR5o= X-Google-Smtp-Source: ABdhPJz2UY030RgSdEMp9PzcflrGPDmFasmzXHe+ctAqR+oyUN1TCAXl3y76l7LDiawhKsah8P/4GpNNJTq0V8RU+g8= X-Received: by 2002:a37:9c11:: with SMTP id f17mr29499742qke.731.1638185810860; Mon, 29 Nov 2021 03:36:50 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Roman Perepelitsa Date: Mon, 29 Nov 2021 12:36:40 +0100 Message-ID: Subject: Re: Prompt expansion on signals To: Bart Schaefer Cc: Zsh hackers list Content-Type: multipart/mixed; boundary="0000000000005595dc05d1ebdb99" X-Seq: 49617 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: --0000000000005595dc05d1ebdb99 Content-Type: text/plain; charset="UTF-8" On Mon, Nov 29, 2021 at 2:38 AM Bart Schaefer wrote: > > To clarify this point (in part for Oliver), the question is not what > happens when the signal handler is a zsh function and that function > expands prompts. The problem occurs when a default (C-implementation) > signal handler causes ZLE to redraw the prompt as a side-effect. "... > when prompt is expanded in a signal handler" confused me for a while > the first time I read through this. Thank you. What makes WINCH and CHLD special is that the default signal handler for them cannot be overridden. User traps for these signals run after the default handlers not instead of them. > I'm not understanding the distinction ... you can control prompt_subst > in your config as well. I'm just pointing out another case where a > user might want a particular global config that is messed with by > "emulate -R". The case you are bringing up can be fixed by adding "-L" to "emulate", right? A function that unintentionally resets all global options will cause other issues apart from breaking prompt. Aside from signals, prompt expansion happens either with global options or with options that are active during "zle reset-prompt". If I have control over my rc files, I have control over these options by following these rules: 1. Set the desired global options in zshrc. 2. All functions that change options must set local_options. 3. Functions that invoke reset-prompt widget (either directly or indirectly) must not change options even with local_options. The nice thing about these rules is that they are already being followed by all decent plugins and all zsh code bundled with zsh itself. If I wanted to ensure correct prompt expansion on WINCH and CHLD, the rules would be stricter: 1. Set the desired global options in zshrc. 2. Functions must not change options, not even with local_options. Now most plugins and most bundled zsh code are ruled out. > For SIGCHLD in particular you could try "setopt nonotify" in your zle > widgets. This has a surprising effect of suppressing the job notification altogether. Here's how it goes: 1. CHLD arrives when my zle widget is running with local_options and no_notify. Notification is not printed. 2. I press ENTER. Notification is not printed because now notify is set. 3. If I run "jobs", notification finally gets printed and the job is removed from the job table. > I haven't followed the logic through very thoroughly, but what if > instead of delaying the signal handling, we delayed reprinting the > prompt? Is there a reason an in-progress widget would want the prompt > redisplayed without an explicit call to reset-prompt? I like this idea. I'm attaching a patch that implements it. Also available here: https://github.com/romkatv/zsh/commit/cdcb141c880799847f2b068fef5d097736d484d6 WDYT? Roman. --0000000000005595dc05d1ebdb99 Content-Type: text/plain; charset="US-ASCII"; name="postpone-zle-refresh.txt" Content-Disposition: attachment; filename="postpone-zle-refresh.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kwklgw8n0 ZGlmZiAtLWdpdCBhL1NyYy9abGUvemxlX21haW4uYyBiL1NyYy9abGUvemxlX21haW4uYw0KaW5k ZXggOWVkZjMwZTAxLi42YTQ5MWY4YjAgMTAwNjQ0DQotLS0gYS9TcmMvWmxlL3psZV9tYWluLmMN CisrKyBiL1NyYy9abGUvemxlX21haW4uYw0KQEAgLTgzLDYgKzgzLDExIEBAIGludCBkb25lOw0K IC8qKi8NCiBpbnQgbWFyazsNCiANCisvKiBabGUgbmVlZHMgdG8gYmUgcmVmcmVzaGVkICovDQor DQorLyoqLw0KK3N0YXRpYyBpbnQgemxlbmVlZHNyZWZyZXNoOw0KKw0KIC8qDQogICogU3RhdHVz ICgkPykgc2F2ZWQgYmVmb3JlIGZ1bmN0aW9uIGVudHJ5LiAgVGhpcyBpcyB0aGUNCiAgKiBzdGF0 dXMgd2UgbmVlZCB0byB1c2UgaW4gcHJvbXB0cy4NCkBAIC0xNDE3LDYgKzE0MjIsOCBAQCBleGVj emxlZnVuYyhUaGluZ3kgZnVuYywgY2hhciAqKmFyZ3MsIGludCBzZXRfYmluZGssIGludCBzZXRf bGJpbmRrKQ0KICAgICBUaGluZ3kgc2F2ZV9iaW5kayA9IGJpbmRrOw0KICAgICBUaGluZ3kgc2F2 ZV9sYmluZGsgPSBsYmluZGs7DQogDQorICAgIHpsZWFjdGl2ZSsrOw0KKw0KICAgICBpZiAoc2V0 X2JpbmRrKQ0KIAliaW5kayA9IGZ1bmM7DQogICAgIGlmICh6bGVtZXRhbGluZSkgew0KQEAgLTE1 ODUsNiArMTU5MiwxMSBAQCBleGVjemxlZnVuYyhUaGluZ3kgZnVuYywgY2hhciAqKmFyZ3MsIGlu dCBzZXRfYmluZGssIGludCBzZXRfbGJpbmRrKQ0KICAgICBpZiAoaXNyZXBlYXQpDQogICAgICAg ICB2aWlucmVwZWF0ID0gIWludmljbWRtb2RlKCk7DQogDQorICAgIGlmICgtLXpsZWFjdGl2ZSA9 PSAxICYmIHpsZW5lZWRzcmVmcmVzaCkgew0KKwl6bGVuZWVkc3JlZnJlc2ggPSAwOw0KKwl6cmVm cmVzaCgpOw0KKwkJfQ0KKw0KICAgICByZXR1cm4gcmV0Ow0KIH0NCiANCkBAIC0yMTQzLDcgKzIx NTUsMTAgQEAgemxlX21haW5fZW50cnkoaW50IGNtZCwgdmFfbGlzdCBhcCkNCiAJYnJlYWs7DQog DQogICAgIGNhc2UgWkxFX0NNRF9SRUZSRVNIOg0KLQl6cmVmcmVzaCgpOw0KKwlpZiAoemxlYWN0 aXZlID4gMSkNCisJICAgIHpsZW5lZWRzcmVmcmVzaCA9IDE7DQorCWVsc2UNCisJICAgIHpyZWZy ZXNoKCk7DQogCWJyZWFrOw0KIA0KICAgICBjYXNlIFpMRV9DTURfU0VUX0tFWU1BUDoNCmRpZmYg LS1naXQgYS9TcmMvWmxlL3psZV9yZWZyZXNoLmMgYi9TcmMvWmxlL3psZV9yZWZyZXNoLmMNCmlu ZGV4IGQ5ZDk1MDNlMi4uNmIyYThkNGQ1IDEwMDY0NA0KLS0tIGEvU3JjL1psZS96bGVfcmVmcmVz aC5jDQorKysgYi9TcmMvWmxlL3psZV9yZWZyZXNoLmMNCkBAIC0xMTg0LDggKzExODQsNyBAQCB6 cmVmcmVzaCh2b2lkKQ0KIAlpZiAod2luY2hhbmdlZCkgew0KIAkgICAgbW92ZXRvKDAsIDApOw0K IAkgICAgdDAgPSBvbG5jdDsJCS8qIHRoaXMgaXMgdG8gY2xlYXIgZXh0cmEgbGluZXMgZXZlbiB3 aGVuICovDQotCSAgICB3aW5jaGFuZ2VkID0gMDsJLyogdGhlIHRlcm1pbmFsIGNhbm5vdCBUQ0NM RUFSRU9ECSAgKi8NCi0JICAgIGxpc3RzaG93biA9IDA7DQorCSAgICBsaXN0c2hvd24gPSAwOwkv KiB0aGUgdGVybWluYWwgY2Fubm90IFRDQ0xFQVJFT0QJICAqLw0KIAl9DQogI2VuZGlmDQogCS8q IHdlIHByb2JhYmx5IHNob3VsZCBvbmx5IGhhdmUgZXhwbGljaXRseSBzZXQgYXR0cmlidXRlcyAq Lw0KQEAgLTExOTMsOSArMTE5MiwxMCBAQCB6cmVmcmVzaCh2b2lkKQ0KIAl0c2V0Y2FwKFRDU1RB TkRPVVRFTkQsIDApOw0KIAl0c2V0Y2FwKFRDVU5ERVJMSU5FRU5ELCAwKTsNCiAJdHh0YXR0cm1h c2sgPSAwOw0KLQ0KLQlpZiAodHJhc2hlZHpsZSAmJiAhY2xlYXJmbGFnKQ0KLQkgICAgcmVleHBh bmRwcm9tcHQoKTsgDQorCWlmICgodHJhc2hlZHpsZSAmJiAhY2xlYXJmbGFnKSB8fCB3aW5jaGFu Z2VkKSB7DQorCSAgICB3aW5jaGFuZ2VkID0gMDsNCisJICAgIHJlZXhwYW5kcHJvbXB0KCk7DQor CX0NCiAJcmVzZXR2aWRlbygpOw0KIAlyZXNldG5lZWRlZCA9IDA7CS8qIHVuc2V0ICovDQogCW9w dXRfcnBtcHQgPSAwOwkJLyogbm8gcmlnaHQtcHJvbXB0IGN1cnJlbnRseSBvbiBzY3JlZW4gKi8N CmRpZmYgLS1naXQgYS9TcmMvdXRpbHMuYyBiL1NyYy91dGlscy5jDQppbmRleCBmOTEyN2M3MGMu LjAxNTRmMzExMiAxMDA2NDQNCi0tLSBhL1NyYy91dGlscy5jDQorKysgYi9TcmMvdXRpbHMuYw0K QEAgLTE4NTAsMTIgKzE4NTAsMTAgQEAgbW9kX2V4cG9ydCBzdHJ1Y3QgdHR5aW5mbyBzaHR0eWlu Zm87DQogLyoqLw0KIG1vZF9leHBvcnQgaW50IHJlc2V0bmVlZGVkOw0KIA0KLSNpZmRlZiBUSU9D R1dJTlNaDQogLyogd2luZG93IHNpemUgY2hhbmdlZCAqLw0KIA0KIC8qKi8NCiBtb2RfZXhwb3J0 IGludCB3aW5jaGFuZ2VkOw0KLSNlbmRpZg0KIA0KIHN0YXRpYyBpbnQNCiBhZGp1c3RsaW5lcyhp bnQgc2lnbmFsbGVkKQ0KQEAgLTE5ODIsMTEgKzE5ODAsNyBAQCBhZGp1c3R3aW5zaXplKGludCBm cm9tKQ0KICNlbmRpZiAvKiBUSU9DR1dJTlNaICovDQogDQogICAgIGlmICh6bGVhY3RpdmUgJiYg cmVzZXR6bGUpIHsNCi0jaWZkZWYgVElPQ0dXSU5TWg0KLQl3aW5jaGFuZ2VkID0NCi0jZW5kaWYg LyogVElPQ0dXSU5TWiAqLw0KLQkgICAgcmVzZXRuZWVkZWQgPSAxOw0KLQl6bGVlbnRyeShaTEVf Q01EX1JFU0VUX1BST01QVCk7DQorCXdpbmNoYW5nZWQgPSByZXNldG5lZWRlZCA9IDE7DQogCXps ZWVudHJ5KFpMRV9DTURfUkVGUkVTSCk7DQogICAgIH0NCiB9DQo= --0000000000005595dc05d1ebdb99--