nridge added a comment.

I've addressed some of the review comments, with a view to getting something 
minimal we can land, and improve on in follow-up changes.

Mostly, I focused on the suggestions which reduce the number of results. I've 
left other suggestions which increase the number of results (e.g. handling 
non-indexed symbols) for follow-ups.

In D72874#1831977 <https://reviews.llvm.org/D72874#1831977>, @sammccall wrote:

> - only trigger when there's *some* positive signal for the word.
>   - Markup like quotes/backticks/brackets/`\p`
>   - weird case like `lowerCamel`, `UpperCamel`, `CAPS`, `mid-sentence 
> Capitalization`, `under_scores`.
>   - use of the word as a token in nearby code (very close if very short, 
> anywhere in file if longer)
>   - (maybe you want to support `ns::Qualifiers`?)


I currently handle `lowerCamel`, `UpperCamel`, `CAPS`, and `under_scores`. I've 
left the others as follow-ups.

> - post-filter aggressively - only return exact name matches (I think 
> including case).

Done.

> - call `fuzzyFind` directly and set `ProximityPath`

Done.

> as well as the enclosing scopes from lexing. For extra strictness consider 
> AnyScope=false

I haven't done this yet, do you think it's important for an initial landing?

If so, could you mention what API you had in mind for determining "enclosing 
scopes from lexing"?

I had in mind using something like `SelectionTree` and collecting any 
`RecordDecl`s or `NamespaceDecl`s on the path from the common ancestor to the 
TU, but that's technically not "from lexing", so perhaps you have something 
else in mind.

> - if you get more than 3 results, and none from current file, maybe don't 
> return anything, as confidence is too low. Or try a stricter query...

I implemented this, but my testing shows this causes a lot of results for class 
names to be excluded. The reason appears to be that `fuzzyFind()` returns the 
class and each of its constructors as distinct results, so if a class has more 
than two constructors, we'll have more than 3 results (and typically the class 
is declared in a different file).

Should we try to handle this case specifically (collapse a class name and its 
construtors to a single result), or should we reconsider this filtering 
criterion? It's not exactly clear to me what sort of bad behaviour it's 
intended to weed out.

> - handle the most common case of non-indexable symbols (local symbols) by 
> running the query against the closest occurrence of the token in code.

I've left this as a follow-up.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D72874/new/

https://reviews.llvm.org/D72874



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to