summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugues Hiegel <hugues.hiegel@qosmos.com>2012-03-15 16:05:46 +0100
committerHugues Hiegel <hugues.hiegel@qosmos.com>2012-03-15 16:05:46 +0100
commit5b60455691922c0acf971557a138f3176cba0838 (patch)
treea02791d3305d87322aca63b0ec4f8d344f254425
parentdb2424324b9012f25c622a5e18a43cf7160b93cf (diff)
[Keys] Binds ^K to redefine current prompt. :)
-rw-r--r--12_Prompts.zsh17
-rw-r--r--user:hugues/KeyBindings.zsh4
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