mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-25 17:20:25 +02:00
users/17132: skip-whitespace-first style for compatibility with bash etc.
in widgets using forward-word-match
This commit is contained in:
parent
07933936f3
commit
5b32dece55
4 changed files with 101 additions and 76 deletions
|
|
@ -1,3 +1,10 @@
|
|||
2012-06-04 Peter Stephenson <p.w.stephenson@ntlworld.com>
|
||||
|
||||
* users/17132: Doc/Zsh/contrib.yo,
|
||||
Functions/Zle/forward-word-match,
|
||||
Functions/Zle/select-word-style: skip-whitespace-first style for
|
||||
compatibility with bash and other editors in forward-word.
|
||||
|
||||
2012-05-31 Peter Stephenson <pws@csr.com>
|
||||
|
||||
* Foudil Brétel: 30495: Completion/Unix/Command/_systemd (also
|
||||
|
|
@ -16333,5 +16340,5 @@
|
|||
|
||||
*****************************************************
|
||||
* This is used by the shell to define $ZSH_PATCHLEVEL
|
||||
* $Revision: 1.5661 $
|
||||
* $Revision: 1.5662 $
|
||||
*****************************************************
|
||||
|
|
|
|||
|
|
@ -1734,6 +1734,16 @@ context is examined and if it contains the string tt(back), the word before
|
|||
the cursor is considered, else the word after cursor is considered. Some
|
||||
examples are given below.
|
||||
|
||||
The style tt(skip-whitespace-first) is only used with the
|
||||
tt(forward-word) widget. If it is set to true, then tt(forward-word)
|
||||
skips any non-word-characters, followed by any non-word-characters:
|
||||
this is similar to the behaviour of other word-orientated widgets,
|
||||
and also that used by other editors, however it differs from the
|
||||
standard zsh behaviour. When using tt(select-word-style) the widget
|
||||
is set in the context tt(:zle:*) to tt(true) if the word style is
|
||||
tt(bash) and tt(false) otherwise. It may be overridden by setting it in
|
||||
the more specific context tt(:zle:forward-word*).
|
||||
|
||||
Here are some examples of use of the styles, actually taken from the
|
||||
simplified interface in tt(select-word-style):
|
||||
|
||||
|
|
|
|||
|
|
@ -14,13 +14,16 @@ if (( count < 0 )); then
|
|||
fi
|
||||
|
||||
while (( count-- )); do
|
||||
|
||||
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]
|
||||
|
|
@ -28,6 +31,7 @@ while (( count-- )); do
|
|||
# skip the word and trailing whitespace
|
||||
word=$matched_words[5]$matched_words[6]
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n $word ]]; then
|
||||
(( CURSOR += ${#word} ))
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ word_functions=(backward-kill-word backward-word
|
|||
|
||||
[[ -z $1 ]] && autoload -Uz read-from-minibuffer
|
||||
|
||||
local REPLY detail f wordstyle
|
||||
local REPLY detail f wordstyle teststyle
|
||||
|
||||
if ! zle -l $word_functions[1]; then
|
||||
for f in $word_functions; do
|
||||
|
|
@ -21,7 +21,6 @@ fi
|
|||
|
||||
|
||||
while true; do
|
||||
|
||||
if [[ -n $WIDGET && -z $1 ]]; then
|
||||
read-from-minibuffer -k1 "Word styles (hit return for more detail):
|
||||
(b)ash (n)ormal (s)hell (w)hitespace (d)efault (q)uit
|
||||
|
|
@ -38,28 +37,33 @@ ${detail}? " || return 1
|
|||
# bash style
|
||||
wordstyle=standard
|
||||
zstyle ':zle:*' word-chars ''
|
||||
zstyle ':zle:*' skip-whitespace-first true
|
||||
;;
|
||||
|
||||
([nN]*)
|
||||
# normal zsh style
|
||||
wordstyle=standard
|
||||
zstyle ':zle:*' word-chars "$WORDCHARS"
|
||||
zstyle ':zle:*' skip-whitespace-first false
|
||||
;;
|
||||
|
||||
([sS]*)
|
||||
# shell command arguments or special tokens
|
||||
wordstyle=shell
|
||||
zstyle ':zle:*' skip-whitespace-first false
|
||||
;;
|
||||
|
||||
([wW]*)
|
||||
# whitespace-delimited
|
||||
wordstyle=space
|
||||
zstyle ':zle:*' skip-whitespace-first false
|
||||
;;
|
||||
|
||||
(d*)
|
||||
# default: could also return widgets to builtins here
|
||||
wordstyle=
|
||||
zstyle -d ':zle:*' word-chars
|
||||
zstyle -d ':zle:*' skip-whitespace-first
|
||||
;;
|
||||
|
||||
(q*)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue