branch: externals/auctex commit 90fcbd44a0f69b7b6511ef3af33bbc1a09670221 Author: Ikumi Keita <ik...@ikumi.que.jp> Commit: Ikumi Keita <ik...@ikumi.que.jp>
Make navigation function robust * tex.el (TeX-find-macro-end-helper): Cater for corner case that the `while' loop is exited or skipped. * tests/tex/navigation.el: Add new test. --- tests/tex/navigation.el | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ tex.el | 8 +++++--- 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/tests/tex/navigation.el b/tests/tex/navigation.el new file mode 100644 index 0000000..daf1840 --- /dev/null +++ b/tests/tex/navigation.el @@ -0,0 +1,54 @@ +;;; navigation.el --- tests for navigation function in TeX buffer + +;; Copyright (C) 2019 Free Software Foundation, Inc. + +;; This file is part of AUCTeX. + +;; AUCTeX 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. + +;; AUCTeX 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 AUCTeX; see the file COPYING. If not, write to the Free +;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +;; 02110-1301, USA. + +;;; Code: + +(require 'ert) +(require 'tex) + +(defun TeX-check-f-m-e-h (string &optional position) + "Check whether `TeX-find-macro-end-helper' works for exceptional case." + (with-temp-buffer + (insert string) + (should (= (or position (point-max)) + (TeX-find-macro-end-helper (point-min)))))) + +(ert-deftest TeX-find-macro-end-helper-single () + ;; single macro ending at EOB + (TeX-check-f-m-e-h "\foo")) + +(ert-deftest TeX-find-macro-end-helper-curly () + ;; curly braces ending at EOB + (TeX-check-f-m-e-h "\foo{bar}")) + +(ert-deftest TeX-find-macro-end-helper-curly-fail () + ;; curly brace failing to close at EOB + (TeX-check-f-m-e-h "\foo{bar")) + +(ert-deftest TeX-find-macro-end-helper-square () + ;; square brackets ending at EOB + (TeX-check-f-m-e-h "\foo{bar}[baz]")) + +(ert-deftest TeX-find-macro-end-helper-square-fail () + ;; square bracket failing to close at EOB + (TeX-check-f-m-e-h "\foo{bar}[baz" (1+ (length "\foo{bar}")))) + +;;; navigation.el ends here diff --git a/tex.el b/tex.el index 0fda0d5..de8c6cf 100644 --- a/tex.el +++ b/tex.el @@ -5484,10 +5484,12 @@ those will be considered part of it." ;; If we cannot find a regular end, use the ;; next whitespace. (save-excursion (skip-chars-forward "^ ") - (point)))) - (when (eobp) (throw 'found (point)))) + (point))))) (t - (throw 'found (point))))))))) + (throw 'found (point))))) + ;; Make sure that this function does not return nil, even + ;; when the above `while' loop is totally skipped. (bug#35638) + (throw 'found (point)))))) (defun TeX-find-macro-start (&optional limit) "Return the start of a macro. _______________________________________________ auctex-diffs mailing list auctex-di...@gnu.org https://lists.gnu.org/mailman/listinfo/auctex-diffs