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

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

bug#45068: [PATCH] 28.0.50; Update Modus themes 1.0.2 (backward-incompat


From: Protesilaos Stavrou
Subject: bug#45068: [PATCH] 28.0.50; Update Modus themes 1.0.2 (backward-incompatible)
Date: Sun, 06 Dec 2020 14:23:44 +0200

Dear maintainers,

I have made some major changes to the Modus themes and tagged this as
the first major release.  I am opening the present bug report because
this change has implications on how the themes are distributed with
Emacs.

Currently Emacs ships 'modus-operandi-theme' and 'modus-vivendi-theme'
version 0.13.0.  You can find the files in ../etc/themes/.

Those contained duplicate code and their only real difference was in the
color values they used.  However, they were distributed as if they were
standalone items, so all 'defcustom' declarations they had were unique
to each (duplicate code though different names).

Since version 1.0, I derive the two themes from a common source using a
macro and a shared file for data.  This has two main advantages:

+ All 'defcustom' are unified and apply to both themes.  Users no longer
  have to implement ad hoc code to get a unified look between the two
  items.

+ Everything is easier to maintain, as I no longer need to copy from one
  theme to the other, rename accordingly, and check that there are no
  discrepancies between them.

The problem with contributing this new code to Emacs is that it cannot
work if it is placed in ../etc/themes/.  Instead, the files need to be
in a path that handles byte-compilation, like ../lisp/modus-themes/.

1. This implies that commands such as 'M-x load-theme' cannot work
   without first requiring the appropriate files.  Such as:

       (require 'modus-themes)                   ;; common code
       (require 'modus-operandi-theme)           ;; light theme
       (load-theme 'modus-operandi t)
       ...
       (require 'modus-vivendi-theme)            ;; dark theme
       (load-theme 'modus-vivendi t)

2. Because we do not use ../etc/themes/, neither 'modus-operandi' nor
   'modus-vivendi' are marked as safe.  They are considered custom.
   Hence the non-nil NO-CONFIRM argument to 'load-theme'.

3. This also means that 'M-x customize-themes' and similar will not
   present the themes in their list without first requiring the
   aforementioned features.

* * *

Those are the issues I could identify.  As such, the attached patch
removes the old files and places the new ones in ../lisp/modus-themes/.
The themes' manual is updated to cover the new version.  The NEWS entry
is edited accordingly.

I understand you may object to the course of action covered by the
patch.  Please inform me of a better way to address this issue.  My
intent is to contribute version 1.0 of my themes to Emacs (1.0.2 to be
precise) and am prepared to make the requisite changes based on your
feedback.

Thank you for your time!

Protesilaos

-- 
Protesilaos Stavrou
protesilaos.com

Attachment: 0001-Update-Modus-themes-1.0.2-backward-incompatible.patch
Description: Text Data


reply via email to

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