visual-studio-code - VS Code API - 远程调用
问题描述
我目前正在结合代码生成项目研究 VS 代码扩展。虽然我知道 VS 代码 API 相当成熟,允许在扩展内操作文档,但我不知道如何在扩展之外执行此操作。
有没有办法在 vscode 之外远程执行 vs code JavaScript API,这反过来又会驱动 GUI。
我想弄清楚我是否可以执行以下任何操作:
code
通过cli执行 API JavaScript 代码- 在扩展中运行 Web 服务器/套接字以侦听来自外部系统的事件并相应地执行 JS API
- 如果不是套接字/休息服务器,我应该听文件系统的变化并做出相应的反应吗?
基本上,vs code的遥控驱动有哪些选项?
解决方案
我正在使用的编辑器扩展也遇到了类似的问题。
我强烈建议在 VSCode API 之外监听文件更改。这样,您的大部分代码都不会绑定到特定的编辑器。我在使用调用的 VSCode API 时也遇到了更多困难,createFileSystemWatcher
因为它没有捕获所有更改。
激活后,使用文件观察程序库运行子进程。我建议使用chokidar——它与 VSCode 内部使用的库相同,但可以更广泛地访问 API。
// get your workspace uri & root uri
const workspaceRoots = vscode.workspace.workspaceFolders
if (!workspaceRoots || !workspaceRoots.length) {
throw new Error('No workspace root path')
}
const workspaceRoot: vscode.WorkspaceFolder = workspaceRoots[0]
const rootUri = vscode.workspace.getWorkspaceFolder(workspaceUri);
// the action you want to trigger
const command = vscode.commands.registerCommand('YOUR_CUSTOM_COMMAND', yourCustomFunction)
// file watcher
const fsWatcher = chokidar.watch('watcher_name', {
cwd: rootUri.uri.path,
interval: 1000,
})
// listen to any add/update/delete fs events
fsWatcher.on('change', (path, event) => {
vscode.commands.executeCommand('YOUR_CUSTOM_COMMAND')
})
在任何文件更改时,它都可以触发您选择的操作。
推荐阅读
- sql-server - 使用带有链接服务器的like子句在日期时间中使用变量的Openquery
- r - 如何在 R 中更改为内存较少的数据类型?
- hyperledger-fabric - 如何使用 msp 和 fabric-ca-client 管理超级账本的用户身份验证?
- css - 如何使默认 Firefox 的起始页(快速拨号)变暗
- opengl - 当 glVertexAttribPointer 没有绑定缓冲区时出现 GL_NO_ERROR
- angular - 如何修复关于 agGrid 的“node_modules”中的“yarn build”错误?
- c# - c#Winforms中的分层树视图,带有大陆,国家,城市
- ios - 突然收到来自 CFNetwork/Darwin 的大量请求
- r - 在 gWidgets2 中切换 gbutton
- xml - 需要使用 Powershell 编辑 XML 文件