diff options
author | Hugues Hiegel <hugues.hiegel@qosmos.com> | 2012-03-15 16:05:46 +0100 |
---|---|---|
committer | Hugues Hiegel <hugues.hiegel@qosmos.com> | 2012-03-15 16:05:46 +0100 |
commit | 5b60455691922c0acf971557a138f3176cba0838 (patch) | |
tree | a02791d3305d87322aca63b0ec4f8d344f254425 | |
parent | db2424324b9012f25c622a5e18a43cf7160b93cf (diff) |
[Keys] Binds ^K to redefine current prompt. :)
-rw-r--r-- | 12_Prompts.zsh | 17 | ||||
-rw-r--r-- | user:hugues/KeyBindings.zsh | 4 |
2 files changed, 14 insertions, 7 deletions
diff --git a/12_Prompts.zsh b/12_Prompts.zsh index 61ca77a..afe2ede 100644 --- a/12_Prompts.zsh +++ b/12_Prompts.zsh @@ -77,6 +77,17 @@ __hbar() fi } +__get_prompt_lines() +{ + local lines + lines=$( (__expand_text "$PS1 $@" ) | sed "s/\\(.\{,$COLUMNS\}\\)/\\1\n/g" ) + lines=$( echo "$lines" | sed -n '/^$/n;p' | wc -l ) + # Got number of empty lines at end of command, because they are screwed up above... + lines=$(( $lines + $( echo -n "$@" | tr ';\n' '.;' | sed 's/^\(.*[^;]\)\(;*\)$/\2/' | wc -c ) )) + + echo $lines +} + preexec () { __term_title "$2" @@ -87,11 +98,7 @@ preexec () __hbar __redefine_prompt - local lines - lines=$( (__expand_text "$PS1 $1" ) | sed "s/\\(.\{,$COLUMNS\}\\)/\\1\n/g" ) - lines=$( echo "$lines" | sed -n '/^$/n;p' | wc -l ) - # Got number of empty lines at end of command, because they are screwed up above... - lines=$(( $lines + $( echo -n "$1" | tr ';\n' '.;' | sed 's/^\(.*[^;]\)\(;*\)$/\2/' | wc -c ) )) + local lines=$(__get_prompt_lines "$1") tput sc for i in {1..$lines} ; tput cuu1 diff --git a/user:hugues/KeyBindings.zsh b/user:hugues/KeyBindings.zsh index 02dd29a..ea844a9 100644 --- a/user:hugues/KeyBindings.zsh +++ b/user:hugues/KeyBindings.zsh @@ -237,8 +237,8 @@ do bindkey -M $keymap 'q' push-line bindkey -M $keymap 'Q' push-line - bindkey -M $keymap -s 'K' 'Q tput clear\n' - bindkey -M $keymap -s 'B' 'Q tput clear ; tput cup $(tput lines) 0\n' + bindkey -M $keymap -s 'K' 'Q for i in {1..$(__get_prompt_lines)} ; tput cuu1\n' + bindkey -M $keymap -s 'B' 'Q tput clear ; tput cup $(tput lines) 0\n' done # redefines push-line for vicmd |