commit 7256fd1f0fbf8839387a37d914a6254e6e2dd1c6
parent 079ad4225cc4e94b569645dc83cc394b22ad440b
Author: Tomas Nemec <owl@gtms.dev>
Date: Tue, 16 Jan 2024 08:01:08 +0100
update
Diffstat:
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/lua/tms/lsp/dart.lua b/lua/tms/lsp/dart.lua
@@ -1,6 +1,8 @@
local M = {}
-local capabilities = { workspace = { fileOperations = { willRename = true } } }
+local capabilities = {
+ workspace = { workspaceEdit = { documentChanges = true }, fileOperations = { willRename = true } },
+}
function M.start()
vim.lsp.start {
diff --git a/lua/tms/p/rename_file.lua b/lua/tms/p/rename_file.lua
@@ -24,21 +24,24 @@ function M.rename_file()
return
end
- local hasDocumentChanges = false
+ local alreadyRenamed = false
for _, client in pairs(vim.lsp.get_clients()) do
if vim.tbl_get(client.server_capabilities, 'workspace', 'fileOperations', 'willRename') then
local params = make_rename_files_params(old_fname, new_fname)
local response = client.request_sync('workspace/willRenameFiles', params, nil, 0)
local result = response.result
if result then
- -- documentChanges will actually change files on disk inside apply_workspace_edit
- hasDocumentChanges = result.documentChanges ~= nil
+ for _, change in ipairs(result.documentChanges) do
+ if change.kind == 'rename' then
+ alreadyRenamed = true
+ end
+ end
vim.lsp.util.apply_workspace_edit(result, client.offset_encoding)
end
end
end
- if not hasDocumentChanges then
+ if not alreadyRenamed then
vim.lsp.util.rename(old_fname, new_fname)
end
end)