Subject: Re: #39595: M-x compile still very line-length weak

From: Mattias Engdegård <[email-masked]>
Date: Fri, 14 Feb 2020 17:27:39 +0100

Dan, in your example you used a long line of spaces. Presumably that is representative for your particular use, but different message parsers are sensitive to different kinds of long lines:

* 'omake' in compilation-error-regexp-alist is indeed what makes Emacs unusably slow with long lines of spaces.

* 'msft' and 'watcom' are both expensive with long lines of spaces, but not as bad as 'omake'. Maybe these regexps can be tuned further.

* 'msft' occurs twice by mistake; the last one should be removed. This helps a bit.

* 'maven' is still expensive for long lines of non-spaces; see bug#3441. Anchoring the match at line-start would fix it:

(rx bol
    (? "["
       (or "ERROR" (group "WARNING") (group "INFO"))
       "]"
       (+ " "))
    (group
     (not (in "\n "))
     (* (or (not (in "\n :"))
            (: " "
               (not (in "\n/-")))
            (: ":"
               (not (in "\n ["))))))
    ":["
    (group (+ digit))
    ","
    (group (+ digit))
    "] ")

Is that correct? (CC:ing Paul Pogonyshev, who worked on that regexp in bug#20556.)

I suggest we disable omake by default --- although a nice tool, it was never widely used, and OCaml programmers tend to use Dune (or plain Make) these days. The omake rule will still be there for those who need it, but the majority shouldn't bear the cost.