From 4cbf3aa72e398b35ab2f0f5272e1642737472d39 Mon Sep 17 00:00:00 2001 From: Vinicius Jose Latorre Date: Mon, 12 Nov 2007 03:00:25 +0000 Subject: [PATCH] New files. --- lisp/ChangeLog | 5 ++ lisp/progmodes/compilation-perl.el | 121 ++++++++++++++++++++++++++ lisp/progmodes/compilation-weblint.el | 111 +++++++++++++++++++++++ 3 files changed, 237 insertions(+) create mode 100644 lisp/progmodes/compilation-perl.el create mode 100644 lisp/progmodes/compilation-weblint.el diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7e826ed904a..28533a7a177 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2007-11-12 Kevin Ryde + + * progmodes/compilation-perl.el: + * progmodes/compilation-weblint.el: New files. + 2007-11-11 Juanma Barranquero * international/iso-cvt.el (iso-translate-conventions): Doc fix. diff --git a/lisp/progmodes/compilation-perl.el b/lisp/progmodes/compilation-perl.el new file mode 100644 index 00000000000..8401062d13a --- /dev/null +++ b/lisp/progmodes/compilation-perl.el @@ -0,0 +1,121 @@ +;;; compilation-perl.el --- error regexps for perl podchecker and Test + +;; Copyright (C) 2007 Free Software Foundation, Inc. + +;; Author: Kevin Ryde +;; Version: 1 +;; Keywords: processes +;; URL: http://www.geocities.com/user42_kevin/compilation/index.html +;; EmacsWiki: PerlLanguage + +;; This file is part of GNU Emacs. + +;; GNU Emacs 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. + +;; GNU Emacs 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 should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; 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 =cut 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: =over on line 37 without closing =back 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: =over on line 1 without closing =back (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 diff --git a/lisp/progmodes/compilation-weblint.el b/lisp/progmodes/compilation-weblint.el new file mode 100644 index 00000000000..284d457c3e6 --- /dev/null +++ b/lisp/progmodes/compilation-weblint.el @@ -0,0 +1,111 @@ +;;; compilation-weblint.el --- error regexps for weblint + +;; Copyright (C) 2007 Free Software Foundation, Inc. + +;; Author: Kevin Ryde +;; Version: 1 +;; Keywords: processes +;; URL: http://www.geocities.com/user42_kevin/compilation/index.html +;; EmacsWiki: CompilationMode + +;; This file is part of GNU Emacs. + +;; GNU Emacs 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. + +;; GNU Emacs 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 should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; 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 + ;; + ;; 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 -- 2.39.2