[英]Open another document in VSCode extension from Hover
我嘗試從 VSCode 擴展中的懸停打開文檔。
出現懸停,顯示鏈接和 URI,但是當我單擊時,沒有任何反應。 調試控制台中有一個輸出,該命令在開發人員工具控制台中未知。
我做錯了什么? 這是代碼,稍微簡化了一點
context.subscriptions.push(
vscode.languages.registerHoverProvider({pattern: '**/*.{ttp,tts}'}, {
provideHover(document, position, token) {
const linkPosition = new vscode.Position(10, 1);
const range = new vscode.Range(position, position);
const opts: vscode.TextDocumentShowOptions = {
selection: range,
viewColumn: vscode.ViewColumn.Beside
};
const workspace = vscode.workspace.workspaceFolders?.find(e => e.uri.fsPath.endsWith("workspace"));
const uri = vscode.Uri.file(`${workspace?.uri.path}/_global.tt/ercdata/ttc.properties`);
const args = [{ uri: uri , options: opts}];
const stageCommandUri = vscode.Uri.parse(
`command:window.showTextDocument?${encodeURIComponent(JSON.stringify(args))}`
);
let link = new vscode.MarkdownString(`[Open...](${stageCommandUri})`);
link.isTrusted = true;
let hover: vscode.Hover = {
contents: [link]
};
return hover;
let x = properties.getHoverFor(document, position, path.basename(document.uri.fsPath).replace(".tts","").replace(".ttp","").toLowerCase());
return x;
}
}));
這是 Hover 的渲染方式:
這是開發控制台的輸出:
你應該使用一個真正的命令一樣vscode.open
在記錄這篇文章,或您自己的命令。
window.showTextDocument
本身就是一個擴展 API。
Lex Li 為我指明了正確的方向,謝謝。
將 openTextDocument 任務包裝到我自己的命令中並從 Hover 處理此命令可以解決問題:
context.subscriptions.push(vscode.commands.registerCommand('estudio.internal.open', (uri: vscode.Uri, options: vscode.TextDocumentShowOptions) => {
logger.info("Opening a document");
vscode.window.showTextDocument(uri, options);
}));
比編寫 Hover 使用
const stageCommandUri = vscode.Uri.parse(
`command:estudio.internal.open?${encodeURIComponent(JSON.stringify(args))}`
做到了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.