aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/treesitter/highlighter.lua
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2020-10-10 18:31:46 +0200
committerGitHub <noreply@github.com>2020-10-10 18:31:46 +0200
commitf7cc3ae0b7b8ce67294c00729d278362ad60a4f0 (patch)
tree5b601432a0b2d835bb31a8d2776d74bfd9b885b0 /runtime/lua/vim/treesitter/highlighter.lua
parent405044a41206e325c4f3ecaa6c62ed8f4bb32abe (diff)
parent6bf414c0d74ed6f2c573e87290830bade4330c9a (diff)
downloadrneovim-f7cc3ae0b7b8ce67294c00729d278362ad60a4f0.tar.gz
rneovim-f7cc3ae0b7b8ce67294c00729d278362ad60a4f0.tar.bz2
rneovim-f7cc3ae0b7b8ce67294c00729d278362ad60a4f0.zip
Merge pull request #13038 from bfredl/multiluahl
api: multiple decoration providers at once
Diffstat (limited to 'runtime/lua/vim/treesitter/highlighter.lua')
-rw-r--r--runtime/lua/vim/treesitter/highlighter.lua16
1 files changed, 11 insertions, 5 deletions
diff --git a/runtime/lua/vim/treesitter/highlighter.lua b/runtime/lua/vim/treesitter/highlighter.lua
index 5b964a6020..0f497fe434 100644
--- a/runtime/lua/vim/treesitter/highlighter.lua
+++ b/runtime/lua/vim/treesitter/highlighter.lua
@@ -6,6 +6,8 @@ TSHighlighter.__index = TSHighlighter
TSHighlighter.active = TSHighlighter.active or {}
+local ns = a.nvim_create_namespace("treesitter/highlighter")
+
-- These are conventions defined by tree-sitter, though it
-- needs to be user extensible also.
TSHighlighter.hl_map = {
@@ -158,7 +160,11 @@ function TSHighlighter._on_line(_, _win, buf, line)
local start_row, start_col, end_row, end_col = node:range()
local hl = self.hl_cache[capture]
if hl and end_row >= line then
- a.nvim__put_attr(start_row, start_col, { end_line = end_row, end_col = end_col, hl_group = hl })
+ a.nvim_buf_set_extmark(buf, ns, start_row, start_col,
+ { end_line = end_row, end_col = end_col,
+ hl_group = hl,
+ ephemeral = true
+ })
end
if start_row > line then
self.nextrow = start_row
@@ -166,7 +172,7 @@ function TSHighlighter._on_line(_, _win, buf, line)
end
end
-function TSHighlighter._on_start(_, buf, _tick)
+function TSHighlighter._on_buf(_, buf)
local self = TSHighlighter.active[buf]
if self then
local tree = self.parser:parse()
@@ -187,10 +193,10 @@ function TSHighlighter._on_win(_, _win, buf, _topline, botline)
return true
end
-a.nvim__set_luahl {
- on_start = TSHighlighter._on_start;
+a.nvim_set_decoration_provider(ns, {
+ on_buf = TSHighlighter._on_buf;
on_win = TSHighlighter._on_win;
on_line = TSHighlighter._on_line;
-}
+})
return TSHighlighter