[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[AUCTeX-diffs] [elpa] externals/auctex 3c4c78b 8/8: Merge remote-trackin
From: |
Tassilo Horn |
Subject: |
[AUCTeX-diffs] [elpa] externals/auctex 3c4c78b 8/8: Merge remote-tracking branch 'origin/master' into externals/auctex |
Date: |
Sun, 25 Apr 2021 15:22:52 -0400 (EDT) |
branch: externals/auctex
commit 3c4c78b4309bd807db625bf180e5ce047b0cfb76
Merge: 0383415 40b9319
Author: Tassilo Horn <tsdh@gnu.org>
Commit: Tassilo Horn <tsdh@gnu.org>
Merge remote-tracking branch 'origin/master' into externals/auctex
---
font-latex.el | 28 ++++++------
latex.el | 31 +++++++-------
tests/latex/latex-comment-filling-in.tex | 35 +++++++++++++++
tests/latex/latex-comment-filling-out.tex | 38 +++++++++++++++++
tests/latex/latex-test.el | 71 +++++++++++++++++++++++++------
5 files changed, 163 insertions(+), 40 deletions(-)
diff --git a/font-latex.el b/font-latex.el
index 7ba3792..906afc9 100644
--- a/font-latex.el
+++ b/font-latex.el
@@ -2141,19 +2141,21 @@ set to french, and >>german<< (and 8-bit) are used if
set to german."
(defun font-latex-match-script-chars (limit)
"Match subscript and superscript chars up to LIMIT."
- (and (re-search-forward "[^_^]\\([_^]\\)" limit t)
- (let ((pos (match-beginning 1)))
- (and (font-latex-faces-present-p 'font-latex-math-face pos)
- (not (font-latex-faces-present-p '(font-lock-constant-face
- font-lock-builtin-face
- font-lock-comment-face
- font-latex-verbatim-face)
pos))
- ;; Check for backslash quoting
- (not (let ((odd nil)
- (pos pos))
- (while (eq (char-before pos) ?\\)
- (setq pos (1- pos) odd (not odd)))
- odd))))))
+ (catch 'found
+ (while (re-search-forward "[^_^]\\([_^]\\)" limit t)
+ (let ((pos (match-beginning 1)))
+ (when (and (font-latex-faces-present-p 'font-latex-math-face pos)
+ (not (font-latex-faces-present-p '(font-lock-constant-face
+ font-lock-builtin-face
+ font-lock-comment-face
+
font-latex-verbatim-face) pos))
+ ;; Check for backslash quoting
+ (not (let ((odd nil)
+ (pos pos))
+ (while (eq (char-before pos) ?\\)
+ (setq pos (1- pos) odd (not odd)))
+ odd)))
+ (throw 'found t))))))
(defun font-latex--get-script-props (pos script-type)
(let* ((old-raise (or (plist-get (get-text-property pos 'display) 'raise)
0.0))
diff --git a/latex.el b/latex.el
index 83d50ca..1feafd1 100644
--- a/latex.el
+++ b/latex.el
@@ -2899,9 +2899,14 @@ Normally bound to keys \(, { and [."
(TeX-active-mark)
(> (point) (mark)))
(exchange-point-and-mark))
- (self-insert-command (prefix-numeric-value arg))
(if auto-p
+ ;; Should supply corresponding right brace with possible
+ ;; \right-like macro.
(let ((lbrace (char-to-string last-command-event)) lmacro skip-p)
+ ;; Use `insert' rather than `self-insert-command' so that
+ ;; unexcpected side effects, e.g. `electric-pair-mode',
+ ;; won't mess up the following outcomes. (bug#47936)
+ (insert last-command-event)
(save-excursion
(backward-char)
;; The brace "{" is exceptional in two aspects.
@@ -2930,7 +2935,10 @@ Normally bound to keys \(, { and [."
(if (TeX-active-mark)
(goto-char (mark)))
(LaTeX-insert-corresponding-right-macro-and-brace
- lmacro lbrace)))))))
+ lmacro lbrace))))
+ ;; Don't supply right brace and just act as ordinary
+ ;; `self-insert-command'.
+ (self-insert-command (prefix-numeric-value arg)))))
;; Cater for `delete-selection-mode' (bug#36385)
;; See the header comment of delsel.el for detail.
(put #'LaTeX-insert-left-brace 'delete-selection
@@ -2954,7 +2962,7 @@ Normally bound to keys \(, { and [."
(funcall f))))))
(defun LaTeX-insert-corresponding-right-macro-and-brace
- (lmacro lbrace &optional optional prompt)
+ (lmacro lbrace &optional optional prompt)
"Insert right macro and brace correspoinding to LMACRO and LBRACE.
Left-right association is determined through
`LaTeX-left-right-macros-association' and `TeX-braces-association'.
@@ -2987,7 +2995,7 @@ is nil, consult user which brace should be used."
optional prompt
(format "Which brace (default %s)"
(or rbrace "."))) TeX-left-right-braces
- nil nil nil nil (or rbrace ".")))))))
+ nil nil nil nil (or rbrace ".")))))))
(defun LaTeX--find-preceding-left-macro-name ()
"Return the left macro name just before the point, if any.
@@ -3775,7 +3783,7 @@ performed in that case."
(if (re-search-forward
(concat "\\("
;; Code comments.
- "[^\r\n%\\]\\([ \t]\\|\\\\\\\\\\)*"
+ "[^ \r\n%\\]\\([ \t]\\|\\\\\\\\\\)*"
TeX-comment-start-regexp
"\\|"
;; Lines ending with `\par'.
@@ -3921,7 +3929,7 @@ space does not end a sentence, so don't break a line
there."
(goto-char from)
(let* (linebeg
(code-comment-start (save-excursion
- (LaTeX-back-to-indentation)
+ (LaTeX-back-to-indentation 'inner)
(TeX-search-forward-comment-start
(line-end-position))))
(end-marker (save-excursion
@@ -4032,7 +4040,7 @@ space does not end a sentence, so don't break a line
there."
(TeX-looking-at-backward (concat (regexp-quote TeX-esc)
TeX-token-char "*")
(1- (- (point) linebeg)))
(not (TeX-escaped-p (match-beginning 0))))
- (goto-char (match-beginning 0)))
+ (goto-char (match-beginning 0)))
;; Cater for \verb|...| (and similar) contructs which should not be
;; broken. (FIXME: Make it work with shortvrb.sty (also loaded by
;; doc.sty) where |...| is allowed. Arbitrary delimiters may be
@@ -4073,7 +4081,7 @@ space does not end a sentence, so don't break a line
there."
start-point)
(save-excursion
(beginning-of-line)
- (LaTeX-back-to-indentation)
+ (LaTeX-back-to-indentation 'outer)
(setq start-point (point))
;; Find occurences of [, $, {, }, \(, \), \[, \] or $$.
(while (and (= final-breakpoint orig-breakpoint)
@@ -6810,13 +6818,6 @@ function would return non-nil and `(match-string 1)'
would return
(define-key LaTeX-mode-map "\C-xne" #'LaTeX-narrow-to-environment)
- ;; AUCTeX's brace pairing feature (`LaTeX-electric-left-right-brace') doesn't
- ;; play nice with `electric-pair-mode' which is a global minor mode as of
- ;; emacs 24.4.
- (when (and LaTeX-electric-left-right-brace
- (boundp 'electric-pair-mode))
- (set (make-local-variable 'electric-pair-mode) nil))
-
;; Initialization of `add-log-current-defun-function':
(set (make-local-variable 'add-log-current-defun-function)
#'TeX-current-defun-name))
diff --git a/tests/latex/latex-comment-filling-in.tex
b/tests/latex/latex-comment-filling-in.tex
new file mode 100644
index 0000000..1ba1bb8
--- /dev/null
+++ b/tests/latex/latex-comment-filling-in.tex
@@ -0,0 +1,35 @@
+% This is a very long comment which should be wrapped around after fill-column
characters. We'll see if that works.
+
+% \begin{itemize}
+% \item This is a long item text which should be wrapped around after
fill-column characters even though it is commented.
+% \item This is short.
+% This also.
+% So all 3 gonna be joined.
+% \end{itemize}
+
+\begin{quote}
+ % This is a very long comment which should be wrapped around after
fill-column characters. We'll see if that works.
+\end{quote}
+
+\begin{quote}
+ % \begin{itemize}
+ % \item This is a long item text which should be wrapped around after
fill-column characters even though it is commented. This should still work
although we're already indented.
+ % \item This is short.
+ % This also.
+ % So all 3 gonna be joined.
+ % \end{itemize}
+\end{quote}
+
+% This is short.\\
+% But no join because the backslashes.
+
+% This is short.\par
+% But no join because the par.
+
+% Code comments.
+
+\foo\bar % This is a code comment.
+\baz % This also.
+\quux % So lines must not be joined.
+\foobar % But very long lines, such as this one, well, you know, they may be
wrapped around. TODO: It would be cool if this was indented as much as the
previous line.
+\bar % This is short.
diff --git a/tests/latex/latex-comment-filling-out.tex
b/tests/latex/latex-comment-filling-out.tex
new file mode 100644
index 0000000..0917d95
--- /dev/null
+++ b/tests/latex/latex-comment-filling-out.tex
@@ -0,0 +1,38 @@
+% This is a very long comment which should be wrapped around after
+% fill-column characters. We'll see if that works.
+
+% \begin{itemize}
+% \item This is a long item text which should be wrapped around after
+% fill-column characters even though it is commented.
+% \item This is short. This also. So all 3 gonna be joined.
+% \end{itemize}
+
+\begin{quote}
+ % This is a very long comment which should be wrapped around after
+ % fill-column characters. We'll see if that works.
+\end{quote}
+
+\begin{quote}
+ % \begin{itemize}
+ % \item This is a long item text which should be wrapped around
+ % after fill-column characters even though it is commented. This
+ % should still work although we're already indented.
+ % \item This is short. This also. So all 3 gonna be joined.
+ % \end{itemize}
+\end{quote}
+
+% This is short.\\
+% But no join because the backslashes.
+
+% This is short.\par
+% But no join because the par.
+
+% Code comments.
+
+\foo\bar % This is a code comment.
+\baz % This also.
+\quux % So lines must not be joined.
+\foobar % But very long lines, such as this one, well, you know, they
+% may be wrapped around. TODO: It would be cool if this was indented
+% as much as the previous line.
+\bar % This is short.
diff --git a/tests/latex/latex-test.el b/tests/latex/latex-test.el
index 6f70d95..af6e34f 100644
--- a/tests/latex/latex-test.el
+++ b/tests/latex/latex-test.el
@@ -33,6 +33,10 @@
"latex-filling-in.tex"
'LaTeX-filling/out
"latex-filling-out.tex"
+ 'LaTeX-comment-filling/in
+ "latex-comment-filling-in.tex"
+ 'LaTeX-comment-filling/out
+ "latex-comment-filling-out.tex"
'LaTeX-math-indent/in
"math-indent-in.tex"
'LaTeX-math-indent/out
@@ -96,6 +100,27 @@
(insert-file-contents LaTeX-filling/out)
(buffer-string)))))
+;; Test for comment filling, especially with
+;; `LaTeX-syntactic-comments' which is t by default.
+(ert-deftest LaTeX-comment-filling ()
+ (should (string=
+ (with-temp-buffer
+ (insert-file-contents LaTeX-comment-filling/in)
+ (LaTeX-mode)
+ (let ((fill-column 70)
+ (code-comment-test nil))
+ (fill-paragraph)
+ (while (= 0 (forward-line 1))
+ (when (looking-at "% Code comments.")
+ (setq code-comment-test t))
+ (when code-comment-test
+ (LaTeX-back-to-indentation 'inner))
+ (fill-paragraph)))
+ (buffer-string))
+ (with-temp-buffer
+ (insert-file-contents LaTeX-comment-filling/out)
+ (buffer-string)))))
+
;; Test for bug#19281 (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=19281):
;; make sure AUCTeX is able to insert and modify an environment containing a
;; TeX-esc and braces in its name.
@@ -453,9 +478,7 @@ ghi"))
(buffer-string)
"\\begin{quote}
% \\begin{center}
- % abc
- % def
- % ghi
+ % abc def ghi
% \\end{center}
\\end{quote}
"))
@@ -478,9 +501,7 @@ ghi"))
(buffer-string)
"\\begin{quote}
% \\begin{center}
- % abc
- % def
- % ghi
+ % abc def ghi
% \\end{center}
\\end{quote}
"))
@@ -504,9 +525,7 @@ ghi"))
(buffer-string)
"\\begin{quote}
% \\begin{center}
- % abc
- % def
- % ghi
+ % abc def ghi
% \\end{center}
\\end{quote}
"))
@@ -529,11 +548,39 @@ ghi"))
(buffer-string)
"\\begin{quote}
\\begin{center}
- % abc
- % def
- % ghi
+ % abc def ghi
\\end{center}
\\end{quote}
")))))
+(ert-deftest LaTeX-electric-pair-interaction ()
+ "Whether `LaTeX-insert-left-brace' is compatible with `electric-pair-mode'."
+ (require 'elec-pair)
+ (let ((LaTeX-electric-left-right-brace t)
+ (orig-mode electric-pair-mode))
+ (unwind-protect
+ (with-temp-buffer
+ ;; Temporally enable electric pair mode, if not enabled
+ ;; already.
+ (or orig-mode
+ (electric-pair-mode 1))
+ (latex-mode)
+
+ ;; When `LaTeX-insert-left-brace' supplies right brace,
+ ;; `electric-pair-mode' shoudn't come into play.
+ (setq last-command-event ?\()
+ (LaTeX-insert-left-brace nil)
+ (should (string= "()" (buffer-string)))
+
+ (erase-buffer)
+ ;; When there is a prefix argument, `LaTeX-insert-left-brace'
+ ;; just calls `self-insert-command' and `electric-pair-mode'
+ ;; should work.
+ (setq last-command-event ?\()
+ (LaTeX-insert-left-brace 2)
+ (should (string= "(()" (buffer-string))))
+ ;; Restore electric pair mode.
+ (or orig-mode
+ (electric-pair-mode -1)))))
+
;;; latex-test.el ends here
- [AUCTeX-diffs] [elpa] externals/auctex updated (0383415 -> 3c4c78b), Tassilo Horn, 2021/04/25
- [AUCTeX-diffs] [elpa] externals/auctex b641204 1/8: Improve handling for parentheses with electric-pair-mode (bug#47936), Tassilo Horn, 2021/04/25
- [AUCTeX-diffs] [elpa] externals/auctex 98455d0 6/8: Give explicit arg to LaTeX-back-to-indentation in filling functions., Tassilo Horn, 2021/04/25
- [AUCTeX-diffs] [elpa] externals/auctex 40b9319 7/8: Fix matching of script chars (bug#48012), Tassilo Horn, 2021/04/25
- [AUCTeX-diffs] [elpa] externals/auctex 93363d3 3/8: Follow up previous commit, Tassilo Horn, 2021/04/25
- [AUCTeX-diffs] [elpa] externals/auctex d1d99ae 2/8: Get rid of unexpected side effects, Tassilo Horn, 2021/04/25
- [AUCTeX-diffs] [elpa] externals/auctex 3d813cd 4/8: Add new test, Tassilo Horn, 2021/04/25
- [AUCTeX-diffs] [elpa] externals/auctex 6d3ecf3 5/8: Don't treat comments with whitespace before % as code comments, Tassilo Horn, 2021/04/25
- [AUCTeX-diffs] [elpa] externals/auctex 3c4c78b 8/8: Merge remote-tracking branch 'origin/master' into externals/auctex,
Tassilo Horn <=