Я разрабатываю расширение для кода Visual Studio, используя протокол языкового сервера, и я включаю поддержку «Перейти к символу в рабочей области».Моя проблема в том, что я не знаю, как выбирать совпадения ... На самом деле я использую эту функцию, которую я написал:
function IsInside(word1, word2)
{
var ret = "";
var i1 = 0;
var lenMatch =0, maxLenMatch = 0, minLenMatch = word1.length;
for(var i2=0;i2<word2.length;i2++)
{
if(word1[i1]==word2[i2])
{
lenMatch++;
if(lenMatch>maxLenMatch) maxLenMatch = lenMatch;
ret+=word1[i1];
i1++;
if(i1==word1.length)
{
if(lenMatch<minLenMatch) minLenMatch = lenMatch;
// Trying to filter like VSCode does.
return maxLenMatch>=word1.length/2 && minLenMatch>=2? ret : undefined;
}
} else
{
ret+="Z";
if(lenMatch>0 && lenMatch<minLenMatch)
minLenMatch = lenMatch;
lenMatch=0;
}
}
return undefined;
}
, которые возвращают sortText, если слово1 находится внутри слова2, в противном случае не определено.Моя проблема в таких случаях:
Мой алгоритм видит, что «аллергия» находится внутри C all S er ver, но интерфейс не помечает его как ожидалось.
Есть библиотека или что-то, что я должен использовать для этого?код VSCode большой и сложный, и я не знаю, с чего начать поиск этой информации ...