diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2012-06-04 16:40:42 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2012-06-04 16:40:42 +0000 |
commit | 5b32dece551b9b71d5704701b1b5dcaf8eea09d2 (patch) | |
tree | a871f86c4b5a367e168600d1a08bf27635179217 /Functions/Zle/forward-word-match | |
parent | 07933936f35e7a2b41edc875a7e371d28100b056 (diff) | |
download | zsh-5b32dece551b9b71d5704701b1b5dcaf8eea09d2.tar.gz zsh-5b32dece551b9b71d5704701b1b5dcaf8eea09d2.tar.xz zsh-5b32dece551b9b71d5704701b1b5dcaf8eea09d2.zip |
users/17132: skip-whitespace-first style for compatibility with bash etc.
in widgets using forward-word-match
Diffstat (limited to 'Functions/Zle/forward-word-match')
-rw-r--r-- | Functions/Zle/forward-word-match | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/Functions/Zle/forward-word-match b/Functions/Zle/forward-word-match index 50e18cbde..e5b5ef3a6 100644 --- a/Functions/Zle/forward-word-match +++ b/Functions/Zle/forward-word-match @@ -8,32 +8,36 @@ local -a matched_words integer count=${NUMERIC:-1} if (( count < 0 )); then - (( NUMERIC = -count )) - zle ${WIDGET/forward/backward} - return + (( NUMERIC = -count )) + zle ${WIDGET/forward/backward} + return fi while (( count-- )); do - - match-words-by-style - + 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] + # just skip the whitespace + word=$matched_words[4] else - # skip the word and trailing whitespace - word=$matched_words[5]$matched_words[6] + # 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 + if [[ -n $word ]]; then + (( CURSOR += ${#word} )) + else + return 1 + fi done return 0 |