changeset 3269:5850b5827691 v7.3.403

updated for version 7.3.403 Problem: ":helpgrep" does not trigger QuickFixCmd* autocommands. Solution: Trigger the autocommands. (Christian Brabandt)
author Bram Moolenaar <bram@vim.org>
date Fri, 20 Jan 2012 13:39:07 +0100
parents a8adbe28d150
children df0b1a9396fa
files src/quickfix.c src/version.c
diffstat 2 files changed, 36 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -3878,16 +3878,35 @@ ex_helpgrep(eap)
     qf_info_T	*qi = &ql_info;
     int		new_qi = FALSE;
     win_T	*wp;
-
-    /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
-    save_cpo = p_cpo;
-    p_cpo = empty_option;
+#ifdef FEAT_AUTOCMD
+    char_u	*au_name =  NULL;
+#endif
 
 #ifdef FEAT_MULTI_LANG
     /* Check for a specified language */
     lang = check_help_lang(eap->arg);
 #endif
 
+#ifdef FEAT_AUTOCMD
+    switch (eap->cmdidx)
+    {
+	case CMD_helpgrep:  au_name = (char_u *)"helpgrep"; break;
+	case CMD_lhelpgrep: au_name = (char_u *)"lhelpgrep"; break;
+	default: break;
+    }
+    if (au_name != NULL)
+    {
+	apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name,
+					       curbuf->b_fname, TRUE, curbuf);
+	if (did_throw || force_abort)
+	    return;
+    }
+#endif
+
+    /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
+    save_cpo = p_cpo;
+    p_cpo = empty_option;
+
     if (eap->cmdidx == CMD_lhelpgrep)
     {
 	/* Find an existing help window */
@@ -4036,6 +4055,17 @@ ex_helpgrep(eap)
     qf_update_buffer(qi);
 #endif
 
+#ifdef FEAT_AUTOCMD
+    if (au_name != NULL)
+    {
+	apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
+					       curbuf->b_fname, TRUE, curbuf);
+	if (!new_qi && qi != &ql_info && qf_find_buf(qi) == NULL)
+	    /* autocommands made "qi" invalid */
+	    return;
+    }
+#endif
+
     /* Jump to first match. */
     if (qi->qf_lists[qi->qf_curlist].qf_count > 0)
 	qf_jump(qi, 0, 0, FALSE);
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    403,
+/**/
     402,
 /**/
     401,