bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#68246: 30.0.50; Add non-TS mode as extra parent of TS modes


From: Dmitry Gutov
Subject: bug#68246: 30.0.50; Add non-TS mode as extra parent of TS modes
Date: Thu, 11 Jan 2024 05:41:49 +0200
User-agent: Mozilla Thunderbird

On 10/01/2024 18:11, Stefan Monnier wrote:
That's very nice and concise, but it still leaves the issue of users being
able to use a common hook for a family of major modes (for the same
language).  So I guess some inheritance-based solution is needed?
We have `define-derived-mode` for that.
And even those major modes which don't want to inherit via
`define-derived-mode` can `run-mode-hooks` any additional hook they like.

Hmm, I guess I figured that having a common hook is the more pressing issue, since the users would want to try the different available modes, and they don't always know where to put their settings - on js-mode-hook, or js-ts-mode-hook, or that there is the base mode that can be used (which is the case not for every ts mode).

Whereas the packages that use derived-mode-p are most likely less numerous than our total set of users who employ customizations in hooks, and thus can more easily bear the inconvenience of having to mention both js-ts-mode and js-mode, for example.

Doing it when a mode is defined is easy and "safe".

Indeed, 'run-mode-hooks' is a workable approach, but if we decided on a common hook name to use (e.g. if it used the format like xyz-language-mode-hook) that might relieve the situation somewhat.

Changing it after the fact risks introducing breakage (just like my
`derived-mode-add-parents` does) where the code run via the hook depends
on specific details of the original mode which aren't available in the
"pseudo-derived" mode.

Sure. A new hook shouldn't have such a problem, though.

For this reason my patch only proposes the use of
`derived-mode-add-parents` since that's the part where a clear need has
been found.

That makes sense.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]