summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2023-03-19 22:19:52 +0200
committerEli Zaretskii <eliz@gnu.org>2023-03-19 22:19:52 +0200
commite62f8b0239dffe597466c26816debcb9a627b065 (patch)
treed7f7b829b5dda8b3f7c5a2162298f2de22565a4b
parent94d1c81cf0732da96b33cfc5c967afbcdf9cf1b9 (diff)
downloademacs-e62f8b0239dffe597466c26816debcb9a627b065.tar.gz
Fix visiting XBM/XPM files when 'c-ts-mode' is active
* lisp/progmodes/c-ts-mode.el (treesit-ready-p): Fix association for XBM/XPM files in 'auto-mode-alist'. (Bug#62276)
-rw-r--r--lisp/progmodes/c-ts-mode.el13
1 files changed, 9 insertions, 4 deletions
diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el
index ff86b9e0544..659db46dc12 100644
--- a/lisp/progmodes/c-ts-mode.el
+++ b/lisp/progmodes/c-ts-mode.el
@@ -1061,10 +1061,15 @@ the code is C or C++ and based on that chooses whether to enable
'("\\(\\.ii\\|\\.\\(CC?\\|HH?\\)\\|\\.[ch]\\(pp\\|xx\\|\\+\\+\\)\\|\\.\\(cc\\|hh\\)\\)\\'"
. c++-ts-mode)))
-(if (treesit-ready-p 'c)
- (add-to-list 'auto-mode-alist
- '("\\(\\.[chi]\\|\\.lex\\|\\.y\\(acc\\)?\\|\\.x[bp]m\\)\\'"
- . c-ts-mode)))
+(when (treesit-ready-p 'c)
+ (add-to-list 'auto-mode-alist
+ '("\\(\\.[chi]\\|\\.lex\\|\\.y\\(acc\\)?\\)\\'" . c-ts-mode))
+ (add-to-list 'auto-mode-alist '("\\.x[pb]m\\'" . c-ts-mode))
+ ;; image-mode's association must be before the C mode, otherwise XPM
+ ;; images will be initially visited as C files. Also note that the
+ ;; regexp must be different from what files.el does, or else
+ ;; add-to-list will not add the association where we want it.
+ (add-to-list 'auto-mode-alist '("\\.x[pb]m\\'" . image-mode)))
(if (and (treesit-ready-p 'cpp)
(treesit-ready-p 'c))