comparison lisp/packages/compile.el @ 116:9f59509498e1 r20-1b10

Import from CVS: tag r20-1b10
author cvs
date Mon, 13 Aug 2007 09:23:06 +0200
parents 821dec489c24
children cca96a509cfe
comparison
equal deleted inserted replaced
115:f109f7dabbe2 116:9f59509498e1
107 (defvar compilation-error-message "No more errors" 107 (defvar compilation-error-message "No more errors"
108 "Message to print when no more matches are found.") 108 "Message to print when no more matches are found.")
109 109
110 (defvar compilation-num-errors-found) 110 (defvar compilation-num-errors-found)
111 111
112 (defvar compilation-error-regexp-alist 112 (defvar compilation-error-regexp-systems-list 'all
113 "This is either the symbol `all', or a list of systems for which
114 compilation error regexps should be included in
115 `compilation-error-regexp-alist'.
116
117 The list of known systems is:
118 gnu: but of course
119 lcc: Lucid compilers
120 ada: Ada compilers
121 of: Using tool that says line xx of foo.c
122 comma: Using tool that says \"foo.c\", line 12
123 4bsd: Using 4bsd
124 msft: Using microsoft
125 borland: Using Borland
126 mips: Using Mips
127 sgi: Using SGI
128 cray: Using Cray
129 ibm: IBM C compilers
130 aix: the operating system
131 ultrix: the operating system
132
133 See also the variable `compilation-error-regexp-alist-alist'.")
134
135 (defun compilation-build-compilation-error-regexp-alist ()
136 (interactive)
137 (setq compilation-error-regexp-alist
138 (apply 'append
139 (mapcar
140 '(lambda (elt)
141 (if (or (not (consp compilation-error-regexp-systems-list))
142 (and (consp (car elt))
143 (intersection (car elt)
144 compilation-error-regexp-systems-list))
145 (memq (car elt) compilation-error-regexp-systems-list))
146 (cdr elt)
147 nil))
148 compilation-error-regexp-alist-alist))))
149
150 (defvar compilation-error-regexp-alist-alist
113 '( 151 '(
114 ;; NOTE! See also grep-regexp-alist, below. 152 ;; NOTE! See also grep-regexp-alist, below.
115 153
116 ;; 4.3BSD grep, cc, lint pass 1: 154 ;; 4.3BSD grep, cc, lint pass 1:
117 ;; /usr/src/foo/foo.c(8): warning: w may be used before set 155 ;; /usr/src/foo/foo.c(8): warning: w may be used before set
123 ;; foo.adb:2:1: Unit name does not match file name 161 ;; foo.adb:2:1: Unit name does not match file name
124 ;; 162 ;;
125 ;; We'll insist that the number be followed by a colon or closing 163 ;; We'll insist that the number be followed by a colon or closing
126 ;; paren, because otherwise this matches just about anything 164 ;; paren, because otherwise this matches just about anything
127 ;; containing a number with spaces around it. 165 ;; containing a number with spaces around it.
166 ((4bsd gnu)
128 ("\ 167 ("\
129 \\([a-zA-Z]?:?[^:( \t\n]+\\)[:(][ \t]*\\([0-9]+\\)\\([) \t]\\|\ 168 \\([a-zA-Z]?:?[^:( \t\n]+\\)[:(][ \t]*\\([0-9]+\\)\\([) \t]\\|\
130 :\\([^0-9\n]\\|\\([0-9]+:\\)\\)\\)" 1 2 5) 169 :\\([^0-9\n]\\|\\([0-9]+:\\)\\)\\)" 1 2 5)
170 )
131 171
132 ;; Microsoft C/C++: 172 ;; Microsoft C/C++:
133 ;; keyboard.c(537) : warning C4005: 'min' : macro redefinition 173 ;; keyboard.c(537) : warning C4005: 'min' : macro redefinition
134 ;; d:\tmp\test.c(23) : error C2143: syntax error : missing ';' before 'if' 174 ;; d:\tmp\test.c(23) : error C2143: syntax error : missing ';' before 'if'
175 (msft
135 ("\\(\\([a-zA-Z]:\\)?[^:( \t\n-]+\\)[:(][ \t]*\\([0-9]+\\)[:) \t]" 1 3) 176 ("\\(\\([a-zA-Z]:\\)?[^:( \t\n-]+\\)[:(][ \t]*\\([0-9]+\\)[:) \t]" 1 3)
177 )
136 178
137 ;; Borland C++: 179 ;; Borland C++:
138 ;; Error ping.c 15: Unable to open include file 'sys/types.h' 180 ;; Error ping.c 15: Unable to open include file 'sys/types.h'
139 ;; Warning ping.c 68: Call to function 'func' with no prototype 181 ;; Warning ping.c 68: Call to function 'func' with no prototype
182 (borland
140 ("\\(Error\\|Warning\\) \\([a-zA-Z]?:?[^:( \t\n]+\\)\ 183 ("\\(Error\\|Warning\\) \\([a-zA-Z]?:?[^:( \t\n]+\\)\
141 \\([0-9]+\\)\\([) \t]\\|:[^0-9\n]\\)" 2 3) 184 \\([0-9]+\\)\\([) \t]\\|:[^0-9\n]\\)" 2 3)
185 )
142 186
143 ;; 4.3BSD lint pass 2 187 ;; 4.3BSD lint pass 2
144 ;; strcmp: variable # of args. llib-lc(359) :: /usr/src/foo/foo.c(8) 188 ;; strcmp: variable # of args. llib-lc(359) :: /usr/src/foo/foo.c(8)
189 (4bsd
145 ("[^\n]*[ \t:]\\([a-zA-Z]?:?[^:( \t\n]+\\)[:(](+[ \t]*\\([0-9]+\\))[:) \t]*$" 190 ("[^\n]*[ \t:]\\([a-zA-Z]?:?[^:( \t\n]+\\)[:(](+[ \t]*\\([0-9]+\\))[:) \t]*$"
146 1 2) 191 1 2)
192 )
147 193
148 ;; 4.3BSD lint pass 3 194 ;; 4.3BSD lint pass 3
149 ;; bloofle defined( /users/wolfgang/foo.c(4) ), but never used 195 ;; bloofle defined( /users/wolfgang/foo.c(4) ), but never used
150 ;; This used to be 196 ;; This used to be
151 ;; ("[ \t(]+\\([a-zA-Z]?:?[^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]+" 1 2) 197 ;; ("[ \t(]+\\([a-zA-Z]?:?[^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]+" 1 2)
152 ;; which is regexp Impressionism - it matches almost anything! 198 ;; which is regexp Impressionism - it matches almost anything!
199 (4bsd
153 ("[^\n]*([ \t]*\\([a-zA-Z]?:?[^:( \t\n]+\\)[:(][ \t]*\\([0-9]+\\))" 1 2) 200 ("[^\n]*([ \t]*\\([a-zA-Z]?:?[^:( \t\n]+\\)[:(][ \t]*\\([0-9]+\\))" 1 2)
201 )
154 202
155 ;; MIPS lint pass<n>; looks good for SunPro lint also 203 ;; MIPS lint pass<n>; looks good for SunPro lint also
156 ;; TrimMask (255) in solomon.c may be indistinguishable from TrimMasks (93) in solomon.c due to truncation 204 ;; TrimMask (255) in solomon.c may be indistinguishable from TrimMasks (93) in solomon.c due to truncation
205 (mips
157 ("[^ \n]+ (\\([0-9]+\\)) in \\([^ \n]+\\)" 2 1) 206 ("[^ \n]+ (\\([0-9]+\\)) in \\([^ \n]+\\)" 2 1)
158 ;; name defined but never used: LinInt in cmap_calc.c(199) 207 ;; name defined but never used: LinInt in cmap_calc.c(199)
159 ("[^\n]*in \\([^(\n]+\\)(\\([0-9]+\\))$" 1 2) 208 ("[^\n]*in \\([^(\n]+\\)(\\([0-9]+\\))$" 1 2)
209 )
160 210
161 ;; Ultrix 3.0 f77: 211 ;; Ultrix 3.0 f77:
162 ;; fort: Severe: addstf.f, line 82: Missing operator or delimiter symbol 212 ;; fort: Severe: addstf.f, line 82: Missing operator or delimiter symbol
163 ;; Some SGI cc version: 213 ;; Some SGI cc version:
164 ;; cfe: Warning 835: foo.c, line 2: something 214 ;; cfe: Warning 835: foo.c, line 2: something
215 ((sgi ultrix)
165 ("\\(cfe\\|fort\\): [^:\n]*: \\([^ \n]*\\), line \\([0-9]+\\):" 2 3) 216 ("\\(cfe\\|fort\\): [^:\n]*: \\([^ \n]*\\), line \\([0-9]+\\):" 2 3)
217 )
166 ;; Error on line 3 of t.f: Execution error unclassifiable statement 218 ;; Error on line 3 of t.f: Execution error unclassifiable statement
167 ;; Unknown who does this: 219 ;; Unknown who does this:
168 ;; Line 45 of "foo.c": bloofle undefined 220 ;; Line 45 of "foo.c": bloofle undefined
169 ;; Absoft FORTRAN 77 Compiler 3.1.3 221 ;; Absoft FORTRAN 77 Compiler 3.1.3
170 ;; error on line 19 of fplot.f: spelling error? 222 ;; error on line 19 of fplot.f: spelling error?
171 ;; warning on line 17 of fplot.f: data type is undefined for variable d 223 ;; warning on line 17 of fplot.f: data type is undefined for variable d
224 (of
172 ("\\(\\|[^\n]* on \\)[Ll]ine[ \t]+\\([0-9]+\\)[ \t]+\ 225 ("\\(\\|[^\n]* on \\)[Ll]ine[ \t]+\\([0-9]+\\)[ \t]+\
173 of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2) 226 of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2)
227 )
174 228
175 ;; Apollo cc, 4.3BSD fc: 229 ;; Apollo cc, 4.3BSD fc:
176 ;; "foo.f", line 3: Error: syntax error near end of statement 230 ;; "foo.f", line 3: Error: syntax error near end of statement
177 ;; IBM RS6000: 231 ;; IBM RS6000:
178 ;; "vvouch.c", line 19.5: 1506-046 (S) Syntax error. 232 ;; "vvouch.c", line 19.5: 1506-046 (S) Syntax error.
182 ;; "foo.c", line 32 pos 1; (E) syntax error; unexpected symbol: "lossage" 236 ;; "foo.c", line 32 pos 1; (E) syntax error; unexpected symbol: "lossage"
183 ;; GNAT (as of July 94): 237 ;; GNAT (as of July 94):
184 ;; "foo.adb", line 2(11): warning: file name does not match ... 238 ;; "foo.adb", line 2(11): warning: file name does not match ...
185 ;; IBM AIX xlc compiler: 239 ;; IBM AIX xlc compiler:
186 ;; "src/swapping.c", line 30.34: 1506-342 (W) "/*" detected in comment. 240 ;; "src/swapping.c", line 30.34: 1506-342 (W) "/*" detected in comment.
241 (comma
187 ("[^\n]*\"\\([^,\" \n\t]+\\)\", lines? \ 242 ("[^\n]*\"\\([^,\" \n\t]+\\)\", lines? \
188 \\([0-9]+\\)\\([\(.]\\([0-9]+\\)\)?\\)?[:., (-]" 1 2 4) 243 \\([0-9]+\\)\\([\(.]\\([0-9]+\\)\)?\\)?[:., (-]" 1 2 4)
244 )
189 245
190 ;; MIPS RISC CC - the one distributed with Ultrix: 246 ;; MIPS RISC CC - the one distributed with Ultrix:
191 ;; ccom: Error: foo.c, line 2: syntax error 247 ;; ccom: Error: foo.c, line 2: syntax error
192 ;; DEC AXP OSF/1 cc 248 ;; DEC AXP OSF/1 cc
193 ;; /usr/lib/cmplrs/cc/cfe: Error: foo.c: 1: blah blah 249 ;; /usr/lib/cmplrs/cc/cfe: Error: foo.c: 1: blah blah
250 ((mips ultrix)
194 ("[^\n]*rror: \\([^,\" \n\t]+\\)[,:] \\(line \\)?\\([0-9]+\\):" 1 3) 251 ("[^\n]*rror: \\([^,\" \n\t]+\\)[,:] \\(line \\)?\\([0-9]+\\):" 1 3)
252 )
195 253
196 ;; IBM AIX PS/2 C version 1.1: 254 ;; IBM AIX PS/2 C version 1.1:
197 ;; ****** Error number 140 in line 8 of file errors.c ****** 255 ;; ****** Error number 140 in line 8 of file errors.c ******
256 (aix
198 ("[^\n]*in line \\([0-9]+\\) of file \\([^ \n]+[^. \n]\\)\\.? " 2 1) 257 ("[^\n]*in line \\([0-9]+\\) of file \\([^ \n]+[^. \n]\\)\\.? " 2 1)
258 )
199 ;; IBM AIX lint is too painful to do right this way. File name 259 ;; IBM AIX lint is too painful to do right this way. File name
200 ;; prefixes entire sections rather than being on each line. 260 ;; prefixes entire sections rather than being on each line.
201 261
202 ;; Lucid Compiler, lcc 3.x 262 ;; Lucid Compiler, lcc 3.x
203 ;; E, file.cc(35,52) Illegal operation on pointers 263 ;; E, file.cc(35,52) Illegal operation on pointers
264 (lcc
204 ("[EW], \\([^(\n]*\\)(\\([0-9]+\\),[ \t]*\\([0-9]+\\)" 1 2 3) 265 ("[EW], \\([^(\n]*\\)(\\([0-9]+\\),[ \t]*\\([0-9]+\\)" 1 2 3)
266 )
205 267
206 ;; GNU messages with program name and optional column number. 268 ;; GNU messages with program name and optional column number.
269 (gnu
207 ("[a-zA-Z]?:?[^0-9 \n\t:]+:[ \t]*\\([^ \n\t:]+\\):\ 270 ("[a-zA-Z]?:?[^0-9 \n\t:]+:[ \t]*\\([^ \n\t:]+\\):\
208 \\([0-9]+\\):\\(\\([0-9]+\\)[: \t]\\)?" 1 2 4) 271 \\([0-9]+\\):\\(\\([0-9]+\\)[: \t]\\)?" 1 2 4)
272 )
209 273
210 ;; GNU messages with program name and optional column number 274 ;; GNU messages with program name and optional column number
211 ;; and a severity letter after that. nsgmls makes them. 275 ;; and a severity letter after that. nsgmls makes them.
276 (gnu
212 ("[^0-9 \n\t:]+:[ \t]*\\([^ \n\t:]+\\):\ 277 ("[^0-9 \n\t:]+:[ \t]*\\([^ \n\t:]+\\):\
213 \\([0-9]+\\):\\(\\([0-9]+\\):\\)?[A-Za-z]:" 1 2 4) 278 \\([0-9]+\\):\\(\\([0-9]+\\):\\)?[A-Za-z]:" 1 2 4)
279 )
214 280
215 ;; jwz: 281 ;; jwz:
216 ;; IRIX 5.2 282 ;; IRIX 5.2
217 ;; cfe: Warning 712: foo.c, line 2: illegal combination of pointer and ... 283 ;; cfe: Warning 712: foo.c, line 2: illegal combination of pointer and ...
284 (sgi
218 ("[^\n]* \\([^ \n,\"]+\\), line \\([0-9]+\\):" 1 2) 285 ("[^\n]* \\([^ \n,\"]+\\), line \\([0-9]+\\):" 1 2)
286 )
219 ;; IRIX 5.2 287 ;; IRIX 5.2
220 ;; cfe: Warning 600: xfe.c: 170: Not in a conditional directive while ... 288 ;; cfe: Warning 600: xfe.c: 170: Not in a conditional directive while ...
289 (sgi
221 ("[^\n]*: \\([^ \n,\"]+\\): \\([0-9]+\\):" 1 2) 290 ("[^\n]*: \\([^ \n,\"]+\\): \\([0-9]+\\):" 1 2)
291 )
222 292
223 ;; Cray C compiler error messages 293 ;; Cray C compiler error messages
294 (cray
224 ("\\(cc\\| cft\\)-[0-9]+ c\\(c\\|f77\\): ERROR \\([^,\n]+, \\)* File = \\([^,\n]+\\), Line = \\([0-9]+\\)" 4 5) 295 ("\\(cc\\| cft\\)-[0-9]+ c\\(c\\|f77\\): ERROR \\([^,\n]+, \\)* File = \\([^,\n]+\\), Line = \\([0-9]+\\)" 4 5)
296 )
225 297
226 ;; IBM C/C++ Tools 2.01: 298 ;; IBM C/C++ Tools 2.01:
227 ;; foo.c(2:0) : informational EDC0804: Function foo is not referenced. 299 ;; foo.c(2:0) : informational EDC0804: Function foo is not referenced.
228 ;; foo.c(3:8) : warning EDC0833: Implicit return statement encountered. 300 ;; foo.c(3:8) : warning EDC0833: Implicit return statement encountered.
229 ;; foo.c(5:5) : error EDC0350: Syntax error. 301 ;; foo.c(5:5) : error EDC0350: Syntax error.
302 (ibm
230 ("\\([^( \n\t]+\\)(\\([0-9]+\\):\\([0-9]+\\)) : " 1 2 3) 303 ("\\([^( \n\t]+\\)(\\([0-9]+\\):\\([0-9]+\\)) : " 1 2 3)
304 )
231 305
232 ;; Sun ada (VADS, Solaris): 306 ;; Sun ada (VADS, Solaris):
233 ;; /home3/xdhar/rcds_rc/main.a, line 361, char 6:syntax error: "," inserted 307 ;; /home3/xdhar/rcds_rc/main.a, line 361, char 6:syntax error: "," inserted
308 (ada
234 ("\\([^, \n\t]+\\), line \\([0-9]+\\), char \\([0-9]+\\)[:., \(-]" 1 2 3) 309 ("\\([^, \n\t]+\\), line \\([0-9]+\\), char \\([0-9]+\\)[:., \(-]" 1 2 3)
235 ) 310 )
311 )
312 "Alist of (system regexp-alist) for building
313 `compilation-error-regexp-alist'. SYSTEM is either a system identifier,
314 or a list of system identifiers. See the variable
315 `compilation-error-regexp-systems-list'")
316
317 (defvar compilation-error-regexp-alist nil
236 "Alist that specifies how to match errors in compiler output. 318 "Alist that specifies how to match errors in compiler output.
237 Each elt has the form (REGEXP FILE-IDX LINE-IDX [COLUMN-IDX FILE-FORMAT...]) 319 Each elt has the form (REGEXP FILE-IDX LINE-IDX [COLUMN-IDX FILE-FORMAT...])
238 If REGEXP matches constrained to the beginning of the line, the 320 If REGEXP matches constrained to the beginning of the line, the
239 FILE-IDX'th subexpression gives the file name, and the LINE-IDX'th 321 FILE-IDX'th subexpression gives the file name, and the LINE-IDX'th
240 subexpression gives the line number. If COLUMN-IDX is given, the 322 subexpression gives the line number. If COLUMN-IDX is given, the
241 COLUMN-IDX'th subexpression gives the column number on that line. If 323 COLUMN-IDX'th subexpression gives the column number on that line. If
242 any FILE-FORMAT is given, each is a format string to produce a file name 324 any FILE-FORMAT is given, each is a format string to produce a file name
243 to try; %s in the string is replaced by the text matching the 325 to try; %s in the string is replaced by the text matching the
244 FILE-IDX'th subexpression. Note previously REGEXP was not constrained 326 FILE-IDX'th subexpression. Note previously REGEXP was not constrained
245 to the beginning of the line, so old patterns without leading `^' or `\\n' 327 to the beginning of the line, so old patterns without leading `^' or `\\n'
246 may now require a leading `.*'.") 328 may now require a leading `.*'.
329
330 Note that this now gets set by the function
331 `compilation-build-compilation-error-regexp-alist' using the
332 value of the variable `compilation-error-regexp-alist-alist'")
333
334 (compilation-build-compilation-error-regexp-alist)
247 335
248 (defvar compilation-read-command t 336 (defvar compilation-read-command t
249 "If not nil, M-x compile reads the compilation command to use. 337 "If not nil, M-x compile reads the compilation command to use.
250 Otherwise, M-x compile just uses the value of `compile-command'.") 338 Otherwise, M-x compile just uses the value of `compile-command'.")
251 339
330 ;;; ("^\\([^\n:]*:\\([0-9]+:\\)+\\)\\(.*\\)$" 0 font-lock-keyword-face keep) 418 ;;; ("^\\([^\n:]*:\\([0-9]+:\\)+\\)\\(.*\\)$" 0 font-lock-keyword-face keep)
331 419
332 ;; XEmacs change 420 ;; XEmacs change
333 (put 'compilation-mode 'font-lock-defaults 421 (put 'compilation-mode 'font-lock-defaults
334 '(compilation-font-lock-keywords t)) 422 '(compilation-font-lock-keywords t))
423
424 (defvar compilation-mouse-motion-initiate-parsing t
425 "When set to a non-nil value, mouse motion over the compilation/grep output
426 buffer may initiate parsing of the error messages or grep hits")
335 427
336 428
337 ;;;###autoload 429 ;;;###autoload
338 (defun compile (command) 430 (defun compile (command)
339 "Compile the program including the current buffer. Default: run `make'. 431 "Compile the program including the current buffer. Default: run `make'.
676 #'beginning-of-line 768 #'beginning-of-line
677 #'(lambda () 769 #'(lambda ()
678 (let* ((p (point)) 770 (let* ((p (point))
679 (e (progn (end-of-line) (point))) 771 (e (progn (end-of-line) (point)))
680 (l (progn 772 (l (progn
681 (if (or (eq compilation-error-list 't) 773 (if (and compilation-mouse-motion-initiate-parsing
682 (>= p compilation-parsing-end)) 774 (or (eq compilation-error-list 't)
775 (>= p compilation-parsing-end)))
683 ;; #### Does it suck too badly to have mouse-movement 776 ;; #### Does it suck too badly to have mouse-movement
684 ;; #### over a buffer parse errors in that buffer?? 777 ;; #### over a buffer parse errors in that buffer??
685 (save-window-excursion 778 (save-window-excursion
686 (compile-reinitialize-errors nil p))) 779 (compile-reinitialize-errors nil p)))
687 (if (and compilation-error-list 780 (if (and compilation-error-list
1505 (let (;;text-buffer -- unused 1598 (let (;;text-buffer -- unused
1506 orig orig-expanded parent-expanded 1599 orig orig-expanded parent-expanded
1507 regexp enter-group leave-group error-group 1600 regexp enter-group leave-group error-group
1508 alist subexpr error-regexp-groups 1601 alist subexpr error-regexp-groups
1509 (found-desired nil) 1602 (found-desired nil)
1510 (compilation-num-errors-found 0)) 1603 (compilation-num-errors-found 0)
1604 (message-freq (max 1 (/ (count-lines (point-min) (point-max)) 50))))
1511 1605
1512 ;; Don't reparse messages already seen at last parse. 1606 ;; Don't reparse messages already seen at last parse.
1513 (goto-char compilation-parsing-end) 1607 (goto-char compilation-parsing-end)
1514 ;; Don't parse the first two lines as error messages. 1608 ;; Don't parse the first two lines as error messages.
1515 ;; This matters for grep. 1609 ;; This matters for grep.
1744 ) 1838 )
1745 ) 1839 )
1746 (t 1840 (t
1747 (error "compilation-parse-errors: known groups didn't match!"))) 1841 (error "compilation-parse-errors: known groups didn't match!")))
1748 1842
1749 (message "Parsing error messages...%d (%.0f%% of buffer)" 1843 (when (= (% compilation-num-errors-found message-freq) 0)
1750 compilation-num-errors-found 1844 (message "Parsing error messages...%d (%.0f%% of buffer)"
1751 ;; Use floating-point because (* 100 (point)) frequently 1845 compilation-num-errors-found
1752 ;; exceeds the range of Emacs Lisp integers. 1846 ;; Use floating-point because (* 100 (point)) frequently
1753 (/ (* 100.0 (point)) (point-max))) 1847 ;; exceeds the range of Emacs Lisp integers.
1754 1848 (/ (* 100.0 (point)) (point-max))))
1755 (and limit-search (>= (point) limit-search) 1849
1756 ;; The user wanted a specific error, and we're past it. 1850 ;;; This is broken - it foils the logic above which is supposed to ensure
1757 (setq found-desired t))) 1851 ;;; that all errors for the current file are found before we quit.
1852 ; (and limit-search (>= (point) limit-search)
1853 ; ;; The user wanted a specific error, and we're past it.
1854 ; (setq found-desired t))
1855 )
1758 (setq compilation-parsing-end (if found-desired 1856 (setq compilation-parsing-end (if found-desired
1759 (point) 1857 (point)
1760 ;; We have searched the whole buffer. 1858 ;; We have searched the whole buffer.
1761 (point-max)))) 1859 (point-max))))
1762 (setq compilation-error-list (nreverse compilation-error-list)) 1860 (setq compilation-error-list (nreverse compilation-error-list))