Re: [PATCH] git-prompt: make colors available in custom prompts
- From
Andreas Schwab <schwab@linux-m68k.org>
- Date
- May 2, 2016, 07:15 UTC
- Message-ID
- <87oa8p0w2c.fsf@linux-m68k.org>
- In-Reply-To
- <5726F647.6030805@xs4all.nl>
Simon Oosthoek <s.oosthoek@xs4all.nl> writes:
Show 21 quoted lines
> Hi Andrew > > sorry, I only noticed your request this morning... > > On 22/04/16 07:00, Andrew Schwartzmeyer wrote: >> diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh >> index f18aedc73..ffe79168c 100644 >> --- a/contrib/completion/git-prompt.sh >> +++ b/contrib/completion/git-prompt.sh >> @@ -12,8 +12,8 @@ >> # source ~/.git-prompt.sh >> # 3a) Change your PS1 to call __git_ps1 as >> # command-substitution: >> -# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' >> -# ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ ' >> +# Bash: PS1="[\u@\h \W$(__git_ps1 ' (%s)')]\$ " >> +# ZSH: setopt PROMPT_SUBST ; PS1="[%n@%m %c$(__git_ps1 ' (%s)')]\$ " > > I haven't tested this at all, but when using double quotes, you need to at > least check all the escapings, like \$ should probably be: \\\$ when used > in double quotes.
By using double quotes the command subsititution is expanded when PS1 is set, which makes it pretty useless.
> The original reason for not using colors in command substitution mode was > that the prompt string length was not calculated correctly by bash and it > messed up the commandline with very long commands (relative to the > terminal width), when browsing the command history.
If you want to include control characters in the prompt that don't contribute to the length you have to enclose them in \[ \]. The problem is that \[ \] are processed before embedded command substitutions are expanded, thus they cannot produce such control characters.
Andreas.
-- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different."