diff options
| author | Stephan Seitz <stephan.seitz@fau.de> | 2020-07-20 20:58:00 +0200 |
|---|---|---|
| committer | Stephan Seitz <stephan.lauf@yahoo.de> | 2020-07-20 23:24:54 +0200 |
| commit | 16af10999c175d0f7cba46cafdf7aba3c1a06aca (patch) | |
| tree | 877ad09a11d06d6dfda1b7e5beca919601a4c78d /lua | |
| parent | Added some more fixes to c# highlighting (diff) | |
| download | nvim-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.lua | 13 | ||||
| -rw-r--r-- | lua/nvim-treesitter/ts_utils.lua | 8 |
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 |
