summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/autocmd.txt5
-rw-r--r--src/quickfix.c31
-rw-r--r--src/version.c2
3 files changed, 36 insertions, 2 deletions
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index d6338ee67..44d2d62c4 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -711,7 +711,10 @@ QuickFixCmdPre Before a quickfix command is run (|:make|,
*QuickFixCmdPost*
QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix
command is run, before jumping to the first
- location. See |QuickFixCmdPost-example|.
+ location. For |:cfile| and |:lfile| commands
+ it is run after error file is read and before
+ moving to the first error.
+ See |QuickFixCmdPost-example|.
*RemoteReply*
RemoteReply When a reply from a Vim that functions as
server was received |server2client()|. The
diff --git a/src/quickfix.c b/src/quickfix.c
index 19eb0587a..a581eb06c 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -2995,11 +2995,28 @@ ex_cfile(eap)
{
win_T *wp = NULL;
qf_info_T *qi = &ql_info;
+#ifdef FEAT_AUTOCMD
+ char_u *au_name = NULL;
+#endif
if (eap->cmdidx == CMD_lfile || eap->cmdidx == CMD_lgetfile
- || eap->cmdidx == CMD_laddfile)
+ || eap->cmdidx == CMD_laddfile)
wp = curwin;
+#ifdef FEAT_AUTOCMD
+ switch (eap->cmdidx)
+ {
+ case CMD_cfile: au_name = (char_u *)"cfile"; break;
+ case CMD_cgetfile: au_name = (char_u *)"cgetfile"; break;
+ case CMD_caddfile: au_name = (char_u *)"caddfile"; break;
+ case CMD_lfile: au_name = (char_u *)"lfile"; break;
+ case CMD_lgetfile: au_name = (char_u *)"lgetfile"; break;
+ case CMD_laddfile: au_name = (char_u *)"laddfile"; break;
+ default: break;
+ }
+ if (au_name != NULL)
+ apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, NULL, FALSE, curbuf);
+#endif
#ifdef FEAT_BROWSE
if (cmdmod.browse)
{
@@ -3031,10 +3048,22 @@ ex_cfile(eap)
&& (eap->cmdidx == CMD_cfile
|| eap->cmdidx == CMD_lfile))
{
+#ifdef FEAT_AUTOCMD
+ if (au_name != NULL)
+ apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf);
+#endif
if (wp != NULL)
qi = GET_LOC_LIST(wp);
qf_jump(qi, 0, 0, eap->forceit); /* display first error */
}
+
+ else
+ {
+#ifdef FEAT_AUTOCMD
+ if (au_name != NULL)
+ apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf);
+#endif
+ }
}
/*
diff --git a/src/version.c b/src/version.c
index 7a22e46cb..65ad51df5 100644
--- 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 */
/**/
+ 468,
+/**/
467,
/**/
466,