Subject: Re: bug#7069: Compilation from within emacs becomes slower and slower until Emacs is restarted

From: Daniel Colascione <[email-masked]>
Date: Sun, 24 Apr 2011 18:16:58 -0700

On 4/20/11 6:10 AM, Stefan Monnier wrote:
>> 	(add-hook 'compilation-mode-hook
>> 	  (lambda () (setq compilation-error-regexp-alist
>> 	      (cons
>> 	       ;; Quartus II error messages
>> 	       '(".*Verilog .* at \\(.+\\)(\\([0-9]+\\)): .*" 1 2)
>> 	      compilation-error-regexp-alist))))
[snip]
>> I haven't looked further into why this should be a problem.
> 
> I can't think of any reason why this regexp should make compilation
> become slower (I can see why it would make it slow, but unless lines
> become longer over time, it should keep the same slowness at the end as
> it had at the beginning).

He's adding an entry to compilation-error-regexp-alist every time he
compiles, and this variable is not buffer local. After the 20th
compilation, Emacs tries 20 times harder to match this regular expression.

He should be using add-to-list or (pushnew mumble :test #'equal).