mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-23 04:30:24 +02:00
18394: New word movement and editing widgets.
This commit is contained in:
parent
2941469f61
commit
1e57c42f47
13 changed files with 678 additions and 26 deletions
39
Functions/Zle/forward-word-match
Normal file
39
Functions/Zle/forward-word-match
Normal file
|
@ -0,0 +1,39 @@
|
|||
emulate -L zsh
|
||||
setopt extendedglob
|
||||
|
||||
autoload 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
|
||||
|
||||
# For some reason forward-word doesn't work like the other word
|
||||
# word commnds; 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
|
||||
|
||||
if [[ -n $word ]]; then
|
||||
(( CURSOR += ${#word} ))
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
|
||||
return 0
|
Loading…
Add table
Add a link
Reference in a new issue