Modus themes 2.0.0 for GNU Emacs

I just released version 2.0.0 of the Modus themes. The release notes are reproduced below, followed by a verbatim copy of the fully annnotated org-mode file I used to track the progress of this release. For any questions, feel welcome to contact me.

I will now take a short break and will then prepare the patch for the master branch on emacs.git (currently this corresponds to Emacs version 29). The modus-themes package in GNU ELPA is a :core package meaning that it fetches its contents from emacs.git, so expect an update to trickle down shortly after my patch is merged.


Modus themes version 2.0.0

By Protesilaos Stavrou info@protesilaos.com on 2021-12-24

This entry covers the changes made to the project since the publication of version 1.7.0 on 2021-11-18. There have been more than 90 commits in the meantime. This is a major upgrade with some backward-incompatible changes, even though most work was done behind the scenes (i.e. not in git commits but local testing) to guarantee the relevance of all user-facing styles, code practices, et cetera.

All modifications of colour combinations mentioned herein are made in accordance with the primary accessibility objective of the themes for a minimum contrast ratio of 7:1 between background and foreground values in their given combination (the WCAG AAA standard for relative colour luminance). Edits also account for colour-coding that is optimised for the needs of users with red-green colour deficiency (deuteranopia).

To access the URL of the manual visit this web page: https://protesilaos.com/emacs/modus-themes. Or read it in the Emacs Info reader by evaluating this form:

(info "(modus-themes) Top")

The modus-operandi and modus-vivendi themes are built into Emacs-28 (next stable release) or later, and are available on GNU ELPA as well as other archives. Emacs-28 ships version 1.6.0, while the current master branch (i.e. Emacs-29) and, by extension, GNU ELPA include the latest tagged release.

A fully fledged org-mode file with the annotated task list for Modus themes version 2.0.0 is supplied as complementary material to the present entry. It should be annexed below this text on the announcement page: https://protesilaos.com/codelog/2021-12-24-modus-themes-2-0-0/.

Customisation options

There are some breaking changes that were necessary to improve the code base and make things easier as well as more efficient for end users. Please read carefully and apologies in advance for whatever inconvenience.

  • The modus-themes-variable-pitch-headings no longer has any effect. Instead, users can specify a variable-pitch property to the list they pass to the modus-themes-headings or modus-themes-org-agenda (examples below).

  • All modus-themes-scale-* options are removed. Scaling of headings is now handled directly by the user options modus-themes-headings and modus-themes-org-agenda (code samples below).

  • The modus-themes-headings option now accepts a floating point (see function floatp) that represents the multiplier relative to the base font size. This can be used to scale headings accordingly. Since this option can target individual heading levels (for 1 through 8), users can now implement their desired scale with greater precision. Whereas before it was limited to the first four levels, admittedly for no good reason.

    The newly introduced variable-pitch property can also be applied on a per-level basis (making it easy to combine with existing properties, such as a custom weight, for maximum control). Example:

    ;; This is an alist: read the manual or its doc string.
    (setq modus-themes-headings
          '((1 . (variable-pitch light 1.6))
            (2 . (overline semibold 1.4))
            (3 . (monochrome overline 1.2))
            (4 . (overline 1.1))
            (t . (rainbow 1.05))))
    
  • The modus-themes-org-agenda follows the same design as the modus-themes-headings where appropriate. Headings that can be scaled accept a floating point, while those that may be rendered in a proportionately spaced font accept the variable-pitch property. In addition, a custom font weight is also supported in the relevant places (just as with modus-themes-headings). Overall, the interface can now be tailored to the user’s preferences with greater precision.

    ;; This is an alist: read the manual or its doc string.
    (setq modus-themes-org-agenda
          '((header-block . (variable-pitch light 1.6))
            (header-date . (bold-today grayscale underline-today 1.2))
            (event . (accented varied))
            (scheduled . uniform)
            (habit . traffic-light)))
    
  • The modus-themes-scale-small that was used in the Org agenda interface has been removed. No replacement is provided, as the downsizing had the undesired effect of breaking the otherwise neat alignment of elements on the grid.

  • The modus-themes-mode-line-padding option has been removed. Instead, users can specify a natural number (positive integer) directly in the list of properties passed to the modus-themes-mode-line variable. This has no effect when the moody property is also set, because the Moody library applies its own padding. For example:

    (setq modus-themes-mode-line '(borderless accented 4))
    

    Though not related to changes on our end, users of Emacs 29 must now set x-use-underline-position-properties to nil for padding to work properly (due to other adjustments upstream). This relates to Emacs bug#52324 we had reported: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52324.

  • All deuteranopia styles are consolidated in a single toggle: modus-themes-deuteranopia. The modus-themes-success-deuteranopia is thus rendered obsolete and superseded, while the individual deuteranopia-friendly styles for diffs (modus-themes-diffs) and the Org agenda’s habit graph (modus-themes-org-agenda) are altogether removed. As opposed to top-level forms, there is no clean way to notify the user of the deprecation of individual values of a user option.

  • The “foreground only” style has been altogether removed from the user option modus-themes-diffs. It never was up to the aesthetic standard of the themes even though the colours met the minimum 7:1 contrast ratio. There is a new section in the manual which documents how to implement such a style with user-level configurations. Short version:

(defun my-modus-themes-custom-faces ()
  (modus-themes-with-colors
    (custom-set-faces
     `(modus-themes-diff-added ((,class :background unspecified :foreground ,green))) ; OR ,blue for deuteranopia
     `(modus-themes-diff-changed ((,class :background unspecified :foreground ,yellow)))
     `(modus-themes-diff-removed ((,class :background unspecified :foreground ,red)))

     `(modus-themes-diff-refine-added ((,class :background ,bg-diff-added :foreground ,fg-diff-added)))
     ;; `(modus-themes-diff-refine-added ((,class :background ,bg-diff-added-deuteran :foreground ,fg-diff-added-deuteran)))
     `(modus-themes-diff-refine-changed ((,class :background ,bg-diff-changed :foreground ,fg-diff-changed)))
     `(modus-themes-diff-refine-removed ((,class :background ,bg-diff-removed :foreground ,fg-diff-removed)))

     `(modus-themes-diff-focus-added ((,class :background ,bg-dim :foreground ,green))) ; OR ,blue for deuteranopia
     `(modus-themes-diff-focus-changed ((,class :background ,bg-dim :foreground ,yellow)))
     `(modus-themes-diff-focus-removed ((,class :background ,bg-dim :foreground ,red)))

     `(modus-themes-diff-heading ((,class :background ,bg-alt :foreground ,fg-main)))

     `(diff-indicator-added ((,class :foreground ,green))) ; OR ,blue for deuteranopia
     `(diff-indicator-changed ((,class :foreground ,yellow)))
     `(diff-indicator-removed ((,class :foreground ,red)))

     `(magit-diff-added ((,class :background unspecified :foreground ,green-faint)))
     `(magit-diff-changed ((,class :background unspecified :foreground ,yellow-faint)))
     `(magit-diff-removed ((,class :background unspecified :foreground ,red-faint)))
     `(magit-diff-context-highlight ((,class :background ,bg-dim :foreground ,fg-dim))))))

      ;; This is so that the changes persist when switching between
      ;; modus-operandi and modus-vivendi
      (add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)

Removed support for packages

The following are no longer supported by the themes. The reasons vary in each case, though they boil down to (i) the package being obsoleted, or (ii) the package’s faces inheriting from base faces that we already support (e.g. font-lock). Each case was carefully considered as part of the comprehensive review of all packages supported by the themes, though chances are that some mistake was made regardless. If you believe a package should not have been removed, please report as much.

  • ag
  • apt-sources-list
  • apt-sources-list
  • buffer-expose
  • counsel-org-capture-string
  • define-word
  • diredc
  • disk-usage
  • easy-kill
  • flyspell-correct
  • git-gutter{,fringe}+
  • git-lens
  • git-walktree
  • highlight-blocks
  • highlight-defined
  • highlight-escape-sequences
  • highlight-symbol
  • highlight-tail
  • hyperlist-mode
  • isl (isearch-light)
  • minibuffer-line
  • mu4e-conversation
  • no-emoji
  • objed
  • parrot
  • phi-search
  • pkgbuild-mode
  • rainbow-identifiers
  • sallet
  • spell-fu
  • spray
  • swoop
  • vdiff
  • volatile-highlights

Changes to supported faces or face groups

  • Eliminated any possible exaggerations in wgrep faces. Those no longer use coloured backgrounds. Instead they have colour-coded foreground colours as well as a bold weight (they ultimately inherit from the bold face, which is a “hidden” customisation option, as explained in the manual).

  • Forced Org block delimiters to not extend their background by default (though check modus-themes-org-blocks). That was the intended design all along, but now it needs to be made explicit. See, for example, bug#52587 for Emacs: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52587

  • Revised the org-sexp-date face so that it no longer looks like org-date. Dates are clickable buttons: they work like links, so they have an underline by default and are subject to the modus-themes-links user option. Whereas the org-sexp-date is not applied to interactive elements and must thus be visually distinct.

    This face is used for diary-style entries in Org files. For example:

    %%(diary-anniversary 2000 12 25) NAME %d%s birthday
    
  • Rewrote several Auctex/Tex faces to inherit from base faces where relevant (e.g. bold, success) as well as from font-lock faces. In the latter case, the end-result makes Auctex/Tex subject to the modus-themes-syntax option. These refinements promote theme-wide consistency without detracting from the established styles.

  • Improved Git (Magit) commit faces for warnings or errors. This concerns two cases:

    1. The summary line exceeds the recommended limit of 50 characters. This now uses a yellow foreground colour which contrasts well with the summary line’s new blue hue (blue and yellow are complementary for our purposes, meaning that they have good contrast in hueness).

    2. The second line (the one right below the summary) has text that should not be there. This one is coloured in a shade of red, which again contrasts well with blue.

    Thanks to Damien Cassou for noticing in issue 261 that the previous style of applying tinted backgrounds did not work well when hl-line-mode was enabled (hl-line-mode overrides backgrounds and so the warnings/errors where not always obvious): https://gitlab.com/protesilaos/modus-themes/-/issues/261.

  • Added support for the new magit-branch-warning face that we helped upstream define: https://github.com/magit/magit/issues/4550. It disambiguates warnings in Magit status buffers from the generic and often inappropriate for such a context font-lock-warning-face.

  • Simplified all the Apropos faces. They no longer look like buttons or links as that makes the presentation of M-x apropos very busy. Instead, they now only have a foreground colour.

  • Updated support for org-roam faces by removing old entries and covering new ones.

  • Replaced old company-mode faces with their new aliases:

    • company-scrollbar-bg => company-tooltip-scrollbar-thumb
    • company-scrollbar-fg => company-tooltip-scrollbar-track
  • Made org-column-title inherit from fixed-pitch when the user option modus-themes-mixed-fonts is non-nil. This is needed to line up columns correctly. Thanks to Björn Lindström for the contribution in merge request 52: https://gitlab.com/protesilaos/modus-themes/-/merge_requests/52.

  • Forced the org-colview faces to use the same height, even when headings are scaled (see modus-themes-headings). This ensures that the columns are aligned properly and text fits on the same row. Thanks to Björn Lindström for the contribution in merge request 53: https://gitlab.com/protesilaos/modus-themes/-/merge_requests/53.

  • Refrained from applying a bold weight to the Org date selection indicator in the calendar. The use of bold has the potential to create problems with the alignment of dates for certain typefaces that do not have a proper bold variant. Also, there is no need for added emphasis given that we already use a prominent background colour.

  • Made M-x org-table-header-line-mode or the third-party package org-table-sticky-header use colours that fit better with those of tables.

  • Removed explicit styling of the magit-branch-current face because its definition checks if the :box attribute can be set and if not, it uses :inverse-video. Useful for terminal emulators.

  • Expanded support for the mode-line-active face for Emacs29. The face upstream basically adds proportionately spaced fonts (the variable-pitch face) to the mode line. The themes can already use that if the user option modus-themes-variable-pitch-ui is non-nil. Thanks to Manuel Uberti for the feedback in issue 257: https://gitlab.com/protesilaos/modus-themes/-/issues/257.

  • Implemented some stylistic refinements for ERC and Rcirc to ensure theme-wide consistency (e.g. timestamps are a shade of cyan).

  • Tweaked adoc-mode faces for stylistic theme-wide consistency.

  • Refashioned all the git faces of Treemacs so that they are more consistent with other such contexts or uses. The new styles also conform with the modus-themes-deuteranopia option.

Miscellaneous

  • Ended the wanton use of internal functions in places that did not require them. Instead, the themes define faces that evaluate such functions once and pass their results to the relevant entries. Cases include:

    • Symlink and/or broken link faces in contexts such as Dired, Eshell, Helm, Trashed.

    • Tabbed interfaces (tab-bar, tab-line, centaur-tabs).

    • Verbatim markup or that of inline code in Org, Markdown, Asciidoc, etc.

    • The optional use of variable-pitch for User Interface elements (see modus-themes-variable-pitch-ui).

  • Refined the dedicated diff background colours of modus-vivendi that are used when the user option modus-themes-deuteranopia is non-nil. The changes improve the distinction between all red and yellow constructs in contexts where they appear together (e.g. smerge-mode). Basically, yellows will look more bright, while reds appear as brown. The corresponding blues are toned down a bit to be consistent with the other colours. Consequently, the standard shades of green for added lines (when modus-themes-deuteranopia is nil) are recalibrated to combine well with all other values.

  • Made several faces return an unspecified value instead of nil for their unused attributes under certain circumstances. This is to guard against third-party code that unconditionally expects a non-nil value.

  • Omitted {over,under}line attributes from the mode line when the padded property is added to the modus-themes-mode-line user option. Those are not necessary in that context. Thanks to Illia Ostapyshyn for the contribution in merge request 54: https://gitlab.com/protesilaos/modus-themes/-/merge_requests/54

  • Rewrote several internal functions in the interest of consistency and clarity.

  • Deleted two user options that were long obsolete: (i) modus-themes-org-habit has been superseded by modus-themes-org-agenda since version 1.5.0 of the themes and (ii) modus-themes-intense-hl-line has been replaced by modus-themes-hl-line since version 1.3.0.

  • Removed parentheses from headings in the manual as they are invalid characters for some version of Texinfo. See Emacs bug#52126: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52126.

  • Updated all doc strings so that quoted lists yield valid syntax in Help buffers; syntax that can be directly evaluated (otherwise Emacs prettifies straight quotes as curly ones, which break the code). Thanks to Christian Tietze for bringing this issue to my attention: https://gitlab.com/protesilaos/modus-themes/-/issues/248#note_753169268.

  • Rewrote all sections of the manual to document the current state of the project as pertains to valid user options, explicitly supported face groups, and so on.

Thanks again to everyone involved. The themes are stable and this release sets the foundations for the next year of developments.

Annex with task list for Modus themes version 2.0.0

The following is a copy of the file I used to track the progress for this release. I did it this way because there are some breaking changes and I wanted to keep a record of them so that users are fully informed. Please place the text in an org-mode buffer for better results:

* DONE [#A] Modus themes 2.0.0 [13/13]                                :modus:
CLOSED: [2021-12-05 Sun 22:11]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 22:11]
:END:

Maybe some of those can be done before we formally transition to version
=2.0.0=, though it is better to make them all part of a major change.

** DONE [#A] Clean up face groups [60/60]
CLOSED: [2021-12-03 Fri 08:43]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 08:43]
:END:

These need to be reviewed on a case-by-case basis.  Some may be removed,
others revised to make sure they are okay.  The list is non-exhaustive.

*** DONE ag
CLOSED: [2021-12-02 Thu 19:39]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 19:39] \\
  This package already inherits from basic faces and should work well
  without any further adjustments.
:END:
*** CANCEL all-the-icons
CLOSED: [2021-12-03 Fri 08:41]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-03 Fri 08:41] \\
  This package is used virtually everywhere.  While we should normally not
  have to colourise icons due to (i) their larger surface area relative to
  text glyphs and (ii) their cosmetic utility, I prefer to err on the side
  of caution and continue supporting it.
:END:

Unlike text, icons occupy a larger surface area and thus have a lower
requirement for colour contrast.  I need to review all the colours they
use in case there is something that we really need to address, but in
general we might be fine with removing at least some of those faces.

*** DONE apt-sources-list
CLOSED: [2021-12-02 Thu 19:35]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 19:35] \\
  This package already inherits from basic faces.  There seems to be no
  need to extend support for it at the theme level, also because of its
  niche utility (I mean, how often do you edit your apt sources and how
  difficult is it to just live with the standard font-lock faces for a
  few minutes?).
:END:
*** DONE buffer-expose
CLOSED: [2021-12-02 Thu 19:35]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 19:35] \\
  This package already inherits from basic faces.  There seems to be no
  need to extend support for it at the theme level.
:END:
*** DONE counsel-org-capture-string
CLOSED: [2021-12-02 Thu 21:53]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 21:53] \\
  It inherits from a font-lock face.  There is no need to style it
  explicitly.
:END:
*** CANCEL cursor-flash
CLOSED: [2021-12-02 Thu 22:10]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 22:10] \\
  We recently added support for it.  Let's keep it until a future review.
:END:
*** DONE define-word
CLOSED: [2021-12-02 Thu 21:18]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 21:18] \\
  Its faces inherit from basic ones, so we are safe in removing explicit
  support for it.
:END:
*** DONE diredc
CLOSED: [2021-12-02 Thu 21:26]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 21:26] \\
  This is a massive package that seems like a de facto fork of Dired.  I
  cannot promise support for it in its current stage, so it is better to
  remove it from the themes until someone who uses it in earnest comes
  along and helps cover its use-case.
:END:
*** CANCEL dired-git
CLOSED: [2021-12-02 Thu 21:55]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:55] \\
  It seems to be in a stable state.  I will keep supporting it until
  further notice.
:END:
*** DONE disk-usage
CLOSED: [2021-12-02 Thu 19:50]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 19:50] \\
  This package inherits from base faces and should be okay for the
  occasional usage of its interface.
:END:
*** CANCEL easy-jekyll
CLOSED: [2021-12-02 Thu 21:27]
:LOGBOOK:
- State "CANCEL"     from "WAIT"       [2021-12-02 Thu 21:27] \\
  It only defines one face.  Let's keep supporting it.
:END:

#+begin_src emacs-lisp
(defface easy-jekyll-help-face
  `((((class color) (background light))
     ,@(and (>= emacs-major-version 27) '(:extend t))
     :inherit font-lock-function-name-face
     :background "#f0f8ff")
    (((class color) (background dark))
     ,@(and (>= emacs-major-version 27) '(:extend t))
     :inherit font-lock-function-name-face
     :background "#2f4f4f"))
  "Definition of help color."
  :group 'easy-jekyll-faces)
#+end_src

*** DONE easy-kill
CLOSED: [2021-12-02 Thu 19:59]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 19:59] \\
  This package inherits from base faces and should be okay without
  explicit theme support. I am actually not sure we should remove this,
  but I am willing to take the risk.  If someone objects to this change,
  they are free to contact me and I shall reconsider.
:END:
*** CANCEL el-search
CLOSED: [2021-12-02 Thu 19:56]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 19:56] \\
  I have never seen this package in any user config, but its face
  definitions are not good enough for our purposes.  So we keep supporting
  it for the time being.
:END:
*** CANCEL elfeed-score
CLOSED: [2021-12-02 Thu 21:14]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:14] \\
  This package is actively maintained and we should continue support it.
  Ideally, someone should patch its warning/error/info faces so that they
  inherit from the faces warning/error/success.  I might do it, though not
  sure when.
:END:
*** CANCEL equake
CLOSED: [2021-12-02 Thu 21:28]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:28] \\
  The package is actively maintained and I will continue supporting it.
:END:
*** CANCEL evil-snipe
CLOSED: [2021-12-02 Thu 21:12]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:12] \\
  This package is actively maintained and someone had asked me to keep
  supporting it.
:END:
*** CANCEL evil-visual-mark-mode
CLOSED: [2021-12-02 Thu 21:12]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:12] \\
  I am not sure about this.  It is a single face though, so I am willing
  to continue support it until a future review.
:END:
*** CANCEL flx
CLOSED: [2021-12-02 Thu 21:30]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:30] \\
  For me this package seems to have been superseded by the =orderless=
  package as well as the built-in flex option in =completion-styles=.
  However, it is only a single face and it is being actively maintained,
  so I will continue supporting it.
:END:

Is this still relevant in light of Emacs' own flex completion style?

*** DONE flyspell-correct
CLOSED: [2021-12-02 Thu 21:09]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 21:09] \\
  We support it indirectly, because it inherits from the isearch face.
:END:
*** CANCEL git-gutter
CLOSED: [2021-12-02 Thu 19:43]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 19:43] \\
  This package continues to be maintained.  It is =git-gutter+= that is de
  facto obsolete.
:END:
*** DONE git-gutter+
CLOSED: [2021-12-02 Thu 19:43]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 19:43] \\
  These packages (it and git-gutter-fringe+) are de facto obsolete for
  several years now.  Use git-gutter or git-gutter-fringe instead.
:END:
*** CANCEL git-fringe
CLOSED: [2021-12-02 Thu 19:46]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 19:46] \\
  This package is actively maintained.  It is =git-gutter-fringe+= that is
  de facto obsolete.
:END:
*** DONE git-gutter-fringe+
CLOSED: [2021-12-02 Thu 19:46]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 19:46] \\
  These packages (it and git-gutter+) are de facto obsolete for several
  years now.  Use git-gutter or git-gutter-fringe instead.
:END:
*** DONE git-lens
CLOSED: [2021-12-02 Thu 20:27]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 20:27] \\
  This package is de facto obsolete.  I tried to update its broken
  homepage URL one year ago, but never received a reply:
  <https://gitlab.com/pidu/git-lens/-/merge_requests/1>.
:END:
*** CANCEL git-timemachine
CLOSED: [2021-12-02 Thu 20:28]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 20:28] \\
  I am not sure this package is actively maintained.  Though I have seen
  it in some user init files, so I will keep supporting it for the time
  being.
:END:
*** DONE git-walktree
CLOSED: [2021-12-02 Thu 20:30]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 20:30] \\
  Has not been updated in two years.  Its faces are okay because they
  inherit from font-lock.
:END:
*** DONE highlight-blocks
CLOSED: [2021-12-02 Thu 20:45]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 20:45] \\
  This package does not even have a README.  It was last updated almost
  three years ago and there seems to be no activity in its git repo. I
  am thus willing to take the risk of removing it.  If anyone objects to
  this change, they are welcome to inform me about it and I shall
  reconsider.
:END:
*** DONE highlight-defined
CLOSED: [2021-12-02 Thu 20:36]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 20:36] \\
  This package is actively maintained.  It inherits from font-lock, so
  there is no need to keep explicit support for it.
:END:
*** DONE highlight-escape-sequences
CLOSED: [2021-12-02 Thu 21:01]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 21:01] \\
  This package inherits from faces we already support, so there is no
  need to style it explicitly.
:END:
*** DONE highlight-symbol
CLOSED: [2021-12-02 Thu 21:07]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 21:07] \\
  This package is no longer maintained.  Also, it may be easier to just
  use the built-in highlight-regexp functionality (bound to M-s h r and
  can also be extended from isearch---contact me if you need help).
  Read the manual by evaluating:
  (info "(emacs) Highlight Interactively")
:END:
*** DONE highlight-tail
CLOSED: [2021-12-02 Thu 20:56]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 20:56] \\
  This package is hosted on EmacsWiki and I cannot know whether there is
  any activity around its development.  Its history of changes stops at
  2007, while its Commentary section makes references to speed issues.
  While I am not sure about its status, I am thus willing to take the
  risk of removing it.  If anyone objects to this change, they are
  welcome to inform me about it and I shall reconsider.
:END:
*** CANCEL highlight-thing
CLOSED: [2021-12-02 Thu 21:08]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:08] \\
  I am not sure about this case.  It is only one face, so I will keep
  supporting it for the time being.
:END:
*** CANCEL hl-defined
CLOSED: [2021-12-02 Thu 20:46]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 20:46] \\
  This package is maintained on the Emacs Wiki.  It seems to be actively
  maintained and so we must continue supporting it.
:END:
*** DONE hyperlist (hyperlist-mode)
CLOSED: [2021-12-02 Thu 20:47]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 20:47] \\
  This package has not been updated in two years and I have never heard
  of anyone using it.  Maybe Org is enough?
:END:
*** DONE iflipb
CLOSED: [2021-12-02 Thu 20:52]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 20:52] \\
  This package is actively supported and we should continue styling it
  directly.
:END:
*** CANCEL interaction-log
CLOSED: [2021-12-02 Thu 21:56]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:56] \\
  I am not sure about this.  It seems to be stable and I remember seeing
  it in use.  Will continue supporting until a future review.
:END:
*** DONE isl
CLOSED: [2021-12-02 Thu 22:02]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 22:02] \\
  I remember adding support for this on the premise that a package would
  eventually become available on some ELPA.  This has not happened and I
  am not sure what to expect.  As such, removing it may be a drastic
  measure, though I am willing to take the risk.  If anyone objects to
  this change, they are welcome to inform me about it and I shall
  reconsider.
:END:

<https://github.com/thierryvolpiatto/isearch-light>

*** CANCEL macrostep
CLOSED: [2021-12-02 Thu 21:51]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:51] \\
  While it has not been updated in a long time, this package likely has a
  broad user-base.  Someone I trust was using it recently.  Let's keep
  supporting its faces.
:END:
*** CANCEL mentor
CLOSED: [2021-12-02 Thu 21:49]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:49] \\
  This package is actively maintained.  I will continue supporting it.
:END:
*** DONE minibuffer-line
CLOSED: [2021-12-02 Thu 22:03]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 22:03] \\
  It inherits from mode-line-inactive, which we support.  There is no
  need to support it explicitly.
:END:
*** CANCEL minimap
CLOSED: [2021-12-02 Thu 21:48]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:48] \\
  I am not sure about this.  I will review it at a later date.
:END:
*** CANCEL mood-line
CLOSED: [2021-12-02 Thu 22:02]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 22:02] \\
  This package is actively maintained.  I will continue supporting it.
:END:
*** DONE mu4e-conversation
CLOSED: [2021-12-02 Thu 19:13]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 19:13] \\
  This package is broken and obsolete for several months now.  Its
  README explains as much.
:END:
*** DONE no-emoji
CLOSED: [2021-12-02 Thu 21:48]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 21:48] \\
  It inherits from the dired-header face, which could be wrong under
  some circumstances.  At any rate, there is no need to support it
  explicitly.
:END:

It inherits from the ~dired-header~ face, which is wrong.  Maybe we can
just patch it upstream to inherit from, say, ~bold~, ~warning~ or some
font-lock face?

*** DONE objed
CLOSED: [2021-12-02 Thu 22:09]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 22:09] \\
  This package is subject to a rewrite.  Its three faces inherit from
  basic faces that we support.  While we would have reasons to style
  things differently, I think that we are better off removing it from
  the themes until further notice.
:END:
*** DONE parrot
CLOSED: [2021-12-02 Thu 21:45]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 21:45] \\
  Its sole face inherits from 'highlight', which we support.  There is
  no need to style it explicitly.
:END:
*** CANCEL phi-grep
CLOSED: [2021-12-02 Thu 21:43]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:43] \\
  This package is actively maintained and we should continue supporting
  it.
:END:
*** DONE phi-search
CLOSED: [2021-12-02 Thu 21:41]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 21:41] \\
  Its homepage points to a website that seems to have nothing to do with
  the package.  What is going on?  I am not sure about this decision,
  but am willing to take the risk of removing it.  If anyone objects to
  this change, they are welcome to inform me about it and I shall
  reconsider.
:END:
*** DONE pkgbuild-mode
CLOSED: [2021-12-02 Thu 20:23]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 20:23] \\
  This package covers a very narrow niche.  Its sole face uses a red
  underline for errors, which is bearable.
:END:
*** CANCEL rainbow-blocks
CLOSED: [2021-12-02 Thu 21:39]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:39] \\
  This package is actively maintained and we should continue supporting
  it.
:END:
*** DONE rainbow-identifiers
CLOSED: [2021-12-02 Thu 20:21]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 20:21] \\
  This package has not been updated in seven years and has no other
  activity in its git repo.  This may be because it is stable and "just
  works".  Or it has been de facto deprecated.  Though I cannot be
  certain, I am willing to take the risk and remove it from the themes.
  If someone objects to this change, they are welcome to inform me about
  and I shall reconsider.
:END:
*** DONE sallet
CLOSED: [2021-12-02 Thu 19:33]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 19:33] \\
  This package seems to be experimental.  I could not find any
  user-facing documentation.  There exists a dev notes file which, as
  its name suggests, is not for regular users:
  <https://github.com/Fuco1/sallet/blob/master/dev-notes.org>.
:END:
*** DONE spell-fu
CLOSED: [2021-12-02 Thu 21:33]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 21:33] \\
  Its sole face seems to be okay: there is no need to support it
  explicitly.
:END:
*** DONE spray
CLOSED: [2021-12-02 Thu 21:37]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 21:37] \\
  I can no longer find this package.  Its homepage URL returns a 404
  error.
:END:
*** CANCEL suggest
CLOSED: [2021-12-02 Thu 21:37]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 21:37] \\
  I am not sure about this.  It is a single face.  Keep it there until a
  future review.
:END:
*** DONE swoop
CLOSED: [2021-12-02 Thu 20:14]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 20:14] \\
  This package is deprecated for more than a year now.  It recommends
  using helm-swoop instead.
:END:
*** CANCEL sx
CLOSED: [2021-12-02 Thu 20:09]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 20:09] \\
  This package seems to be in a stable state and has a broad user-base.
  As such, I am willing to continue supporting it even though I am not a
  user of the Stack Exchange service.
:END:
*** CANCEL telega
CLOSED: [2021-12-02 Thu 20:06]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-02 Thu 20:06] \\
  This seems to be a very popular package and was even featured at
  EmacsConf 2021.  Though I am not a user of Telegram, I am willing to
  keep the support for this package: if something does not look right, I
  hope people will tell me about it.
:END:
*** DONE vdiff
CLOSED: [2021-12-02 Thu 20:18]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 20:18] \\
  This package already inherits from the built-in diff-mode faces, so
  seems to be no need to keep supporting it explicitly.
:END:
*** DONE volatile-highlights
CLOSED: [2021-12-02 Thu 20:04]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 20:04] \\
  There is a better alternative in Daniel Mendler's goggles package:
  <https://github.com/minad/goggles>.
:END:
** DONE [#A] Review all "translation layer for legacy values" [12/12]
CLOSED: [2021-12-03 Fri 19:54]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 19:54]
:END:

I will keep the translation layer everywhere for a few more months (or
even longer).  There is no reason to break people's configurations, even
though the breakage would be small, all things considered.

As such, we use this as an opportunity to review the functions for
stylistic consistency and edit them accordingly.

*** DONE modus-themes--prompt
CLOSED: [2021-12-03 Fri 18:22]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 18:22] \\
  Change the symbol of a local variable for greater clarity.
:END:
*** DONE modus-themes--paren
CLOSED: [2021-12-03 Fri 19:34]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 19:34] \\
  Change the symbol of a local variable for greater clarity.
:END:
*** DONE modus-themes--syntax-foreground
CLOSED: [2021-12-03 Fri 19:35]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 19:35] \\
  Change the symbol of a local variable for greater clarity.
:END:
*** DONE modus-themes--syntax-extra
CLOSED: [2021-12-03 Fri 19:36]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 19:36] \\
  Change the symbol of a local variable for greater clarity.
:END:
*** DONE modus-themes--syntax-string
CLOSED: [2021-12-03 Fri 19:36]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 19:36] \\
  Change the symbol of a local variable for greater clarity.
:END:
*** DONE modus-themes--syntax-comment
CLOSED: [2021-12-03 Fri 19:36]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 19:36] \\
  Change the symbol of a local variable for greater clarity.
:END:
*** DONE modus-themes--heading
CLOSED: [2021-12-03 Fri 19:37]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 19:37] \\
  Change the symbol of a local variable for greater clarity.
:END:
*** DONE modus-themes--mode-line-attrs
CLOSED: [2021-12-03 Fri 18:11]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 18:11] \\
  Moved the conditionality of the box attribute outside the ~let~
  binding and also renamed a locally bound variable for greater clarity.
:END:
*** DONE modus-themes--link
CLOSED: [2021-12-03 Fri 19:40]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 19:40] \\
  Change the symbol of a local variable for greater clarity.
:END:
*** DONE modus-themes--link-color
CLOSED: [2021-12-03 Fri 19:40]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 19:40] \\
  Change the symbol of a local variable for greater clarity.
:END:
*** DONE modus-themes--region
CLOSED: [2021-12-03 Fri 19:41]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 19:41] \\
  Change the symbol of a local variable for greater clarity.
:END:
*** DONE modus-themes--hl-line
CLOSED: [2021-12-03 Fri 19:42]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 19:42] \\
  Change the symbol of a local variable for greater clarity.
:END:
** DONE [#A] Review inline functions [4/4]
CLOSED: [2021-12-03 Fri 21:32]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 21:32]
:END:
*** DONE Streamline use of modus-themes--variable-pitch-ui
CLOSED: [2021-12-03 Fri 21:31]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 21:31] \\
  We use a new bespoke face, which is then inherited by all relevant
  constructs.  This minimises the use of the internal function.
:END:
*** DONE Analyse use of modus-themes--link-color [2/2]
CLOSED: [2021-12-03 Fri 20:38]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 20:40]
:END:

Maybe we don't need all of those and can instead consolidate around 2-3
styles.

**** DONE Simplify apropos faces
CLOSED: [2021-12-03 Fri 20:13]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 20:13] \\
  They do not need to look like buttons because of how "busy" the buffer
  of 'M-x apropos' ends up looking.
:END:

**** DONE Comment out discontinued org-roam faces
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 20:38] \\
  It seems that all the faces we support to date no longer exist upstream.
  Instead there are all sorts of new faces that we urgently need to cover.
  Hopefully some org-roam user can help me make sense of the context.
:END:

*** DONE Consolidate the modus-themes--tab styles
CLOSED: [2021-12-03 Fri 21:18]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 21:18] \\
  Applied bespoke faces and had all relevant interfaces inherit from them.
:END:

*** DONE Make more considerate use of modus-themes--syntax-comment
CLOSED: [2021-12-03 Fri 21:04]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-03 Fri 21:04] \\
  There was no need to style the Git (Magit) commit/rebase faces for
  special keywords in comments.
:END:

There are a few places that we could do without it.  Perhaps we can
apply a single colour or just use a bold weight.  Will need to test.

** DONE [#A] Support current org-roam faces
CLOSED: [2021-12-05 Sun 18:01]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 18:01]
:END:
** DONE [#B] Decide on the modus-themes-scale-* [3/3]
CLOSED: [2021-12-05 Sun 16:34]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 16:34] \\
  The following variables no longer have any effect:

  + modus-themes-scale-headings
  + modus-themes-variable-pitch-headings
  + modus-themes-scale-1
  + modus-themes-scale-2
  + modus-themes-scale-3
  + modus-themes-scale-4
  + modus-themes-scale-title

  Instead everything is consolidated in two variables:

  + modus-themes-headings
  + modus-themes-org-agenda

  The paradigm for those is the same (read their doc strings for further
  details):

  + To set the height of a heading, just specify a floating point.
  + To make a specific heading use a proportionately spaced font, simply
    include variable-pitch in the list of properties.
:END:

*** DONE Remove modus-themes-scale-small
CLOSED: [2021-12-05 Sun 13:17]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 13:17]
:END:

It is not useful in general.  It is only used in the Org agenda and it
breaks the otherwise neat alignment (because it is contingent on the
size of the font, rather than being done pixelwise)...  The idea of
smaller text in the agenda is appealing, but not if it break things.

*** DONE Decide on modus-themes-scale-title
CLOSED: [2021-12-05 Sun 15:31]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:31] \\
  I deprecated this user option.  All relevant places now inherit from
  ~modus-themes-heading-1~.  As for the agenda structure (explained in the
  user option ~modus-themes-org-agenda~), it now accepts a number argument
  to set its height.  Same principle as with ~modus-themes-headings~.
:END:
*** DONE Check modus-themes--scale [4/4]
CLOSED: [2021-12-05 Sun 15:31]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:31]
:END:

Regardless of whether we review the aforementioned, we need to be more
considerate with how we apply the =,@(modus-themes--scale ...)=.

**** DONE Review markup-faces (adoc-mode) faces
CLOSED: [2021-12-05 Sun 15:30]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:30] \\
  Headings inherit from modus-themes-heading-N.  Also tweaked some faces
  for stylistic consistency.
:END:
**** DONE Review auctex and Tex faces
CLOSED: [2021-12-05 Sun 15:29]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:29] \\
  Reviewed all faces to inherit from the appropriate font-lock-* face.
  Headings now inherit from modus-themes-heading-N.
:END:
**** DONE org-tree-slide-header-overlay-face inherit from org-document-title
CLOSED: [2021-12-05 Sun 15:29]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:29]
:END:
**** DONE Miscellaneous headings [6/6]
CLOSED: [2021-12-05 Sun 15:28]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:28]
:END:

Review them on a case-by-case basis.

***** DONE font-latex-slide-title-face
CLOSED: [2021-12-05 Sun 15:00]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:00] \\
  Just inherit from ~modus-themes-heading-1~.
:END:

***** DONE cfw:face-title
CLOSED: [2021-12-05 Sun 15:09]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:09] \\
  Made it look like ~org-document-title~.
:END:

***** DONE helm-source-header
CLOSED: [2021-12-05 Sun 15:06]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:06] \\
  I made it inherit from ~modus-themes-pseudo-header~ while changing its
  foreground to a more subtle colour.
:END:

Just use a =:height=?  This needs more thought and extensive testing.

***** DONE ioccur-title-face
CLOSED: [2021-12-05 Sun 15:08]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:08] \\
  I made it inherit from ~modus-themes-pseudo-header~ while changing its
  foreground to a more subtle colour.
:END:

Same as for the helm-source-header.

***** DONE phi-grep-heading-face
CLOSED: [2021-12-05 Sun 15:08]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:08] \\
  I made it inherit from ~modus-themes-pseudo-header~ while changing its
  foreground to a more subtle colour.
:END:

I do not remember how its interface looks like.  Needs to be tested
thoroughly, but maybe a =:height= attribute will be enough.

***** DONE EMMS headings [4/4]
:LOGBOOK:
- State "DONE"       from "DONE"       [2021-12-05 Sun 15:14] \\
  Made everything work without a height.  Maybe this is a drastic
  measure and we will eventually need to review it, although this was
  already the default (subject to the now-deprecated user option
  ~modus-themes-scale-headings~).
:END:

****** DONE emms-browser-album-face
CLOSED: [2021-12-05 Sun 15:09]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:09]
:END:
****** DONE emms-browser-artist-face
CLOSED: [2021-12-05 Sun 15:10]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:10]
:END:
****** DONE emms-browser-composer-face
CLOSED: [2021-12-05 Sun 15:10]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:10]
:END:
****** DONE emms-browser-year/genre-face
CLOSED: [2021-12-05 Sun 15:10]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 15:10]
:END:
** DONE [#A] Consolidate mode line options
CLOSED: [2021-12-05 Sun 22:10]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-05 Sun 22:10] \\
  Deprecated the user option ~modus-themes-mode-line-padding~ and made the
  user option ~modus-themes-mode-line~ accept a natural number directly.
  When the number is greater than 1, it adds N extra padding.
:END:

** CANCEL [#C] Formalise guidelines for package support
CLOSED: [2021-12-05 Sun 17:17]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-05 Sun 17:17] \\
  Better not write those down.  I will just exercise judgement.  Though I
  think we are already doing well.
:END:

Going forward, I want us to be more opinionated about which packages we
support.  Otherwise the scope of the themes is practically infinite.

This is a /tentative/ list of scenaria, with the understanding that we are
never going to subject ourselves to a mechanistic process and shall
always exercise judgement:

+ The package has an established user base and/or clear niche and/or is
  actively maintained.  If a package re-invents an existing feature in a
  way that is not clearly better, then we exercise a "wait-and-see"
  approach (we do not need to support a new package from day one).

+ The package is generally useful and is not tied to someone's personal
  setup.  Example of packages that are disqualified: =prot-diff.el= from
  [[https://gitlab.com/protesilaos/dotfiles][my dotfiles]].

+ The package can be used without registering for some external service.
  For example, I cannot maintain =sx= because I do not use the
  stackexchange service.  In such cases, users must actively help with
  the design.

+ The colours that the package uses are not consistent with the
  technical objectives of the themes (accessibility, deuteranopia
  support where relevant) OR in case where it inherits from font-lock
  faces, the result does not look good in context and/or consistent with
  the rest of the theme.  For example, a package that inherits the
  ~region~ face when what it really wanted was ~match~ or ~highlight~.

+ If the package hardcodes colour values like red or green instead of
  inheriting from the ~error~ or ~success~ faces, we first try to contact
  the maintainer to provide a patch that works with all themes.  Same
  principle for when it inherits from base faces but does it in a
  sub-optimal way (like the above example with ~region~ and ~match~ or
  ~highlight~).  A small patch upstream is for cases where we would have
  done exactly that at the theme level.  Contributing to packages is
  better for the ecosystem.

+ There are several packages/faces that hardcode colour values which are
  taken from the Modus themes or are consistent with our objectives.  We
  normally do not need to explicitly style those.  If, however, there is
  something we should do, such as to make the faces conditional on a
  customisation option, then we must style them (provided the package is
  useful, has a user-base, etc.).  Doing so while informing the package
  maintainer is also a good idea.

** CANCEL [#C] Document nobreak-char-display in the manual
CLOSED: [2021-12-05 Sun 18:17]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-12-05 Sun 18:17] \\
  It is not a major issue.  Let's ignore it for now until there is proof
  that we need to document it in the manual.
:END:
** DONE [#A] Remove long-obsoleted user options [2/2]
CLOSED: [2021-12-02 Thu 19:08]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 19:08]
:END:
*** DONE Remove modus-themes-org-habit
CLOSED: [2021-12-02 Thu 19:08]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 19:08]
:END:
*** DONE Remove make-obsolete of modus-themes-intense-hl-line
CLOSED: [2021-12-02 Thu 19:08]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 19:08]
:END:

This form:

#+begin_src emacs-lisp
(make-obsolete 'modus-themes-intense-hl-line 'modus-themes-hl-line "1.3.0")
#+end_src

** DONE [#A] Implement universal deuteranopia toggle
CLOSED: [2021-12-02 Thu 16:50]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 16:50] \\
  Everything should now be subject to a single toggle:
  modus-themes-deuteranopia.  The modus-themes-success-deuteranopia is
  thus superseded, while the individual deuteranopia-friendly styles for
  diffs and the Org agenda's habit graph are altogether removed (there
  is no clean way to notify the user of their deprecation---apologies
  for the inconvenience!).
:END:

Note [[https://gitlab.com/protesilaos/modus-themes/-/issues/258][issue 258]] about the potential of using colour space adjustments to
cover all types of colour deficiency.  I think the consolidation into a
single boolean does not contradict that notion, but we will see.

** DONE [#B] Simplify diff-related helper functions
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 18:50] \\
  Basically we just had to simplify the conditionality for deuteranopia
  and remove the relevant arguments.
:END:

** DONE [#A] Remove "foreground only" diffs
CLOSED: [2021-12-02 Thu 13:30]
:LOGBOOK:
- State "DONE"       from "TODO"       [2021-12-02 Thu 13:30] \\
  There is a new section in the manual for those who want to restore
  that style.  I have been meaning to remove it for a long time, because
  it is not up to the established standard of the themes, but there was
  no good opportunity to do so.  Now that we are approaching version
  2.0.0 of the themes, it is right to make such backward-incompatible
  changes.
:END:

#+begin_src emacs-lisp
;; Short version of what is in the manual:

(defun my-modus-themes-custom-faces ()
  (modus-themes-with-colors
    (custom-set-faces
     `(modus-themes-diff-added ((,class :background unspecified :foreground ,green))) ; OR ,blue for deuteranopia
     `(modus-themes-diff-changed ((,class :background unspecified :foreground ,yellow)))
     `(modus-themes-diff-removed ((,class :background unspecified :foreground ,red)))

     `(modus-themes-diff-refine-added ((,class :background ,bg-diff-added :foreground ,fg-diff-added)))
     ;; `(modus-themes-diff-refine-added ((,class :background ,bg-diff-added-deuteran :foreground ,fg-diff-added-deuteran)))
     `(modus-themes-diff-refine-changed ((,class :background ,bg-diff-changed :foreground ,fg-diff-changed)))
     `(modus-themes-diff-refine-removed ((,class :background ,bg-diff-removed :foreground ,fg-diff-removed)))

     `(modus-themes-diff-focus-added ((,class :background ,bg-dim :foreground ,green))) ; OR ,blue for deuteranopia
     `(modus-themes-diff-focus-changed ((,class :background ,bg-dim :foreground ,yellow)))
     `(modus-themes-diff-focus-removed ((,class :background ,bg-dim :foreground ,red)))

     `(modus-themes-diff-heading ((,class :background ,bg-alt :foreground ,fg-main)))

     `(diff-indicator-added ((,class :foreground ,green))) ; OR ,blue for deuteranopia
     `(diff-indicator-changed ((,class :foreground ,yellow)))
     `(diff-indicator-removed ((,class :foreground ,red)))

     `(magit-diff-added ((,class :background unspecified :foreground ,green-faint)))
     `(magit-diff-changed ((,class :background unspecified :foreground ,yellow-faint)))
     `(magit-diff-removed ((,class :background unspecified :foreground ,red-faint)))
     `(magit-diff-context-highlight ((,class :background ,bg-dim :foreground ,fg-dim))))))

;; This is so that the changes persist when switching between
;; modus-operandi and modus-vivendi
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
#+end_src

** CANCEL [#C] Experiment with markup tweaks
CLOSED: [2021-11-27 Sat 07:56]
:LOGBOOK:
- State "CANCEL"     from "TODO"       [2021-11-27 Sat 07:56] \\
  There is no pressing need for this.  It would also make the code more
  complex.  Maybe we can come up with something else after the release
  of version 2.0.0.
:END:

#+begin_src emacs-lisp
(defcustom modus-themes-text-markup nil
  "Control the style of markup in text-related modes (e.g. Org)."
  :group 'modus-themes
  :package-version '(modus-themes . "1.7.0")
  :version "28.1"
  :type '(set
          (cons :tag "Inline code"
                (const inline-code)
                (set :tag "Presentation of inline code" :greedy t
                     (const :tag "Subtle background and foreground (default)" nil)
                     (const :tag "No background" no-background)
                     (const :tag "Intense foreground color" intense)))
          (cons :tag "Metadata and comments"
                (const metadata)
                (set :tag "Style of metadata and comments" :greedy t
                     (const :tag "Subtle foreground (default)" nil)
                     (const :tag "Added background" background)
                     (const :tag "Intense foreground" intense)
                     (const :tag "Apply color accent" accented))))
  :set #'modus-themes--set-option
  :initialize #'custom-initialize-default
  :link '(info-link "(modus-themes) Plain text markup"))
#+end_src