summaryrefslogtreecommitdiff
path: root/Functions/Zle/select-word-style
diff options
context:
space:
mode:
Diffstat (limited to 'Functions/Zle/select-word-style')
-rw-r--r--Functions/Zle/select-word-style88
1 files changed, 88 insertions, 0 deletions
diff --git a/Functions/Zle/select-word-style b/Functions/Zle/select-word-style
new file mode 100644
index 000000000..288517ef1
--- /dev/null
+++ b/Functions/Zle/select-word-style
@@ -0,0 +1,88 @@
+emulate -L zsh
+setopt extendedglob
+
+local -a word_functions
+
+word_functions=(backward-kill-word backward-word
+ capitalize-word down-case-word
+ forward-word kill-word
+ transpose-words up-case-word)
+
+[[ -z $1 ]] && autoload read-from-minibuffer
+
+local REPLY detail f
+
+if ! zle -l $word_functions[1]; then
+ for f in $word_functions; do
+ autoload -U $f-match
+ zle -N $f $f-match
+ done
+fi
+
+
+while true; do
+
+ if [[ -n $WIDGET && -z $1 ]]; then
+ read-from-minibuffer -k1 "Word styles (hit return for more detail):
+(b)ash (n)ormal (s)hell (w)hitespace (N)one (A)bort
+${detail}? " || return 1
+ else
+ REPLY=$1
+ fi
+
+ detail=
+
+ case $REPLY in
+ (b*)
+ # bash style
+ zstyle ':zle:*' word-style standard
+ zstyle ':zle:*' word-chars ''
+ ;;
+
+ (n*)
+ # normal zsh style
+ zstyle ':zle:*' word-style standard
+ zstyle ':zle:*' word-chars "$WORDCHARS"
+ ;;
+
+ (s*)
+ # shell command arguments or special tokens
+ zstyle ':zle:*' word-style shell
+ ;;
+
+ (w*)
+ # whitespace-delimited
+ zstyle ':zle:*' word-style space
+ ;;
+
+ (d*)
+ # default: could also return widgets to builtins here
+ zstyle -d ':zle:*' word-style
+ zstyle -d ':zle:*' word-chars
+ ;;
+
+ (q*)
+ # quit without setting
+ return 1
+ ;;
+
+ (*)
+ detail="\
+(b)ash: Word characters are alphanumerics only
+(n)ormal: Word characters are alphanumerics plus \$WORDCHARS
+(s)hell: Words are command arguments using shell syntax
+(w)hitespace: Words are whitespace-delimited
+(d)efault: Use default, no special handling (usually same as \`n')
+(q)uit: Quit without setting a new style
+"
+ if [[ -z $WIDGET || -n $1 ]]; then
+ print "Usage: $0 word-style
+where word-style is one of the characters in parentheses:
+$detail" >&2
+ return 1
+ fi
+ continue
+ ;;
+ esac
+ return
+done