Visual studio code Vscode扩展,设置window.activeTextEditor

Visual studio code Vscode扩展,设置window.activeTextEditor,visual-studio-code,vscode-extensions,Visual Studio Code,Vscode Extensions,如何使用vscode扩展api设置activeTextEditor 我之所以需要它,是因为我的扩展依赖于对扩展B的外部调用,而扩展B不接受编辑器的参数。它只查看vscode.window.activeTextEditor 我的扩展是一个webview,当在webview上单击某个内容时,它会调用扩展B。此时,“活动选项卡”是webview,它不是我想要的activeTextEditor 我想做一些像 vscode.window.activeTextEditor = editor 在单击处理程序

如何使用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变量,它仍然是未定义的。

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

const currentWorkSpace=wait vscode.workspace.getWorkspaceFoldervscode.window.activeTextEditor.document.uri; vscode.window.showTextDocumentvscode.Uri.joinPathcurrentWorkSpace.Uri,'search/oldSearch.js',{preview:false}; 它在先前保存的光标位置聚焦并可写

showTextDocument还有两个其他表单,其中一个表单可以将TextDocument作为要打开的文件,而不是Uri

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


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

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

const currentWorkSpace=wait vscode.workspace.getWorkspaceFoldervscode.window.activeTextEditor.document.uri; vscode.window.showTextDocumentvscode.Uri.joinPathcurrentWorkSpace.Uri,'search/oldSearch.js',{preview:false}; 它在先前保存的光标位置聚焦并可写

showTextDocument还有两个其他表单,其中一个表单可以将TextDocument作为要打开的文件,而不是Uri

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


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

谢谢,这很有帮助。我刚刚尝试使用vscode.window.showTextDocumenteditor.document.uri将焦点更改为所需的文件。不幸的是,showTextDocument在当前活动的选项卡中打开文件,而不是将焦点更改为已打开文件的编辑器。我在OP中添加了关于我的用例的更多细节。好的,我让它工作了:vscode.window.showTextDocumenteditor.document.uri,{preview:false,viewColumn:editor.viewColumn,};谢谢@安蒂斯。我已经用了几天你的技术了。太棒了。在文档中查找/重新查找此类内容很难!谢谢,那很有帮助。我刚刚尝试使用vscode.window.showTextDocumenteditor.document.uri将焦点更改为所需的文件。不幸的是,showTextDocument在当前活动的选项卡中打开文件,而不是将焦点更改为已打开文件的编辑器。我在OP中添加了关于我的用例的更多细节。好的,我让它工作了:vscode.window.showTextDocumenteditor.document.uri,{preview:false,viewColumn:editor.viewColumn,};谢谢@安蒂斯。我已经用了几天你的技术了。太棒了。在文档中查找/重新查找此类内容很难!