@@ -107,6 +107,7 @@ struct efm_S
107107};
108108
109109static int qf_init_ext __ARGS ((qf_info_T * qi , char_u * efile , buf_T * buf , typval_T * tv , char_u * errorformat , int newlist , linenr_T lnumfirst , linenr_T lnumlast , char_u * qf_title ));
110+ static void qf_store_title __ARGS ((qf_info_T * qi , char_u * title ));
110111static void qf_new_list __ARGS ((qf_info_T * qi , char_u * qf_title ));
111112static void ll_free_all __ARGS ((qf_info_T * * pqi ));
112113static int qf_add_entry __ARGS ((qf_info_T * qi , qfline_T * * prevp , char_u * dir , char_u * fname , int bufnum , char_u * mesg , long lnum , int col , int vis_col , char_u * pattern , int nr , int type , int valid ));
@@ -126,7 +127,7 @@ static int is_qf_win __ARGS((win_T *win, qf_info_T *qi));
126127static win_T * qf_find_win __ARGS ((qf_info_T * qi ));
127128static buf_T * qf_find_buf __ARGS ((qf_info_T * qi ));
128129static void qf_update_buffer __ARGS ((qf_info_T * qi ));
129- static void qf_set_title __ARGS ((qf_info_T * qi ));
130+ static void qf_set_title_var __ARGS ((qf_info_T * qi ));
130131static void qf_fill_buffer __ARGS ((qf_info_T * qi ));
131132#endif
132133static char_u * get_mef_name __ARGS ((void ));
@@ -884,6 +885,21 @@ qf_init_ext(qi, efile, buf, tv, errorformat, newlist, lnumfirst, lnumlast,
884885 return retval ;
885886}
886887
888+ static void
889+ qf_store_title (qi , title )
890+ qf_info_T * qi ;
891+ char_u * title ;
892+ {
893+ if (title != NULL )
894+ {
895+ char_u * p = alloc ((int )STRLEN (title ) + 2 );
896+
897+ qi -> qf_lists [qi -> qf_curlist ].qf_title = p ;
898+ if (p != NULL )
899+ sprintf ((char * )p , ":%s" , (char * )title );
900+ }
901+ }
902+
887903/*
888904 * Prepare for adding a new quickfix list.
889905 */
@@ -895,7 +911,7 @@ qf_new_list(qi, qf_title)
895911 int i ;
896912
897913 /*
898- * If the current entry is not the last entry, delete entries below
914+ * If the current entry is not the last entry, delete entries beyond
899915 * the current entry. This makes it possible to browse in a tree-like
900916 * way with ":grep'.
901917 */
@@ -916,14 +932,7 @@ qf_new_list(qi, qf_title)
916932 else
917933 qi -> qf_curlist = qi -> qf_listcount ++ ;
918934 vim_memset (& qi -> qf_lists [qi -> qf_curlist ], 0 , (size_t )(sizeof (qf_list_T )));
919- if (qf_title != NULL )
920- {
921- char_u * p = alloc ((int )STRLEN (qf_title ) + 2 );
922-
923- qi -> qf_lists [qi -> qf_curlist ].qf_title = p ;
924- if (p != NULL )
925- sprintf ((char * )p , ":%s" , (char * )qf_title );
926- }
935+ qf_store_title (qi , qf_title );
927936}
928937
929938/*
@@ -2444,7 +2453,7 @@ ex_copen(eap)
24442453 qf_fill_buffer (qi );
24452454
24462455 if (qi -> qf_lists [qi -> qf_curlist ].qf_title != NULL )
2447- qf_set_title (qi );
2456+ qf_set_title_var (qi );
24482457
24492458 curwin -> w_cursor .lnum = qi -> qf_lists [qi -> qf_curlist ].qf_index ;
24502459 curwin -> w_cursor .col = 0 ;
@@ -2599,7 +2608,7 @@ qf_update_buffer(qi)
25992608 {
26002609 curwin_save = curwin ;
26012610 curwin = win ;
2602- qf_set_title (qi );
2611+ qf_set_title_var (qi );
26032612 curwin = curwin_save ;
26042613
26052614 }
@@ -2612,7 +2621,7 @@ qf_update_buffer(qi)
26122621}
26132622
26142623 static void
2615- qf_set_title (qi )
2624+ qf_set_title_var (qi )
26162625 qf_info_T * qi ;
26172626{
26182627 set_internal_string_var ((char_u * )"w:quickfix_title" ,
@@ -3845,7 +3854,10 @@ set_errorlist(wp, list, action, title)
38453854 prevp -> qf_next != prevp ; prevp = prevp -> qf_next )
38463855 ;
38473856 else if (action == 'r' )
3857+ {
38483858 qf_free (qi , qi -> qf_curlist );
3859+ qf_store_title (qi , title );
3860+ }
38493861
38503862 for (li = list -> lv_first ; li != NULL ; li = li -> li_next )
38513863 {
0 commit comments