about summary refs log tree commit diff
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