[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#67008: 30.0.50; Multiple major mode parents
From: |
Yuan Fu |
Subject: |
bug#67008: 30.0.50; Multiple major mode parents |
Date: |
Wed, 8 Nov 2023 23:43:10 -0800 |
> On Nov 8, 2023, at 9:38 PM, Stefan Monnier via Bug reports for GNU Emacs, the
> Swiss army knife of text editors <bug-gnu-emacs@gnu.org> wrote:
>
> Package: Emacs
> Version: 30.0.50
>
>
> While it seems difficult to add support for multiple inheritance to
> `define-derived-mode`, it's fairly easy to allow a major mode to declare
> itself the spiritual heir of various other major modes beside the one
> from which it actually inherits.
>
> We already have some very basic such cases in our own code:
> - `locate-mode` inherits from `special-mode` but declares itself
> as a child of `dired-mode`.
> - CEDET declares that `c++-mode` is a child of `c-mode`.
>
> I'd been toying with this idea for a while because it has seemed useful
> a few times, tho until now there seemed to be good enough alternatives.
> But in order to really support AUCTeX modes well, we do need such
> a thing: we need `LaTeX-mode` to be able to declare itself as a child
> of `latex-mode` (even tho it does not inherit from it) so that
> directory-local variables are properly applied to it, which is
> a fairly common use case.
>
> I pushed to the branch `feature/derived-mode-add-parents` a bunch of
> patches which add support for such limited form of `multiple
> inheritance`.
>
> The patch is fairly large because it goes through all the code that
> uses the `derived-mode-parent` property and adjusts it to use
> a few new functions:
>
> - `derived-mode-set-parent` and `derived-mode-all-parents` cover
> basically all previous uses of the `derived-mode-parent` property.
> - `derived-mode-add-parents` to declare additional parents.
>
> The patch also consolidates the code that linearizes the inheritance
> hierarchy of CL classes, EIEIO classes, and major modes.
>
> You can see below the corresponding commit log.
> There are no doc (or etc/NEWS) changes yet.
> Any comment/objection?
Great work! Thanks! I need to find some time to read through the changes, but
sounds promising.
Yuan