10

Я создал расширение Visual Studio, которое обеспечивает intellisense для моего домена, наследуя от Microsoft.VisualStudio.Language.Intellisense.ICompletionSource.Остановить сеанс intellisense от преждевременного закрытия

Это работает нормально, за исключением того, что действительный символ в ключевых словах моего языка является подчеркиванием '_'.

Когда всплывающее окно intellisense открывается, вы можете начать вводить текст, а содержимое поля intellisense фильтруется, чтобы отображать только те элементы, которые начинаются с того, что вы набрали.

Однако, если пользователь набирает символ подчеркивания, который, как представляется, обрабатывается особым образом, вместо того чтобы продолжать фильтровать список доступных элементов intellisense, он фиксирует текущий элемент и завершает сеанс intellisense.

Есть ли способ остановить это поведение, чтобы подчеркивание можно рассматривать так же, как обычные буквенно-цифровые символы?

ответ

4

Я не уверен, что язык вы используете, но в методе Exec это звучит, как вы делаете что-то вроде (C#):

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

Если вы идете в Tools-> Options-> Текст editor-> JavaScript-> IntelliSense-> Ссылки должны быть падение вниз для контрольной группы (в зависимости от того, какой тип проекта вы , возможно, потребуется чтобы изменить это)

После того, как у вас есть подходящая группа, вы заметите, что есть некоторые стандартные файлы ссылок, содержащие . Попробуйте удалить underscorefilter.js

нашел here. Дайте мне знать, если это сработает для вас.

2

Существует цепочка плагинов, используемая визуальной студией, а также некоторые другие плагины - это обработка подчеркивания перед вашим плагином. Попробуйте предложение destructi6n.

Смежные вопросы