首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vscode扩展,设置window.activeTextEditor

Vscode扩展,设置window.activeTextEditor
EN

Stack Overflow用户
提问于 2020-11-12 13:08:02
回答 1查看 910关注 0票数 1

如何使用vscode扩展api设置activeTextEditor

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

我的扩展是一个webview,当在webview上单击某些东西时,它会调用扩展B。在那个时刻,“活动标签”是webview,而不是我想要的activeTextEditor

我想做一些像这样的事情

代码语言:javascript
复制
vscode.window.activeTextEditor = editor

在我的单击处理程序的开始,但这不起作用,因为activeTextEditor不是一个设置器。

我试着在有问题的编辑器上做了一个假编辑:

代码语言:javascript
复制
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)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-13 01:09:10

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

代码语言:javascript
复制
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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64798261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档