Merged to 5.0 in r309438.
On Wed, Jul 26, 2017 at 6:36 AM, Yuka Takahashi via cfe-commits <cfe-commits@lists.llvm.org> wrote: > Author: yamaguchi > Date: Wed Jul 26 06:36:58 2017 > New Revision: 309113 > > URL: http://llvm.org/viewvc/llvm-project?rev=309113&view=rev > Log: > [Bash-autocompletion] Show HelpText with possible flags > > Summary: > `clang --autocomplete=-std` will show > ``` > -std: Language standard to compile for > -std= Language standard to compile for > -stdlib= C++ standard library to use > ``` > after this change. > > However, showing HelpText with completion in bash seems super tricky, so > this feature will be used in other shells (fish, zsh...). > > Reviewers: v.g.vassilev, teemperor, ruiu > > Subscribers: cfe-commits, hiraditya > > Differential Revision: https://reviews.llvm.org/D35759 > > Modified: > cfe/trunk/lib/Driver/Driver.cpp > cfe/trunk/test/Driver/autocomplete.c > cfe/trunk/utils/bash-autocomplete.sh > > Modified: cfe/trunk/lib/Driver/Driver.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=309113&r1=309112&r2=309113&view=diff > ============================================================================== > --- cfe/trunk/lib/Driver/Driver.cpp (original) > +++ cfe/trunk/lib/Driver/Driver.cpp Wed Jul 26 06:36:58 2017 > @@ -1297,7 +1297,7 @@ bool Driver::HandleImmediateArgs(const C > std::sort(SuggestedCompletions.begin(), SuggestedCompletions.end(), > [](StringRef A, StringRef B) { return A.compare_lower(B) < 0; > }); > > - llvm::outs() << llvm::join(SuggestedCompletions, " ") << '\n'; > + llvm::outs() << llvm::join(SuggestedCompletions, "\n") << '\n'; > return false; > } > > > Modified: cfe/trunk/test/Driver/autocomplete.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/autocomplete.c?rev=309113&r1=309112&r2=309113&view=diff > ============================================================================== > --- cfe/trunk/test/Driver/autocomplete.c (original) > +++ cfe/trunk/test/Driver/autocomplete.c Wed Jul 26 06:36:58 2017 > @@ -1,46 +1,91 @@ > // RUN: %clang --autocomplete=-fsyn | FileCheck %s -check-prefix=FSYN > // FSYN: -fsyntax-only > -// RUN: %clang --autocomplete=-s | FileCheck %s -check-prefix=STD > -// STD: -std={{.*}}-stdlib= > +// RUN: %clang --autocomplete=-std= | FileCheck %s -check-prefix=STD > +// STD: -std= Language standard to compile for > // RUN: %clang --autocomplete=foo | FileCheck %s -check-prefix=FOO > // FOO-NOT: foo > // RUN: %clang --autocomplete=-stdlib=,l | FileCheck %s -check-prefix=STDLIB > -// STDLIB: libc++ libstdc++ > +// STDLIB: libc++ > +// STDLIB-NEXT: libstdc++ > // RUN: %clang --autocomplete=-stdlib=, | FileCheck %s > -check-prefix=STDLIBALL > -// STDLIBALL: libc++ libstdc++ platform > +// STDLIBALL: libc++ > +// STDLIBALL-NEXT: libstdc++ > +// STDLIBALL-NEXT: platform > // RUN: %clang --autocomplete=-meabi,d | FileCheck %s -check-prefix=MEABI > // MEABI: default > // RUN: %clang --autocomplete=-meabi, | FileCheck %s -check-prefix=MEABIALL > -// MEABIALL: 4 5 default gnu > +// MEABIALL: 4 > +// MEABIALL-NEXT: 5 > +// MEABIALL-NEXT: default > +// MEABIALL-NEXT: gnu > // RUN: %clang --autocomplete=-cl-std=,CL2 | FileCheck %s -check-prefix=CLSTD > // CLSTD: CL2.0 > // RUN: %clang --autocomplete=-cl-std=, | FileCheck %s -check-prefix=CLSTDALL > -// CLSTDALL: cl CL cl1.1 CL1.1 cl1.2 CL1.2 cl2.0 CL2.0 > +// CLSTDALL: cl > +// CLSTDALL-NEXT: CL > +// CLSTDALL-NEXT: cl1.1 > +// CLSTDALL-NEXT: CL1.1 > +// CLSTDALL-NEXT: cl1.2 > +// CLSTDALL-NEXT: CL1.2 > +// CLSTDALL-NEXT: cl2.0 > +// CLSTDALL-NEXT: CL2.0 > // RUN: %clang --autocomplete=-fno-sanitize-coverage=,f | FileCheck %s > -check-prefix=FNOSANICOVER > // FNOSANICOVER: func > // RUN: %clang --autocomplete=-fno-sanitize-coverage=, | FileCheck %s > -check-prefix=FNOSANICOVERALL > -// FNOSANICOVERALL: 8bit-counters bb edge func indirect-calls > inline-8bit-counters no-prune trace-bb trace-cmp trace-div trace-gep trace-pc > trace-pc-guard > +// FNOSANICOVERALL: 8bit-counters > +// FNOSANICOVERALL-NEXT: bb > +// FNOSANICOVERALL-NEXT: edge > +// FNOSANICOVERALL-NEXT: func > +// FNOSANICOVERALL-NEXT: indirect-calls > +// FNOSANICOVERALL-NEXT: inline-8bit-counters > +// FNOSANICOVERALL-NEXT: no-prune > +// FNOSANICOVERALL-NEXT: trace-bb > +// FNOSANICOVERALL-NEXT: trace-cmp > +// FNOSANICOVERALL-NEXT: trace-div > +// FNOSANICOVERALL-NEXT: trace-gep > +// FNOSANICOVERALL-NEXT: trace-pc > +// FNOSANICOVERALL-NEXT: trace-pc-guard > // RUN: %clang --autocomplete=-ffp-contract=, | FileCheck %s > -check-prefix=FFPALL > -// FFPALL: fast off on > +// FFPALL: fast > +// FFPALL-NEXT: off > +// FFPALL-NEXT: on > // RUN: %clang --autocomplete=-flto=, | FileCheck %s -check-prefix=FLTOALL > -// FLTOALL: full thin > +// FLTOALL: full > +// FLTOALL-NEXT: thin > // RUN: %clang --autocomplete=-fveclib=, | FileCheck %s > -check-prefix=FVECLIBALL > -// FVECLIBALL: Accelerate none SVML > +// FVECLIBALL: Accelerate > +// FVECLIBALL-NEXT: none > +// FVECLIBALL-NEXT: SVML > // RUN: %clang --autocomplete=-fshow-overloads=, | FileCheck %s > -check-prefix=FSOVERALL > -// FSOVERALL: all best > +// FSOVERALL: all > +// FSOVERALL-NEXT: best > // RUN: %clang --autocomplete=-fvisibility=, | FileCheck %s > -check-prefix=FVISIBILITYALL > -// FVISIBILITYALL: default hidden > +// FVISIBILITYALL: default > +// FVISIBILITYALL-NEXT: hidden > // RUN: %clang --autocomplete=-mfloat-abi=, | FileCheck %s > -check-prefix=MFLOATABIALL > -// MFLOATABIALL: hard soft softfp > +// MFLOATABIALL: hard > +// MFLOATABIALL-NEXT: soft > +// MFLOATABIALL-NEXT: softfp > // RUN: %clang --autocomplete=-mthread-model, | FileCheck %s > -check-prefix=MTHREADMODELALL > -// MTHREADMODELALL: posix single > +// MTHREADMODELALL: posix > +// MTHREADMODELALL-NEXT: single > // RUN: %clang --autocomplete=-mrelocation-model, | FileCheck %s > -check-prefix=MRELOCMODELALL > -// MRELOCMODELALL: dynamic-no-pic pic ropi ropi-rwpi rwpi static > +// MRELOCMODELALL: dynamic-no-pic > +// MRELOCMODELALL-NEXT: pic > +// MRELOCMODELALL-NEXT: ropi > +// MRELOCMODELALL-NEXT: ropi-rwpi > +// MRELOCMODELALL-NEXT: rwpi > +// MRELOCMODELALL-NEXT: static > // RUN: %clang --autocomplete=-mrelocation-mode | FileCheck %s > -check-prefix=MRELOCMODEL_CLANG > // MRELOCMODEL_CLANG-NOT: -mrelocation-model > // RUN: %clang --autocomplete=#-mrelocation-mode | FileCheck %s > -check-prefix=MRELOCMODEL_CC1 > // MRELOCMODEL_CC1: -mrelocation-model > // RUN: %clang --autocomplete=-Wma | FileCheck %s -check-prefix=WARNING > -// WARNING: -Wmacro-redefined -Wmain -Wmain-return-type > -Wmalformed-warning-check -Wmany-braces-around-scalar-init -Wmax-unsigned-zero > +// WARNING: -Wmacro-redefined > +// WARNING-NEXT: -Wmain > +// WARNING-NEXT: -Wmain-return-type > +// WARNING-NEXT: -Wmalformed-warning-check > +// WARNING-NEXT: -Wmany-braces-around-scalar-init > +// WARNING-NEXT: -Wmax-unsigned-zero > // RUN: %clang --autocomplete=-Wno-invalid-pp- | FileCheck %s > -check-prefix=NOWARNING > // NOWARNING: -Wno-invalid-pp-token > > Modified: cfe/trunk/utils/bash-autocomplete.sh > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/bash-autocomplete.sh?rev=309113&r1=309112&r2=309113&view=diff > ============================================================================== > --- cfe/trunk/utils/bash-autocomplete.sh (original) > +++ cfe/trunk/utils/bash-autocomplete.sh Wed Jul 26 06:36:58 2017 > @@ -57,7 +57,7 @@ _clang() > > # expand ~ to $HOME > eval local path=${COMP_WORDS[0]} > - flags=$( "$path" --autocomplete="$arg" 2>/dev/null ) > + flags=$( "$path" --autocomplete="$arg" 2>/dev/null | sed -e 's/\t.*//' ) > # If clang is old that it does not support --autocomplete, > # fall back to the filename completion. > if [[ "$?" != 0 ]]; then > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits