* lisp/electric.el (electric-pair-inhibit-predicate): New var.

(electric-pair-post-self-insert-function): Use it.
(electric-pair-default-inhibit): New function, extracted from
electric-pair-post-self-insert-function.

Fixes: debbugs:14000
This commit is contained in:
Stefan Monnier 2013-04-01 09:28:19 -04:00
parent 925d7ec008
commit 15c579f08c
2 changed files with 28 additions and 6 deletions

View file

@ -1,3 +1,10 @@
2013-04-01 Stefan Monnier <monnier@iro.umontreal.ca>
* electric.el (electric-pair-inhibit-predicate): New var (bug#14000).
(electric-pair-post-self-insert-function): Use it.
(electric-pair-default-inhibit): New function, extracted from
electric-pair-post-self-insert-function.
2013-03-31 Roland Winkler <winkler@gnu.org>
* emacs-lisp/crm.el (completing-read-multiple): Doc fix.

View file

@ -302,6 +302,26 @@ This can be convenient for people who find it easier to hit ) than C-f."
:version "24.1"
:type 'boolean)
(defcustom electric-pair-inhibit-predicate
#'electric-pair-default-inhibit
"Predicate to prevent insertion of a matching pair.
The function is called with a single char (the opening char just inserted).
If it returns non-nil, then `electric-pair-mode' will not insert a matching
closer."
:type '(choice
(const :tag "Default" electric-pair-default-inhibit)
(const :tag "Always pair" ignore)
function))
(defun electric-pair-default-inhibit (char)
(or
;; I find it more often preferable not to pair when the
;; same char is next.
(eq char (char-after))
(eq char (char-before (1- (point))))
;; I also find it often preferable not to pair next to a word.
(eq (char-syntax (following-char)) ?w)))
(defun electric-pair-syntax (command-event)
(and electric-pair-mode
(let ((x (assq command-event electric-pair-pairs)))
@ -351,12 +371,7 @@ This can be convenient for people who find it easier to hit ) than C-f."
;; Insert matching pair.
((not (or (not (memq syntax `(?\( ?\" ?\$)))
overwrite-mode
;; I find it more often preferable not to pair when the
;; same char is next.
(eq last-command-event (char-after))
(eq last-command-event (char-before (1- (point))))
;; I also find it often preferable not to pair next to a word.
(eq (char-syntax (following-char)) ?w)))
(funcall electric-pair-inhibit-predicate last-command-event)))
(save-excursion (insert closer))))))
(defun electric-pair-will-use-region ()