1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-10 12:40:58 +02:00

default values for styles in _expand_word, listing expansions with ^Xd, _expand uses add-space style (10854)

This commit is contained in:
Sven Wischnowsky 2000-04-20 08:04:56 +00:00
parent a903dcba4f
commit c9bedcd989
4 changed files with 67 additions and 10 deletions

View file

@ -1,3 +1,9 @@
2000-04-20 Sven Wischnowsky <wischnow@informatik.hu-berlin.de>
* 10854: Completion/Commands/_expand_word, Completion/Core/_expand,
Doc/Zsh/compsys.yo: default values for styles in _expand_word,
listing expansions with ^Xd, _expand uses add-space style
2000-04-20 Oliver Kiddle <opk@zsh.org>
* 10848: Completion/Builtins/_print, Completion/Core/.distfiles,

View file

@ -0,0 +1,13 @@
#compdef -K _expand_word complete-word \C-xe _list_expansions list-choices \C-xd
# Simple completion front-end implementing expansion.
local curcontext="$curcontext"
if [[ -z "$curcontext" ]]; then
curcontext="expand-word:::"
else
curcontext="expand-word:${curcontext#*:}"
fi
_main_complete _expand

View file

@ -28,7 +28,8 @@ exp=("$word")
# First try substitution. That weird thing spanning multiple lines
# changes quoted spaces, tabs, and newlines into spaces.
zstyle -s ":completion:${curcontext}:" substitute expr &&
{ zstyle -s ":completion:${curcontext}:" substitute expr ||
[[ "$curcontext" = expand-word:* ]] && expr=1 } &&
[[ "${(e):-\$[$expr]}" -eq 1 ]] &&
exp=( "${(e)exp//\\[
]/ }" )
@ -41,7 +42,8 @@ subd=("$exp[@]")
# Now try globbing.
zstyle -s ":completion:${curcontext}:" glob expr &&
{ zstyle -s ":completion:${curcontext}:" glob expr ||
[[ "$curcontext" = expand-word:* ]] && expr=1 } &&
[[ "${(e):-\$[$expr]}" -eq 1 ]] &&
exp=( ${~exp} )
@ -65,28 +67,56 @@ zstyle -s ":completion:${curcontext}:" sort sort
[[ "$sort" = (yes|true|1|on) ]] && exp=( "${(@o)exp}" )
# If there is only one expansion, add a suitable suffix
(($#exp == 1)) && suf='' && [[ -d $exp && "$exp[1]" != */ ]] && suf='/'
if (( $#exp == 1 )); then
if [[ -d $exp && "$exp[1]" != */ ]]; then
suf=/
elif zstyle -T ":completion:${curcontext}:" add-space; then
suf=
fi
fi
if [[ -z "$compstate[insert]" ]] ;then
_description all-expansions expl 'all expansions' "o:$word"
if [[ "$sort" = menu ]]; then
_description expansions expl expansions "o:$word"
else
_description -V expansions expl expansions "o:$word"
fi
compadd "$expl[@]" -UQ -qS "$suf" - "$exp"
compadd "$expl[@]" -UQ -qS "$suf" - "$exp[@]"
else
_tags all-expansions expansions original
if _requested all-expansions; then
_description all-expansions expl 'all expansions'
compadd "$expl[@]" -UQ -qS "$suf" - "$exp"
fi
if [[ $#exp -gt 1 ]] && _requested expansions; then
local i normal dir
if [[ "$sort" = menu ]]; then
_description expansions expl expansions "o:$word"
else
_description -V expansions expl expansions "o:$word"
fi
compadd "$expl[@]" -UQ - "$exp[@]"
if zstyle -T ":completion:${curcontext}:" add-space; then
suf=' '
else
suf=
fi
normal=()
dir=()
for i in "$exp[@]"; do
if [[ -d "$i" && "$i" != */ ]]; then
dir=( "$dir[@]" "$i" )
else
normal=( "$dir[@]" "$i" )
fi
done
(( $#dir )) && compadd "$expl[@]" -UQ -qS/ - "$dir[@]"
(( $#normal )) && compadd "$expl[@]" -UQ -qS "$suf" - "$normal[@]"
fi
_requested original expl original && compadd "$expl[@]" -UQ - "$word"

View file

@ -74,7 +74,7 @@ to be loaded before the completion system is initialized (i.e. the
tt(compinit) function is called) to make sure that the tt(menu-select)
widget defined by it will be redefined, too.
Should you need to use the original copmpletion commands, you can still
Should you need to use the original completion commands, you can still
bind keys to the old functions by putting a `tt(.)' in front of the
command name, e.g. `tt(.expand-or-complete)'.
@ -761,8 +761,12 @@ accepted.
)
kindex(add-space, completion style)
item(tt(add-space))(
This style is used by the tt(_prefix) completer to decide if a space
should be inserted before the suffix.
This style is used by the tt(_expand) completer. If it `true' (the
default), a space will be inserted after all words resulting forom the
expansion (except for directory names which get a slash).
It is also used by tt(_prefix) completers to decide if a space should
be inserted before the suffix.
)
kindex(ambiguous, completion style)
item(tt(ambiguous))(
@ -2263,6 +2267,10 @@ item(tt(_expand_word (^Xe)))(
Performs expansion on the current word: equivalent to the standard
tt(expand-word) command, but using the tt(_expand) completer. Before
calling it, the var(function) field is set to `tt(expand-word)'.
Different from tt(_expand), this uses a `tt(1)' (one) as default
value for the tt(substitute) and tt(glob) styles, i.e. both types of
expansion will normally be performed.
)
findex(_history_complete_word) (\e/)
item(tt(_history_complete_word) (\e/))(