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=-1.0 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 31709 invoked from network); 7 Jul 2020 11:50:59 -0000 Received: from ns1.primenet.com.au (HELO primenet.com.au) (203.24.36.2) by inbox.vuxu.org with ESMTPUTF8; 7 Jul 2020 11:50:59 -0000 Received: (qmail 29314 invoked by alias); 7 Jul 2020 11:50:53 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: Sender: zsh-workers@zsh.org X-Seq: 46202 Received: (qmail 3035 invoked by uid 1010); 7 Jul 2020 11:50:53 -0000 X-Qmail-Scanner-Diagnostics: from mail-io1-f46.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.102.3/25863. spamassassin: 3.4.4. Clear:RC:0(209.85.166.46):SA:0(-2.0/5.0):. Processed in 3.389995 secs); 07 Jul 2020 11:50:53 -0000 X-Envelope-From: roman.perepelitsa@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.166.46 as permitted sender) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=1o6p7RiS3REQ7tf72/30ubKxsSYkcAImkyqeB+gu9NY=; b=PPZB8oeA9/KOY8+OeKh4kP0aKBq50forxqb2IdKSvFSdAgc5K0jONlxmyifjCGAxiP z59TaO7I3v9MDAse6jUk/Sey6PzIYHtYRciwZEjnumA65qy3kjC5sP2l/BDuF3K+4DOl JZFKVKFwL5El01Zb0quwKc2cO+/mm4gzNlcr4z86izFNDnD5lGeUs3IZ8TqER752vyGO /hSDHsyB2m8rxHVH1+lQFI9c86KGW2tp+Yd0t8DxfhGg16srJjFLJ9hIfy7T98twNs5C nJ0jIZG14wAvfO+whHebZCNQXt0WuR8TXMCz7YwlmwtrTZWCAE1iydV8YE5zUydxkqIq zstg== X-Gm-Message-State: AOAM532dF7P3OJibGwH8p2g2jFdULHUBtmG85qknHZbQZWc0cS/lkkeZ a5A3n5oDKFi8D31Z0yNprPuZICei397Ym4t2Km+H2AhwVtg= X-Google-Smtp-Source: ABdhPJyMHMHvc/V+GzbOt5MjXQzLTsUBG6UZH3+p2ty6LwfDkcnyqhKH5D0S541YCchVCkwLaio5yQ7G5junJLHneCk= X-Received: by 2002:a6b:8dd1:: with SMTP id p200mr30681645iod.118.1594122616137; Tue, 07 Jul 2020 04:50:16 -0700 (PDT) MIME-Version: 1.0 From: Roman Perepelitsa Date: Tue, 7 Jul 2020 13:50:04 +0200 Message-ID: Subject: PATCH: Invoke prompt cleanup hooks when changing prompt To: Zsh hackers list Content-Type: multipart/mixed; boundary="00000000000043f1d705a9d89835" --00000000000043f1d705a9d89835 Content-Type: text/plain; charset="UTF-8" The documentation for promptinit states that themes can install cleanup hooks via prompt_cleanup. > If your function makes any other changes that should > be undone when the theme is disabled, your setup function > may call > > prompt_cleanup command > > where command should be suitably quoted. If your theme > is ever disabled or replaced by another, command is > executed with eval. The documentation also states that: > The precmd and preexec hooks are automatically > adjusted if the prompt theme changes or is disabled. If I understand it correctly, this implies that the following script should print "cleanup" and shouldn't print "hook". autoload -Uz promptinit promptinit prompt_foo_setup() { prompt_cleanup 'print cleanup' precmd_functions+=(hook) } prompt_themes+=(foo) prompt foo prompt off print -r -- $precmd_functions It doesn't print "hello" and does print "hook". I'm attaching a patch that does what I believe the documentation describes. I'm not very confident that I understood the documentation or that my patch is correct. Roman. --00000000000043f1d705a9d89835 Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kcbve7of0 ZGlmZiAtLWdpdCBhL0Z1bmN0aW9ucy9Qcm9tcHRzL3Byb21wdGluaXQgYi9GdW5jdGlvbnMvUHJv bXB0cy9wcm9tcHRpbml0CmluZGV4IGUyN2I4Nzc5YS4uYTk4NTBkMzVjIDEwMDY0NAotLS0gYS9G dW5jdGlvbnMvUHJvbXB0cy9wcm9tcHRpbml0CisrKyBiL0Z1bmN0aW9ucy9Qcm9tcHRzL3Byb21w dGluaXQKQEAgLTIwMCwzMyArMjAwLDM3IEBAIHByb21wdF9jbGVhbnVwICgpIHsKIHByb21wdCAo KSB7CiAgIGxvY2FsIC1hIHByb21wdF9vcHRzIHRoZW1lX2FjdGl2ZQogCi0gIHpzdHlsZSAtZyB0 aGVtZV9hY3RpdmUgOnByb21wdC10aGVtZSBjbGVhbnVwIHx8IHsKLSAgICAjIFRoaXMgaXMgZG9u ZSBoZXJlIHJhdGhlciB0aGFuIGluIHNldF9wcm9tcHQgc28gdGhhdCBpdAotICAgICMgaXMgc2Fm ZSBhbmQgc2FuZSBmb3Igc2V0X3Byb21wdCB0byBzZXRvcHQgbG9jYWxvcHRpb25zLAotICAgICMg d2hpY2ggd2lsbCBiZSBjbGVhcmVkIGJlZm9yZSB3ZSBhcnJpdmUgYmFjayBoZXJlIGFnYWluLgot ICAgICMgVGhpcyBpcyBhbHNvIHdoeSB3ZSBwYXNzIGFyb3VuZCB0aGUgcHJvbXB0X29wdHMgYXJy YXkuCi0gICAgW1sgLW8gcHJvbXB0YmFuZyBdXSAmJiBwcm9tcHRfb3B0cys9KGJhbmcpCi0gICAg W1sgLW8gcHJvbXB0Y3IgXV0gJiYgcHJvbXB0X29wdHMrPShjcikKLSAgICBbWyAtbyBwcm9tcHRw ZXJjZW50IF1dICYmIHByb21wdF9vcHRzKz0ocGVyY2VudCkKLSAgICBbWyAtbyBwcm9tcHRzcCBd XSAmJiBwcm9tcHRfb3B0cys9KHNwKQotICAgIFtbIC1vIHByb21wdHN1YnN0IF1dICYmIHByb21w dF9vcHRzKz0oc3Vic3QpCi0gICAgenN0eWxlIC1lIDpwcm9tcHQtdGhlbWUgY2xlYW51cCBcCi0g ICAgICAgICd6c3R5bGUgLWQgOnByb21wdC10aGVtZSBjbGVhbnVwOycgXAotCSdwcm9tcHRfZGVm YXVsdF9zZXR1cDsnIFwKLSAgICAgICAgJHtQUzErUFMxPSIkeyhxKVBTMX0ifSBcCi0gICAgICAg ICR7UFMyK1BTMj0iJHsocSlQUzJ9In0gXAotICAgICAgICAke1BTMytQUzM9IiR7KHEpUFMzfSJ9 IFwKLSAgICAgICAgJHtQUzQrUFM0PSIkeyhxKVBTNH0ifSBcCi0gICAgICAgICR7UlBTMStSUFMx PSIkeyhxKVJQUzF9In0gXAotICAgICAgICAke1JQUzIrUlBTMj0iJHsocSlSUFMyfSJ9IFwKLSAg ICAgICAgJHtSUFJPTVBUK1JQUk9NUFQ9IiR7KHEpUlBST01QVH0ifSBcCi0gICAgICAgICR7UlBS T01QVDIrUlBST01QVDI9IiR7KHEpUlBST01QVDJ9In0gXAotICAgICAgICAke1BTVkFSK1BTVkFS PSIkeyhxKVBTVkFSfSJ9IFwKLSAgICAgICAgInByZWNtZF9mdW5jdGlvbnM9KCR7KHEpcHJlY21k X2Z1bmN0aW9uc1tAXX0pIiBcCi0gICAgICAgICJwcmVleGVjX2Z1bmN0aW9ucz0oJHsocSlwcmVl eGVjX2Z1bmN0aW9uc1tAXX0pIiBcCi0gICAgICAgICJwcm9tcHRfb3B0cz0oICR7cHJvbXB0X29w dHNbKl19ICkiIFwKLSAgICAgICAgJ3JlcGx5PSh5ZXMpJworICB6c3R5bGUgLWcgdGhlbWVfYWN0 aXZlIDpwcm9tcHQtdGhlbWUgY2xlYW51cCAmJiB7CisgICAgbG9jYWwgLWEgcmVwbHkKKyAgICBl dmFsICIkdGhlbWVfYWN0aXZlIgogICB9CisKKyAgIyBUaGlzIGlzIGRvbmUgaGVyZSByYXRoZXIg dGhhbiBpbiBzZXRfcHJvbXB0IHNvIHRoYXQgaXQKKyAgIyBpcyBzYWZlIGFuZCBzYW5lIGZvciBz ZXRfcHJvbXB0IHRvIHNldG9wdCBsb2NhbG9wdGlvbnMsCisgICMgd2hpY2ggd2lsbCBiZSBjbGVh cmVkIGJlZm9yZSB3ZSBhcnJpdmUgYmFjayBoZXJlIGFnYWluLgorICAjIFRoaXMgaXMgYWxzbyB3 aHkgd2UgcGFzcyBhcm91bmQgdGhlIHByb21wdF9vcHRzIGFycmF5LgorICBbWyAtbyBwcm9tcHRi YW5nIF1dICYmIHByb21wdF9vcHRzKz0oYmFuZykKKyAgW1sgLW8gcHJvbXB0Y3IgXV0gJiYgcHJv bXB0X29wdHMrPShjcikKKyAgW1sgLW8gcHJvbXB0cGVyY2VudCBdXSAmJiBwcm9tcHRfb3B0cys9 KHBlcmNlbnQpCisgIFtbIC1vIHByb21wdHNwIF1dICYmIHByb21wdF9vcHRzKz0oc3ApCisgIFtb IC1vIHByb21wdHN1YnN0IF1dICYmIHByb21wdF9vcHRzKz0oc3Vic3QpCisgIHpzdHlsZSAtZSA6 cHJvbXB0LXRoZW1lIGNsZWFudXAgXAorICAgICAgJ3pzdHlsZSAtZCA6cHJvbXB0LXRoZW1lIGNs ZWFudXA7JyBcCisgICAgICAncHJvbXB0X2RlZmF1bHRfc2V0dXA7JyBcCisgICAgICAke1BTMStQ UzE9IiR7KHEpUFMxfSJ9IFwKKyAgICAgICR7UFMyK1BTMj0iJHsocSlQUzJ9In0gXAorICAgICAg JHtQUzMrUFMzPSIkeyhxKVBTM30ifSBcCisgICAgICAke1BTNCtQUzQ9IiR7KHEpUFM0fSJ9IFwK KyAgICAgICR7UlBTMStSUFMxPSIkeyhxKVJQUzF9In0gXAorICAgICAgJHtSUFMyK1JQUzI9IiR7 KHEpUlBTMn0ifSBcCisgICAgICAke1JQUk9NUFQrUlBST01QVD0iJHsocSlSUFJPTVBUfSJ9IFwK KyAgICAgICR7UlBST01QVDIrUlBST01QVDI9IiR7KHEpUlBST01QVDJ9In0gXAorICAgICAgJHtQ U1ZBUitQU1ZBUj0iJHsocSlQU1ZBUn0ifSBcCisgICAgICAicHJlY21kX2Z1bmN0aW9ucz0oJHso cSlwcmVjbWRfZnVuY3Rpb25zW0BdfSkiIFwKKyAgICAgICJwcmVleGVjX2Z1bmN0aW9ucz0oJHso cSlwcmVleGVjX2Z1bmN0aW9uc1tAXX0pIiBcCisgICAgICAicHJvbXB0X29wdHM9KCAke3Byb21w dF9vcHRzWypdfSApIiBcCisgICAgICAncmVwbHk9KHllcyknCisKICAgc2V0X3Byb21wdCAiJEAi CiAKICAgKCggJHsjcHJvbXB0X29wdHN9ICkpICYmCg== --00000000000043f1d705a9d89835--