zsh-workers
 help / color / mirror / code / Atom feed
From: Peter Stephenson <pws@csr.com>
To: zsh-workers@zsh.org
Subject: Re: What's the last command in prompt expansion?
Date: Tue, 15 Dec 2009 10:02:31 +0000	[thread overview]
Message-ID: <200912151002.nBFA2Ve3029420@news01.csr.com> (raw)
In-Reply-To: <slrnhidgfb.2pm.joerg@alea.gnuu.de>

=?UTF-8?Q?J=C3=B6rg?= Sommer wrote:
> what should be the expansion of %? in the prompt, the return code of the
> last command run at the prompt or the return code of the last command run
> by zsh?

Neither, necessarily, it's more complicated than that.  Most
encapsulated commands---precmd, chpwd etc. etc., plus anything in
zle---save and restore the status.  However, anything considered by the
shell to be run as part of the main execution thread (a phrase I
deliberately haven't attempted to define in detail) will set the status
directly.

> I've a function triggered via TRAPALARM that modifies PS1, by resetting
> its value and running zle reset-prompt. After the first time this
> function was executed the return value isn't the one of the last command,
> e.g. it's not 1 after executing false.
> 
> Do I have to save the return value and put the value into PS1?

Traps don't save and restore the status.  This is deliberate, they are
supposed to be able to return a status to the surrounding environment.

Saving the status in TRAPALRM might be good enough for your purposes.

TRAPALRM() {
   integer stat=$?
   # ....
   return $stat
}

However, that might have side effects in some cases, since return values
from traps are special; I'd have to look in more detail to decide if
this is important with TRAPALRM, it may not be.  Also, since TRAPALRM is
usually executed at the command prompt maybe this isn't important.  (I
presume you're trying to trap keyboard inactivity so there isn't a
simple way of doing this with, say, the periodic function.)

-- 
Peter Stephenson <pws@csr.com>            Software Engineer
Tel: +44 (0)1223 692070                   Cambridge Silicon Radio Limited
Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, UK


Member of the CSR plc group of companies. CSR plc registered in England and Wales, registered number 4187346, registered office Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom


  reply	other threads:[~2009-12-15 10:02 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-14 22:53 Jörg Sommer
2009-12-15 10:02 ` Peter Stephenson [this message]
2009-12-15 10:23   ` Peter Stephenson
2009-12-18 16:45     ` Jörg Sommer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200912151002.nBFA2Ve3029420@news01.csr.com \
    --to=pws@csr.com \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).