aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2024-11-21 09:43:34 +0200
committerEli Zaretskii2024-11-21 09:43:34 +0200
commit70dd5705e11f2259dd1890cee6c72ddcf9d7dd33 (patch)
tree703f71c25cd2f1561d6eb98368f2d4d16fc92866
parent331610aef0572eacb2846f817e979aa5e29170b7 (diff)
downloademacs-70dd5705e11f2259dd1890cee6c72ddcf9d7dd33.tar.gz
emacs-70dd5705e11f2259dd1890cee6c72ddcf9d7dd33.zip
Fix overriding 'c-ts-mode' by 'c-mode'
* lisp/progmodes/c-ts-mode.el: Remove all c- and c++-mode associations from 'major-mode-remap-defaults' before installing entries that remap to 'c-ts-mode' and 'c++-ts-mode'. (Bug#74339)
-rw-r--r--lisp/progmodes/c-ts-mode.el15
1 files changed, 8 insertions, 7 deletions
diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el
index 647a9420e0d..90eeffe370c 100644
--- a/lisp/progmodes/c-ts-mode.el
+++ b/lisp/progmodes/c-ts-mode.el
@@ -1488,19 +1488,20 @@ the code is C or C++, and based on that chooses whether to enable
1488 'c-ts-mode))) 1488 'c-ts-mode)))
1489 (funcall (major-mode-remap mode)))) 1489 (funcall (major-mode-remap mode))))
1490 1490
1491;; The entries for C++ must come first to prevent *.c files be taken 1491(when (treesit-ready-p 'cpp)
1492;; as C++ on case-insensitive filesystems, since *.C files are C++, 1492 (setq major-mode-remap-defaults
1493;; not C. 1493 (assq-delete-all 'c++-mode major-mode-remap-defaults))
1494(if (treesit-ready-p 'cpp) 1494 (add-to-list 'major-mode-remap-defaults '(c++-mode . c++-ts-mode)))
1495 (add-to-list 'major-mode-remap-defaults
1496 '(c++-mode . c++-ts-mode)))
1497 1495
1498(when (treesit-ready-p 'c) 1496(when (treesit-ready-p 'c)
1499 (add-to-list 'major-mode-remap-defaults '(c++-mode . c++-ts-mode)) 1497 (setq major-mode-remap-defaults
1498 (assq-delete-all 'c-mode major-mode-remap-defaults))
1500 (add-to-list 'major-mode-remap-defaults '(c-mode . c-ts-mode))) 1499 (add-to-list 'major-mode-remap-defaults '(c-mode . c-ts-mode)))
1501 1500
1502(when (and (treesit-ready-p 'cpp) 1501(when (and (treesit-ready-p 'cpp)
1503 (treesit-ready-p 'c)) 1502 (treesit-ready-p 'c))
1503 (setq major-mode-remap-defaults
1504 (assq-delete-all 'c-or-c++-mode major-mode-remap-defaults))
1504 (add-to-list 'major-mode-remap-defaults '(c-or-c++-mode . c-or-c++-ts-mode))) 1505 (add-to-list 'major-mode-remap-defaults '(c-or-c++-mode . c-or-c++-ts-mode)))
1505 1506
1506(provide 'c-ts-mode) 1507(provide 'c-ts-mode)