branch: externals/auctex
commit 3d813cdeb8e7e7184dcf9d58f576584312cffae6
Author: Ikumi Keita <[email protected]>
Commit: Ikumi Keita <[email protected]>
Add new test
* tests/latex/latex-test.el (LaTeX-electric-pair-interaction): New
test.
* latex.el (LaTeX-insert-left-brace): Add comments.
---
latex.el | 7 +++++++
tests/latex/latex-test.el | 30 ++++++++++++++++++++++++++++++
2 files changed, 37 insertions(+)
diff --git a/latex.el b/latex.el
index 767fe21..3330037 100644
--- a/latex.el
+++ b/latex.el
@@ -2900,7 +2900,12 @@ Normally bound to keys \(, { and [."
(> (point) (mark)))
(exchange-point-and-mark))
(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)
@@ -2931,6 +2936,8 @@ Normally bound to keys \(, { and [."
(goto-char (mark)))
(LaTeX-insert-corresponding-right-macro-and-brace
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.
diff --git a/tests/latex/latex-test.el b/tests/latex/latex-test.el
index 6f70d95..81cfc52 100644
--- a/tests/latex/latex-test.el
+++ b/tests/latex/latex-test.el
@@ -536,4 +536,34 @@ ghi"))
\\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