diff --git a/lua/lazyvim/plugins/lsp/init.lua b/lua/lazyvim/plugins/lsp/init.lua index b183464e..105e7108 100644 --- a/lua/lazyvim/plugins/lsp/init.lua +++ b/lua/lazyvim/plugins/lsp/init.lua @@ -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 diff --git a/lua/lazyvim/util/lsp.lua b/lua/lazyvim/util/lsp.lua index adc1be0d..86e14748 100644 --- a/lua/lazyvim/util/lsp.lua +++ b/lua/lazyvim/util/lsp.lua @@ -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