emacs-devel
[Top][All Lists]
Advanced

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

Re: address@hidden: compilation regexps for perl and weblint]


From: Vinicius Jose Latorre
Subject: Re: address@hidden: compilation regexps for perl and weblint]
Date: Mon, 12 Nov 2007 01:03:44 -0300
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071009 SeaMonkey/1.1.5

Richard Stallman wrote:
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.

Installed in the trunk.

------- 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 -------


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






reply via email to

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