add Range:highlight()

This commit is contained in:
Jonathan Apodaca 2024-10-11 23:50:23 -06:00
parent 3bf3836bd7
commit c2ba91893f

View File

@ -1,6 +1,5 @@
local Pos = require 'tt.pos'
local State = require 'tt.state'
local utils = require 'tt.utils'
---@class Range
---@field start Pos
@ -415,4 +414,33 @@ function Range:set_visual_selection()
end)
end
---@param group string
---@param opts? { timeout?: number, priority?: number }
function Range:highlight(group, opts)
opts = opts or {}
local ns = vim.api.nvim_create_namespace ''
vim.highlight.range(
self.start.buf,
ns,
group,
{ self.start.lnum, self.start.col },
{ self.stop.lnum, self.stop.col },
{
inclusive = true,
priority = opts.priority,
regtype = 'v',
}
)
vim.cmd.redraw()
local function clear()
vim.print 'clearing highlight...'
vim.api.nvim_buf_clear_namespace(self.start.buf, ns, self.start.lnum, self.stop.lnum + 1)
end
if opts.timeout ~= nil then vim.defer_fn(clear, opts.timeout) end
return { ns = ns, clear = clear }
end
return Range