blob: 2ed096bd5f042c86e8d71201a3225056e2531c35 (
plain)
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
|
diff --git a/watson.completion b/watson.completion
index 6c675b3..9311170 100644
--- a/watson.completion
+++ b/watson.completion
@@ -1,21 +1,29 @@
_watson_completion() {
- local IFS=$'
-'
- COMPREPLY=( $( env COMP_WORDS="${COMP_WORDS[*]}" \
- COMP_CWORD=$COMP_CWORD \
- _WATSON_COMPLETE=complete $1 ) )
+ local IFS=$'\n'
+ local response
+
+ response=$(env COMP_WORDS="${COMP_WORDS[*]}" COMP_CWORD=$COMP_CWORD _WATSON_COMPLETE=bash_complete $1)
+
+ for completion in $response; do
+ IFS=',' read type value <<< "$completion"
+
+ if [[ $type == 'dir' ]]; then
+ COMPREPLY=()
+ compopt -o dirnames
+ elif [[ $type == 'file' ]]; then
+ COMPREPLY=()
+ compopt -o default
+ elif [[ $type == 'plain' ]]; then
+ COMPREPLY+=($value)
+ fi
+ done
+
return 0
}
-_watson_completionetup() {
- local COMPLETION_OPTIONS=""
- local BASH_VERSION_ARR=(${BASH_VERSION//./ })
- # Only BASH version 4.4 and later have the nosort option.
- if [ ${BASH_VERSION_ARR[0]} -gt 4 ] || ([ ${BASH_VERSION_ARR[0]} -eq 4 ] && [ ${BASH_VERSION_ARR[1]} -ge 4 ]); then
- COMPLETION_OPTIONS="-o nosort"
- fi
-
- complete $COMPLETION_OPTIONS -F _watson_completion watson
+_watson_completion_setup() {
+ complete -o nosort -F _watson_completion watson
}
-_watson_completionetup;
+_watson_completion_setup;
+
|