mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-09 19:51:26 +01:00
f080429439
The string was quoted incorrectly and missed the final ":".
57 lines
1.2 KiB
Text
57 lines
1.2 KiB
Text
#compdef cdr
|
|
|
|
local expl insert_string
|
|
integer default insert
|
|
|
|
zstyle -t ':chpwd:' recent-dirs-default && default=1
|
|
if (( default )); then
|
|
zstyle -s ":completion:${curcontext}:" recent-dirs-insert insert_string
|
|
case $insert_string in
|
|
(both)
|
|
insert=4
|
|
;;
|
|
|
|
(fallback)
|
|
insert=3
|
|
;;
|
|
|
|
(always)
|
|
insert=2
|
|
;;
|
|
|
|
([tT]*|1|[yY]*)
|
|
insert=1
|
|
;;
|
|
|
|
(*)
|
|
insert=0
|
|
esac
|
|
fi
|
|
|
|
# See if we should fall back to cd completion.
|
|
if [[ default -ne 0 && insert -lt 2 && \
|
|
( CURRENT -ne 2 || (-n $words[2] && $words[2] != <->) ) ]]; then
|
|
$_comps[cd] "$@"
|
|
return
|
|
fi
|
|
|
|
local -a values keys
|
|
|
|
if (( insert )); then
|
|
# insert the actual directory, not the number
|
|
values=(${${(f)"$(cdr -l)"}##<-> ##})
|
|
# Suppress the usual space suffix, since there's no further argument
|
|
# and it's useful to be able to edit the directory e.g. add /more/stuff.
|
|
if _wanted -V recent-dirs expl 'recent directory' compadd -S '' -Q -a values
|
|
then
|
|
(( insert == 4 )) || return 0
|
|
fi
|
|
|
|
(( insert >= 3 )) || return
|
|
$_comps[cd] "$@"
|
|
else
|
|
values=(${${(f)"$(cdr -l)"}/ ##/:})
|
|
keys=(${values%%:*})
|
|
|
|
_describe -t dir-index 'recent directory index' values keys -V unsorted
|
|
fi
|