summaryrefslogtreecommitdiff
path: root/Functions/Zle/forward-word-match
diff options
context:
space:
mode:
Diffstat (limited to 'Functions/Zle/forward-word-match')
-rw-r--r--Functions/Zle/forward-word-match36
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