From 70dd5705e11f2259dd1890cee6c72ddcf9d7dd33 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 21 Nov 2024 09:43:34 +0200 Subject: [PATCH] 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) --- lisp/progmodes/c-ts-mode.el | 15 ++++++++------- 1 file 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 'c-ts-mode))) (funcall (major-mode-remap mode)))) -;; The entries for C++ must come first to prevent *.c files be taken -;; as C++ on case-insensitive filesystems, since *.C files are C++, -;; not C. -(if (treesit-ready-p 'cpp) - (add-to-list 'major-mode-remap-defaults - '(c++-mode . c++-ts-mode))) +(when (treesit-ready-p 'cpp) + (setq major-mode-remap-defaults + (assq-delete-all 'c++-mode major-mode-remap-defaults)) + (add-to-list 'major-mode-remap-defaults '(c++-mode . c++-ts-mode))) (when (treesit-ready-p 'c) - (add-to-list 'major-mode-remap-defaults '(c++-mode . c++-ts-mode)) + (setq major-mode-remap-defaults + (assq-delete-all 'c-mode major-mode-remap-defaults)) (add-to-list 'major-mode-remap-defaults '(c-mode . c-ts-mode))) (when (and (treesit-ready-p 'cpp) (treesit-ready-p 'c)) + (setq major-mode-remap-defaults + (assq-delete-all 'c-or-c++-mode major-mode-remap-defaults)) (add-to-list 'major-mode-remap-defaults '(c-or-c++-mode . c-or-c++-ts-mode))) (provide 'c-ts-mode) -- 2.30.2