首页 > 解决方案 > 如何在 VSCode 中检索活动的 CustomTextEditor

问题描述

如自定义文本编辑器示例所示,我实现并注册了一个 CustomTextEditorProvider

export class MyCustomEditorProvider implements vscode.CustomTextEditorProvider{
 public static register(context: vscode.ExtensionContext): vscode.Disposable {
    const provider = new MyCustomEditorProvider(context);
    const providerRegistration = vscode.window.registerCustomEditorProvider(MyCustomEditorProvider.viewType, provider);
    return providerRegistration;
  }
}

现在我想在调用命令并且自定义编辑器处于活动状态(聚焦)时执行操作。

问题是,如果我的编辑器聚焦,api vscode.window.activeTextEditor 返回 undefined。这是 api 的预期行为吗?我找不到任何其他用于检索活动非文本编辑器的 api,有吗?

任何帮助表示赞赏

标签: visual-studio-code

解决方案


vscode.window.activeTextEditor当用户关注自定义编辑器时,预计是未定义的,因为自定义编辑器不是TextEditor.

自定义编辑器对扩展是私有的(其他扩展不应与它们交互),因此您需要跟踪扩展内的活动编辑器。您可以使用onDidChangeViewState自定义编辑器的 web 视图上的事件来执行此操作。当自定义编辑器聚焦和不聚焦时它会触发


推荐阅读