-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathchang-zsh-completion
More file actions
35 lines (30 loc) · 866 Bytes
/
Copy pathchang-zsh-completion
File metadata and controls
35 lines (30 loc) · 866 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
function __chang() {
local cmd_dir
local comp_word
local cword
local -a completions
cword=${COMP_WORDS[COMP_CWORD]}
for comp_word in "${COMP_WORDS[@]:1:$(( COMP_CWORD > 0 ? COMP_CWORD - 1 : 0 ))}"; do
cmd_dir=${cmd_dir:+$cmd_dir/}${comp_word}
done
cmd_dir=${PWD}/.chang/bin${cmd_dir:+/$cmd_dir}
dirname=${cmd_dir##*/}
COMPREPLY=()
if [[ -d $cmd_dir ]]; then
completions=($(find ${cmd_dir} -type f -or -type l))
completions=(${completions[*]#$cmd_dir/})
completions=(${completions[*]%%/*})
for comp_word in "${completions[@]}"; do
if [[
$comp_word =~ ^$cword &&
$comp_word != $dirname &&
$cword != ${cmd_dir##*/}
]]; then
COMPREPLY+=($comp_word)
fi
done
fi
}
complete -F __chang chang