diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 20b5e6a..d1e53c4 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -678,10 +678,10 @@
 QuickFixCmdPre			Before a quickfix command is run (|:make|,
 				|:lmake|, |:grep|, |:lgrep|, |:grepadd|,
 				|:lgrepadd|, |:vimgrep|, |:lvimgrep|,
-				|:vimgrepadd|, |:lvimgrepadd|). The pattern is
-				matched against the command being run.  When
-				|:grep| is used but 'grepprg' is set to
-				"internal" it still matches "grep".
+				|:vimgrepadd|, |:lvimgrepadd|, |:cscope|).
+				The pattern is matched against the command
+				being run.  When |:grep| is used but 'grepprg'
+				is set to "internal" it still matches "grep".
 				This command cannot be used to set the
 				'makeprg' and 'grepprg' variables.
 				If this command causes an error, the quickfix
diff --git a/src/if_cscope.c b/src/if_cscope.c
index b8fef28..6ab9c24 100644
--- a/src/if_cscope.c
+++ b/src/if_cscope.c
@@ -1113,6 +1113,70 @@
 #ifdef FEAT_QUICKFIX
     char cmdletter;
     char *qfpos;
+
+    /* get cmd letter */
+    switch (opt[0])
+    {
+    case '0' :
+	cmdletter = 's';
+	break;
+    case '1' :
+	cmdletter = 'g';
+	break;
+    case '2' :
+	cmdletter = 'd';
+	break;
+    case '3' :
+	cmdletter = 'c';
+	break;
+    case '4' :
+	cmdletter = 't';
+	break;
+    case '6' :
+	cmdletter = 'e';
+	break;
+    case '7' :
+	cmdletter = 'f';
+	break;
+    case '8' :
+	cmdletter = 'i';
+	break;
+    default :
+	cmdletter = opt[0];
+    }
+
+    qfpos = (char *)vim_strchr(p_csqf, cmdletter);
+    if (qfpos != NULL)
+    {
+	qfpos++;
+	/* next symbol must be + or - */
+	if (strchr(CSQF_FLAGS, *qfpos) == NULL)
+	{
+	    char *nf = _("E469: invalid cscopequickfix flag %c for %c");
+	    char *buf = (char *)alloc((unsigned)strlen(nf));
+
+	    /* strlen will be enough because we use chars */
+	    if (buf != NULL)
+	    {
+		sprintf(buf, nf, *qfpos, *(qfpos-1));
+		(void)EMSG(buf);
+		vim_free(buf);
+	    }
+	    return FALSE;
+	}
+
+# ifdef FEAT_AUTOCMD
+	if (*qfpos != '0')
+	{
+	    apply_autocmds(EVENT_QUICKFIXCMDPRE, (char_u *)"cscope",
+					       curbuf->b_fname, TRUE, curbuf);
+#  ifdef FEAT_EVAL
+	    if (did_throw || force_abort)
+		return FALSE;
+#  endif
+	}
+# endif
+    }
 #endif
 
     /* create the actual command to send to cscope */
@@ -1174,58 +1238,6 @@
     }
 
 #ifdef FEAT_QUICKFIX
-    /* get cmd letter */
-    switch (opt[0])
-    {
-    case '0' :
-	cmdletter = 's';
-	break;
-    case '1' :
-	cmdletter = 'g';
-	break;
-    case '2' :
-	cmdletter = 'd';
-	break;
-    case '3' :
-	cmdletter = 'c';
-	break;
-    case '4' :
-	cmdletter = 't';
-	break;
-    case '6' :
-	cmdletter = 'e';
-	break;
-    case '7' :
-	cmdletter = 'f';
-	break;
-    case '8' :
-	cmdletter = 'i';
-	break;
-    default :
-	cmdletter = opt[0];
-    }
-
-    qfpos = (char *)vim_strchr(p_csqf, cmdletter);
-    if (qfpos != NULL)
-    {
-	qfpos++;
-	/* next symbol must be + or - */
-	if (strchr(CSQF_FLAGS, *qfpos) == NULL)
-	{
-	    char *nf = _("E469: invalid cscopequickfix flag %c for %c");
-	    char *buf = (char *)alloc((unsigned)strlen(nf));
-
-	    /* strlen will be enough because we use chars */
-	    if (buf != NULL)
-	    {
-		sprintf(buf, nf, *qfpos, *(qfpos-1));
-		(void)EMSG(buf);
-		vim_free(buf);
-	    }
-	    vim_free(nummatches);
-	    return FALSE;
-	}
-    }
     if (qfpos != NULL && *qfpos != '0' && totmatches > 0)
     {
 	/* fill error list */
@@ -1258,6 +1270,11 @@
 		    postponed_split = 0;
 		}
 # endif
+
+# ifdef FEAT_AUTOCMD
+		apply_autocmds(EVENT_QUICKFIXCMDPOST, (char_u *)"cscope",
+					       curbuf->b_fname, TRUE, curbuf);
+# endif
 		if (use_ll)
 		    /*
 		     * In the location list window, use the displayed location
diff --git a/src/version.c b/src/version.c
index 39ef89c..fc63502 100644
--- a/src/version.c
+++ b/src/version.c
@@ -682,6 +682,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    433,
+/**/
     432,
 /**/
     431,
