X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=1d0f35747d46911c714d860f7e696f60769fe4d3;hb=5f9a26a3da1abedae0565001ccfb2551f4c24115;hp=eb1767eeeed4c39b5f262eb27e4d2d2e8fd4c162;hpb=06a39dc69b644a1f757481e3af31e8c1025a88ea;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index eb1767e..1d0f357 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -992,11 +992,10 @@ zle -N accept-line zle -N Accept-Line zle -N Accept-Line-HandleContext -# power completion - abbreviation expansion # power completion / abbreviation expansion / buffer expansion # see http://zshwiki.org/home/examples/zleiab for details # less risky than the global aliases but powerful as well -# just type the abbreviation key and afterwards ',.' to expand it +# just type the abbreviation key and afterwards 'ctrl-x .' to expand it declare -A abk setopt extendedglob setopt interactivecomments @@ -1195,10 +1194,10 @@ help_zle_parse_keybindings() if [[ "$cline" == (#s)[[:space:]]#\#k\#[[:space:]]##(#b)(*)[[:space:]]#(#e) ]]; then lastkeybind_desc="$match[*]" num_lines_elapsed=0 - #zsh pattern: matches lines that set a keybinding using bindkey or compdef -k + #zsh pattern: matches lines that set a keybinding using bind2map, bindkey or compdef -k # ignores lines that are commentend out # grabs first in '' or "" enclosed string with length between 1 and 6 characters - elif [[ "$cline" == [^#]#(bindkey|compdef -k)[[:space:]](*)(#b)(\"((?)(#c1,6))\"|\'((?)(#c1,6))\')(#B)(*) ]]; then + elif [[ "$cline" == [^#]#(bind2maps[[:space:]](*)-s|bindkey|compdef -k)[[:space:]](*)(#b)(\"((?)(#c1,6))\"|\'((?)(#c1,6))\')(#B)(*) ]]; then #description prevously found ? description not more than 2 lines away ? keybinding not empty ? if [[ -n $lastkeybind_desc && $num_lines_elapsed -lt 2 && -n $match[1] ]]; then #substitute keybinding string with something readable @@ -1408,7 +1407,7 @@ bind2maps emacs -- Right forward-char bind2maps viins vicmd -- Right vi-forward-char bind2maps viins vicmd -- Right vi-forward-char #k# Display list of abbreviations that expand when followed by ,. -bind2maps emacs viins -- -s ',.' zleiab +bind2maps emacs viins -- -s '^x.' zleiab bind2maps emacs viins -- -s '^xb' help-show-abk bind2maps emacs viins -- -s '^xM' inplaceMkDirs #k# display help for keybindings and ZLE @@ -1855,7 +1854,7 @@ grml_prompt_pre_default=( newline '' path '%B' percent '' - rc '%F{red}' + rc '%B%F{red}' rc-always '' sad-smiley '' shell-level '%F{red}' @@ -1876,7 +1875,7 @@ grml_prompt_post_default=( newline '' path '%b' percent '' - rc '%f' + rc '%f%b' rc-always '' sad-smiley '' shell-level '%f' @@ -1906,6 +1905,14 @@ grml_prompt_token_default=( vcs '0' ) +function grml_theme_has_token () { + if (( ARGC != 1 )); then + printf 'usage: grml_theme_has_token \n' + return 1 + fi + (( ${+grml_prompt_token_default[$1]} )) +} + function GRML_theme_add_token_usage () { cat <<__EOF__ Usage: grml_theme_add_token [-f|-i] [
 ]
@@ -1927,6 +1934,11 @@ function GRML_theme_add_token_usage () {
     return value is expected in the \$REPLY parameter. The use of these
     options is mutually exclusive.
 
+    There is a utility function \`grml_theme_has_token', which you can use
+    to test if a token exists before trying to add it. This can be a guard
+    for situations in which a \`grml_theme_add_token' call may happen more
+    than once.
+
   Example:
 
     To add a new token \`day' that expands to the current weekday in the
@@ -1990,7 +2002,7 @@ grml_theme_add_token: 
 and  need to by specified _both_!\n\n'
         shift 2
     fi
 
-    if (( ${+grml_prompt_token_default[$name]} )); then
+    if grml_theme_has_token $name; then
         printf '
 grml_theme_add_token: Token `%s'\'' exists! Giving up!\n\n' $name
         GRML_theme_add_token_usage
@@ -2035,7 +2047,7 @@ function grml_prompt_addto () {
     for it in "${items[@]}"; do
         zstyle -s ":prompt:${grmltheme}:${lr}:items:$it" pre apre \
             || apre=${grml_prompt_pre_default[$it]}
-        zstyle -s ":prompt:grml:${grmltheme}:${lr}:$it" post apost \
+        zstyle -s ":prompt:${grmltheme}:${lr}:items:$it" post apost \
             || apost=${grml_prompt_post_default[$it]}
         zstyle -s ":prompt:${grmltheme}:${lr}:items:$it" token new \
             || new=${grml_prompt_token_default[$it]}