本帖最后由 GeForceLegend 于 2023-3-22 19:40 编辑
我正在尝试写一个适用于Java版Optifine着色器的vscode语言服务器插件,主要供自己使用。最近在尝试提供重命名文件时修改其他着色器文件内#include指向目录功能的时候发现服务器接收不到 workspace/didRenameFiles 和 workspace/willRenameFiles ,没法得知客户端即将或者已经重命名文件。项目代码可以在 https://github.com/GeForceLegend/vscode-mcshader 找到。服务端的框架为 tower-lsp。
已经在服务端初始化时注册了 workspace.fileOperations.didRename 和 workspace.fileOperations.willRename 能力,并且在检测到设置改动时向客户端注册了这两个能力(由于存在默认设置,初始化完了就会发送一遍默认设置,可以视为初始化的时候也向客户端注册了这些能力),依然无法触发 will_rename_files 和 did_rename_files 被调用时输出的警告。
2023-03-15 10:07编辑:已尝试在初始化时为服务器注册 rename_provider: Some(OneOf::Left(true)) 能力,依然无效,除去上面的两个 workspace 的重命名提醒,textDocument/rename 也收不到
2023-03-22 19:35编辑:疑似已解决,在与vscode语言客户端开发人员沟通后,发现vscode的语言客户端似乎在特殊路径下不会发送 capabilities.workspace.file_operation 相关的内容,正在等待vscode开发人员进行进一步的检验与修复。
我正在尝试写一个适用于Java版Optifine着色器的vscode语言服务器插件,主要供自己使用。最近在尝试提供重命名文件时修改其他着色器文件内#include指向目录功能的时候发现服务器接收不到 workspace/didRenameFiles 和 workspace/willRenameFiles ,没法得知客户端即将或者已经重命名文件。项目代码可以在 https://github.com/GeForceLegend/vscode-mcshader 找到。服务端的框架为 tower-lsp。
已经在服务端初始化时注册了 workspace.fileOperations.didRename 和 workspace.fileOperations.willRename 能力,并且在检测到设置改动时向客户端注册了这两个能力(由于存在默认设置,初始化完了就会发送一遍默认设置,可以视为初始化的时候也向客户端注册了这些能力),依然无法触发 will_rename_files 和 did_rename_files 被调用时输出的警告。
2023-03-15 10:07编辑:已尝试在初始化时为服务器注册 rename_provider: Some(OneOf::Left(true)) 能力,依然无效,除去上面的两个 workspace 的重命名提醒,textDocument/rename 也收不到
2023-03-22 19:35编辑:疑似已解决,在与vscode语言客户端开发人员沟通后,发现vscode的语言客户端似乎在特殊路径下不会发送 capabilities.workspace.file_operation 相关的内容,正在等待vscode开发人员进行进一步的检验与修复。
