aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorStephan Seitz <stephan.seitz@fau.de>2020-07-20 20:58:00 +0200
committerStephan Seitz <stephan.lauf@yahoo.de>2020-07-20 23:24:54 +0200
commit16af10999c175d0f7cba46cafdf7aba3c1a06aca (patch)
tree877ad09a11d06d6dfda1b7e5beca919601a4c78d /lua
parentAdded some more fixes to c# highlighting (diff)
downloadnvim-treesitter-16af10999c175d0f7cba46cafdf7aba3c1a06aca.tar
nvim-treesitter-16af10999c175d0f7cba46cafdf7aba3c1a06aca.tar.gz
nvim-treesitter-16af10999c175d0f7cba46cafdf7aba3c1a06aca.tar.bz2
nvim-treesitter-16af10999c175d0f7cba46cafdf7aba3c1a06aca.tar.lz
nvim-treesitter-16af10999c175d0f7cba46cafdf7aba3c1a06aca.tar.xz
nvim-treesitter-16af10999c175d0f7cba46cafdf7aba3c1a06aca.tar.zst
nvim-treesitter-16af10999c175d0f7cba46cafdf7aba3c1a06aca.zip
Fix #206: Use lsp.util.apply_text_edits for smart_rename
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-treesitter/refactor/smart_rename.lua13
-rw-r--r--lua/nvim-treesitter/ts_utils.lua8
2 files changed, 14 insertions, 7 deletions
diff --git a/lua/nvim-treesitter/refactor/smart_rename.lua b/lua/nvim-treesitter/refactor/smart_rename.lua
index ad26085c8..af4890e46 100644
--- a/lua/nvim-treesitter/refactor/smart_rename.lua
+++ b/lua/nvim-treesitter/refactor/smart_rename.lua
@@ -35,15 +35,14 @@ function M.smart_rename(bufnr)
table.insert(nodes_to_rename, definition)
end
- for _, node in ipairs(nodes_to_rename) do
- local start_row, start_col, _, end_col = node:range()
- local line = api.nvim_buf_get_lines(bufnr, start_row, start_row + 1, false)[1]
+ local edits = {}
- if line then
- local new_line = line:sub(1, start_col) .. new_name .. line:sub(end_col + 1, -1)
- api.nvim_buf_set_lines(bufnr, start_row, start_row + 1, false, { new_line })
- end
+ for _, node in ipairs(nodes_to_rename) do
+ local lsp_range = ts_utils.node_to_lsp_range(node)
+ local text_edit = { range = lsp_range, newText = new_name }
+ table.insert(edits, text_edit)
end
+ vim.lsp.util.apply_text_edits(edits, bufnr)
end
function M.attach(bufnr)
diff --git a/lua/nvim-treesitter/ts_utils.lua b/lua/nvim-treesitter/ts_utils.lua
index a365c16f7..fe110a7dd 100644
--- a/lua/nvim-treesitter/ts_utils.lua
+++ b/lua/nvim-treesitter/ts_utils.lua
@@ -186,4 +186,12 @@ function M.is_in_node_range(node, line, col)
end
end
+function M.node_to_lsp_range(node)
+ local start_line, start_col, end_line, end_col = node:range()
+ local rtn = {}
+ rtn.start = { line = start_line, character = start_col }
+ rtn['end'] = { line = end_line, character = end_col }
+ return rtn
+end
+
return M