You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Intellisense Engine : Tag parser vs Default, Default is more flexible #3416
The list of completions in Default mode is greater than for the Tag Parser case
For instance, in my code, when I type "vssava"
With Default (msvc), I get back
"IsVSSAvailable" (.*VSSAva.*)
"VssACLineVoltageIndex" (VSSA.*v.*a.*)
With Tag Parser, I get back
"VssACLineVoltageIndex" (VSSA.*v.*a.*)
With Tag parser, if I start my completion search with an I, I then get the result i'm looking for (IsVSSAvailable).
It would seem that the tag parser needs the first character of completion match to be the first character in the completion list. While the Default one is more flexible (first char could be anywhere).
So, could the Tag Parser behaviour be adapted to match the Default (msvc) case?
Extension version: 0.22.1
VS Code version: Code 1.33.0 (0dd516dd412d42323fc3464531b1c715d51c4c1a, 2019-04-04T15:14:46.685Z)
OS version: Windows_NT ia32 10.0.17134
I can understand about the penalty hit but I cannot understand about refusing to even the two behaviors.
From experience with this extension, the "default" engine (msvc-x64) has NEVER been reliable or useful.
The only way to get usable engine is by using the "fuzzy" tag parser. At least this one is working in a good way. But it lacks the "full" search that is provided with the default engine.
In the end, would a query change from a.*b.*c.* to .*a.*b.*c.* be such a performance issue?
And since its a penalty hit with the default engine and many people can live with it, why couldn't the people using the TagParser also live with it?
Yes, using wild cards in our query of the database would require a linear search through all the symbols instead of a constant/log time lookup, which is a large performance hit when there are lots of symbols (in the entire workspace). We do have an in memory symbol search mechanism that we could potentially query instead of the database that would be faster, but that is a large task that we don't have time to work on currently.
It is not recommended for users to use the Tag Parser due to it's inherant limitations (Visual Studio doesn't allow users to use that mode at all) -- our goal is to make the IntelliSense engine more reliable.
Activity
sean-mcmanus commentedon Apr 11, 2019
It turns out that the fuzzy matching is bad for performance with our database query so we're not planning to fix this in the near future.
JeFrRe commentedon Apr 12, 2019
sean-mcmanus commentedon Apr 12, 2019
Yes, using wild cards in our query of the database would require a linear search through all the symbols instead of a constant/log time lookup, which is a large performance hit when there are lots of symbols (in the entire workspace). We do have an in memory symbol search mechanism that we could potentially query instead of the database that would be faster, but that is a large task that we don't have time to work on currently.
It is not recommended for users to use the Tag Parser due to it's inherant limitations (Visual Studio doesn't allow users to use that mode at all) -- our goal is to make the IntelliSense engine more reliable.
bobbrow commentedon Sep 20, 2024
At this point we don't intend to go back and make this change to the Tag Parser implementation, so I will close this issue.