s-blog

VSCode 源码二次开发:命令的注册与调用

ssssmy · 2026-06-05 · 1 min · VsCode插件开发

VSCode 源码二次开发:命令的注册与调用

在 VSCode 源码(或 fork 版)内部,可通过 CommandsRegistry 注册命令,并用 ICommandService 调用,二者均支持返回 Promise 实现同步取值。

// 注册命令
CommandsRegistry.registerCommand({
  id: 'check.isCpptools',
  handler: (accessor) => {
    return new Promise((resolve, reject) => {
      resolve(true);
    });
  }
});
// 执行命令并等待返回值
const commandService = accessor.get(ICommandService);
const a = await commandService.executeCommand('check.isCpptools'); // true

要点:

  • handler 的第一个参数 accessor 是服务访问器,可 accessor.get(IXxxService) 取到任意已注册服务。
  • executeCommand 返回 handler 的返回值(Promise 会被自动 await),因此可用于跨模块同步取数据。

原文链接:https://www.ssssmy.com/notes/vscode-yuan-ma-er-ci-kai-fa-ming-ling-de-zhu-ce-yu-diao-yong