Author: sammccall Date: Fri Jun 8 06:32:25 2018 New Revision: 334287 URL: http://llvm.org/viewvc/llvm-project?rev=334287&view=rev Log: [clangd] Require case-insensitive prefix match for macro completions.
Summary: Macros are terribly spammy at the moment and this offers some relief. Reviewers: ioeric Subscribers: ilya-biryukov, MaskRay, jkorous, cfe-commits Differential Revision: https://reviews.llvm.org/D47936 Modified: clang-tools-extra/trunk/clangd/CodeComplete.cpp clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp Modified: clang-tools-extra/trunk/clangd/CodeComplete.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/CodeComplete.cpp?rev=334287&r1=334286&r2=334287&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/CodeComplete.cpp (original) +++ clang-tools-extra/trunk/clangd/CodeComplete.cpp Fri Jun 8 06:32:25 2018 @@ -1015,6 +1015,15 @@ private: return std::move(Top).items(); } + Optional<float> fuzzyScore(const CompletionCandidate &C) { + // Macros can be very spammy, so we only support prefix completion. + // We won't end up with underfull index results, as macros are sema-only. + if (C.SemaResult && C.SemaResult->Kind == CodeCompletionResult::RK_Macro && + !C.Name.startswith_lower(Filter->pattern())) + return None; + return Filter->match(C.Name); + } + // Scores a candidate and adds it to the TopN structure. void addCandidate(TopN<ScoredCandidate, ScoredCandidateGreater> &Candidates, const CodeCompletionResult *SemaResult, @@ -1027,7 +1036,7 @@ private: SymbolQualitySignals Quality; SymbolRelevanceSignals Relevance; Relevance.Query = SymbolRelevanceSignals::CodeComplete; - if (auto FuzzyScore = Filter->match(C.Name)) + if (auto FuzzyScore = fuzzyScore(C)) Relevance.NameMatch = *FuzzyScore; else return; Modified: clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp?rev=334287&r1=334286&r2=334287&view=diff ============================================================================== --- clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp (original) +++ clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp Fri Jun 8 06:32:25 2018 @@ -193,6 +193,7 @@ int main() { ClassWithMembers().^ } TEST(CompletionTest, Filter) { std::string Body = R"cpp( + #define FooBarMacro int Abracadabra; int Alakazam; struct S { @@ -202,7 +203,8 @@ TEST(CompletionTest, Filter) { }; )cpp"; EXPECT_THAT(completions(Body + "int main() { S().Foba^ }").items, - AllOf(Has("FooBar"), Has("FooBaz"), Not(Has("Qux")))); + AllOf(Has("FooBar"), Has("FooBaz"), Not(Has("FooBarMacro")), + Not(Has("Qux")))); EXPECT_THAT(completions(Body + "int main() { S().FR^ }").items, AllOf(Has("FooBar"), Not(Has("FooBaz")), Not(Has("Qux")))); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits