diff src/quickfix.c @ 502:52e76e2b5b65 v7.0140

updated for version 7.0140
author vimboss
date Thu, 01 Sep 2005 20:46:49 +0000
parents f98374445f66
children 5ffc9de8bb26
line wrap: on
line diff
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -187,7 +187,7 @@ qf_init_ext(efile, buf, tv, errorformat,
 	char	*pattern;
     }		    fmt_pat[FMT_PATTERNS] =
 		    {
-			{'f', "\\f\\+"},
+			{'f', ".\\+"},	    /* only used when at end */
 			{'n', "\\d\\+"},
 			{'l', "\\d\\+"},
 			{'c', "\\d\\+"},
@@ -319,16 +319,25 @@ qf_init_ext(efile, buf, tv, errorformat,
 			ptr += 10;
 		    }
 #endif
-		    if (*efmp == 'f' && efmp[1] != NUL
-					 && efmp[1] != '\\' && efmp[1] != '%')
+		    if (*efmp == 'f' && efmp[1] != NUL)
 		    {
-			/* A file name may contain spaces, but this isn't in
-			 * "\f".  For "%f:%l:%m" there may be a ":" in the
-			 * file name.  Use ".\{-1,}x" instead (x is the next
-			 * character), the requirement that :999: follows
-			 * should work. */
-			STRCPY(ptr, ".\\{-1,}");
-			ptr += 7;
+			if (efmp[1] != '\\' && efmp[1] != '%')
+			{
+			    /* A file name may contain spaces, but this isn't
+			     * in "\f".  For "%f:%l:%m" there may be a ":" in
+			     * the file name.  Use ".\{-1,}x" instead (x is
+			     * the next character), the requirement that :999:
+			     * follows should work. */
+			    STRCPY(ptr, ".\\{-1,}");
+			    ptr += 7;
+			}
+			else
+			{
+			    /* File name followed by '\\' or '%': include as
+			     * many file name chars as possible. */
+			    STRCPY(ptr, "\\f\\+");
+			    ptr += 4;
+			}
 		    }
 		    else
 		    {