Subject: bug#45068: Patch for Modus themes 1.1.1? (was: bug#45068: [PATCH] 28.0.50; Update Modus themes 1.0.2 (backward-incompatible))

From: Christopher Dimech <[email-masked]>
Date: Mon, 25 Jan 2021 13:51:35 +0100

> Sent: Monday, January 25, 2021 at 8:49 PM
> From: "Protesilaos Stavrou" <[email-masked]>
> To: "Eli Zaretskii" <[email-masked]>
> Cc: [email-masked], [email-masked], [email-masked], "Stefan Kangas" <[email-masked]>, [email-masked]
> Subject: bug#45068: Patch for Modus themes 1.1.1? (was: bug#45068: [PATCH] 28.0.50; Update Modus themes 1.0.2 (backward-incompatible))
>
> On 2020-12-11, 22:14 +0200, Eli Zaretskii <[email-masked]> wrote:
>
> >> From: Stefan Kangas <[email-masked]>
> >> Date: Fri, 11 Dec 2020 13:08:19 -0600
> >> Cc: [email-masked], [email-masked], [email-masked]
> >>
> >> Eli Zaretskii <[email-masked]> writes:
> >>
> >> >   . don't consider this a "theme", but a normal Lisp package (since it
> >> >     basically violates the conventions for writing a theme)
> >>
> >> I guess such violations of our old conventions are getting increasingly
> >> common in (third-party) Emacs theme development.
> >
> > Then maybe the best way is to provide that require-theme function I
> > proposed.
>
> Hello again!
>
> I have produced a newer version in the meantime.  Though I understand
> that a patch would not be able to be merged under the present
> conditions.  Should I prepare it regardless?  This would also fix
> bug#45141 pertaining to some formatting issues in modus-themes.texi.
>
> To recapitulate for your convenience:
>
> + The current etc/themes/modus-{operandi,vivendi}-theme.el are old-style
>   themes in that they look like the rest of that directory's contents.
>
>   - They exist as standalone files.  They do not require any library.
>   - All their face declarations are furnished therein.
>   - Their version is 0.13.0.
>
> + As of version 1.0.0 (and now 1.1.1) of the Modus themes, those two
>   files merely expand a macro and declare their respective theme.  They
>   thus depend on a shared library: currently that is modus-themes.el.
>
>   - The library unifies the themes' defcustom declarations and, in
>     general, streamlines their development (before I would copy lines
>     from one to the other to ensure parity).
>
>   - This approach of a library and concomitant macro expansion is not in
>     line with the current design of etc/themes/, though as Stefan Kangas
>     observed, such deviations from the established norms are becoming
>     increasingly common in third-party packages.

The focus should not be on implementation but on functionality.  As things
flourish, people will find various ways to do it, with some being better
because they yield to a different strategy. I suggest a more pragmatic approach.

> A quick-and-dirty workaround would be to place the library in some other
> path, such as lisp/modus-themes.el and keep the other two files were
> they currently are: etc/themes/modus-{operandi,vivendi}-theme.el
>
> This could, however, make the source code more difficult to understand.
> It would also set a bad precedent for any possible future themes, as
> this thread revealed.  So Eli Zaretskii proposed a new 'require-theme'
> function.
>
> I believe this is how things stand.
>
> For my part, I am willing to do whatever you consider necessary and will
> follow your lead.
>
> Thank you for your time and efforts!
> Protesilaos or Prot
>
> --
> Protesilaos Stavrou
> protesilaos.com
>
>
>
>