Vscode扩展名,设置window.activeTextEditor

时间:2020-11-12 05:08:02

标签: visual-studio-code vscode-extensions

如何使用vscode扩展api设置activeTextEditor

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

我的扩展程序是一个Web视图,当在Web视图上单击某些内容时,它将调用扩展B。当时,“活动标签”是网络视图,不是我想要的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)。

1 个答案:

答案 0 :(得分:1)

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

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