问题描述
我目前正在我的语言服务器中实现新的文件操作事件,该事件已在 LSP 协议版本 3.16 中引入。我的服务器应该能够对 didRename、didDelete 等做出反应,但到目前为止我无法从 VSCode 获得这些通知。
首先,在我服务器的能力中,我列出了文件操作,告诉客户端我对这些事件感兴趣:
"capabilities": {
...
"workspace": {
"fileOperations": {
"didDelete": {
"filters": [
{
"pattern": {
"glob": "**/*.{rs,rd}"
}
}
]
},"didRename": {
"filters": [
{
"pattern": {
"glob": "**/*.{rs,rd}"
}
}
]
}
}
}
}
另外,在初始化完成后,服务器向客户端发送一个registerCapability
请求,由VSCode确认。我分别注册了这些功能,因为在 init 消息中,VSCode 说应该使用 dynamicRegistration 进行文件操作。
{
"id": "register_caps","jsonrpc": "2.0","method": "client/registerCapability","params": {
"registrations": [
{
"id": "dhjas88-asdhjkahsd89as-dhas89","method": "workspace/didRenameFiles","registerOptions": {
"filters": [
{
"pattern": {
"glob": "**/*.{rs,rd}"
}
}
]
}
},{
"id": "dhjas88-asdhjkahsd89as-dhas90","method": "workspace/didDeleteFiles",rd}"
}
}
]
}
}
]
}
}
确认:
{"jsonrpc":"2.0","id":"register_caps","result":null}
根据 LSP 的规范,我现在希望 VSCode 发送例如didRename 通知,只要与 glob 匹配的文件在 VSCode 中重命名。不幸的是,我从来没有收到过。通知不是由 VSCode 发送的。
任何想法或线索,这里还缺少什么?我错过了协议的哪一部分,导致 VSCode 无法发送文件操作通知?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)