aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoão Távora2014-04-07 00:37:17 +0100
committerJoão Távora2014-04-07 00:37:17 +0100
commitbe411138140cdcdb4e1aec682c4e41354ab709e0 (patch)
treee2274e0a8c32f8b03638cdef485ecf82547fc799
parent7aecc2f6ca3842395436f111449dbdcdce494ad5 (diff)
downloademacs-be411138140cdcdb4e1aec682c4e41354ab709e0.tar.gz
emacs-be411138140cdcdb4e1aec682c4e41354ab709e0.zip
Fix electric-pair-delete-adjacent-pairs in modes binding backspace.
* lisp/elec-pair.el (electric-pair-backward-delete-char): Delete. (electric-pair-backward-delete-char-untabify): Delete. (electric-pair-mode-map): Bind backspace to a menu item filtering a new `electric-pair-delete-pair' command. (electric-pair-delete-pair): New command. Fixes: debbugs:16981
-rw-r--r--lisp/ChangeLog10
-rw-r--r--lisp/elec-pair.el62
2 files changed, 36 insertions, 36 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c30c02dcef3..92a221999ce 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,15 @@
12014-04-06 João Távora <joaotavora@gmail.com> 12014-04-06 João Távora <joaotavora@gmail.com>
2 2
3 Fix `electric-pair-delete-adjacent-pairs' in modes binding
4 backspace. (bug#16981)
5 * elec-pair.el (electric-pair-backward-delete-char): Delete.
6 (electric-pair-backward-delete-char-untabify): Delete.
7 (electric-pair-mode-map): Bind backspace to a menu item filtering
8 a new `electric-pair-delete-pair' command.
9 (electric-pair-delete-pair): New command.
10
112014-04-06 João Távora <joaotavora@gmail.com>
12
3 * progmodes/python.el (python-electric-pair-string-delimiter): Fix 13 * progmodes/python.el (python-electric-pair-string-delimiter): Fix
4 triple-quoting electricity. (Bug#17192) 14 triple-quoting electricity. (Bug#17192)
5 15
diff --git a/lisp/elec-pair.el b/lisp/elec-pair.el
index 2c1ea7262d3..32afcd88380 100644
--- a/lisp/elec-pair.el
+++ b/lisp/elec-pair.el
@@ -166,36 +166,6 @@ return value is considered instead."
166quotes or comments. If lookup fails here, `electric-pair-text-pairs' will 166quotes or comments. If lookup fails here, `electric-pair-text-pairs' will
167be considered.") 167be considered.")
168 168
169(defun electric-pair-backward-delete-char (n &optional killflag untabify)
170 "Delete characters backward, and maybe also two adjacent paired delimiters.
171
172Remaining behavior is given by `backward-delete-char' or, if UNTABIFY is
173non-nil, `backward-delete-char-untabify'."
174 (interactive "*p\nP")
175 (let* ((prev (char-before))
176 (next (char-after))
177 (syntax-info (and prev
178 (electric-pair-syntax-info prev)))
179 (syntax (car syntax-info))
180 (pair (cadr syntax-info)))
181 (when (and next pair
182 (if (functionp electric-pair-delete-adjacent-pairs)
183 (funcall electric-pair-delete-adjacent-pairs)
184 electric-pair-delete-adjacent-pairs)
185 (memq syntax '(?\( ?\" ?\$))
186 (eq pair next))
187 (delete-char 1 killflag))
188 (if untabify
189 (backward-delete-char-untabify n killflag)
190 (backward-delete-char n killflag))))
191
192(defun electric-pair-backward-delete-char-untabify (n &optional killflag)
193 "Delete characters backward, and maybe also two adjacent paired delimiters.
194
195Remaining behavior is given by `backward-delete-char-untabify'."
196 (interactive "*p\nP")
197 (electric-pair-backward-delete-char n killflag t))
198
199(defun electric-pair-conservative-inhibit (char) 169(defun electric-pair-conservative-inhibit (char)
200 (or 170 (or
201 ;; I find it more often preferable not to pair when the 171 ;; I find it more often preferable not to pair when the
@@ -530,14 +500,34 @@ happened."
530 (memq (car (electric-pair-syntax-info last-command-event)) 500 (memq (car (electric-pair-syntax-info last-command-event))
531 '(?\( ?\) ?\" ?\$)))) 501 '(?\( ?\) ?\" ?\$))))
532 502
503(defun electric-pair-delete-pair (arg &optional killp)
504 "When between adjacent paired delimiters, delete both of them.
505ARG and KILLP are passed directly to
506`backward-delete-char-untabify', which see."
507 (interactive "*p\nP")
508 (delete-char 1)
509 (backward-delete-char-untabify arg killp))
510
533(defvar electric-pair-mode-map 511(defvar electric-pair-mode-map
534 (let ((map (make-sparse-keymap))) 512 (let ((map (make-sparse-keymap)))
535 (define-key map [remap backward-delete-char-untabify] 513 (define-key map "\177"
536 'electric-pair-backward-delete-char-untabify) 514 `(menu-item
537 (define-key map [remap backward-delete-char] 515 "" electric-pair-delete-pair
538 'electric-pair-backward-delete-char) 516 :filter
539 (define-key map [remap delete-backward-char] 517 ,(lambda (cmd)
540 'electric-pair-backward-delete-char) 518 (let* ((prev (char-before))
519 (next (char-after))
520 (syntax-info (and prev
521 (electric-pair-syntax-info prev)))
522 (syntax (car syntax-info))
523 (pair (cadr syntax-info)))
524 (and next pair
525 (memq syntax '(?\( ?\" ?\$))
526 (eq pair next)
527 (if (functionp electric-pair-delete-adjacent-pairs)
528 (funcall electric-pair-delete-adjacent-pairs)
529 electric-pair-delete-adjacent-pairs)
530 cmd)))))
541 map) 531 map)
542 "Keymap used by `electric-pair-mode'.") 532 "Keymap used by `electric-pair-mode'.")
543 533