vscode plugin知一二

vscode cmd模式 :
plugin cmd params

zeroice一样
进程交互
插件调用

package.json命令描述:
commond 实际执行
titile 搜索出来的用户可见/描述
category 分组

命令实现:

extension.ts 插件集装箱
 

vscode基于cmd的模式 
registerComond注册+方法声明
extension.ts 命令+方法实现
方法(begin end)

举例
viewType模式
titile标题
column展示位置
最后就是这个commond对应的view内部的webview
在webview内部draw press click 扩缩放

menregistry.appmenuItem

如何新增一个插件
vscode启动加载插件
插件通过全局注册函数注册到系统的menu 等等

插件的沙箱机制
资源隔离:namespace
资源限制:cgroup
插件和webview互相通信:
插件向 WebView 传递信息
发送:panel.webview.postMessage(message);

// 在 WebView 中监听
window.addEventListener('message', event => {
    const receivedMessage = event.data;
    // 在 WebView 中处理收到的消息
    // 可以根据消息内容进行相应的操作
});

WebView 向插件传递信息
发送:vscode.postMessage('这是来自 WebView 的信息');
// 监听 webview 发送的消息
panel.webview.onDidReceiveMessage(message => {
    // 处理接收到的消息
    // 可以根据消息内容进行相应的操作
});

插件通信:
1、基于事件
事件定义
事件监听
事件发送/同步异步

2、vscode全局状态
3、临界区
 

vscode源码编译
yarn watch监控源代码:不需要全量构建
构建指南:

底层源码:
command的管理机制
观察者模式
exec cmd
状态机wait后
pool获取一个thread 并行run 这个cmd

vscode工作机制:
1、进程启动
2、插件加载值插件队列
3、插件初始化:插件全局注册
4、dispatchthread/wait user action
5、cmd解析
6、申请线程资源(普通资源和渲染资源/K8S GPU node和普通node)
7、执行任务

改天找找zeroice的plugin管理源代码
插件队列管理
消息轮询
多线层执行任务
 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值