[Top][All Lists]
[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 -------
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- address@hidden: compilation regexps for perl and weblint],
Richard Stallman <=