Subject: bug#74367: [PATCH] c-ts-mode.el: Adjust doc about how to change default modes

From: Eli Zaretskii <[email-masked]>
Date: Sat, 16 Nov 2024 23:00:09 +0200

> From: Stefan Monnier <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked]
> Date: Sat, 16 Nov 2024 15:26:31 -0500
> 
> >> I don't understand why you insist on suggesting such a "setting" since
> >> it's unreliable now and probably even more so in the future.
> > Because that's what users did in Emacs 29.  I don't want us to make an
> > impression it no longer works.
> 
> In Emacs-29, it did work, because it modified `auto-mode-alist` and
> CC-mode never modified it back.
> 
> In `emacs-30`, it doesn't work reliably any more because loading
> `cc-mode.el` after `c-ts-mode.el` causes the default mode to revert to
> `c-mode`.  Loading `cc-mode.el` happens when you do `C-h f c-mode RET`,
> or when you load a file that requires it, e.g.:

This will be better once we fix the major-mode-remap-defaults are
handled by the modes involved in this.  But yes, the effect of your
introduction of major-mode-remap-defaults and the subsequent changes
in cc-mode is that loading the mode works less reliably now.  Which is
why the advice to use major-mode-remap-alist should now be the first
one.

>     lisp/cedet/semantic/bovine/c.el:(eval-when-compile (require 'cc-mode))
>     lisp/generic-x.el:(require 'cc-mode)
>     lisp/org/ob-C.el:(require 'cc-mode)
>     lisp/org/ob-fortran.el:(require 'cc-mode)
>     lisp/progmodes/antlr-mode.el:(require 'cc-mode)
>     lisp/progmodes/cc-mode.el:;; (require 'cc-mode)
>     lisp/progmodes/cmacexp.el:(require 'cc-mode)
>     lisp/progmodes/csharp-mode.el:(require 'cc-mode)
>     lisp/progmodes/cwarn.el:(require 'cc-mode)
>     lisp/progmodes/hideif.el:(require 'cc-mode)
>     lisp/progmodes/js.el:(require 'cc-mode)

See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=74339#38

> Also we're discussing changing `c-ts-mode.el` so loading it doesn't have
> that effect at all

That's not the change I am discussing in bug#74339.

> which means that there's a good chance it will work even less well
> in the future.  So to me it's clear that suggesting the use of
> `require` or `load` to change the default C mode is doing a
> disservice to our users.

Noted.