neovim

Personal neovim configuration files
git clone git://gtms.dev/neovim
Log | Files | Refs

commit 7256fd1f0fbf8839387a37d914a6254e6e2dd1c6
parent 079ad4225cc4e94b569645dc83cc394b22ad440b
Author: Tomas Nemec <owl@gtms.dev>
Date:   Tue, 16 Jan 2024 08:01:08 +0100

update

Diffstat:
Mlua/tms/lsp/dart.lua | 4+++-
Mlua/tms/p/rename_file.lua | 11+++++++----
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)