From bf4906d7ca3833f11f929d0feae0feb622131604 Mon Sep 17 00:00:00 2001 From: Cameron Desautels Date: Thu, 5 Dec 2013 15:25:54 -0500 Subject: [PATCH] * lisp/emacs-lisp/regexp-opt.el (regexp-opt-charset): Fix ^. * test/automated/regexp-tests.el: New file. Fixes: debbugs:16046 --- lisp/ChangeLog | 4 ++++ lisp/emacs-lisp/regexp-opt.el | 4 +++- test/ChangeLog | 17 +++++++++-------- test/automated/regexp-tests.el | 31 +++++++++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 test/automated/regexp-tests.el diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ff93f0489c2..a8c3f273a4b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2013-12-05 Cameron Desautels (tiny change) + + * emacs-lisp/regexp-opt.el (regexp-opt-charset): Fix ^ (bug#16046). + 2013-12-05 Teodor Zlatanov * net/eww.el (eww-current-source): New variable to store page diff --git a/lisp/emacs-lisp/regexp-opt.el b/lisp/emacs-lisp/regexp-opt.el index de9966c0af0..cb7828ddd95 100644 --- a/lisp/emacs-lisp/regexp-opt.el +++ b/lisp/emacs-lisp/regexp-opt.el @@ -285,7 +285,9 @@ CHARS should be a list of characters." ;; ;; Make sure a caret is not first and a dash is first or last. (if (and (string-equal charset "") (string-equal bracket "")) - (concat "[" dash caret "]") + (if (string-equal dash "") + "\\^" ; [^] is not a valid regexp + (concat "[" dash caret "]")) (concat "[" bracket charset caret dash "]")))) (provide 'regexp-opt) diff --git a/test/ChangeLog b/test/ChangeLog index e16e0b21281..e7317f79ac8 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,13 +1,16 @@ +2013-12-05 Stefan Monnier + + * automated/regexp-tests.el: New file. + 2013-11-29 Eli Zaretskii - * automated/reftex-tests.el (reftex-parse-from-file-test): Run - temp-dir through file-truename, to make sure the temporary file + * automated/reftex-tests.el (reftex-parse-from-file-test): + Run temp-dir through file-truename, to make sure the temporary file names are comparable as strings. * automated/decoder-tests.el (ert-test-decoder-prefer-utf-8): Force Unix EOLs by using 'utf-8-unix', since the default of - 'utf-8' is system-dependent, while the test expects to see Unix - EOLs. + 'utf-8' is system-dependent, while the test expects to see Unix EOLs. 2013-11-28 Glenn Morris @@ -15,8 +18,7 @@ 2013-11-28 Eli Zaretskii - * automated/Makefile.in (PATH_SEP): Set this instead of - PATH_SEPARATOR. + * automated/Makefile.in (PATH_SEP): Set this instead of PATH_SEPARATOR. (EMACSOPT): Use $(PATH_SEP). 2013-11-28 Michael Albinus @@ -115,8 +117,7 @@ (tramp-test22-file-times, tramp-test23-visited-file-modtime) (tramp-test24-file-name-completion, tramp-test25-load) (tramp-test26-process-file, tramp-test27-start-file-process): - (tramp-test28-shell-command): Protect unwindforms with - `ignore-errors'. + (tramp-test28-shell-command): Protect unwindforms with `ignore-errors'. (tramp-test29-utf8): New test. 2013-11-13 Michael Albinus diff --git a/test/automated/regexp-tests.el b/test/automated/regexp-tests.el new file mode 100644 index 00000000000..5c4a3b48a63 --- /dev/null +++ b/test/automated/regexp-tests.el @@ -0,0 +1,31 @@ +;;; regexp-tests.el --- Test suite for regular expression handling. + +;; Copyright (C) 2013 Free Software Foundation, Inc. + +;; Author: Stefan Monnier +;; Keywords: internal +;; Human-Keywords: internal + +;; 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 of the License, 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. If not, see . + +;;; Code: + +(ert-deftest regexp-test-regexp-opt () + "Test the `compilation-error-regexp-alist' regexps. +The test data is in `compile-tests--test-regexps-data'." + (should (string-match (regexp-opt-charset '(?^)) "a^b"))) + +;;; regexp-tests.el ends here. -- 2.39.2