branch: externals/auctex
commit 0a9407cceea625c587eac8958d9921751c03ccf9
Author: Ikumi Keita <[email protected]>
Commit: Ikumi Keita <[email protected]>
Conform to `delete-selection-mode' (bug#36385)
* latex.el (LaTeX-insert-left-brace): Put `delete-selection' property
which obeys that of `self-insert-command' when
`LaTeX-electric-left-right-brace' feature is inactive.
---
latex.el | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/latex.el b/latex.el
index dd6c398..760c42a 100644
--- a/latex.el
+++ b/latex.el
@@ -2792,6 +2792,8 @@ Automatic right brace insertion is done only if no prefix
ARG is given and
`LaTeX-electric-left-right-brace' is non-nil.
Normally bound to keys \(, { and [."
(interactive "*P")
+ ;; If you change the condition for `auto-p', adjust the condition in
+ ;; the `delete-selection' property, just below this defun, accordingly.
(let ((auto-p (and LaTeX-electric-left-right-brace (not arg))))
(if (and auto-p
(TeX-active-mark)
@@ -2829,6 +2831,27 @@ Normally bound to keys \(, { and [."
(goto-char (mark)))
(LaTeX-insert-corresponding-right-macro-and-brace
lmacro lbrace)))))))
+;; Cater for `delete-selection-mode' (bug#36385)
+;; See the header comment of delsel.el for detail.
+(put #'LaTeX-insert-left-brace 'delete-selection
+ (lambda ()
+ ;; Consult `delete-selection' property when
+ ;; `LaTeX-insert-left-brace' works just the same as
+ ;; `self-insert-command'.
+ (and (or (not LaTeX-electric-left-right-brace)
+ current-prefix-arg)
+ (let ((f (get #'self-insert-command 'delete-selection)))
+ ;; If `delete-selection' property of
+ ;; `self-insert-command' is one of the predefined
+ ;; special symbols, just return itself.
+ (if (memq f '(yank supersede kill t nil))
+ ;; FIXME: if this list of special symbols is
+ ;; extended in future delsel.el, this discrimination
+ ;; will become wrong.
+ f
+ ;; Otherwise, call it as a function and return
+ ;; its value.
+ (funcall f))))))
(defun LaTeX-insert-corresponding-right-macro-and-brace
(lmacro lbrace &optional optional prompt)