2828
2929--- @param buf integer
3030--- @param parse boolean
31- function M .schedule_refresh (buf , parse )
31+ function M .schedule_render (buf , parse )
3232 local mode = vim .fn .mode (true )
3333 vim .schedule (function ()
3434 if state .config .profile then
3535 profiler .profile (buf , function ()
36- return M .refresh (buf , mode , parse )
36+ return M .render (buf , mode , parse )
3737 end )
3838 else
39- M .refresh (buf , mode , parse )
39+ M .render (buf , mode , parse )
4040 end
4141 end )
4242end
4646--- @param mode string
4747--- @param parse boolean
4848--- @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
5751 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
5953 return ' invalid'
6054 end
55+ vim .api .nvim_buf_clear_namespace (buf , M .namespace , 0 , - 1 )
6156
62- if not M .should_render (buf , win , mode ) then
57+ if not M .should_render (win , mode ) then
6358 -- Set window options back to default
6459 for name , value in pairs (state .config .win_options ) do
6560 util .set_win (win , name , value .default )
@@ -100,11 +95,10 @@ function M.refresh(buf, mode, parse)
10095end
10196
10297--- @private
103- --- @param buf integer
10498--- @param win integer
10599--- @param mode string
106100--- @return boolean
107- function M .should_render (buf , win , mode )
101+ function M .should_render (win , mode )
108102 if not state .enabled then
109103 return false
110104 end
@@ -114,23 +108,22 @@ function M.should_render(buf, win, mode)
114108 if not vim .tbl_contains (state .config .render_modes , mode ) then
115109 return false
116110 end
117- if util .file_size_mb (buf ) > state .config .max_file_size then
118- return false
119- end
120111 return true
121112end
122113
123114--- @private
124115--- @param buf integer
125116--- @return render.md.Mark[]
126117function M .parse_buffer (buf )
127- local marks = {}
128118 -- Make sure injections are processed
129119 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 = {}
132125 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 ()))
134127 end )
135128 return marks
136129end
142135--- @param language string
143136--- @param root TSNode
144137--- @return render.md.Mark[]
145- function M .parse (buf , language , root )
138+ function M .parse_tree (buf , language , root )
146139 logger .debug (' language' , language )
147140
148141 local marks = {}
0 commit comments