@@ -267,6 +267,17 @@ opt<Config::HeaderInsertionPolicy> HeaderInsertion{
267
267
" Never insert #include directives as part of code completion" )),
268
268
};
269
269
270
+ opt<Config::CodePatternsPolicy> CodePatterns{
271
+ " code-patterns" ,
272
+ cat (Features),
273
+ desc (" Code completion menu will suggest code patterns and snippets." ),
274
+ init (CodeCompleteOptions ().CodePatterns ),
275
+ values (clEnumValN (Config::CodePatternsPolicy::All, " all" ,
276
+ " Enable all code patterns and snippets." ),
277
+ clEnumValN (Config::CodePatternsPolicy::None, " none" ,
278
+ " Disable all code patterns and snippets." )),
279
+ };
280
+
270
281
opt<bool > ImportInsertions{
271
282
" import-insertions" ,
272
283
cat (Features),
@@ -669,6 +680,7 @@ class FlagsConfigProvider : public config::Provider {
669
680
std::optional<Config::BackgroundPolicy> BGPolicy;
670
681
std::optional<Config::ArgumentListsPolicy> ArgumentLists;
671
682
std::optional<Config::HeaderInsertionPolicy> HeaderInsertionPolicy;
683
+ std::optional<Config::CodePatternsPolicy> CodePatternsPolicy;
672
684
673
685
// If --compile-commands-dir arg was invoked, check value and override
674
686
// default path.
@@ -723,6 +735,10 @@ class FlagsConfigProvider : public config::Provider {
723
735
: Config::ArgumentListsPolicy::Delimiters;
724
736
}
725
737
738
+ if (CodePatterns == Config::CodePatternsPolicy::None) {
739
+ CodePatternsPolicy = Config::CodePatternsPolicy::None;
740
+ }
741
+
726
742
Frag = [=](const config::Params &, Config &C) {
727
743
if (CDBSearch)
728
744
C.CompileFlags .CDBSearch = *CDBSearch;
@@ -736,6 +752,8 @@ class FlagsConfigProvider : public config::Provider {
736
752
C.Completion .HeaderInsertion = *HeaderInsertionPolicy;
737
753
if (AllScopesCompletion.getNumOccurrences ())
738
754
C.Completion .AllScopes = AllScopesCompletion;
755
+ if (CodePatternsPolicy)
756
+ C.Completion .CodePatterns = *CodePatternsPolicy;
739
757
740
758
if (Test)
741
759
C.Index .StandardLibrary = false ;
@@ -949,6 +967,7 @@ clangd accepts flags on the commandline, and in the CLANGD_FLAGS environment var
949
967
Opts.CodeComplete .BundleOverloads = CompletionStyle != Detailed;
950
968
Opts.CodeComplete .ShowOrigins = ShowOrigins;
951
969
Opts.CodeComplete .InsertIncludes = HeaderInsertion;
970
+ Opts.CodeComplete .CodePatterns = CodePatterns;
952
971
Opts.CodeComplete .ImportInsertions = ImportInsertions;
953
972
if (!HeaderInsertionDecorators) {
954
973
Opts.CodeComplete .IncludeIndicator .Insert .clear ();
0 commit comments