28
28
29
29
--- @param buf integer
30
30
--- @param parse boolean
31
- function M .schedule_refresh (buf , parse )
31
+ function M .schedule_render (buf , parse )
32
32
local mode = vim .fn .mode (true )
33
33
vim .schedule (function ()
34
34
if state .config .profile then
35
35
profiler .profile (buf , function ()
36
- return M .refresh (buf , mode , parse )
36
+ return M .render (buf , mode , parse )
37
37
end )
38
38
else
39
- M .refresh (buf , mode , parse )
39
+ M .render (buf , mode , parse )
40
40
end
41
41
end )
42
42
end
46
46
--- @param mode string
47
47
--- @param parse boolean
48
48
--- @return ' invalid' | ' disable' | ' parsed' | ' movement'
49
- function M .refresh (buf , mode , parse )
50
- -- Remove any existing marks if buffer is valid
51
- if not vim .api .nvim_buf_is_valid (buf ) then
52
- return ' invalid'
53
- end
54
- vim .api .nvim_buf_clear_namespace (buf , M .namespace , 0 , - 1 )
55
-
56
- -- Check that buffer is associated with a valid window before window operations
49
+ function M .render (buf , mode , parse )
50
+ -- Check that buffer and associated window are valid
57
51
local win = util .buf_to_win (buf )
58
- if not vim .api .nvim_win_is_valid (win ) then
52
+ if not vim .api .nvim_buf_is_valid ( buf ) or not vim . api . nvim_win_is_valid (win ) then
59
53
return ' invalid'
60
54
end
55
+ vim .api .nvim_buf_clear_namespace (buf , M .namespace , 0 , - 1 )
61
56
62
- if not M .should_render (buf , win , mode ) then
57
+ if not M .should_render (win , mode ) then
63
58
-- Set window options back to default
64
59
for name , value in pairs (state .config .win_options ) do
65
60
util .set_win (win , name , value .default )
@@ -100,11 +95,10 @@ function M.refresh(buf, mode, parse)
100
95
end
101
96
102
97
--- @private
103
- --- @param buf integer
104
98
--- @param win integer
105
99
--- @param mode string
106
100
--- @return boolean
107
- function M .should_render (buf , win , mode )
101
+ function M .should_render (win , mode )
108
102
if not state .enabled then
109
103
return false
110
104
end
@@ -114,23 +108,22 @@ function M.should_render(buf, win, mode)
114
108
if not vim .tbl_contains (state .config .render_modes , mode ) then
115
109
return false
116
110
end
117
- if util .file_size_mb (buf ) > state .config .max_file_size then
118
- return false
119
- end
120
111
return true
121
112
end
122
113
123
114
--- @private
124
115
--- @param buf integer
125
116
--- @return render.md.Mark[]
126
117
function M .parse_buffer (buf )
127
- local marks = {}
128
118
-- Make sure injections are processed
129
119
local parser = vim .treesitter .get_parser (buf )
130
- parser :parse (true )
131
- -- Parse and cache marks
120
+ if not parser :is_valid () then
121
+ parser :parse (true )
122
+ end
123
+ -- Parse marks
124
+ local marks = {}
132
125
parser :for_each_tree (function (tree , language_tree )
133
- vim .list_extend (marks , M .parse (buf , language_tree :lang (), tree :root ()))
126
+ vim .list_extend (marks , M .parse_tree (buf , language_tree :lang (), tree :root ()))
134
127
end )
135
128
return marks
136
129
end
142
135
--- @param language string
143
136
--- @param root TSNode
144
137
--- @return render.md.Mark[]
145
- function M .parse (buf , language , root )
138
+ function M .parse_tree (buf , language , root )
146
139
logger .debug (' language' , language )
147
140
148
141
local marks = {}
0 commit comments