mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-22 16:20:23 +02:00
18394: New word movement and editing widgets.
This commit is contained in:
parent
2941469f61
commit
1e57c42f47
13 changed files with 678 additions and 26 deletions
88
Functions/Zle/select-word-style
Normal file
88
Functions/Zle/select-word-style
Normal file
|
|
@ -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
|
||||
Loading…
Add table
Add a link
Reference in a new issue