@@ -126,7 +126,7 @@ static int qf_win_pos_update(qf_info_T *qi, int old_qf_index);
126126static int is_qf_win (win_T * win , qf_info_T * qi );
127127static win_T * qf_find_win (qf_info_T * qi );
128128static buf_T * qf_find_buf (qf_info_T * qi );
129- static void qf_update_buffer (qf_info_T * qi );
129+ static void qf_update_buffer (qf_info_T * qi , int update_cursor );
130130static void qf_set_title_var (qf_info_T * qi );
131131static void qf_fill_buffer (qf_info_T * qi );
132132#endif
@@ -880,7 +880,7 @@ qf_init_ext(
880880 vim_free (fmtstr );
881881
882882#ifdef FEAT_WINDOWS
883- qf_update_buffer (qi );
883+ qf_update_buffer (qi , TRUE );
884884#endif
885885
886886 return retval ;
@@ -2176,7 +2176,7 @@ qf_msg(qf_info_T *qi)
21762176 qi -> qf_curlist + 1 , qi -> qf_listcount ,
21772177 qi -> qf_lists [qi -> qf_curlist ].qf_count );
21782178#ifdef FEAT_WINDOWS
2179- qf_update_buffer (qi );
2179+ qf_update_buffer (qi , TRUE );
21802180#endif
21812181}
21822182
@@ -2606,7 +2606,7 @@ qf_find_buf(qf_info_T *qi)
26062606 * Find the quickfix buffer. If it exists, update the contents.
26072607 */
26082608 static void
2609- qf_update_buffer (qf_info_T * qi )
2609+ qf_update_buffer (qf_info_T * qi , int update_cursor )
26102610{
26112611 buf_T * buf ;
26122612 win_T * win ;
@@ -2633,7 +2633,8 @@ qf_update_buffer(qf_info_T *qi)
26332633 /* restore curwin/curbuf and a few other things */
26342634 aucmd_restbuf (& aco );
26352635
2636- (void )qf_win_pos_update (qi , 0 );
2636+ if (update_cursor )
2637+ (void )qf_win_pos_update (qi , 0 );
26372638 }
26382639}
26392640
@@ -3675,7 +3676,7 @@ ex_vimgrep(exarg_T *eap)
36753676 qi -> qf_lists [qi -> qf_curlist ].qf_index = 1 ;
36763677
36773678#ifdef FEAT_WINDOWS
3678- qf_update_buffer (qi );
3679+ qf_update_buffer (qi , TRUE );
36793680#endif
36803681
36813682#ifdef FEAT_AUTOCMD
@@ -4115,12 +4116,16 @@ set_errorlist(
41154116 qi -> qf_lists [qi -> qf_curlist ].qf_nonevalid = TRUE;
41164117 else
41174118 qi -> qf_lists [qi -> qf_curlist ].qf_nonevalid = FALSE;
4118- qi -> qf_lists [qi -> qf_curlist ].qf_ptr = qi -> qf_lists [qi -> qf_curlist ].qf_start ;
4119- if (qi -> qf_lists [qi -> qf_curlist ].qf_count > 0 )
4120- qi -> qf_lists [qi -> qf_curlist ].qf_index = 1 ;
4119+ if (action != 'a' ) {
4120+ qi -> qf_lists [qi -> qf_curlist ].qf_ptr =
4121+ qi -> qf_lists [qi -> qf_curlist ].qf_start ;
4122+ if (qi -> qf_lists [qi -> qf_curlist ].qf_count > 0 )
4123+ qi -> qf_lists [qi -> qf_curlist ].qf_index = 1 ;
4124+ }
41214125
41224126#ifdef FEAT_WINDOWS
4123- qf_update_buffer (qi );
4127+ /* Don't update the cursor in quickfix window when appending entries */
4128+ qf_update_buffer (qi , (action != 'a' ));
41244129#endif
41254130
41264131 return retval ;
@@ -4427,7 +4432,7 @@ ex_helpgrep(exarg_T *eap)
44274432 free_string_option (save_cpo );
44284433
44294434#ifdef FEAT_WINDOWS
4430- qf_update_buffer (qi );
4435+ qf_update_buffer (qi , TRUE );
44314436#endif
44324437
44334438#ifdef FEAT_AUTOCMD
0 commit comments