首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将vscode传递给外部函数

将vscode传递给外部函数
EN

Stack Overflow用户
提问于 2022-04-06 17:49:05
回答 1查看 46关注 0票数 0

对于驻留activate()函数的主入口点:

extension.ts

代码语言:javascript
复制
import * as vscode from "vscode";
import { subscribe } from "./eventListeners.ts";

export function activate(context: vscode.ExtensionContext) {
  vscode.commands.registerCommand("mycommand.activate", () => {});

  subscribe(vscode);

  context.subscriptions.push(t);
}

我已经将事件订阅拆分为一个单独的文件:

eventListeners.ts

代码语言:javascript
复制
import * as vscode from "vscode";

type VSCode = typeof vscode;

export function subscribe(vscode: VSCode) {
    ...
}

在另一份文件中,我想我会:

  1. 传入vscode实例。在vscode从activate()读取vscode.commands.registerCommand,但在执行命令之前不会运行其他命令时,一定会发生一些神奇的事情。
  2. 我希望我的代码尽可能的打字。这就是为什么我有一个尴尬的线type VSCode = typeof vscode;在那里。

问题:

  1. 是否有更好的方法将事件订阅拆分到单独的文件中,而不是像我一样传递vscode实例?
  2. 是否有更好的方法在单独的文件中导入类型?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-07 10:22:18

添加命令作为贡献已经让VSCode知道了该命令,并将其显示在命令列表中。

但是,如果您唯一的激活事件是在运行命令时发生的。,那么在尝试使用该命令之前不会运行activate()。因此,直到第一次运行时,才会注册该命令的实际操作。

我想这就是让你困惑的原因。您可以看到这个命令,因此您认为vscode.commands.registerCommand()已经运行,因此不知道为什么activate()的其他部分没有运行。但它还没有真正运行过。

您可以尝试使用onStartupFinished作为激活事件。

关于vscodeeventListeners.ts中的使用,只需使用import * as vscode from 'vscode'。没必要把它传过来。

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

https://stackoverflow.com/questions/71771486

复制
相关文章

相似问题

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