-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathproject-completion
65 lines (54 loc) · 1.47 KB
/
project-completion
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# bash completion for project-mod -*- shell-script -*-
__filedir_wrapper()
{
[ $# -ne 2 ] && return
local dironly=$1 BPPATH="$2" list cur BPPATH
[ -z "$BPPATH" ] && return
_init_completion || return
[ -z "$cur" ] && COMPREPLY=( "/" ) && return
if [[ "$dironly" == "yes" ]]; then
list=$( compgen -d -- $BPPATH/$cur )
else
list=$( compgen -o filenames -A file -- $BPPATH/$cur )
fi
COMPREPLY=()
for j in $list; do
if [[ -d "$j" ]]; then
COMPREPLY+=("${j#$BPPATH/}/")
else
COMPREPLY+=("${j#$BPPATH/}")
fi
done
}
_lsp()
{
__filedir_wrapper no "`lsp`"
} &&
_cdp()
{
__filedir_wrapper yes "`lsp`"
} &&
_chproject()
{
local prev cur
_init_completion || return
case $cur in
-*)
COMPREPLY=( $( compgen -W '--set-default --read-config' -- "$cur" ) )
;;
*)
if [ "$prev" == "$1" ]; then
[[ -z "$PROJECT_BASE" ]] && return
local -A projects
for file in "$PROJECT_BASE"/*; do
[[ -d "$file" ]] && projects["${file#"$PROJECT_BASE"/}"]=1
done
COMPREPLY=( $( compgen -W '${!projects[@]}' -- "$cur" ) )
fi
;;
esac
} &&
complete -F _lsp -o bashdefault -o nospace lsp &&
complete -F _cdp -o bashdefault -o nospace cdp &&
complete -F _chproject -o bashdefault chproject
# ex: filetype=sh