[英]How to document destructured function arguments? e.g. `a` when writing `const fn = ({a}) => {/* code */}`
[英]Vscode extension: how to implement a hover function to add arguments to commands, e.g., to run search command with query
我正在嘗試在 vscode hover function 中開發一個自定義按鈕。這意味着如果我單擊快捷按鈕,它將 go 搜索側邊欄並進行特定的查詢搜索。 參考上傳的兩張圖片。
在 vscode 命令形式中,擴展代碼將如下所示。 (這很好用,除非它需要從命令面板運行)
let disposable = vscode.commands.registerCommand('test-hover.helloWorldSearch', () => {
var word = "i_want_to_search";
const searchOptions = {
query: word,
};
vscode.commands.executeCommand('workbench.action.findInFiles', searchOptions);
});
context.subscriptions.push(disposable);
之后,我使用 vscode.languages.registerHoverProvider 轉換為 hover,代碼如下所示:
let disposable1 = vscode.languages.registerHoverProvider('javascript', {
provideHover(document, position, token) {
var word = "i_want_to_search";
const searchOptions = {
query: word,
};
const commentCommandUri = vscode.Uri.parse(`command:workbench.action.findInFiles`);
const contents = new vscode.MarkdownString(`[Search String](${commentCommandUri})`);
contents.isTrusted = true;
return new vscode.Hover(contents);
}
});
context.subscriptions.push(disposable1);
此代碼能夠導航側邊欄以在文件中搜索但沒有任何查詢 seacrh。 問題是,如果我使用“vscode.Uri.parse”,我無法將“searchOptions”傳遞給命令。 是否有任何其他方法可以執行與上述代碼相同的操作但能夠傳遞 searchOption? 我試圖在 inte.net 中搜索許多不同的例子,但大多數只出來運行沒有 searchOption 的命令。
您的命令的 arguments 必須作為編碼字符串附加,如command-uris所示。
const searchCommandUri = vscode.Uri.parse(
`command:workbench.action.findInFiles?${encodeURIComponent(JSON.stringify(searchOptions))}`
);
const contents = new vscode.MarkdownString(`[Search String](${searchCommandUri})`);
如果你想得到你懸停的詞,試試這個代碼:
const word = document.getText(document.getWordRangeAtPosition(position));
現在,您的“搜索字符串”hover 按鈕將搜索懸停的單詞。
然后將文本:“搜索字符串”更改為您要搜索的實際單詞:
const contents = new vscode.MarkdownString(`[Search: ${word}](${searchCommandUri})`);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.