@@ -267,6 +267,17 @@ opt<Config::HeaderInsertionPolicy> HeaderInsertion{
267267 " Never insert #include directives as part of code completion" )),
268268};
269269
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+
270281opt<bool > ImportInsertions{
271282 " import-insertions" ,
272283 cat (Features),
@@ -669,6 +680,7 @@ class FlagsConfigProvider : public config::Provider {
669680 std::optional<Config::BackgroundPolicy> BGPolicy;
670681 std::optional<Config::ArgumentListsPolicy> ArgumentLists;
671682 std::optional<Config::HeaderInsertionPolicy> HeaderInsertionPolicy;
683+ std::optional<Config::CodePatternsPolicy> CodePatternsPolicy;
672684
673685 // If --compile-commands-dir arg was invoked, check value and override
674686 // default path.
@@ -723,6 +735,10 @@ class FlagsConfigProvider : public config::Provider {
723735 : Config::ArgumentListsPolicy::Delimiters;
724736 }
725737
738+ if (CodePatterns == Config::CodePatternsPolicy::None) {
739+ CodePatternsPolicy = Config::CodePatternsPolicy::None;
740+ }
741+
726742 Frag = [=](const config::Params &, Config &C) {
727743 if (CDBSearch)
728744 C.CompileFlags .CDBSearch = *CDBSearch;
@@ -736,6 +752,8 @@ class FlagsConfigProvider : public config::Provider {
736752 C.Completion .HeaderInsertion = *HeaderInsertionPolicy;
737753 if (AllScopesCompletion.getNumOccurrences ())
738754 C.Completion .AllScopes = AllScopesCompletion;
755+ if (CodePatternsPolicy)
756+ C.Completion .CodePatterns = *CodePatternsPolicy;
739757
740758 if (Test)
741759 C.Index .StandardLibrary = false ;
@@ -949,6 +967,7 @@ clangd accepts flags on the commandline, and in the CLANGD_FLAGS environment var
949967 Opts.CodeComplete .BundleOverloads = CompletionStyle != Detailed;
950968 Opts.CodeComplete .ShowOrigins = ShowOrigins;
951969 Opts.CodeComplete .InsertIncludes = HeaderInsertion;
970+ Opts.CodeComplete .CodePatterns = CodePatterns;
952971 Opts.CodeComplete .ImportInsertions = ImportInsertions;
953972 if (!HeaderInsertionDecorators) {
954973 Opts.CodeComplete .IncludeIndicator .Insert .clear ();
0 commit comments