gpt4 book ai didi

visual-studio-code - vscode扩展,设置window.activeTextEditor

转载 作者:行者123 更新时间:2023-12-05 09:36:54 29 4
gpt4 key购买 nike

如何使用 vscode 扩展 api 设置 activeTextEditor

我需要这个的原因是因为我的扩展依赖于对扩展 B 的外部调用,而扩展 B 不接受编辑器的参数。它只查看 vscode.window.activeTextEditor

我的扩展程序是一个 webview,当在 webview 上单击某些内容时,它会调用扩展程序 B。在那一刻,“事件标签”是 webview,它不是我想要的 activeTextEditor

我想做类似的事情

vscode.window.activeTextEditor = editor

在我的点击处理程序的开头,但这不起作用,因为 activeTextEditor 不是 setter。

我尝试对有问题的编辑器进行虚假编辑:

function changeFocus(editor: vscode.TextEditor) {
return editor.edit((editBuilder) => {
const pos = new vscode.Position(0, 0);
const nxt = new vscode.Position(0, 1);
editBuilder.insert(pos, "\\");
editBuilder.delete(new vscode.Range(pos, nxt));
});
}

但这不会改变 vscode.window.activeTextEditor 变量(它仍然是 undefined)。

最佳答案

如果我理解正确,这将打开并聚焦另一个文件:

const currentWorkSpace = await vscode.workspace.getWorkspaceFolder(vscode.window.activeTextEditor.document.uri);

vscode.window.showTextDocument(vscode.Uri.joinPath(currentWorkSpace.uri, 'search/oldSearch.js'), { preview: false });

它在之前保存的光标位置获得焦点并可写。

showTextDocument() 还有两种其他形式,其中一种可以将 TextDocument 作为要打开的文件,而不是 Uri .

如果您愿意,还有 openTextDocument() 可以创建一个新的无标题文件。

如果文件已经打开,此代码仍将用于聚焦它,因此您拥有了 activeTextEditor

关于visual-studio-code - vscode扩展,设置window.activeTextEditor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64798261/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com