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

From: Protesilaos Stavrou <[email-masked]>
Date: Mon, 25 Jan 2021 10:49:46 +0200

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.

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