emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

address@hidden: compilation regexps for perl and weblint]


From: Richard Stallman
Subject: address@hidden: compilation regexps for perl and weblint]
Date: Thu, 25 Oct 2007 05:02:07 -0400

Would someone please install these error patterns in the trunk,
if they are correct?  (I cannot tell if they are correct.)

We have papers from Kevin Ryde.

------- Start of forwarded message -------
X-Spam-Status: No, score=0.0 required=5.0 tests=UNPARSEABLE_RELAY 
        autolearn=failed version=3.1.0
From: Kevin Ryde <address@hidden>
To: address@hidden
Organization: Bah Humbug
Date: Thu, 25 Oct 2007 10:38:01 +1000
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
Subject: compilation regexps for perl and weblint

- --=-=-=

As part of my ongoing effort to get stuff out of my .emacs, this is a
few compilation-mode regexps I've had bouncing around, for perl
podchecker and Test, and for weblint (the one written in perl).  Emacs
already matches perl's ordinary compile/run errors, but podchecker and
Test are a bit different.  What ought to be four lines is rather
severely bloated by coping with different versions of emacs, but you get
that.


- --=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: attachment; filename=compilation-perl.el
Content-Transfer-Encoding: quoted-printable

;;; compilation-perl.el --- error regexps for perl podchecker and Test

;; Copyright 2007 Kevin Ryde

;; Author: Kevin Ryde <address@hidden>
;; Version: 1
;; Keywords: processes
;; URL: http://www.geocities.com/user42_kevin/compilation/index.html
;; EmacsWiki: PerlLanguage

;; compilation-perl.el is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as published
;; by the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;;
;; compilation-perl.el is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
;; Public License for more details.
;;
;; You can get a copy of the GNU General Public License online at
;; <http://www.gnu.org/licenses>.


;;; Commentary:

;; This is a spot of code adding `compilation-error-regexp-alist' patterns
;; for perl podchecker (the Pod::Checker module) and Test and Test::Harness
;; module error output.
;;
;; Emacs already has patterns for perl's normal compile and run errors, but
;; podchecker and Test are a bit different.

;;; Install:

;; Put compilation-perl.el somewhere in your `load-path', and in .emacs put
;;
;;     (eval-after-load "compile" '(require 'compilation-perl))
;;
;; There's an autoload cookie below for this, if you use
;; `update-file-autoloads' and friends.

;;; Emacsen:

;; Works in Emacs 22, Emacs 21, and XEmacs 21.

;;; History:

;; Version 1 - the first version.


;;; Code:

;;;###autoload (eval-after-load "compile" '(require 'compilation-perl))

(eval-after-load "compile"
  '(dolist
       (elem
        '(;; podchecker error messages, per Pod::Checker.
          ;; The style is from the Pod::Checker::poderror() function, eg.
          ;; *** ERROR: Spurious text after =3Dcut at line 193 in file foo.=
pm
          ;;
          ;; Plus end_pod() can give "at line EOF" instead of a number, so
          ;; for that match "on line N" which is the originating spot, eg.
          ;; *** ERROR: =3Dover on line 37 without closing =3Dback at line =
EOF in file bar.pm
          ;;
          ;; Plus command() can give both "on line N" and "at line N"; the
          ;; latter is desired and is matched because the .* is greedy.
          ;; *** ERROR: =3Dover on line 1 without closing =3Dback (at head1=
) at line 3 in file x.pod
          ;;
          (compilation-perl--Pod::Checker
           "^\\*\\*\\* \\(?:ERROR\\|\\(WARNING\\)\\).* \\(?:at\\|on\\) line=
 \\([0-9]+\\) \\(?:.* \\)?in file \\([^ \t\n]+\\)"
           3 2 nil (1))

          ;; perl Test module error messages.
          ;; Style per the ok() function "$context", eg.
          ;; # Failed test 1 in foo.t at line 6
          ;;
          (compilation-perl--Test
           "^# Failed test [0-9]+ in \\([^ \t\r\n]+\\) at line \\([0-9]+\\)"
           1 2)

          ;; perl Test::Harness output, eg.
          ;; NOK 1# Test 1 got: "1234" (t/foo.t at line 46)
          ;;
          ;; Test::Harness is slightly designed for tty output, since it
          ;; prints CRs to overwrite progress messages, but if you run it in
          ;; with M-x compile this pattern can at least step through the
          ;; failures.
          ;;
          (compilation-perl--Test::Harness
           "^.*NOK.* \\([^ \t\r\n]+\\) at line \\([0-9]+\\)"
           1 2)))

     (cond ((boundp 'compilation-error-regexp-systems-list)
            ;; xemacs21
            (setq elem (remove '(1) elem)) ;; drop "type" specifier
            (add-to-list 'compilation-error-regexp-alist-alist
                         (list (car elem) (cdr elem)))
            (compilation-build-compilation-error-regexp-alist))

           ((boundp 'compilation-error-regexp-alist-alist)
            ;; emacs22
            (add-to-list 'compilation-error-regexp-alist-alist elem)
            (add-to-list 'compilation-error-regexp-alist (car elem)))

           (t
            ;; emacs21
            (setq elem (remove '(1) elem)) ;; drop "type" specifier
            (add-to-list 'compilation-error-regexp-alist (cdr elem))))))

(provide 'compilation-perl)

;;; compilation-perl.el ends here

- --=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: attachment; filename=compilation-weblint.el
Content-Transfer-Encoding: quoted-printable

;;; compilation-weblint.el --- error regexps for weblint

;; Copyright 2007 Kevin Ryde

;; Author: Kevin Ryde <address@hidden>
;; Version: 1
;; Keywords: processes
;; URL: http://www.geocities.com/user42_kevin/compilation/index.html
;; EmacsWiki: CompilationMode

;; compilation-weblint.el is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as published
;; by the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;;
;; compilation-weblint.el is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
;; Public License for more details.
;;
;; You can get a copy of the GNU General Public License online at
;; <http://www.gnu.org/licenses>.


;;; Commentary:

;; This is a spot of code adding a `compilation-error-regexp-alist' pattern
;; for messages from the weblint program (the one based on the perl
;; HTML::Lint modules).

;;; Install:

;; Put compilation-weblint.el somewhere in your `load-path', and in .emacs =
put
;;
;;     (eval-after-load "compile" '(require 'compilation-weblint))
;;
;; There's an autoload cookie below for this, if you use
;; `update-file-autoloads' and friends.

;;; Emacsen:

;; Works in Emacs 22, Emacs 21, and XEmacs 21.

;;; History:

;; Version 1 - the first version.


;;; Code:

;;;###autoload (eval-after-load "compile" '(require 'compilation-weblint))

(eval-after-load "compile"
  '(progn
     ;; The style comes from HTML::Lint::Error::as_string(), eg.
     ;; index.html (13:1) Unknown element <fdjsk>
     ;;
     ;; The pattern only matches filenames without spaces, since that should
     ;; be usual and should help reduce the chance of a false match of a
     ;; message from some unrelated program.
     ;;
     ;; This message style is quite close to the "ibm" entry of emacs22
     ;; `compilation-error-regexp-alist-alist' which is for IBM C, though
     ;; that ibm bit doesn't put a space after the filename.
     ;;
     (let ((elem '(compilation-weblint
                   "^\\([^ \t\r\n(]+\\) (\\([0-9]+\\):\\([0-9]+\\)) "
                   1 2 3)))

       (cond ((boundp 'compilation-error-regexp-systems-list)
              ;; xemacs21
              (add-to-list 'compilation-error-regexp-alist-alist
                           (list (car elem) (cdr elem)))
              (compilation-build-compilation-error-regexp-alist))

             ((boundp 'compilation-error-regexp-alist-alist)
              ;; emacs22
              (add-to-list 'compilation-error-regexp-alist-alist elem)
              (add-to-list 'compilation-error-regexp-alist (car elem)))

             (t
              ;; emacs21
              (add-to-list 'compilation-error-regexp-alist (cdr elem))

              ;; Remove the "4.3BSD lint pass 3" element because it wrongly
              ;; matches weblint messages.  It's apparently supposed to
              ;; match something like
              ;;
              ;;     bloofle defined( /users/wolfgang/foo.c(4) ) ...
              ;;
              ;; but it's rather loose and ends up matching the "(13:1)"
              ;; part from weblint as if "13" is the filename and "1" is the
              ;; line number.  Forcibly removing this is a bit nasty, but
              ;; emacs22 has dropped it, so consider it an upgrade!
              ;;
              ;; xemacs21 has the same pattern, but somehow the problem
              ;; doesn't arise, so leave it alone there, for now.
              ;;
              (setq compilation-error-regexp-alist
                    (remove '(".*([ \t]*\\([a-zA-Z]?:?[^:( \t\n]+\\)[:(][ \=
t]*\\([0-9]+\\))" 1 2)
                            compilation-error-regexp-alist)))))))

(provide 'compilation-weblint)

;;; compilation-weblint.el ends here

- --=-=-=


- -- 
"But I don't work Sundays or me day off."

- --=-=-=
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
gnu-emacs-sources mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/gnu-emacs-sources

- --=-=-=--
------- End of forwarded message -------




reply via email to

[Prev in Thread] Current Thread [Next in Thread]