Mercurial > hg > xemacs-beta
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)) |