fix(lsp): fix LazyVim's on_file_rename to work according to the lsp spec

This commit is contained in:
Folke Lemaitre
2024-05-29 14:19:03 +02:00
parent 54d687383d
commit 4bbeb37a18
2 changed files with 17 additions and 10 deletions

View File

@ -53,7 +53,14 @@ return {
enabled = true,
},
-- add any global capabilities here
capabilities = {},
capabilities = {
workspace = {
fileOperations = {
didRename = true,
willRename = true,
},
},
},
-- options for vim.lsp.buf.format
-- `bufnr` and `filter` is handled by the LazyVim formatter,
-- but can be also overridden when specified

View File

@ -120,22 +120,22 @@ end
---@param from string
---@param to string
function M.on_rename(from, to)
local changes = { files = { {
oldUri = vim.uri_from_fname(from),
newUri = vim.uri_from_fname(to),
} } }
local clients = M.get_clients()
for _, client in ipairs(clients) do
if client.supports_method("workspace/willRenameFiles") then
---@diagnostic disable-next-line: invisible
local resp = client.request_sync("workspace/willRenameFiles", {
files = {
{
oldUri = vim.uri_from_fname(from),
newUri = vim.uri_from_fname(to),
},
},
}, 1000, 0)
local resp = client.request_sync("workspace/willRenameFiles", changes, 1000, 0)
if resp and resp.result ~= nil then
vim.lsp.util.apply_workspace_edit(resp.result, client.offset_encoding)
end
end
if client.supports_method("workspace/didRenameFiles") then
client.notify("workspace/didRenameFiles", changes)
end
end
end