From 40b3dcd2c06e30048be0bdc32861148a53660c90 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Sat, 28 Mar 2015 14:43:33 +0000 Subject: [PATCH] New `electric-pair-local-mode' Fixes: big#19528 * lisp/elec-pair.el (electric-pair-local-mode): New command. (electric-pair-mode): Mention `electric-pair-local-mode' in the docstring. --- doc/emacs/programs.texi | 4 +++- etc/NEWS | 3 +++ lisp/ChangeLog | 6 ++++++ lisp/elec-pair.el | 16 +++++++++++++++- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi index b161a0cc63b..1fffa233e56 100644 --- a/doc/emacs/programs.texi +++ b/doc/emacs/programs.texi @@ -870,7 +870,9 @@ 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 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}. @node Comments @section Manipulating Comments diff --git a/etc/NEWS b/etc/NEWS index 396335edffc..6de8f030d94 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -215,6 +215,9 @@ Unicode standards. ** You can access `mouse-buffer-menu' (C-down-mouse-1) using C-f10. ++++ +** New buffer-local `electric-pair-local-mode'. + * Changes in Specialized Modes and Packages in Emacs 25.1 ** xterm-mouse-mode now supports mouse-tracking (if your xterm supports it). diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 488abb1b39b..40a57902d1d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2015-03-28 Tom Willemse + + * elec-pair.el (electric-pair-local-mode): New command. + (electric-pair-mode): Mention `electric-pair-local-mode' in the + docstring. + 2015-03-28 Jan Djärv * emacs-lisp/package.el (package-refresh-contents): Add a message at diff --git a/lisp/elec-pair.el b/lisp/elec-pair.el index 2cede62ab4f..562b29467c1 100644 --- a/lisp/elec-pair.el +++ b/lisp/elec-pair.el @@ -557,7 +557,8 @@ the mode if ARG is omitted or nil. Electric Pair mode is a global minor mode. When enabled, typing an open parenthesis automatically inserts the corresponding -closing parenthesis. (Likewise for brackets, etc.)." +closing parenthesis. (Likewise for brackets, etc.). To toggle +the mode in a single buffer, use `electric-pair-local-mode'." :global t :group 'electricity (if electric-pair-mode (progn @@ -571,6 +572,19 @@ closing parenthesis. (Likewise for brackets, etc.)." (remove-hook 'self-insert-uses-region-functions #'electric-pair-will-use-region))) +;;;###autoload +(define-minor-mode electric-pair-local-mode + "Toggle `electric-pair-mode' only in this buffer." + :variable (buffer-local-value 'electric-pair-mode (current-buffer)) + (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. + ))) + (provide 'elec-pair) ;;; elec-pair.el ends here -- 2.39.5