跳到主要内容

终端、任务、调试与源码管理

终端​

window.createTerminal 打开一扇使用真实 shell 的终端。扩展可以 sendText、show、dispose。

Pseudoterminal 是扩展自己实现的终端:实现 open、close、handleInput,用 onDidWrite 往屏幕写字符串。适合向导、长任务输出,而不是去模拟一个完整 shell。创建时用 createTerminal({ name, pty })。

事件作用
onDidOpenTerminal / onDidCloseTerminal终端创建和关闭
onDidChangeTerminalState例如是否还在交互
onDidStartTerminalShellExecution / onDidEndTerminalShellExecutionshell 集成能看到的一次命令执行
onDidChangeTerminalShellIntegration该终端开始支持 shell 集成

registerTerminalLinkProvider 识别输出里的链接。registerTerminalProfileProvider 提供可从终端下拉框启动的配置。

任务 vscode.tasks​

方法作用
registerTaskProvider(type, provider)为一种任务类型提供任务列表
fetchTasks(filter?)取当前任务
executeTask(task)执行
onDidStartTask / onDidEndTask任务开始和结束
onDidStartTaskProcess / onDidEndTaskProcess底层进程
taskExecutions正在跑的任务

自定义类型还要贡献 taskDefinitions,用户才能在 tasks.json 里写 type。从 1.76 起,自己贡献的任务类型可以不手写 onTaskType。

Task 的执行方式可以是 ShellExecution、ProcessExecution,或包着 Pseudoterminal 的 CustomExecution。

调试 vscode.debug​

成员作用
startDebugging用一份配置启动调试
stopDebugging停止
activeDebugSession / breakpoints当前会话和断点
onDidStartDebugSession / onDidTerminateDebugSession会话生命周期
registerDebugConfigurationProvider补全 launch.json、解析配置
registerDebugAdapterDescriptorFactory告诉编辑器调试适配器怎么启动(可执行文件、端口、内联实现)
registerDebugAdapterTrackerFactory观察调试适配器协议消息

调试适配器协议(DAP)和 LSP 一样,是编辑器和独立适配器之间的协议。扩展贡献 debuggers,真正的调试循环在适配器里。

源码管理 vscode.scm​

scm.createSourceControl(id, label) 得到一个源代码管理提供器,出现在源代码管理视图里。

上面挂资源组 createResourceGroup。组里的 resourceStates 是变更文件,每项有 resourceUri、装饰和命令。输入框用 inputBox。

这是状态展示和命令入口。真正的 diff、提交仍由扩展自己计算后写进这些状态。

参考​