From 5b32dece551b9b71d5704701b1b5dcaf8eea09d2 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 4 Jun 2012 16:40:42 +0000 Subject: users/17132: skip-whitespace-first style for compatibility with bash etc. in widgets using forward-word-match --- Functions/Zle/forward-word-match | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) (limited to 'Functions/Zle/forward-word-match') 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 -- cgit 1.4.1