@@ -70,7 +70,13 @@ export const process_response = async (params: {
7070 ( f ) => f . type === 'file'
7171 ) as FileInPreview [ ]
7272 if ( files . length > 0 ) {
73- const result = await handle_restore_preview ( files )
73+ params . workspace_provider . pause_file_watcher ( )
74+ let result : { success : boolean ; original_states ?: OriginalFileState [ ] }
75+ try {
76+ result = await handle_restore_preview ( files )
77+ } finally {
78+ params . workspace_provider . resume_file_watcher ( )
79+ }
7480 if ( result . success && result . original_states ) {
7581 const augmented_states = result . original_states . map ( ( state ) => {
7682 const file_in_preview = files . find (
@@ -292,8 +298,10 @@ export const process_response = async (params: {
292298
293299 const total_patches = patches . length
294300
295- for ( let i = 0 ; i < total_patches ; i ++ ) {
296- on_progress ( Math . round ( ( i / total_patches ) * 100 ) )
301+ params . workspace_provider . pause_file_watcher ( )
302+ try {
303+ for ( let i = 0 ; i < total_patches ; i ++ ) {
304+ on_progress ( Math . round ( ( i / total_patches ) * 100 ) )
297305 const patch = patches [ i ]
298306 let workspace_path = default_workspace
299307
@@ -342,27 +350,30 @@ export const process_response = async (params: {
342350 }
343351 }
344352
345- if ( all_original_states . length > 0 ) {
346- all_original_states =
347- set_new_paths_in_original_states ( all_original_states )
348- await apply_file_relocations ( all_original_states )
349- update_undo_button_state ( {
350- extension_context : params . extension_context ,
351- prompt_view_provider : params . prompt_view_provider ,
352- states : all_original_states ,
353- applied_content : params . response ,
354- original_editor_state : params . args ?. original_editor_state
355- } )
356- }
353+ if ( all_original_states . length > 0 ) {
354+ all_original_states =
355+ set_new_paths_in_original_states ( all_original_states )
356+ await apply_file_relocations ( all_original_states )
357+ update_undo_button_state ( {
358+ extension_context : params . extension_context ,
359+ prompt_view_provider : params . prompt_view_provider ,
360+ states : all_original_states ,
361+ applied_content : params . response ,
362+ original_editor_state : params . args ?. original_editor_state
363+ } )
364+ }
357365
358- if ( all_original_states . length > 0 ) {
359- return {
360- original_states : all_original_states ,
361- response : params . response
366+ if ( all_original_states . length > 0 ) {
367+ return {
368+ original_states : all_original_states ,
369+ response : params . response
370+ }
362371 }
363- }
364372
365- return null
373+ return null
374+ } finally {
375+ params . workspace_provider . resume_file_watcher ( )
376+ }
366377 } else {
367378 const files = params . response_items . filter (
368379 ( item ) : item is FileItem => item . type == 'file'
@@ -405,18 +416,20 @@ export const process_response = async (params: {
405416 let final_original_states : OriginalFileState [ ] | null = null
406417 let operation_success = false
407418
408- if ( selected_mode_label == 'Fast replace' ) {
409- const result = await handle_fast_replace ( { files, on_progress } )
410- if ( result . success && result . original_states ) {
411- final_original_states = result . original_states
412- operation_success = true
413- }
414- Logger . info ( {
415- function_name : 'process_response' ,
416- message : 'Fast replace handler finished.' ,
417- data : { success : result . success }
418- } )
419- } else if ( selected_mode_label == 'Truncated' ) {
419+ params . workspace_provider . pause_file_watcher ( )
420+ try {
421+ if ( selected_mode_label == 'Fast replace' ) {
422+ const result = await handle_fast_replace ( { files, on_progress } )
423+ if ( result . success && result . original_states ) {
424+ final_original_states = result . original_states
425+ operation_success = true
426+ }
427+ Logger . info ( {
428+ function_name : 'process_response' ,
429+ message : 'Fast replace handler finished.' ,
430+ data : { success : result . success }
431+ } )
432+ } else if ( selected_mode_label == 'Truncated' ) {
420433 const result = await handle_truncated_edit ( { files, on_progress } )
421434 const successful_states = result . original_states || [ ]
422435 const failed_files = result . failed_files || [ ]
@@ -483,12 +496,15 @@ export const process_response = async (params: {
483496 message : 'Conflict markers handler finished.' ,
484497 data : { success : result . success }
485498 } )
486- } else {
487- Logger . error ( {
488- function_name : 'process_response' ,
489- message : 'No valid mode selected or determined.'
490- } )
491- return null
499+ } else {
500+ Logger . error ( {
501+ function_name : 'process_response' ,
502+ message : 'No valid mode selected or determined.'
503+ } )
504+ return null
505+ }
506+ } finally {
507+ params . workspace_provider . resume_file_watcher ( )
492508 }
493509
494510 if ( operation_success && final_original_states ) {
0 commit comments