在VS Code扩展中获取当前的突出显示

时间:2019-01-25 22:24:12

标签: visual-studio-code vscode-extensions

我不是在谈论当前的选择,vscode.window.activeTextEditor.selection可以访问该选择。

当光标位于标识符,变量名等内部时,它将变为突出显示,如以下屏幕截图所示:

Screenshot of VS Code

此高亮对象叫什么?如何访问?

2 个答案:

答案 0 :(得分:1)

搜索从“突出显示”到“标识符”的所有内容,以及其他任何内容,答案都更加明显。 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

答案 1 :(得分:0)

您显示的内容称为 Document Highlight 。其他实例(在这种情况下为colorData)也将突出显示。 @Rene Roth的答案可能是回答您想要的。正如@ Gama11所写,在不使用第二个参数的情况下使用getWordRangeAtPosition会使用语言的“单词模式”。但是,文档突出显示不必是一个单词。

据我所知,您无法获得所有亮点的列表? (我只是想出了要在我的第一个扩展程序中使用它们的方法。)

要突出显示,您需要使用registerDocumentHighlightProviderprovideDocumentHighlightsDocumentHighlightKind可用于提供不同的突出显示颜色(例如,突出显示的变量的实例在等号的右侧或左侧,即,读或写,或出于某些其他区分原因)。我已经成功地使用了DocumentHighlightKind来显示另一个中包含的突出显示。