# HG changeset patch # User Roland McGrath # Date 784508475 0 # Node ID 9d7972f4657c099633dac113eada5016986c6a54 # Parent be7b66e2cb98e0671c861630b83a40c457d6cd88 (compile): With prefix arg, prompt even if (not compilation-read-command). (compilation-error-regexp-alist): Make first regexp match column numbers too. Remove regexp for "prog:file:line: error". Replace GNAT 1.82 regexp with "prog: file:line\(:col\)?: error". (compilation-parse-errors): If spec has a column subexpr, but it was optional and didn't match, ignore it. diff -r be7b66e2cb98 -r 9d7972f4657c lisp/progmodes/compile.el --- a/lisp/progmodes/compile.el Thu Nov 10 22:26:57 1994 +0000 +++ b/lisp/progmodes/compile.el Thu Nov 10 23:01:15 1994 +0000 @@ -108,19 +108,15 @@ ;; foo.c:8: error message ;; or HP-UX 7.0 fc: ;; foo.f :16 some horrible error message - ;; - ;; We refuse to match file:number:number - ;; because we want to leave that for another case (see below, GNAT). + ;; or GNU utilities with column (GNAT 1.82): + ;; foo.adb:2:1: Unit name does not match file name ;; ;; We'll insist that the number be followed by a colon or closing ;; paren, because otherwise this matches just about anything ;; containing a number with spaces around it. - ("\n\\([^:( \t\n]+\\)[:(][ \t]*\\([0-9]+\\)\\([) \t]\\|:[^0-9\n]\\)" 1 2) - - ;; GNU error message with a program name in it. - ;; compilername:file:linenum: error message - ("\n\\([^:( \t\n]+\\):\\([^:( \t\n]+\\):[ \t]*\\([0-9]+\\)\\(:[^0-9\n]\\)" - 2 3) + ("\n\ +\\([^:( \t\n]+\\)[:(][ \t]*\\([0-9]+\\)\\([) \t]\\|\ +:\\([^0-9\n]\\|\\([0-9]+:\\)\\)\\)" 1 2 5) ;; Borland C++: ;; Error ping.c 15: Unable to open include file 'sys/types.h' @@ -179,17 +175,13 @@ ;; E, file.cc(35,52) Illegal operation on pointers ("\n[EW], \\([^(\n]*\\)(\\([0-9]+\\),[ \t]*\\([0-9]+\\)" 1 2 3) - ;; GNAT compiler v1.82 - ;; foo.adb:2:1: Unit name does not match file name - ("\n\\([^ \n\t:]+\\):\\([0-9]+\\):\\([0-9]+\\)[: \t]" 1 2 3) + ;; GNU messages with program name and optional column number. + ("\n[^0-9 \n\t:]+:[ \t]*\\([^ \n\t:]+\\):\ +\\([0-9]+\\):\\(\\([0-9]+\\)[: \t]\\)?" 1 2 4) ;; SGI Irix 5.2 compiler warnings ;; cfe: Warning 835: vpr_tiff.c, line 65: No prototype for the call to rint ("ning [0-9]+: \\([^,\" \n\t]+\\)[,:] \\(line \\)?\\([0-9]+\\):" 1 3) - - ;; GNU message with program name and column number. - ("\n\\([^ \n\t:]+\\):\\([^ \n\t:]+\\):\ -\\([0-9]+\\):\\([0-9]+\\)[: \t]" 2 3 4) ) "Alist that specifies how to match errors in compiler output. Each element has the form (REGEXP FILE-IDX LINE-IDX [COLUMN-IDX]). @@ -270,6 +262,9 @@ You can then use the command \\[next-error] to find the next error message and move to the source code that caused it. +Interactively, prompts for the command if `compilation-read-command' is +non-nil; otherwise uses `compile-command'. With prefix arg, always prompts. + To run more than one compilation at once, start one and rename the \`*compilation*' buffer to some other name with \\[rename-buffer]. Then start the next one. @@ -278,7 +273,7 @@ the function in `compilation-buffer-name-function', so you can set that to a function that generates a unique name." (interactive - (if compilation-read-command + (if (or compilation-read-command current-prefix-arg) (list (read-from-minibuffer "Compile command: " compile-command nil nil '(compile-history . 1))) @@ -1306,6 +1301,7 @@ (match-beginning (nth 2 alist)) (match-end (nth 2 alist))))) (column (and (nth 3 alist) + (match-beginning (nth 3 alist)) (string-to-int (buffer-substring (match-beginning (nth 3 alist))