From 17c4a93e4cc5d466aaa3f351b956f1a53bd4e46f Mon Sep 17 00:00:00 2001 From: JafarAbdi Date: Sat, 26 Mar 2022 07:16:03 +0300 Subject: [PATCH] Add option to highlight the whole line --- lua/nvim-treesitter-refactor.lua | 1 + .../highlight_current_scope.lua | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lua/nvim-treesitter-refactor.lua b/lua/nvim-treesitter-refactor.lua index e51f320..38cb36f 100644 --- a/lua/nvim-treesitter-refactor.lua +++ b/lua/nvim-treesitter-refactor.lua @@ -17,6 +17,7 @@ function M.init() enable = false, disable = {}, is_supported = queries.has_locals, + highlight_eol = 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 aa3b4cb..f2103a6 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 + -- Highlight range [start_line, end_line) 0-based + local highlighter = function(start_line, end_line) + local config = configs.get_module "refactor.highlight_current_scope" + 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 or end_line ~= vim.fn.line("$") then - ts_utils.highlight_node(current_scope, bufnr, current_scope_namespace, "TSCurrentScope") + highlighter(start_line, vim.fn.line(".") - 1) + highlighter(vim.fn.line("."), end_line + 1) end end end