GNU bug report logs -
#75961
set-auto-mode--apply-alist
Previous Next
Reported by: nat chapman <nat.chapman <at> proton.me>
Date: Fri, 31 Jan 2025 07:59:02 UTC
Severity: normal
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
On Friday, January 31st, 2025 at 02:16, Eli Zaretskii <eliz <at> gnu.org> wrote:
>
>
> > Date: Fri, 31 Jan 2025 06:24:02 +0000
>
> > From: nat chapman via "Bug reports for GNU Emacs,
> > the Swiss army knife of text editors" bug-gnu-emacs <at> gnu.org
> >
> > On https://www.gnu.org/software/emacs/manual/html_node/emacs/Choosing-Modes.html, the manual says:
> > "If the element has the form (regexp mode-function flag) and flag is non-nil, then after calling
> > mode-function (if it is non-nil), Emacs discards the suffix that matched regexp and searches the list again
> > for another match. This “recursive extension stripping” is used for files which have multiple extensions, and
> > the “outer” extension hides the “inner” one that actually specifies the right mode. For example, backup files
> > and GPG-encrypted files with .gpg extension use this feature."
> >
> > My understanding of this paragraph is that the outside mode-function should be called, and then
> > subsequent mode-functions should be called after. Currently, only the inner-most matched suffix has its
> > mode-function called.
> >
> > I believe this was changed in this commit:
> > https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=ad5faa424a5d2f0d67265906d21f7af98220df26
> >
> > It looks like the (when mode (set-auto-mode-0 ...)) was moved from inside the (while name ...) to outside
> > when the section was pulled into its own function. It's been four and a half years, so maybe it doesn't matter
> > anymore, but if that's the case the manual should be updated; it would have saved me a couple hours of
> > difficulty.
>
>
> Thanks.
>
> Do you have a recipe for showing some failure, preferably starting
> from "emacs -Q", to behave according to the documentation, due to the
> above change? If so, can you please show such a recipe?
emacs -Q --eval '(progn (define-derived-mode test-mode fundamental-mode "TEST" (message "Test mode called")) (add-to-list (quote auto-mode-alist) (quote ("\\.test$" test-mode t))))' file.html.test file.test
Buffer visiting file.html.test is in mhtml-mode, buffer visiting file.test is in fundamental mode, no message is emitted.
Using edebug to step through set-auto-mode--apply alist, (regexp mode-function t) matches correctly but the mode-function is never called.
This bug report was last modified 96 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.