8585
8686function M .get_all_entries ()
8787 local entries = {}
88- local bufnr = api .nvim_get_current_buf ()
89- local lines = api .nvim_buf_get_lines (bufnr , 0 , - 1 , false )
90-
91- for _ , line in ipairs (lines ) do
92- local filename , lnum , col = line :match (" ([^:]+):(%d+):(%d+):" )
93- if filename and lnum and col then
88+ for display_lnum , item in ipairs (state .total_item ) do
89+ if item and item .filename then
9490 table.insert (entries , {
95- filename = filename ,
96- lnum = tonumber (lnum ),
97- col = tonumber (col ),
98- text = line :match (" :[^:]+$" ):sub (2 ),
91+ filename = item .filename ,
92+ lnum = item .lnum ,
93+ col = item .col ,
94+ text = item .text ,
95+ display_lnum = display_lnum - 1 ,
96+ is_replace_finish = item .is_replace_finish or false
9997 })
10098 end
10199 end
102-
103100 return entries
104101end
105102
@@ -176,11 +173,41 @@ function M.run_replace(entries)
176173 on_done = function (result )
177174 if result .ref then
178175 M .set_entry_finish (result .ref .display_lnum )
176+ -- Update UI by adding a checkmark to the line
177+ local bufnr = api .nvim_get_current_buf ()
178+ local line = result .ref .display_lnum
179+ api .nvim_buf_set_extmark (
180+ bufnr ,
181+ config .namespace ,
182+ line ,
183+ 0 ,
184+ { virt_text = { { ' ✓' , ' String' } }, virt_text_pos = ' eol' }
185+ )
186+ -- Trigger renderer redraw
187+ if state .renderer then
188+ print (" redrawing" )
189+ state .renderer :redraw ()
190+ end
179191 end
180192 end ,
181193 on_error = function (result )
182194 if result .ref then
183195 vim .notify (" Error replacing: " .. result .value , vim .log .levels .ERROR )
196+ -- Add error mark to the line
197+ local bufnr = api .nvim_get_current_buf ()
198+ local line = result .ref .display_lnum
199+ api .nvim_buf_set_extmark (
200+ bufnr ,
201+ config .namespace ,
202+ line ,
203+ 0 ,
204+ { virt_text = { { ' ✗' , ' Error' } }, virt_text_pos = ' eol' }
205+ )
206+ -- Trigger renderer redraw
207+ if state .renderer then
208+ print (" redrawing" )
209+ state .renderer :redraw ()
210+ end
184211 end
185212 end ,
186213 })
@@ -232,6 +259,10 @@ M.run_delete_line = function(entries)
232259 { virt_text = { { ' DONE' , ' String' } }, virt_text_pos = ' eol' }
233260 )
234261 end
262+ -- Trigger renderer redraw
263+ if state .renderer then
264+ state .renderer :redraw ()
265+ end
235266 end
236267 end ,
237268 on_error = function (result )
@@ -249,6 +280,10 @@ M.run_delete_line = function(entries)
249280 { virt_text = { { ' ERROR' , ' Error' } }, virt_text_pos = ' eol' }
250281 )
251282 end
283+ -- Trigger renderer redraw
284+ if state .renderer then
285+ state .renderer :redraw ()
286+ end
252287 end
253288 end ,
254289 })
0 commit comments