From 16af10999c175d0f7cba46cafdf7aba3c1a06aca Mon Sep 17 00:00:00 2001 From: Stephan Seitz Date: Mon, 20 Jul 2020 20:58:00 +0200 Subject: Fix #206: Use lsp.util.apply_text_edits for smart_rename --- lua/nvim-treesitter/refactor/smart_rename.lua | 13 ++++++------- lua/nvim-treesitter/ts_utils.lua | 8 ++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) (limited to 'lua') diff --git a/lua/nvim-treesitter/refactor/smart_rename.lua b/lua/nvim-treesitter/refactor/smart_rename.lua index ad26085c..af4890e4 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 a365c16f..fe110a7d 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 -- cgit v1.2.3