1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-01-01 05:16:05 +01:00
zsh/Functions/Zle/forward-word-match
Peter Stephenson 5b32dece55 users/17132: skip-whitespace-first style for compatibility with bash etc.
in widgets using forward-word-match
2012-06-04 16:40:42 +00:00

43 lines
977 B
Text

emulate -L zsh
setopt extendedglob
autoload -Uz match-words-by-style
local curcontext=":zle:$WIDGET" word
local -a matched_words
integer count=${NUMERIC:-1}
if (( count < 0 )); then
(( NUMERIC = -count ))
zle ${WIDGET/forward/backward}
return
fi
while (( count-- )); do
match-words-by-style
if zstyle -t $curcontext skip-whitespace-first; then
# Standard non-zsh behaviour: skip leading whitespace and the word.
word=$matched_words[4]$matched_words[5]
else
# Traditional zsh behaviour.
# For some reason forward-word doesn't work like the other word
# commands; it skips whitespace only after any matched word
# characters.
if [[ -n $matched_words[4] ]]; then
# just skip the whitespace
word=$matched_words[4]
else
# skip the word and trailing whitespace
word=$matched_words[5]$matched_words[6]
fi
fi
if [[ -n $word ]]; then
(( CURSOR += ${#word} ))
else
return 1
fi
done
return 0