Vscode扩展,设置window.activeTextEditor



如何使用vscode扩展api设置activeTextEditor

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

我的扩展是一个web视图,当在web视图上单击某个东西时,它会调用扩展B。此时此刻,"活动选项卡"是网络视图,而不是我想要的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));
});
}

但这并不改变CCD_ 5变量(它仍然是CCD_。

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

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

最新更新