summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/progmodes/cc-mode.el16
1 files changed, 16 insertions, 0 deletions
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 5f11622733f..8ce4da56ef7 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -3327,6 +3327,22 @@ Key bindings:
style c-features)))))))
+;; Make entries in `major-mode-remap-defaults' to ensure that when CC
+;; Mode has been loaded, the symbols `c-mode' etc., will call CC Mode's
+;; modes rather than c-ts-mode etc..
+(when (boundp 'major-mode-remap-defaults)
+ (add-to-list 'major-mode-remap-defaults '(c++-mode . c++-ts-mode))
+ (add-to-list 'major-mode-remap-defaults '(c-mode . c-ts-mode))
+ (add-to-list 'major-mode-remap-defaults '(c-or-c++-mode . c-or-c++-ts-mode))
+ (let (entry)
+ (dolist (mode '(c-mode c++-mode c-or-c++-mode))
+ (if (and (setq entry (assq mode major-mode-remap-defaults))
+ (null (cdr entry)))
+ (setq major-mode-remap-defaults
+ (delq entry major-mode-remap-defaults)))
+ (push (cons mode nil) major-mode-remap-defaults))))
+
+
(cc-provide 'cc-mode)
;; Local Variables: