diff --git a/lua/nvim-treesitter-refactor.lua b/lua/nvim-treesitter-refactor.lua index e51f320..697ebfa 100644 --- a/lua/nvim-treesitter-refactor.lua +++ b/lua/nvim-treesitter-refactor.lua @@ -17,6 +17,8 @@ function M.init() enable = false, disable = {}, is_supported = queries.has_locals, + highlight_eol = false, + highlight_cursor = false, }, smart_rename = { module_path = "nvim-treesitter-refactor.smart_rename", diff --git a/lua/nvim-treesitter-refactor/highlight_current_scope.lua b/lua/nvim-treesitter-refactor/highlight_current_scope.lua index fc26187..8904eba 100644 --- a/lua/nvim-treesitter-refactor/highlight_current_scope.lua +++ b/lua/nvim-treesitter-refactor/highlight_current_scope.lua @@ -1,5 +1,6 @@ -- This module highlights the current scope of at the cursor position +local configs = require "nvim-treesitter.configs" local ts_utils = require "nvim-treesitter.ts_utils" local locals = require "nvim-treesitter.locals" local api = vim.api @@ -16,10 +17,21 @@ function M.highlight_current_scope(bufnr) local current_scope = locals.containing_scope(node_at_point, bufnr) if current_scope then - local start_line = current_scope:start() + local config = configs.get_module "refactor.highlight_current_scope" + -- Highlight range [start_line, end_line) 0-based + local highlighter = function(start_line, end_line) + vim.api.nvim_buf_set_extmark(bufnr, current_scope_namespace, math.max(vim.fn.line "w0" - 1, start_line), 0, { + end_row = math.min(vim.fn.line "w$", end_line), + end_col = 0, + hl_group = "TSCurrentScope", + hl_eol = config.highlight_eol, + }) + end + local start_line, _, end_line, _ = current_scope:range() - if start_line ~= 0 then - ts_utils.highlight_node(current_scope, bufnr, current_scope_namespace, "TSCurrentScope") + if start_line ~= 0 or end_line ~= vim.fn.line "$" then + highlighter(start_line, vim.fn.line "." + (config.highlight_cursor and 0 or -1)) + highlighter(vim.fn.line ".", end_line + 1) end end end @@ -34,7 +46,7 @@ function M.attach(bufnr) -- luacheck: push ignore 631 cmd( string.format( - [[autocmd CursorMoved lua require'nvim-treesitter-refactor.highlight_current_scope'.highlight_current_scope(%d)]], + [[autocmd CursorMoved,WinScrolled lua require'nvim-treesitter-refactor.highlight_current_scope'.highlight_current_scope(%d)]], bufnr, bufnr )