branch: externals/auctex commit d2dfab67e5fb37a6dfff1dd40cc82dc63013a2a8 Author: Mosè Giordano <m...@gnu.org> Commit: Mosè Giordano <m...@gnu.org>
Fix indentation in ConTeXt mode after indented optional argument * context.el (ConTeXt-find-indent): Fix indentation. Requested by Henri Menke. * tests/context/context-test.el: * tests/context/context-indentation-in.tex: * tests/context/context-indentation-out.tex: New test files. --- context.el | 5 ++- tests/context/context-indentation-in.tex | 24 +++++++++++++ tests/context/context-indentation-out.tex | 24 +++++++++++++ tests/context/context-test.el | 56 +++++++++++++++++++++++++++++++ 4 files changed, 108 insertions(+), 1 deletion(-) diff --git a/context.el b/context.el index 2f302b3..d322afc 100644 --- a/context.el +++ b/context.el @@ -1220,7 +1220,10 @@ else. There might be text before point." (condition-case err (progn (backward-sexp 1) - (while (> (current-column) (current-indentation)) + (while (or (> (current-column) (current-indentation)) + ;; Continue going back if we are + ;; at a hanging optional group. + (looking-at (regexp-quote ConTeXt-optop))) (backward-sexp 1))) (scan-error (setq up-list-pos (nth 2 err)))) diff --git a/tests/context/context-indentation-in.tex b/tests/context/context-indentation-in.tex new file mode 100644 index 0000000..c1c3aed --- /dev/null +++ b/tests/context/context-indentation-in.tex @@ -0,0 +1,24 @@ +\setuphead +[section] +[before={\blank[big]}, +after={\blank[medium]}] + +\setuphead +[subsection] + [ +before={\blank[big]}, +after={\blank[medium]}, +] + +\starttext + + \startitemize[a] + \item Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. + \item Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + \item Duis aute irure dolor in reprehenderit in voluptate velit esse cillum + dolore eu fugiat nulla pariatur. + \stopitemize + +\stoptext diff --git a/tests/context/context-indentation-out.tex b/tests/context/context-indentation-out.tex new file mode 100644 index 0000000..e963574 --- /dev/null +++ b/tests/context/context-indentation-out.tex @@ -0,0 +1,24 @@ +\setuphead + [section] + [before={\blank[big]}, + after={\blank[medium]}] + +\setuphead + [subsection] + [ + before={\blank[big]}, + after={\blank[medium]}, + ] + +\starttext + +\startitemize[a] +\item Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. +\item Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. +\item Duis aute irure dolor in reprehenderit in voluptate velit esse cillum + dolore eu fugiat nulla pariatur. +\stopitemize + +\stoptext diff --git a/tests/context/context-test.el b/tests/context/context-test.el new file mode 100644 index 0000000..05647e4 --- /dev/null +++ b/tests/context/context-test.el @@ -0,0 +1,56 @@ +;;; context-test.el --- tests for ConTeXt mode + +;; Copyright (C) 2017 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 'context) + +(defun AUCTeX-set-ert-path (&rest sym-val) + "Set first element of SYM-VAL to the next one, and so on. + +The value is the path to the test file, make sure it is expanded +in the right directory even when the ERT test from the command +line and from another directory." + (while sym-val + (set (pop sym-val) + (expand-file-name (pop sym-val) + (when load-file-name + (file-name-directory load-file-name)))))) + +(AUCTeX-set-ert-path + 'ConTeXt-indent-test/in + "context-indentation-in.tex" + 'ConTeXt-indent-test/out + "context-indentation-out.tex") + +(ert-deftest ConTeXt-indent () + (should (string= + (with-temp-buffer + (insert-file-contents ConTeXt-indent-test/in) + (ConTeXt-mode) + (indent-region (point-min) (point-max)) + (buffer-string)) + (with-temp-buffer + (insert-file-contents ConTeXt-indent-test/out) + (buffer-string))))) + +;;; context-test.el ends here