Остановить сеанс intellisense от преждевременного закрытия
Я создал расширение Visual Studio, которое предоставляет intellisense для моего языка, специфичного для моего домена, наследуя от Microsoft.VisualStudio.Language.Intellisense.ICompletionSource.
Это работает нормально, за исключением того, что допустимый символ в ключевых словах моего языка является подчеркиванием '_'.
Когда intellisense всплывает, вы можете начать вводить текст, а содержимое поля intellisense фильтруется, чтобы отображать только те элементы, которые начинаются с того, что вы набрали.
Однако, если пользователь набирает символ подчеркивания, который, как представляется, обрабатывается особым образом, вместо того чтобы продолжать фильтровать список доступных элементов intellisense, он фиксирует текущий элемент и завершает сеанс intellisense.
Есть ли способ остановить это поведение, чтобы подчеркивание можно рассматривать так же, как обычные буквенно-цифровые символы?
Ответы
Ответ 1
Я не уверен, какой язык вы используете, но в вашем методе Exec
кажется, что вы делаете что-то вроде (С#):
if (nCmdID == (uint)VSConstants.VSStd2KCmdID.RETURN || nCmdID == (uint)VSConstants.VSStd2KCmdID.TAB || (char.IsWhiteSpace(typedChar) || char.IsPunctuation(typedChar))
Причиной здесь является то, что _
считается пунктуацией, поэтому char.IsPunctuation(typedChar)
возвращает true, фиксируя текущий элемент.
Исправление - (char.IsPunctuation(typedChar) && typedChar != '_')
:
if (nCmdID == (uint)VSConstants.VSStd2KCmdID.RETURN || nCmdID == (uint)VSConstants.VSStd2KCmdID.TAB || (char.IsWhiteSpace(typedChar) || (char.IsPunctuation(typedChar) && typedChar != '_') || typedChar == '='))
FYI: Я тестировал это, отлаживая это расширение - https://github.com/kfmaurice/nla. Без этого изменения оно также выполнялось при наборе подчеркивания.
Ответ 2
Если вы перейдете в Инструменты- > Параметры- > Текст Редактор- > JavaScript- > IntelliSense- > Ссылки должны быть капли вниз для контрольной группы (в зависимости от того, какой тип проекта вы может потребоваться изменить это)
Как только у вас появится подходящая группа, вы заметите, что есть некоторые значения по умолчанию включены файлы ссылок intellisense. Попробуйте удалить underscorefilter.js
нашел здесь здесь. Сообщите мне, если это сработает для вас.
Ответ 3
Существует цепочка плагинов, используемых визуальной студией, а некоторые другие плагины обрабатывают подчеркивание перед вашим плагином. Попробуйте предложение destructi6n.