mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-19 13:33:52 +01:00
89 lines
1.7 KiB
Plaintext
89 lines
1.7 KiB
Plaintext
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 (d)efault (q)uit
|
|
${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
|