终端、任务、调试与源码管理
终端
window.createTerminal 打开一扇使用真实 shell 的终端。扩展可以 sendText、show、dispose。
Pseudoterminal 是扩展自己实现的终端:实现 open、close、handleInput,用 onDidWrite 往屏幕写字符串。适合向导、长任务输出,而不是去模拟一个完整 shell。创建时用 createTerminal({ name, pty })。
| 事件 | 作用 |
|---|---|
onDidOpenTerminal / onDidCloseTerminal | 终端创建和关闭 |
onDidChangeTerminalState | 例如是否还在交互 |
onDidStartTerminalShellExecution / onDidEndTerminalShellExecution | shell 集成能看到的一次命令执行 |
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、提交仍由扩展自己计算后写进这些状态。