如何使用vscode扩展api设置activeTextEditor
我需要这样做的原因是,我的扩展依赖于对扩展B的外部调用,而扩展B不接受编辑器的参数。它只是看着vscode.window.activeTextEditor。
我的扩展是一个webview,当在webview上单击某些东西时,它会调用扩展B。在那个时刻,“活动标签”是webview,而不是我想要的activeTextEditor。
我想做一些像这样的事情
vscode.window.activeTextEditor = editor在我的单击处理程序的开始,但这不起作用,因为activeTextEditor不是一个设置器。
我试着在有问题的编辑器上做了一个假编辑:
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)。
发布于 2020-11-13 01:09:10
如果我理解正确,这将打开并聚焦另一个文件:
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。
https://stackoverflow.com/questions/64798261
复制相似问题