25
25
26
26
local function byte2pos (byte )
27
27
local line = call_function (" byte2line" , { byte })
28
- -- local col = byte - vim.api.nvim_buf_get_offset(buffer, line)
29
28
local col = byte - call_function (" line2byte" , { line })
30
29
return line , col
31
30
end
@@ -36,23 +35,27 @@ local function get_contents (buffer)
36
35
return table.concat (lines )
37
36
end
38
37
39
- local function highlight (buffer , namespace )
38
+ local function highlight (buffer , namespace , firstline )
40
39
local contents = get_contents (buffer )
41
40
local events = rust .get_offsets (contents )
41
+ dump (firstline )
42
42
for _ , event in ipairs (events ) do
43
- local sline , scol = byte2pos (event .first )
44
- local eline , ecol = byte2pos (event .last )
45
- if sline < eline then
46
- buf_add_highlight (buffer , namespace , event .group , sline - 1 , scol , - 1 )
47
- sline = sline + 1
48
- while sline < eline do
49
- buf_add_highlight (buffer , namespace , event .group , sline - 1 , 0 , - 1 )
43
+ repeat -- Allow continue in for loop
44
+ local sline , scol = byte2pos (event .first )
45
+ if sline < firstline then break end
46
+ local eline , ecol = byte2pos (event .last )
47
+ if sline < eline then
48
+ buf_add_highlight (buffer , namespace , event .group , sline - 1 , scol , - 1 )
50
49
sline = sline + 1
50
+ while sline < eline do
51
+ buf_add_highlight (buffer , namespace , event .group , sline - 1 , 0 , - 1 )
52
+ sline = sline + 1
53
+ end
54
+ buf_add_highlight (buffer , namespace , event .group , sline - 1 , 0 , ecol )
55
+ else
56
+ buf_add_highlight (buffer , namespace , event .group , sline - 1 , scol , ecol )
51
57
end
52
- buf_add_highlight (buffer , namespace , event .group , sline - 1 , 0 , ecol )
53
- else
54
- buf_add_highlight (buffer , namespace , event .group , sline - 1 , scol , ecol )
55
- end
58
+ until true
56
59
end
57
60
end
58
61
65
68
commonmarker .attach = function (self , buffer )
66
69
if self ._attachments [buffer ] then return end
67
70
self ._attachments [buffer ] = true
68
- highlight (buffer , self ._namespace )
71
+ highlight (buffer , self ._namespace , 0 )
69
72
buf_attach (buffer , false , {
70
- on_lines = function (_ , _ , _ , _ , _ , _ )
73
+ on_lines = function (_ , _ , firstline , _ , _ , _ )
71
74
dump (self )
72
75
buf_clear_namespace (buffer , self ._namespace , 0 , - 1 )
73
76
-- Returning true here detaches, we thought we should have been already
74
77
if not self ._attachments [buffer ] then return true end
75
- highlight (buffer , self ._namespace )
78
+ highlight (buffer , self ._namespace , firstline )
76
79
end ,
77
80
on_detach = function (_ )
78
81
self ._attachments [buffer ] = nil
0 commit comments