fish-shell/share/completions/cdh.fish

31 lines
1019 B
Fish
Raw Normal View History

2017-07-05 13:30:10 +08:00
function __fish_cdh_args
set -l all_dirs $dirprev $dirnext
set -l uniq_dirs
# This next bit of code doesn't do anything useful at the moment since the fish pager always
# sorts, and eliminates duplicate, entries. But we do this to mimic the modal behavor of `cdh`
# and in hope that the fish pager behavior will be changed to preserve the order of entries.
for dir in $all_dirs[-1..1]
if not contains $dir $uniq_dirs
set uniq_dirs $uniq_dirs $dir
end
end
# Only shorten $HOME to "~" if the token starts with a "~",
# otherwise fish will escape it.
set -l shorten_tilde 0
string match -q '~*' -- (commandline -ct); and set shorten_tilde 1
2017-07-05 13:30:10 +08:00
for dir in $uniq_dirs
if test $shorten_tilde -eq 1
set -l home_dir (string match -r "$HOME(/.*|\$)" "$dir")
if set -q home_dir[2]
set dir "~$home_dir[2]"
end
2017-07-05 13:30:10 +08:00
end
echo $dir
end
end
complete -c cdh -kxa '(__fish_cdh_args)'