VSCode 不会向语言服务器发出 DidRenameFiles 通知

问题描述

我目前正在我的语言服务器中实现新的文件操作事件,该事件已在 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 (将#修改为@)