Ric*_*lva 4 javascript node.js visual-studio-code vscode-extensions language-server-protocol
我一直在使用语言服务器协议开发一个使用客户端和服务器的vscode扩展.
目前,我正在尝试执行以下操作:当服务器检测到某种情况时,他请求客户端将一定数量的文件加载到工作区中.
我这样做有严重的问题.由于语言服务器协议没有执行此操作的特定请求,我考虑从服务器向客户端发送消息,一旦客户端检测到此消息,他将继续执行此命令.
问题是,我也不知道该怎么做.谁能帮帮我吗?
只要您确定该名称不会与现有的LSP方法发生冲突,您就可以定义自己的任意方法.例如,在官方的lsp-sample中,你可以这样做:
(在结束时client/src/extension.ts)
let client = new LanguageClient('lspSample', 'Language Server Example', serverOptions, clientOptions);
client.onReady().then(() => {
client.onNotification("custom/loadFiles", (files: Array<String>) => {
console.log("loading files " + files);
});
});
context.subscriptions.push(client.start());
Run Code Online (Sandbox Code Playgroud)
(在documents.onDidChangeContent听众中server/src/server.ts)
var files = ["path/to/file/a.txt", "path/to/file/b.txt"];
connection.sendNotification("custom/loadFiles", [files]);
Run Code Online (Sandbox Code Playgroud)
每次更改.txt文件内容时,都会将以下内容输出到开发控制台(因为示例plaintext用作文档选择器):
加载文件path/to/file/a.txt,path/to/file/b.txt
在自定义方法的名称,参数或调用它们时,您在这里几乎具有完全的灵活性.语言服务器使用这样的自定义方法是很常见的,这些方法不是用于各种目的的协议的一部分(高级功能,内部调试/开发功能等......).
| 归档时间: |
|
| 查看次数: |
1049 次 |
| 最近记录: |