emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-24 r116919: Fix electric-pair-delete-adjacent-pairs


From: João Távora
Subject: [Emacs-diffs] emacs-24 r116919: Fix electric-pair-delete-adjacent-pairs in modes binding backspace.
Date: Sun, 06 Apr 2014 23:37:22 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 116919
revision-id: address@hidden
parent: address@hidden
fixes bug: http://debbugs.gnu.org/16981
committer: João Távora <address@hidden>
branch nick: emacs-24
timestamp: Mon 2014-04-07 00:37:17 +0100
message:
  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.
modified:
  lisp/ChangeLog                 changelog-20091113204419-o5vbwnq5f7feedwu-1432
  lisp/elec-pair.el              elecpair.el-20131227124533-yaq8recs0j0ggt67-1
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2014-04-06 23:23:45 +0000
+++ b/lisp/ChangeLog    2014-04-06 23:37:17 +0000
@@ -1,5 +1,15 @@
 2014-04-06  João Távora  <address@hidden>
 
+       Fix `electric-pair-delete-adjacent-pairs' in modes binding
+       backspace. (bug#16981)
+       * 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.
+
+2014-04-06  João Távora  <address@hidden>
+
        * progmodes/python.el (python-electric-pair-string-delimiter): Fix
        triple-quoting electricity.  (Bug#17192)
 

=== modified file 'lisp/elec-pair.el'
--- a/lisp/elec-pair.el 2014-04-06 23:09:19 +0000
+++ b/lisp/elec-pair.el 2014-04-06 23:37:17 +0000
@@ -166,36 +166,6 @@
 quotes or comments.  If lookup fails here, `electric-pair-text-pairs' will
 be considered.")
 
-(defun electric-pair-backward-delete-char (n &optional killflag untabify)
-  "Delete characters backward, and maybe also two adjacent paired delimiters.
-
-Remaining behavior is given by `backward-delete-char' or, if UNTABIFY is
-non-nil, `backward-delete-char-untabify'."
-  (interactive "*p\nP")
-  (let* ((prev (char-before))
-         (next (char-after))
-         (syntax-info (and prev
-                           (electric-pair-syntax-info prev)))
-         (syntax (car syntax-info))
-         (pair (cadr syntax-info)))
-    (when (and next pair
-               (if (functionp electric-pair-delete-adjacent-pairs)
-                   (funcall electric-pair-delete-adjacent-pairs)
-                 electric-pair-delete-adjacent-pairs)
-               (memq syntax '(?\( ?\" ?\$))
-               (eq pair next))
-      (delete-char 1 killflag))
-    (if untabify
-        (backward-delete-char-untabify n killflag)
-        (backward-delete-char n killflag))))
-
-(defun electric-pair-backward-delete-char-untabify (n &optional killflag)
-  "Delete characters backward, and maybe also two adjacent paired delimiters.
-
-Remaining behavior is given by `backward-delete-char-untabify'."
-  (interactive "*p\nP")
-  (electric-pair-backward-delete-char n killflag t))
-
 (defun electric-pair-conservative-inhibit (char)
   (or
    ;; I find it more often preferable not to pair when the
@@ -530,14 +500,34 @@
        (memq (car (electric-pair-syntax-info last-command-event))
              '(?\( ?\) ?\" ?\$))))
 
+(defun electric-pair-delete-pair (arg &optional killp)
+  "When between adjacent paired delimiters, delete both of them.
+ARG and KILLP are passed directly to
+`backward-delete-char-untabify', which see."
+  (interactive "*p\nP")
+  (delete-char 1)
+  (backward-delete-char-untabify arg killp))
+
 (defvar electric-pair-mode-map
   (let ((map (make-sparse-keymap)))
-    (define-key map [remap backward-delete-char-untabify]
-      'electric-pair-backward-delete-char-untabify)
-    (define-key map [remap backward-delete-char]
-      'electric-pair-backward-delete-char)
-    (define-key map [remap delete-backward-char]
-      'electric-pair-backward-delete-char)
+    (define-key map "\177"
+      `(menu-item
+        "" electric-pair-delete-pair
+        :filter
+        ,(lambda (cmd)
+           (let* ((prev (char-before))
+                  (next (char-after))
+                  (syntax-info (and prev
+                                    (electric-pair-syntax-info prev)))
+                  (syntax (car syntax-info))
+                  (pair (cadr syntax-info)))
+             (and next pair
+                  (memq syntax '(?\( ?\" ?\$))
+                  (eq pair next)
+                  (if (functionp electric-pair-delete-adjacent-pairs)
+                      (funcall electric-pair-delete-adjacent-pairs)
+                    electric-pair-delete-adjacent-pairs)
+                  cmd)))))
     map)
   "Keymap used by `electric-pair-mode'.")
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]