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