Tags: patch [ I now see that I had sent this to `emacs-devel` rather than as a bug report, so here is the second try. To make up for it, I include a suggested patch this time. ] Emacs has various facilities to decide which major mode to use for which file based on its name and/or contents. All those facilities specify directly the mode to use. This is usually exactly what we want because there's only ever 1 major mode for that type. But for some file types this is inconvenient because there are various alternative major modes that can be used for that file type. I'm thinking of things like Perl files (`perl-mode` vs `cperl-mode`), LaTeX files (`latex-mode` vs AUCTeX's equivalent (whose name it not clear, sadly)), HTML files (lots of alternatives), ... We have various ways to deal with those different cases, which are variously convenient/successful, but for things like `cperl-mode` vs `perl-mode` or `latex-mode` vs AUCTeX the usual solution is not satisfactory since it looks like: (defalias 'perl-mode #'cperl-mode) or equivalent, which means that the "other" mode becomes unavailable, which is particularly problematic if we want the "fancy/external" mode to be a derived mode of the other. (AUCTeX now does it via advising which at least makes it reversible, but it's still not very satisfactory). The way I tend to think of it is that we'd like to divide the mode choice into two steps: A) recognize the file type (a bit like `/etc/mime.types`). B) choose the mode to use for that type (like `/etc/mailcap`). We don't current have "types" and retro-fitting that might make the common case (where there's only 1 mode) more painful. IOW it would take work and lead to a worse result in the most common case, which doesn't sound very enticing. So instead I suggest consider the current settings as being our implementation of (A), and add (B) as some "mode remapping" layer to decide which major mode to actually for a given "type/mode". So instead of (defalias 'perl-mode #'cperl-mode) We could have (add-to-list 'major-mode-remap-alist '(perl-mode . cperl-mode)) -- Stefan In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0, Xaw3d scroll bars) of 2022-09-16 built on pastel Repository revision: c15a53877a7db7aa3205cff3c943321ed81a1412 Repository branch: work Windowing system distributor 'The X.Org Foundation', version 11.0.12011000 System Description: Debian GNU/Linux 11 (bullseye) Configured using: 'configure -C --enable-checking --enable-check-lisp-object-type --with-modules --with-cairo --with-tiff=ifavailable 'CFLAGS=-Wall -g3 -Og -Wno-pointer-sign' PKG_CONFIG_PATH=/home/monnier/lib/pkgconfig'