Browse Source

Auxiliary: Bash-comp: use _init_completion instead of _split_longopt

Using `_init_completion -s` will handle the option splitting and set the
`split` var [1].

Keep setting `split` manually for the older manual bash completion
initialization.

[1] https://github.com/scop/bash-completion/blob/main/bash_completion.d/000_bash_completion_compat.bash#L227
Ahmad Samir 1 year ago
parent
commit
d03b4acaa9
1 changed files with 9 additions and 3 deletions
  1. 9 3
      Auxiliary/bash-completion/cmake

+ 9 - 3
Auxiliary/bash-completion/cmake

@@ -2,14 +2,18 @@
 
 _cmake()
 {
-    local cur prev words cword split=false
+    local is_old_completion=false
+
+    local cur prev words cword split
     if type -t _init_completion >/dev/null; then
-        _init_completion -n = || return
+        _init_completion -s || return
     else
         # manual initialization for older bash completion versions
         COMPREPLY=()
         cur="${COMP_WORDS[COMP_CWORD]}"
         prev="${COMP_WORDS[COMP_CWORD-1]}"
+        is_old_completion=true
+        split=false
     fi
 
     # Workaround for options like -DCMAKE_BUILD_TYPE=Release
@@ -89,7 +93,9 @@ _cmake()
             ;;
     esac
 
-    _split_longopt && split=true
+    if $is_old_completion; then
+        _split_longopt && split=true
+    fi
 
     case "$prev" in
         -C|-P|--graphviz|--system-information)