summaryrefslogtreecommitdiff
path: root/lisp/progmodes/cc-cmds.el
diff options
context:
space:
mode:
authorAlan Mackenzie <acm@muc.de>2015-08-19 16:47:10 +0000
committerAlan Mackenzie <acm@muc.de>2015-08-19 16:47:10 +0000
commit82a3da21ffece64ce9f4f99f35cbc0afe851e6ee (patch)
tree3e994ddb89d7014701323f28813097284d3ff266 /lisp/progmodes/cc-cmds.el
parentec07cfbee12528b9800a8c8fa019af72e3c9cfe4 (diff)
downloademacs-82a3da21ffece64ce9f4f99f35cbc0afe851e6ee.tar.gz
emacs-82a3da21ffece64ce9f4f99f35cbc0afe851e6ee.tar.bz2
emacs-82a3da21ffece64ce9f4f99f35cbc0afe851e6ee.zip
Make electric-pair-mode, delete-selection-mode and CC Mode cooperate.
Fixes debbugs#21275. In Emacs >= 25, let electric-pair-mode take precedence over delete-selection-mode. delsel.el (delete-selection-uses-region-p): New function, previously a lambda expression in a property value for `self-insert-command'. (top-level) Set the `delete-selection' property of `self-insert-command' to `delete-selection-uses-region-p'. progmodes/cc-cmds.el (top-level): Give the `delete-selection' property for c-electric-\(brace\|paren\) the value `delete-selection-uses-region-p' when the latter function exists.
Diffstat (limited to 'lisp/progmodes/cc-cmds.el')
-rw-r--r--lisp/progmodes/cc-cmds.el15
1 files changed, 12 insertions, 3 deletions
diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el
index c9f59451b7e..0beaf268a80 100644
--- a/lisp/progmodes/cc-cmds.el
+++ b/lisp/progmodes/cc-cmds.el
@@ -2853,19 +2853,28 @@ sentence motion in or near comments and multiline strings."
;; set up electric character functions to work with pending-del,
;; (a.k.a. delsel) mode. All symbols get the t value except
-;; the functions which delete, which gets 'supersede.
+;; the functions which delete, which gets 'supersede, and (from Emacs
+;; 25) `c-electric-brace' and `c-electric-paren' get special handling
+;; so as to work gracefully with `electric-pair-mode'.
(mapc
(function
(lambda (sym)
(put sym 'delete-selection t) ; for delsel (Emacs)
(put sym 'pending-delete t))) ; for pending-del (XEmacs)
'(c-electric-pound
- c-electric-brace
c-electric-slash
c-electric-star
c-electric-semi&comma
c-electric-lt-gt
- c-electric-colon
+ c-electric-colon))
+(mapc
+ (function
+ (lambda (sym)
+ (put sym 'delete-selection (if (fboundp 'delete-selection-uses-region-p)
+ 'delete-selection-uses-region-p
+ t))
+ (put sym 'pending-delete t)))
+ '(c-electric-brace
c-electric-paren))
(put 'c-electric-delete 'delete-selection 'supersede) ; delsel
(put 'c-electric-delete 'pending-delete 'supersede) ; pending-del