From aa6c5227d04ec9fe5cb0405e5abc8a20cc9d1be5 Mon Sep 17 00:00:00 2001 From: Eshel Yaron Date: Fri, 21 Feb 2025 18:30:55 +0100 Subject: [PATCH] Make 'electric-pair-mode' buffer-local --- doc/emacs/programs.texi | 4 +--- lisp/elec-pair.el | 39 +++++++++++-------------------------- test/lisp/electric-tests.el | 2 +- 3 files changed, 13 insertions(+), 32 deletions(-) diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi index dbc7f84c13b..f8ae34fd27a 100644 --- a/doc/emacs/programs.texi +++ b/doc/emacs/programs.texi @@ -1057,9 +1057,7 @@ mode to skip whitespace forward before deciding whether to skip over the closing delimiter. @end itemize -To toggle Electric Pair mode, type @kbd{M-x electric-pair-mode}. To -toggle the mode in a single buffer, use @kbd{M-x -electric-pair-local-mode}. +To toggle Electric Pair mode, type @kbd{M-x electric-pair-mode}. @node Comments @section Manipulating Comments diff --git a/lisp/elec-pair.el b/lisp/elec-pair.el index 056ce203005..4093add536a 100644 --- a/lisp/elec-pair.el +++ b/lisp/elec-pair.el @@ -646,46 +646,29 @@ ARG and KILLP are passed directly to ;;;###autoload (define-minor-mode electric-pair-mode - "Toggle automatic parens pairing (Electric Pair mode). - -Electric Pair mode is a global minor mode. When enabled, typing -an open parenthesis automatically inserts the corresponding -closing parenthesis, and vice versa. (Likewise for brackets, etc.). -If the region is active, the parentheses (brackets, etc.) are -inserted around the region instead. - -To toggle the mode in a single buffer, use `electric-pair-local-mode'." - :global t :group 'electricity + "Toggle automatic parens pairing (Electric Pair mode)." + :group 'electricity (if electric-pair-mode (progn (add-hook 'post-self-insert-hook #'electric-pair-post-self-insert-function - 50) + 50 t) (add-hook 'post-self-insert-hook #'electric-pair-open-newline-between-pairs-psif - 50) + 50 t) (add-hook 'self-insert-uses-region-functions - #'electric-pair-will-use-region)) + #'electric-pair-will-use-region t)) (remove-hook 'post-self-insert-hook - #'electric-pair-post-self-insert-function) + #'electric-pair-post-self-insert-function t) (remove-hook 'post-self-insert-hook - #'electric-pair-open-newline-between-pairs-psif) + #'electric-pair-open-newline-between-pairs-psif t) (remove-hook 'self-insert-uses-region-functions - #'electric-pair-will-use-region))) + #'electric-pair-will-use-region t))) ;;;###autoload -(define-minor-mode electric-pair-local-mode - "Toggle `electric-pair-mode' only in this buffer." - :variable ( electric-pair-mode . - (lambda (val) (setq-local electric-pair-mode val))) - (cond - ((eq electric-pair-mode (default-value 'electric-pair-mode)) - (kill-local-variable 'electric-pair-mode)) - ((not (default-value 'electric-pair-mode)) - ;; Locally enabled, but globally disabled. - (electric-pair-mode 1) ; Setup the hooks. - (setq-default electric-pair-mode nil) ; But keep it globally disabled. - ))) +(define-globalized-minor-mode global-electric-pair-mode + electric-pair-mode electric-pair-mode + :group 'electricity) (provide 'elec-pair) diff --git a/test/lisp/electric-tests.el b/test/lisp/electric-tests.el index ac5b47e93db..1d258a5ffcb 100644 --- a/test/lisp/electric-tests.el +++ b/test/lisp/electric-tests.el @@ -551,7 +551,7 @@ baz\"\"" "Make sure `electric-pair-mode' does not confuse `undo' (bug#39680)." (with-temp-buffer (buffer-enable-undo) - (electric-pair-local-mode) + (electric-pair-mode) (let ((last-command-event ?\()) (ert-simulate-command '(self-insert-command 1))) (undo-boundary) -- 2.39.5