]> granicus.if.org Git - clang/commitdiff
[Bash-autocompletion] Check clang version in Bash
authorYuka Takahashi <yukatkh@gmail.com>
Wed, 28 Jun 2017 15:59:55 +0000 (15:59 +0000)
committerYuka Takahashi <yukatkh@gmail.com>
Wed, 28 Jun 2017 15:59:55 +0000 (15:59 +0000)
Summary:
Add check if user's clang version supports --autocomplete or not.
If not, we just autocomplete files.

Reviewers: ruiu, v.g.vassilev, teemperor

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D34607

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@306555 91177308-0d34-0410-b5e6-96231b3b80d8

utils/bash-autocomplete.sh

index ba908bcc0bc325b97470fbdfdc1d497d704ced5b..46e29b87bb54b504b305765ae02085bb7567e35b 100644 (file)
@@ -1,7 +1,7 @@
 # Please add "source /path/to/bash-autocomplete.sh" to your .bashrc to use this.
 _clang()
 {
-  local cur prev words cword arg
+  local cur prev words cword arg flags
   _init_completion -n : || return
 
   # bash always separates '=' as a token even if there's no space before/after '='.
@@ -24,7 +24,14 @@ _clang()
     arg="$w2=,$cur"
   fi
 
-  local flags=$( clang --autocomplete="$arg" )
+  flags=$( clang --autocomplete="$arg" 2>/dev/null )
+  # If clang is old that it does not support --autocomplete,
+  # fall back to the filename completion.
+  if [[ "$?" != 0 ]]; then
+    _filedir
+    return
+  fi
+
   if [[ "$cur" == '=' ]]; then
     COMPREPLY=( $( compgen -W "$flags" -- "") )
   elif [[ "$flags" == "" || "$arg" == "" ]]; then