@@ -5,9 +5,12 @@ local MarkupHighlighter = nil
55local valid_bufnrs = {}
66
77--- @param bufnr number
8- local function apply_highlights (bufnr , line )
9- HideLeadingStars .apply (namespace , bufnr , line )
10- MarkupHighlighter .apply (namespace , bufnr , line )
8+ --- @param first_line number
9+ --- @param last_line number
10+ local function apply_highlights (bufnr , first_line , last_line , tick_changed )
11+ local changed_lines = vim .api .nvim_buf_get_lines (bufnr , first_line , last_line , false )
12+ HideLeadingStars .apply (namespace , bufnr , changed_lines , first_line , last_line )
13+ MarkupHighlighter .apply (namespace , bufnr , changed_lines , first_line , last_line , tick_changed )
1114end
1215
1316local function setup ()
@@ -22,19 +25,18 @@ local function setup()
2225 MarkupHighlighter .setup ()
2326
2427 vim .api .nvim_set_decoration_provider (namespace , {
25- on_start = function (_ , tick )
26- local bufnr = vim .api .nvim_get_current_buf ()
27- if valid_bufnrs [bufnr ] == tick or vim .bo [bufnr ].filetype ~= ' org' then
28- return false
28+ on_win = function (_ , _ , bufnr , topline , botline )
29+ local changedtick = vim .api .nvim_buf_get_var (bufnr , ' changedtick' )
30+ local tick_changed = not valid_bufnrs [bufnr ] or valid_bufnrs [bufnr ] ~= changedtick
31+ if valid_bufnrs [bufnr ] then
32+ valid_bufnrs [bufnr ] = changedtick
33+ return apply_highlights (bufnr , topline , botline , tick_changed )
34+ end
35+ local ft = vim .api .nvim_buf_get_option (bufnr , ' filetype' )
36+ if ft == ' org' then
37+ valid_bufnrs [bufnr ] = changedtick
38+ return apply_highlights (bufnr , topline , botline , tick_changed )
2939 end
30- valid_bufnrs [bufnr ] = tick
31- return true
32- end ,
33- on_win = function (_ , _ , bufnr )
34- return valid_bufnrs [bufnr ] ~= nil and vim .bo [bufnr ].filetype == ' org'
35- end ,
36- on_line = function (_ , _ , bufnr , line )
37- return apply_highlights (bufnr , line )
3840 end ,
3941 })
4042end
0 commit comments