Re: r309113 - [Bash-autocompletion] Show HelpText with possible flags
Merged to 5.0 in r309438. On Wed, Jul 26, 2017 at 6:36 AM, Yuka Takahashi via cfe-commitswrote: > Author: yamaguchi > Date: Wed Jul 26 06:36:58 2017 > New Revision: 309113 > > URL: http://llvm.org/viewvc/llvm-project?rev=309113=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=309112=309113=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=309112=309113=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:
r309113 - [Bash-autocompletion] Show HelpText with possible flags
Author: yamaguchi Date: Wed Jul 26 06:36:58 2017 New Revision: 309113 URL: http://llvm.org/viewvc/llvm-project?rev=309113=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=309112=309113=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=309112=309113=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