Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Xterm title changing prompt problem: HELP!

Geoff Wing wrote:

> Shawn Leas <sleas@xxxxxxxxxxxxxxxxxxx> typed:
> :This new thing I found is too kewl, but I need a little help.
> :However, my right prompt is shifted to the left.  I suspect
> :This is due to zsh keeping track of the length of the left
> :part of the prompt, then adjusting where to put the right one.
> :Should I just not have a right prompt? Or is there a way around
> :this?
> :PROMPT='];[%l] %n@%m %1v (%h) %t[%l] %n@%m %1v (%h) %t '
>          ^ insert ``%{''             ^ insert ``%}''
> thus
> PROMPT='%{^[];[%l] %n@%m %1v (%h) %t^G%}[%l] %n@%m %1v (%h) %t '
> >From the manual (section PROMPT EXPANSION):
>         %{...%}
>             Include a string as a literal escape sequence.  The
>             string within the braces should not change the cur-
>             sor position.  Brace pairs can nest.

Or alternatively, take the escape sequence out of PROMPT and "echo -n" it
from inside the precmd() function ... here is my version:

PROMPT='%? //%n@%B%m%b%//
%l%1v%!> '
RPROMPT='(%T, %w)'
function precmd {
 echo -n "^[]0;//$USER@$HOSTNAME$PWD/ ($UNAME)^G"

The advantage of this is that it doesn't mess up non-xterm terminals so
much (where the escape sequence will not be recognised and thus _will_
shift the cursor). PROMPT will overwrite the "echo -n"ed line whether it
is printed or not (so long as it is less than 80 chars).

Andrew Gallagher

Messages sorted by: Reverse Date, Date, Thread, Author