aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2016-12-27 02:26:00 +1300
committerTom Ryder <tom@sanctum.geek.nz>2016-12-27 02:26:00 +1300
commit90dcadfb2e6e82b7d5e9bdbac2c109433f70caf7 (patch)
treec4d5ba26f25be189cf76fd6eef1103b9fe068b84
parentc360f95111c23374490acbec30c22b85e1e3542b (diff)
downloaddotfiles-90dcadfb2e6e82b7d5e9bdbac2c109433f70caf7.tar.gz
dotfiles-90dcadfb2e6e82b7d5e9bdbac2c109433f70caf7.zip
Realised easy win avoiding subshells
And also the PROMPT_RETURN fudge in Bash/Zsh
-rw-r--r--bash/bashrc.d/prompt.bash11
-rw-r--r--ksh/kshrc.d/prompt.ksh6
-rw-r--r--zsh/zshrc.d/prompt.zsh13
3 files changed, 7 insertions, 23 deletions
diff --git a/bash/bashrc.d/prompt.bash b/bash/bashrc.d/prompt.bash
index 776ac8a6..d923ef20 100644
--- a/bash/bashrc.d/prompt.bash
+++ b/bash/bashrc.d/prompt.bash
@@ -6,11 +6,8 @@ prompt() {
# Turn complex, colored PS1 and debugging PS4 prompts on
on)
- # Declare the PROMPT_RETURN variable as an integer
- declare -i PROMPT_RETURN
-
# Set up pre-prompt command
- PROMPT_COMMAND='PROMPT_RETURN=$? ; history -a'
+ PROMPT_COMMAND='history -a'
# If Bash 4.0 is available, trim very long paths in prompt
((BASH_VERSINFO[0] >= 4)) && PROMPT_DIRTRIM=4
@@ -23,7 +20,7 @@ prompt() {
PS1=$PS1'\w'
# Add sub-commands; VCS, job, and return status checks
- PS1=$PS1'$(prompt vcs)$(prompt job)$(prompt ret)'
+ PS1=$PS1'$(ret=$?;prompt vcs;prompt job;prompt ret)'
# Add prefix and suffix
PS1='${PROMPT_PREFIX}'$PS1'${PROMPT_SUFFIX}'
@@ -83,7 +80,7 @@ prompt() {
# Revert to simple inexpensive prompts
off)
- unset -v PROMPT_COMMAND PROMPT_DIRTRIM PROMPT_RETURN
+ unset -v PROMPT_COMMAND PROMPT_DIRTRIM
PS1='\$ '
PS2='> '
PS3='? '
@@ -218,7 +215,7 @@ prompt() {
# Show return status of previous command in angle brackets, if not zero
ret)
- ((PROMPT_RETURN)) && printf '<%u>' "$PROMPT_RETURN"
+ ((ret)) && printf '<%u>' "$ret"
;;
# Show the count of background jobs in curly brackets, if not zero
diff --git a/ksh/kshrc.d/prompt.ksh b/ksh/kshrc.d/prompt.ksh
index 99e193b2..4a58f46d 100644
--- a/ksh/kshrc.d/prompt.ksh
+++ b/ksh/kshrc.d/prompt.ksh
@@ -20,15 +20,11 @@ function prompt {
# Add sub-commands; working directory with ~ abbreviation, VCS, job
# count, and previous command return value
- PS1=$PS1'$(prompt pwd)$(prompt vcs)$(prompt job)$(prompt ret)'
+ PS1=$PS1'$(ret=$?;prompt pwd;prompt vcs;prompt job;prompt ret)'
# Add prefix and suffix
PS1='${PROMPT_PREFIX}'$PS1'${PROMPT_SUFFIX}'
- # Add a wrapper around the prompt as determined so far so that the
- # return value from the previous command doesn't get lost
- PS1='$(ret=$?;printf %s "'"$PS1"'")'
-
# Add terminating "$" or "#" sign
PS1=$PS1'\$'
diff --git a/zsh/zshrc.d/prompt.zsh b/zsh/zshrc.d/prompt.zsh
index 5dc00fd3..27db61cb 100644
--- a/zsh/zshrc.d/prompt.zsh
+++ b/zsh/zshrc.d/prompt.zsh
@@ -8,14 +8,6 @@ prompt() {
on)
setopt promptsubst promptpercent
- # Declare the PROMPT_RETURN variable as an integer
- declare -i PROMPT_RETURN
-
- # Set up pre-prompt command
- precmd() {
- PROMPT_RETURN=$?
- }
-
# Basic prompt shape depends on whether we're in SSH or not
PS1=
if [[ -n $SSH_CLIENT ]] || [[ -n $SSH_CONNECTION ]] ; then
@@ -24,7 +16,7 @@ prompt() {
PS1=$PS1'%~'
# Add sub-commands; VCS, job, and return status checks
- PS1=$PS1'$(prompt vcs)$(prompt job)$(prompt ret)'
+ PS1=$PS1'$(ret=$?;prompt vcs;prompt job;prompt ret)'
# Add prefix and suffix
PS1='${PROMPT_PREFIX}'$PS1'${PROMPT_SUFFIX}'
@@ -52,7 +44,6 @@ prompt() {
# Revert to simple inexpensive prompts
off)
- unset -v precmd PROMPT_RETURN
PS1='\$ '
PS2='> '
PS3='? '
@@ -187,7 +178,7 @@ prompt() {
# Show return status of previous command in angle brackets, if not zero
ret)
- ((PROMPT_RETURN)) && printf '<%u>' "$PROMPT_RETURN"
+ ((ret)) && printf '<%u>' "$ret"
;;
# Show the count of background jobs in curly brackets, if not zero