@@ -926,7 +926,8 @@ struct CompletionRecorder : public CodeCompleteConsumer {
926926 // FIXME: in case there is no future sema completion callback after the
927927 // recovery mode, we might still want to provide some results (e.g. trivial
928928 // identifier-based completion).
929- if (Context.getKind () == CodeCompletionContext::CCC_Recovery) {
929+ CodeCompletionContext::Kind ContextKind = Context.getKind ();
930+ if (ContextKind == CodeCompletionContext::CCC_Recovery) {
930931 log (" Code complete: Ignoring sema code complete callback with Recovery "
931932 " context." );
932933 return ;
@@ -950,6 +951,12 @@ struct CompletionRecorder : public CodeCompleteConsumer {
950951 // Retain the results we might want.
951952 for (unsigned I = 0 ; I < NumResults; ++I) {
952953 auto &Result = InResults[I];
954+ if (Config::current ().Completion .CodePatterns ==
955+ Config::CodePatternsPolicy::None &&
956+ Result.Kind == CodeCompletionResult::RK_Pattern &&
957+ // keep allowing the include files autocomplete suggestions
958+ ContextKind != CodeCompletionContext::CCC_IncludedFile)
959+ continue ;
953960 // Class members that are shadowed by subclasses are usually noise.
954961 if (Result.Hidden && Result.Declaration &&
955962 Result.Declaration ->isCXXClassMember ())
@@ -2153,7 +2160,8 @@ class CodeCompleteFlow {
21532160
21542161clang::CodeCompleteOptions CodeCompleteOptions::getClangCompleteOpts () const {
21552162 clang::CodeCompleteOptions Result;
2156- Result.IncludeCodePatterns = EnableSnippets;
2163+ Result.IncludeCodePatterns =
2164+ EnableSnippets && (CodePatterns != Config::CodePatternsPolicy::None);
21572165 Result.IncludeMacros = true ;
21582166 Result.IncludeGlobals = true ;
21592167 // We choose to include full comments and not do doxygen parsing in
0 commit comments