我想在我的 VS Code 擴展中獲取自定義單詞的范圍,如果我將滑鼠懸停在它上面,并且文本行與模式匹配。這是我到目前為止所寫的:
vscode.languages.registerHoverProvider('.mylanguage', {
provideHover(document, position, token) {
// define `hoverRange` somewhere here
const hoverLineText = document.lineAt(position.line).text;
const pattern = new RegExp("\\w \\s{0,}\\(.{0,}\\s{0,}\\)");
if(pattern.test(hoverLineText)){
hoverRange = document.getWordRangeAtPosition(position, pattern);
}
console.log(hoverRange);
//etc. ...
我期待的是,如果你在編輯器中像寫myFunction ( )懸停,和你對線的任何位置(例如甚至在空格),控制臺將輸出hoverRange,這將考慮到右括號的位置),以及.
但是,如果我將滑鼠懸停在空白處,則不會向控制臺輸出任何內容。相反,我需要將滑鼠懸停在 上myFunction,以便獲得字串的整個范圍。
如何將我的 VS Code 擴展myFunction ( )視為一個單詞?
uj5u.com熱心網友回復:
這對我有用:
let disposable3 = vscode.languages.registerHoverProvider('plaintext', {
provideHover(document, position) {
let hoverRange;
const hoverLineText = document.lineAt(position.line).text;
const pattern = new RegExp("\\w \\s*\\(.*\\s*\\)");
if (pattern.test(hoverLineText)){
hoverRange = document.getWordRangeAtPosition(position, pattern);
if (hoverRange) return new vscode.Hover(document.getText(hoverRange), new vscode.Range(position, position));
else return null;
}
else return null;
}
});
context.subscriptions.push(disposable3);
如您所見,懸停在空格上有效。但是正則運算式太寬松了,以至于它確實會拾取諸如
if (asdasdasd)
while(adasd)
因為那些看起來也像一個函式呼叫。

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/349970.html
標籤:javascript 打字稿 视觉工作室代码 vscode-扩展
上一篇:打字稿映射泛型
