Получить текущую подсветку в VS Code Extension - PullRequest
0 голосов
/ 26 января 2019

Я не говорю о текущем выделении, к которому можно получить доступ vscode.window.activeTextEditor.selection.

Когда курсор находится внутри идентификатора, имени переменной и т. Д., Он выделяется, как показано на этом снимке экрана:

Screenshot of VS Code

Как называется этот выделенный объект?Как мне получить к нему доступ?

Ответы [ 2 ]

0 голосов
/ 22 июля 2019

То, что вы показываете, называется Подсветка документа . Другие экземпляры (в данном случае colorData) также будут выделены. Ответ @Rene Roth, вероятно, отвечает на ваши вопросы. И, как пишет @ Gama11, использование getWordRangeAtPosition без второго параметра использует «шаблон слов» языка. Однако выделение документа не должно быть одним словом.

Насколько я знаю, вы не можете получить список всех основных моментов? (Я только что понял их для использования в моем первом расширении.)

Для такого выделения нужно использовать registerDocumentHighlightProvider и provideDocumentHighlights. DocumentHighlightKind может использоваться для предоставления различных цветов подсветки (например, когда экземпляр выделенной переменной находится справа или слева от знака равенства, то есть для чтения или записи, или по какой-либо другой причине различия). Я успешно использовал DocumentHighlightKind, чтобы показать выделение, которое содержится внутри другого.

0 голосов
/ 26 января 2019

Поиск всего: от «выделенного» до «идентификатора» и т. Д., Ответ был более очевидным.TextDocument имеет метод getWordRangeAtPosition, который принимает позицию и возвращает диапазон слова.

const editor = vscode.window.activeTextEditor;
let cursorPosition = editor.selection.start;
let wordRange = editor.document.getWordRangeAtPosition(cursorPosition);
let highlight = editor.document.getText(wordRange);
// highlight will now contain the currently highlighted word

...