Tags give the ability to mark specific points in history as being important
  • 2.3.3
    ee0670f8 · Recompile Info manual ·
  • 2.3.2
  • 2.3.1
    bdb4235e · Recompile the Info manual ·
  • 2.3.0
    f9b2c8b6 · Upgrade to version 2.3.0 ·
    Modus themes version 2.3.0
    By Protesilaos Stavrou <info@protesilaos.com> on 2022-04-01
    This entry documents the changes made to the project since the
    publication of version 2.2.0 on 2022-02-23.  It spans more than 70
    To access the URL of the manual visit:
    <https://protesilaos.com/emacs/modus-themes>.  Or read it in the Emacs
    Info reader by evaluating:
        (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.
    Customisation options
    * The 'modus-themes-completions' now accepts a 'text-also' property for
      the 'selection' key.  This has the effect of colourising the current
      line's text.  Whereas the default does not change the text colour,
      re-using whatever underlying colours are available.  Consult the doc
      string of this user option, as it provides for fine-grained control of
      how completion UIs may look.  Thanks to Morgan Willcock whose feedback
      in issue 278 inspired me to add the 'text-also' property:
    * The 'modus-themes-box-buttons' now accepts an 'all-buttons' property.
      It applies whatever other style is used for the boxed buttons to the
      generic 'widget.el'.  By default, the faces of 'widget.el' do not look
      like graphical buttons: they have a bold weight and a foreground
      colour instead.  Examples where those are used are the Notmuch "hello"
      buffer and the main view of the 'elfeed-summary' package.  Thanks to
      Daniel Mendler, Rudolf Adamkovič, and Tony Zorman for their feedback
      in issue 296: <https://gitlab.com/protesilaos/modus-themes/-/issues/296>.
    * The 'modus-themes-intense-mouseovers' is a boolean user option which
      makes mouse hover effects more intense when set to a non-nil value.
      By default, mouseovers use a cyan background value.  This changes it
      to a more prominent blue.  Thanks to John Haman for the feedback in
      issue 290: <https://gitlab.com/protesilaos/modus-themes/-/issues/290>.
    * The user options 'modus-themes-box-buttons', 'modus-themes-mode-line',
      'modus-themes-org-agenda', and 'modus-themes-headings' can now read a
      number value as a cons cell.  The old method of a plain number
      continues to work.  This makes it possible to be more descriptive on
      what a given value signifies.  Each doc string describes the
      technicalities.  Here are samples that yield identical results:
          (setq modus-themes-mode-line '(accented 0.9 borderless 2))
          (setq modus-themes-mode-line '(accented (heigh 0.9) borderless (padding 2)))
      Thanks to Daniel Mendler for proposing this idea in issue 282:
    Attempted bug fix for byte compiled files
    Quoting from the git log:
        commit f067d2ef39c22174b95584f2cba7942aaf03bcca
        Author: Protesilaos Stavrou <info@protesilaos.com>
        Date:   Thu Mar 3 06:52:31 2022 +0200
            Reify themes with eval-and-compile
            This is an attempt to fix a bug that has existed since version 1.2.0 of
            the themes or even earlier.
            The bug is about a mismatch between compiled code and runtime
            dependencies.  The runtime expects the current version while the
            compiled code only furnishes an outdated one, thus resulting in an
            error.  This only happens when:
            1. Private functions change to accept more/fewer arguments.
            2. Variables change their acceptable value (e.g. from symbol to list).
            3. The user is installing the package via the package.el mechanism which
               takes care of byte compilation (though anything that mimics
               package.el should exhibit the same behaviour).
            My understanding is that the cause was the limited scope of the
            'eval-and-compile' we had before: it would run the 'require' also at
            compile time, whereas the 'modus-themes-theme' macro, which reifies the
            actual theme, would only be evaluated at runtime.  Hence the mismatch as
            'require' would read the already installed byte code while the macro
            would expect newer forms.
            Wrapping everything in the 'eval-and-compile' should address this
            problem.  Hopefully it will not engender new ones...
            * * *
            The latest reports about this bug:
            * GitLab issue 287 with Mark Bestley and Daniel Mendler:
            * GitHub issue 22 with Rytis Paškauskas:
         doc/modus-themes.info   | 30 +++++++++++++++---------------
         doc/modus-themes.org    | 15 ++++++++-------
         modus-operandi-theme.el | 10 +++++-----
         modus-vivendi-theme.el  | 10 +++++-----
         4 files changed, 33 insertions(+), 32 deletions(-)
    After nearly one month, no problem has been observed as a result of this
    Newly supported packages
    These are added to the already comprehensive coverage we guarantee.
    Directly supported:
    * devdocs.  Thanks to Augusto Stoffel, its developer, for the feedback
      which was sent via email.
    * mini-modeline.  Thanks to Julio C. Villasante for the feedback in
      issue 24 over at the GitHub mirror:
    Indirectly supported (they use faces that we already cover):
    * elfeed-summary
    * undo-hl
    Changes to supported faces or packages
    * Improved the colours used by 'avy' to always guarantee constrast in
      hueness between side-by-side characters with a variety of user
      settings.  I tried various styles, such as:
          (setq avy-style 'pre)
          (setq avy-style 'at-full)
      For the sake of completeness, I also ran tests by modifying the
      'avy-lead-faces' (which is a 'defconst', not a 'defcustom'):
          (setq avy-lead-faces
          (setq avy-lead-faces
          (setq avy-lead-faces
    * Updated the 'vertico-quick' faces to keep them aligned with the new
      Avy styles.  Thanks to Daniel Mendler (Vertico's developer) for the
    * Applied warmer though still not saturated colours for Org clocking
      overlays.  The previous style could be mistaken for a mouse highlight
      or the highlighted line if 'modus-themes-hl-line' included the
      properties 'intense' and 'accented'.  Thanks to Rudolf Adamkovič for
      the feedback in issue 293:
    * Broadened coverage of the built-in 'shr.el' library to include the new
      'shr-code' face (Emacs 29).
    * Expanded support for the 'embark' package by covering its new
      'embark-collect-marked' face.  Thanks to Daniel Mendler for the
      feedback in issue 299:
    * Made the 'fill-column-indicator' a contiguous line.  It was a dashed
      line before, per the Emacs defaults, which led to awkward results
      depending on the font family and value of 'line-spacing'.  Thanks to
      Daniel Mendler for the feedback in issue 297:
    * Added explicit support for the built-in 'separator-line' face in order
      to refine its presentation.  This is present in 'M-x shortdoc' buffers
      (Emacs 28).  Thanks to Daniel Mendler for the feedback in issue 297:
    * Applied explicit styling to the generic 'underline' face in order to
      ensure its consistent colouration.  The problem before was that an
      underline that spanned text with distinct colours would inherit the
      colour of the affected character.  A uniform presentation makes
      everything easier to read.
    * The 'ement.el' Matrix client now uses a subtle background for username
      mentions and/or quoted text.  This is consistent with how other Matrix
      clients style such constructs.  Thanks to Adam Porter (aka
      "alphapapa"), the developer of ement.el, for explaining the
      technicalities and providing the relevant feedback in issue 25 over at
      the GitHub mirror: <https://github.com/protesilaos/modus-themes/issues/25>.
    * Enforced consistency between 'icomplete' and 'ido'.  The first match
      was coloured differently in 'ido-mode' by mistake.  Thanks to Morgan
      Willcock for the feedback in issue 278:
    * Used the main foreground for Company's tooltip.  This is how it should
      have been.  Corfu is designed that way as well.  Thanks to user okamsn
      for the feedback in issue 278:
    * Corrected an omission whereby the AUCTeX verbatim face was not
      consistent with other such faces.  Now it too is governed by the user
      option 'modus-themes-markup'.
    * Fixed the 'centaur-tabs' invalid background message.  Thanks to
      Lennart C. Karssen for reporting the bug in issue 288:
      <https://gitlab.com/protesilaos/modus-themes/-/issues/288>.  Note,
      however, that the problem is due to some decisions made upstream.  My
      patch has not been merged yet (open since 2022-02-24):
      <https://github.com/ema2159/centaur-tabs/pull/179>.  Given this
      opportunity, always anticipate that faces may ':inherit' from others
      and thus functions like 'face-background' might return an undesirable
      nil value if used without a fallback.
    * Made the 'modus-themes--current-theme' return the first Modus theme
      instead of the 'car' of 'custom-enabled-themes'.  This makes the
      themes work at all times even when the user has multiple of them
      enabled.  Thanks to Pierre Téchoueyres for the patch, which was sent
      via email with regard to Emacs bug#54598:
    * Implemented compile-time requirement for built-in libraries to be sure
      that the themes work in all cases.  Thanks to Antonio Hernández Blas
      for reporting in issue 292 the bug with the old design that assumed
      the 'cl-lib' and 'subr-x' as already loaded:
    * Wrote in the manual how to achieve a monochrome style (with
      permutations) for code syntax highlighting.  Thanks to Augusto Stoffel
      for sharing the idea via an email exchange (this information is
      divulged with permission).
    * Clarified some statements in the manual's section about the nuances in
      "enabling" and "loading" a theme.
    * Documented how the applicable palette affects the outer boundaries of
      the colour range that terminal emulators set when Emacs is ran without
      a GUI.  Here "the palette" refers to the relevant 16 ANSI escape
      sequences (terminal colours 0 through 15).  For the sake of
      convenience, the node includes ready-to-use palettes for XTerm, which
      can be adapted to other terminal emulators.  This entry complements an
      existing one on improving the colour accuracy in terminal emulators.
    * Used American English constructions in a few places such as "color"
      instead of "colour" as that is what core Emacs expects (and the themes
      are part of emacs.git).
    * Updated the description of the themes to be more user-friendly.
      Instead of "Highly accessible themes (WCAG AAA)" we now have "Elegant,
      highly legible and customizable themes".  Nothing changes in terms of
      substance.  Thanks to Jorge Morais for the feedback.
    * Clarified that the version of the themes which is built into Emacs
      does not use 'require'.  It is in response to this thread:
      Thanks to Philip Kaludercic for bringing the issue to my attention.
    * Improved the code samples that show how to set up the package.
    * Wrote the correct symbols for some obsoletion forms.
    Thanks once again to everyone involved!
  • 2.2.0
    7b203db9 · Update to version 2.2.0 ·
    Modus themes version 2.2.0
    By Protesilaos Stavrou <info@protesilaos.com> on 2022-02-23
    The present entry records the changes made to the project since the
    publication of version 2.1.0 on 2022-02-17.  This spans about 10 commits
    (though one of them is massive).  Normally the release cycle occurs over
    periods of 4-5 weeks.  This is a necessary exception.
    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.
    Initialisation of user options
    Removed a superfluous default value that hampered the initialisation of
    defcustom forms in the M-x customize interface.  Things would still
    work, but the interface was not looking right while editing the relevant
    variables.  Thanks to Gustavo Barros for reporting the bug in issue 267:
    Refactor 'modus-themes-completions'
    Implemented thoroughgoing reforms across all completion User Interfaces
    (UIs) in order to make them more flexible/powerful and harmonise their
    'modus-themes-completions' now accepts an alist instead of a symbol.
    Each cons cell is in the form of '(key . list-of-properties)'.  The doc
    string describes all the details.
    In terms of out-of-the-box appearences, all completion UIs have a subtle
    aesthetic.  This was always the case for the likes of Vertico, Icomplete
    (Fido), and related, though it constitutes a marked departure from what
    Ivy and Helm used to look like.  Users of the latter two can still get
    the more colourful or intense style with something like this:
        (setq modus-themes-completions '((matches . (background intense))
                                         (selection . (accented intense))
                                         (popup . (accented intense))))
    Or simply:
        (setq modus-themes-completions '((t background intense accented)))
    The documentation explains all those associations in-depth.  There also
    are other styles on offer (and combinations thereof).
    Furthermore, the new 'modus-themes-completions' encompasses more UIs
    than its predecessor, including Company and Corfu.
    In the interest of theme-wide consistency, all applicable faces have
    been reviewed.
    Finally, note that the previous tagged release also made changes on this
    front, but it did not disrupt the status quo that was in place from
    before the release of version 1.0.0 of the themes (more than a year
    ago).  In other words, it tried to make unnecessary compromises within
    the confines of an outdated design that did not fit in with the rest of
    the code base.  The new 'modus-themes-completions' might require manual
    intervention from users who want to customise things to their liking,
    though I feel this change is to our long-term benefit.
    Thanks to Daniel Mendler and Rudolf Adamkovič for their feedback in
    issue 278: <https://gitlab.com/protesilaos/modus-themes/-/issues/278>.
    And thanks to Kenta Usami for recommending the use of a warning in issue
    286: <https://gitlab.com/protesilaos/modus-themes/-/issues/286>.
    Miscellaneous changes
    + Removed the pseudo-button effect from the 'org-checkbox' face.  It was
      not up-to-date with the current style of the rest of the themes,
      including the Org constructs for source block delimiters, the TODO
      keywords, the priority cookies (e.g. '[#A]'), and others.
    + Introduced a section in the manual which provides an alternative to
      the standard 'modus-themes-toggle' that leverages 'enable-theme'
      instead of 'load-theme' under the hood.  These technicalities are all
      explained in the manual.
    + Provided an alternative greyscale palette subset for 'modus-operandi'
      in the manual's section about overriding colours.
    + Added support for the built-in 'custom-variable-obsolete' face.
    + Fixed typo in the 'modus-themes-box-buttons' variable.  Thanks to
      Illia Ostapyshyn for the patch in merge request 58:
  • 2.1.0
    1c777649 · Update to version 2.1.0 ·
    Modus themes version 2.1.0
    By Protesilaos Stavrou <info@protesilaos.com> on 2022-02-17
    The present entry records the changes made to the project since the
    publication of version 2.0.0 on 2021-12-24.  There have been more than
    110 commits in the meantime (and this log is close to 5000 words).
    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.
    The following produce a buffer that previews the colour palette of the
    given theme ('modus-operandi' or 'modus-vivendi').
    * 'modus-themes-list-colors' prompts for a theme before producing the
    * 'modus-themes-list-colors-current' uses the current Modus theme.
    These commands are useful to anyone who wants to reference a named
    colour from the themes or copy a colour value, such as for the purposes
    of user-level customisation (as documented at length in the manual
    across several use-cases and with the inclusion of custom code).
    The commands are not bound to any key.
    Customisation options
    * Implemented the 'modus-themes-markup' variable, which supersedes the
      now-deprecated 'modus-themes-intense-markup'.  The new user option
      accepts a list of properties (symbols).  It affects constructs such as
      Org's =verbatim=, ~code~, and {{{macro}}}.  By default, when this user
      option is either nil or an empty list, the affected constructs only
      have a foreground colour (e.g. Org verbatim is magenta).  Properties
      that change this style are:
      1. 'italic' for an added slant to the text.
      2. 'bold' for a heavier weight.
      3. 'background' to add a background colour.
      4. 'intense' to amplify the colouration (especially of 'background').
      As with all user options which accept a list of properties, the order
      of the symbols is no significant.  In user configurations it may look
      like this:
          (setq modus-themes-markup '(background intense bold))
      [ Read the manual for bold and italic fonts.  We do not hardcode a
        :weight or :slant, instead giving the user the option to set their
        own values.  The defaults are what you would normally expect from
        "bold" and "italic". ]
      Thanks to Rudolf Adamkovič for reporting some problems with the old
      design in issue 274:
    * Added the 'modus-themes-box-buttons' which affects all pseudo
      graphical buttons, such as those found in Custom UI buffers or EWW web
      pages which include search forms and the like.  The variable accepts a
      list of properties as its value.  By default (nil or empty list),
      buttons have a grey background and the familiar 3D effect.  Valid
      properties are:
      1. 'flat' to remove the 3D effect.
      2. 'accented' to shift the colouration away from grey.
      3. 'faint' to reduce the overall colouration (e.g. grey becomes white).
      4. 'variable-pitch' to apply a proportionately spaced font.
      5. 'underline' to draw a line instead of applying a 3D or flat box
         (particularly useful for those who use Emacs in a terminal emulator).
      6. The symbol of a font weight, such as 'bold', 'semibold', 'light' or
         any one among those included in the 'modus-themes-weights' constant
         (the underlying font family has to support the given weight).
      7. A number, expressed as a floating point (e.g. 0.9), which adjusts
         the height of the button’s text to that many times the base font
         size.  The default height is the same as 1.0, though it need not be
         explicitly stated.
      The order in which those symbols appear in the list is not
      significant.  If 'underline' and 'flat' are both specified, the former
      takes precedence.  In user init files the form may look like this:
        (setq modus-themes-box-buttons '(variable-pitch flat semilight 0.9))
      Thanks to Daniel Mendler for suggesting this user option and providing
      the relevant feedback in issue 282:
    * Expanded the 'modus-themes-mail-citations' with an 'intense' variant.
      For example:
          (setq modus-themes-mail-citations 'intense)
      The default is a moderately coloured style.  Other variants include
      'faint' for subtle colouration and 'monochrome' for an all-grey look.
    * Reviewed the 'modus-themes-completion' option and harmonised all the
      face specifications it governs.  The variable now accepts a fourth
      stylistic variant in 'super-opinionated': it is like the 'opinionated'
      one though some details are even more pronounced.  Other noteworthy
      [ Remember to read the doc string of 'modus-themes-completions', which
        explains the grouping of the completion UIs. ]
      - The (setq modus-themes-completions 'moderate) style is more-or-less
        the same across all completion UIs.  The highlight applied to the
        current line is a bespoke shade of blue, the characters are less
        saturated than before and their hues are different, though the
        overall effect should still feel "sufficiently colourful, but not
      - The (setq modus-themes-completions nil) is the same as before.
          - The current line in Ivy now uses a shade of blue that is
            specific to completion UIs instead of an intense cyan
            background.  This is for theme-wide consistency.
          - Helm's current line has the same bespoke blue for its current
            line instead of another shade of blue it was using before.
      - The (setq modus-themes-completions 'opinionated) should be the same
        as before, notwithstanding the aforementioned tweaks to Ivy/Helm.
      - The (setq modus-themes-completions 'super-opinionated) for
        Icomplete, Vertico, Selectrum, Mct uses the same blue for the
        current line as is the default of Ivy and Helm.
      - The relevant private helper functions were rewritten.
      - We declare a few faces to help streamline certain styles.
      - Ivy action keys now inherit from 'modus-themes-key-binding'.  We
        generally try to make all keys look the same, except when that would
        be detrimental to the usability of the given context/interface.
      - Some Ivy faces are simplified or otherwise tweaked to fit in with
        the rest of the theme.
      Thanks to Rudolf Adamkovič for the feedback about Vertico in issues
      214 and 278 which prompted me to review all completion UIs:
      - <https://gitlab.com/protesilaos/modus-themes/-/issues/214>
      - <https://gitlab.com/protesilaos/modus-themes/-/issues/278>
    * Adjusted the applicable hues in some 'modus-themes-syntax' variants.  In
      - The strings' hue has more hints of blue when 'modus-themes-syntax'
        includes the 'green-strings' property.  Such as:
          (setq modus-themes-syntax '(green-strings))
          (setq modus-themes-syntax '(alt-syntax green-strings))
          (setq modus-themes-syntax '(alt-syntax green-strings faint))
          (setq modus-themes-syntax '(alt-syntax green-strings faint yellow-comments))
      - Strings are more orange/yellow than red when 'modus-themes-syntax'
        includes the 'alt-syntax' property but NOT the 'green-strings'.  For
          (setq modus-themes-syntax '(alt-syntax))
          (setq modus-themes-syntax '(alt-syntax yellow-comments))
          (setq modus-themes-syntax '(alt-syntax yellow-comments faint))
      - Backslashes for regexp constructs are coloured appropriately to look
        distinct from the rest of the string and from the escaped construct in
        all cases.
    * Removed background colours from the the default style of Org block
      As I explained in Emacs bug#52587,[1] Org has code that overrides
      themes which prefer not to extend the block delimiter faces to the
      edge of the window (as we would like to do by default).  This
      practically means that we cannot have backgrounds for those lines and
      keep them limited to the stretch of area covered by their text.
      As such, the default for Org block delimiter lines now is a gray
      foreground with no distinct background colour.  The user option
      'modus-themes-org-blocks' provides "blocky" alternatives that use
      background colours---those extend to the edge of the window.
      [1] <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52587#46>
    * Deleted the compatibility layer for all user options that used to
      accept symbols in the past but now expect a list of symbols.  The
      manual contains a snippet with all customisation options for those who
      do not want to read all the relevant doc strings.  Evaluate this:
          (info "(modus-themes) Customization Options")
      Or visit: <https://protesilaos.com/emacs/modus-themes#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f>.
      The original plan was to remove those during the transition to version
      2.0.0 (about a month ago) though I changed my mind thinking they would
      not pose a longer-term problem.
      New information by Mark Bestley in issue 272 shows that this kind of
      complexity can lead to errors:
      So it is better to keep things simple and ask users to configure all
      user options based on the up-to-date documentation.
      Also thanks to Saša Janiška for the feedback in issue 272.
    New packages, faces, or face groups
    * all-the-icons-dired.
    * all-the-icons-ibuffer.
    * 'child-frame-border' face (Emacs 28).
    * 'citar' package.  Thanks to Rudolf Adamkovič for the feedback in issue
      280: <https://gitlab.com/protesilaos/modus-themes/-/issues/280>.
    * 'elisp-shorthand-font-lock-face' (Emacs 29).  Read the manual by
          (info "(elisp) Shorthands")
    * 'ement' (ement.el) Matrix client, though it is not listed in any
      archive yet: <https://github.com/alphapapa/ement.el>.
      Thanks to Samuel Culpepper for the feedback in issue 279:
      Also check the Ement issue tracker on the matter:
    * 'mct' package.
    * 'menu' face (built-in) which is used in the menu-bar when Emacs runs
      without a graphical toolkit.
    * 'pgtk-im-0' face (Emacs 29).  This is shown as a single-character-long
      block when you type the Compose key followed by the composable
    * 'pyim' (an input method for CJK characters).  Thanks to Yuanchen Xie for
      the contribution in merge request 57:
      The patch is small and is thus excluded from the requirement for
      copyright assignment to the FSF (remember that the themes are built
      into Emacs and any major contribution needs such copyright
      assignment---read the relevant entry in the themes' manual).
    * 'slime' and 'sly' packages.  Thanks to John Haman for the feedback
      which was done via email due to some problems with the web UI on
      GitLab (this information is shared with permission).  Please note that
      I am not familiar with Common Lisp and could not test these
      thoroughly.  Any mistakes or omissions are my own.
      Concerning the web UI, there is a fully functional mirror of the
      themes on GitHub, while email is always an option.  Use whatever works
      for you to report an issue or send a patch.
    * 'textsec' package (Emacs 29).
    New indirectly supported packages
    These inherit from base faces and look good enough already or use
    appropriate colours from the Modus themes:
    * dtache
    * org-remark
    Changes to supported faces or face groups
    * Stopped making key bindings look like boxes.  We revert to the old
      style we were using before the introduction of the 'help-key-binding'
      face (Emacs 28).
      By default Emacs 28 or higher will render all key bindings it
      identifies with a box around them.  The idea is to make them look like
      keys on a keyboard, which I never really liked because without
      generous padding you get a very tight space between the character and
      the box's borders which can look weird at small point sizes (Emacs
      faces do not have padding in the same way CSS does).
      I tried following the default style for a few months and have concluded
      that it is not good enough for our purposes (my preferences
      - The box attribute does not work in terminal emulators.  This means
        that keys only get a subtle grey background and the default
        foreground, which can be hard to make them stand out from their
        surrounding text if the font height is small and/or the keybinding is
        short (e.g. a single character).
      - The box and grey background combination limits our options when we
        need to colour-code different types of keys.  For example, the
        'which-key' package can show TAB as T and applies to it a different
        face to make the distinction obvious.  In that case, the presence of
        the tight box makes the use of a bold weight inappropriate: the
        character and the box's borders seem to overlap.  While the grey
        background limits our choice of colour as, for instance, yellow
        never looks good against it.  Same principle for interfaces that can
        have colour-coded keys like 'transient' and 'hydra', where we lose
        much-needed flexibility.
    * Adjusted the brightness of the 'which-key-special-key-face'.  This is
      the face that applies to special keys.  For example:
          (setq which-key-special-keys '("SPC" "TAB" "RET" "ESC" "DEL"))
    * Made 'transient' faces which are supposed to be de-emphasise certain
      elements inherit the 'shadow' face.  This is an implicit customisation
      option, as it allows the user to adjust the foreground value of all
      "less important" constructs simply by changing the 'shadow' face.
    * Covered the 'transient-purple' face (these are like the colour-coding
      of 'hydra').
    * Tweaked the 'transient-argument' and 'transient-value' faces to make
      things look a bit more consistent with the other transient faces.
      This is to avoid potential conflicts with the highlighted key
      bindings, especially when transient uses hydra-style colour-coded
    * Applied the same metaphors for key bindings to 'marginalia-key'
      ('marginalia' package) and 'embark-keybinding' ('embark' package).
      They inherit the 'modus-themes-key-binding' when possible.  The only
      exception is with (setq modus-themes-completions nil) where conflicts
      may arise between the key's style and matching characters of the
      ongoing completion session.
      Thanks to Rudolf Adamkovič for pointing out the inconsistency in issue
      278: <https://gitlab.com/protesilaos/modus-themes/-/issues/278>.
    * Refrained from treating LaTeX sections as headings.  This is because
      unlike Org/Outline/Markdown Latex is basically source code, so the
      sectioning does not work the same way it does for those lightweight
      markup/outlining modes.
      Furthermore, font-latex.el defines 'font-latex-fontify-sectioning'
      which can be used to control the scale of those sections.  It makes
      sense for the themes to not interfere with that design and just allow
      users to customise things uniformly regardless of the active theme.
      Thanks to Gustavo Barros for the detailed feedback in issue 265:
    * Reviewed the hues of 'all-the-icons' and related packages.
    * Applied the correct style to 'info-menu-header', meaning that it now
      only uses a bold weight as it is not a real heading, instead of being
      affected by the user option 'modus-themes-headings'.
    * Included new 'telega-entity-type-spoiler' face.  Thanks to bit9tream
      for informing me about it in issue 271:
      <https://gitlab.com/protesilaos/modus-themes/-/issues/271>.  The
          Tricky though perhaps dull
          I understand this is not an interesting topic and it probably is
          too difficult to relate to the various data points without
          visualising them and comparing the before and after
          states. Furthermore, data can be deceptive and I have always
          maintained that theme development stands at the intersection of
          science and art (at least for the purposes of conforming with the
          rigorous accessibility standards of the Modus themes).
          That granted, I wanted to shed light on the “behind the scenes”
          work that is not immediately obvious when one checks a diff that
          introduces some seemingly trivial tweaks like '#49d239'->'#49c029'
          or '#7fcfff'->'#8fbfff'.
    * Tweaked the hues of all graph colours, which are used in the
      'org-habit' table.  The changes are subtle and should improve the
      overall usability of the graph.  For the technicalities, read:
      Also thanks to Rudolf Adamkovič for reporting the problem with white
      text on yellow background in issue 270:
    * Styled the 'markdown-highlighting-face'.  This is the face used for
      text in between double equals signs when the user option
      'markdown-enable-highlighting-syntax' is non-nil.
    * Amplified the overall colouration of Eldoc's current argument.  It is
      a yellow foreground with a tinted background.  The blue foreground
      which was applied before could be hard to tell apart in some cases,
      especially because it is a common colour that is used elsewhere in the
      themes.  Whereas the warmer hues are easier to discern, especially
      while relying only on peripheral vision.
      Thanks to Rudolf Adamkovič for the feedback in issue 275:
    * Instructed Geiser to use the same style for its argument as Eldoc
      (edited the faces 'geiser-font-lock-autodoc-current-arg' and
    * Made the 'keycast-key' face work when 'modus-themes-mode-line' has a
      padding value (read the latter doc string or consult the manual).
    * Refined the 'magit' faces for bisect, reflog, sequence, and signature
      views.  They get a bold weight and, where appropriate, are made to
      comply with the 'modus-theems-deueteranopia' option (meaning that
      greens turn into blues).
    * Recoloured 'elfeed' tags from a shade of cyan to magenta, in the
      interest of theme-wide consistency but also to make them easier to
      tell apart from the name of the feed.  Also updated the faces used in
      the header-line to look better in context.
    * Removed the hardcoded ':slant italic' from the 'italic' face, which is
      consistent with how we do not hardcode ':weight bold' in the 'bold'
      Such a design allows users to configure those faces and have the
      desired slant/weight (and even font family) apply consistently
      throughout the theme.  Read the manual for further details:
      Thanks to user derek-upham for pointing out the inconsistency in issue
      21 over at the GitHub mirror:
    * Improved the styles that apply to compilation buffers and related.
      The overarching intent was to reduce the excess colouration, without
      upsetting expectations and affecting the overall presentation.
      Thanks to Rudolf Adamkovič for the feedback in issue 277:
      Note that compilation buffers apply an underline by default.  The
      manual explains how to change that:
    * Ensured a consistent style for the 'highlight' face across all
      contexts (typically used for mouse hover effects).  The mode line has
      an exception when its style includes an accented background (per
      Thanks to Rudolf Adamkovič for the feedback in issue 214:
    * Changed the foreground of 'mode-line-emphasis' from blue to purple, in
      order to avoid potential (albeit unlikely) confusion with other
    * Desaturated the 'man' and 'woman' foreground value of the bold
      constructs and tweaked other faces to avoid potential inconsistencies.
      Thanks to Daniel Mendler for the feedback:
    * Removed certain exaggerations from widgets as seen in the Custom UI
      and EWW.  Specifically:
      - 'widget-field' does not need to ':extend', as that typically does
        not look good.
      - 'custom-state' gets a warmer colour to convey its message more
      - 'eww-form-text' no longer uses a ':box' because that breaks when the
        widget occupies more than one line.
      - 'eww-form-textarea' can now inherit from 'eww-form-text'.
      Thanks to Daniel Mendler for the feedback on the style of those faces in
      issue 284: <https://gitlab.com/protesilaos/modus-themes/-/issues/284>.
    The manual
    * Clarified the wording of 'shr' fonts, which affect 'eww', 'elfeed',
      'ement', and possibly others.
    * Wrote section on custom Org emphasis faces.  It includes code samples.
    * Answered a Frequently Asked Question on whether the Modus themes are
      "colour schemes"---they are not and it is important to understand why.
    * Addressed another Frequently Asked Question about porting the themes
      to other platforms or editors.  Relevant blog posts which explain how
      complex the issue is and why porting requires the same attention to
      detail as this project:
      - <https://protesilaos.com/codelog/2022-01-03-modus-themes-port-faq/>.
      - <https://protesilaos.com/codelog/2022-01-23-base16-modus-themes/>.
    * Improved the sample code in the section about the backdrop of PDF
      files while using 'pdf-tools'.  Thanks to Utkarsh Singh for the patch,
      which was sent via email.
    * Provided sample code on an alternative style for Ediff.
      There was a discussion with Philip Kaludercic in issue 273 about making
      this a defcustom: <https://gitlab.com/protesilaos/modus-themes/-/issues/273>.
      I first entertained the notion and did set up a branch for testing
      purposes.  However, I ultimately decided that such a course of action
      would establish a bad precedent because then every conceivable stylistic
      tweak could, in principle, become a user option.  Furthermore, the
      potential defcustom would introduce too much complexity as Ediff would
      have to continue to behave as other diffs (per 'modus-themes-diffs') if
      the user did not want the alternative style.
      As such, documenting how a user can achieve this is the right choice.
    * Fixed internal link in the manual.  Thanks to Rudolf Adamkovič for
      reporting the problem in issue 277:
    * Covered workaround for improving the accuracy of colour reproduction
      in terminal emulators.  The results are still not as good as the
      graphical version of Emacs, though they are considerably better than
      before.  Thanks to gitrj95's issue 18 at the GitHub mirror, which
      prompted me to research this topic:
    * Helped report a bug in the PGTK build of Emacs where a new emacsclient
      window with the 'modus-vivendi' face would not show the cursor:
      <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=53073>.  Thanks to
      contributed to the discussion on issue 7 over at the GitHub mirror:
    * Shifted the hue of the intense 'hl-line' from a grey-cyan to a more
      vivid blue by reducing the relative contribution of the green channel
      of light.
      The change affects these styles:
          (setq modus-themes-hl-line '(accented intense))
          (setq modus-themes-hl-line '(accented intense underline))
      Thanks to Rudolf Adamkovič for suggesting a more vivid colour in issue
      214: <https://gitlab.com/protesilaos/modus-themes/-/issues/214>.
    * Recalibrated the 'modus-vivendi' named colour 'bg-paren-match'.
      I wanted to increase its distance relative to the main background,
      just to be sure that it is easier to spot.  This is achieved by moving
      the hueness from the yellow to the magenta side of the spectrum.
      Overall, the change is subtle and has no major impact on the contrast
      ratio relative to the main background and foreground (we need to
      consider both due to the specifics of show-paren-mode (and related)).
      The results (#5f362f is the old, #6f3355 the new):
          |         | #000000 | #ffffff | #000000 | #ffffff |
          | #5f362f |    2.06 |   10.22 |   37904 |  333060 |
          | #6f3355 |    2.28 |    9.21 |   58282 |  291037 |
      The TBLFM formula for this table (org-mode notation):
          $2='(Λ $1 @1$2);%.2f :: $3='(Λ $1 @1$3);%.2f :: $4='(Δ $1 @1$4) :: $5='(Δ $1 @1$5)
      The Greek letters mean:
          (defalias 'Λ #'modus-themes-contrast)
          (defalias 'Δ #'color-distance)
    * Expanded the "special" subset of the palette with faint variants of
      the four backgrounds.  These are reserved for special circumstances,
      as the name implies.  Below are the contrast values (see
          Modus Operandi main accept colours against faint special backgrounds:
          |         | #f0f1ff | #ebf5eb | #fef2ea | #faeff9 |
          | #a60000 |    7.15 |    7.17 |    7.29 |    7.16 |
          | #972500 |    7.26 |    7.28 |    7.40 |    7.28 |
          | #a0132f |    7.13 |    7.15 |    7.27 |    7.14 |
          | #7f1010 |    9.44 |    9.47 |    9.63 |    9.47 |
          | #702f00 |    8.94 |    8.97 |    9.12 |    8.96 |
          | #7f002f |    9.64 |    9.67 |    9.83 |    9.66 |
          | #005e00 |    7.20 |    7.23 |    7.34 |    7.22 |
          | #315b00 |    7.13 |    7.15 |    7.27 |    7.15 |
          | #145c33 |    7.18 |    7.20 |    7.32 |    7.20 |
          | #104410 |   10.09 |   10.12 |   10.29 |   10.12 |
          | #30440f |    9.56 |    9.59 |    9.75 |    9.58 |
          | #0f443f |    9.76 |    9.79 |    9.96 |    9.79 |
          | #813e00 |    7.14 |    7.17 |    7.28 |    7.16 |
          | #70480f |    7.14 |    7.17 |    7.28 |    7.16 |
          | #863927 |    7.13 |    7.15 |    7.27 |    7.15 |
          | #5f4400 |    8.10 |    8.12 |    8.26 |    8.12 |
          | #5d5000 |    7.17 |    7.19 |    7.31 |    7.19 |
          | #5e3a20 |    8.91 |    8.94 |    9.09 |    8.93 |
          | #0031a9 |    9.31 |    9.34 |    9.49 |    9.33 |
          | #2544bb |    7.14 |    7.16 |    7.28 |    7.16 |
          | #0000c0 |   10.64 |   10.67 |   10.85 |   10.66 |
          | #003497 |    9.66 |    9.70 |    9.86 |    9.69 |
          | #0f3d8c |    9.06 |    9.09 |    9.24 |    9.09 |
          | #001087 |   13.15 |   13.20 |   13.42 |   13.19 |
          | #721045 |    9.99 |   10.02 |   10.19 |   10.01 |
          | #8f0075 |    7.72 |    7.75 |    7.88 |    7.74 |
          | #5317ac |    8.98 |    9.01 |    9.16 |    9.00 |
          | #752f50 |    8.22 |    8.25 |    8.38 |    8.24 |
          | #7b206f |    8.22 |    8.25 |    8.38 |    8.24 |
          | #55348e |    8.26 |    8.29 |    8.42 |    8.28 |
          | #00538b |    7.18 |    7.20 |    7.32 |    7.19 |
          | #30517f |    7.18 |    7.20 |    7.32 |    7.20 |
          | #005a5f |    7.13 |    7.15 |    7.27 |    7.15 |
          | #005077 |    7.76 |    7.79 |    7.91 |    7.78 |
          | #354f6f |    7.49 |    7.52 |    7.64 |    7.51 |
          | #125458 |    7.69 |    7.72 |    7.85 |    7.71 |
          Modus Vivendi main accept colours against faint special backgrounds:
          |         | #0e183a | #001f1a | #241613 | #251232 |
          | #ff8059 |    7.01 |    7.01 |    7.07 |    7.00 |
          | #ef8b50 |    7.01 |    7.00 |    7.07 |    7.00 |
          | #ff9077 |    7.85 |    7.85 |    7.93 |    7.85 |
          | #ffa0a0 |    8.91 |    8.91 |    9.00 |    8.91 |
          | #f5aa80 |    9.04 |    9.04 |    9.13 |    9.04 |
          | #ff9fbf |    9.06 |    9.05 |    9.14 |    9.05 |
          | #44bc44 |    7.04 |    7.04 |    7.11 |    7.04 |
          | #70b900 |    7.13 |    7.13 |    7.20 |    7.12 |
          | #00c06f |    7.24 |    7.24 |    7.31 |    7.24 |
          | #78bf78 |    7.87 |    7.86 |    7.94 |    7.86 |
          | #99b56f |    7.60 |    7.59 |    7.67 |    7.59 |
          | #88bf99 |    8.23 |    8.22 |    8.30 |    8.22 |
          | #d0bc00 |    8.98 |    8.98 |    9.07 |    8.98 |
          | #c0c530 |    9.31 |    9.31 |    9.40 |    9.30 |
          | #d3b55f |    8.71 |    8.71 |    8.79 |    8.71 |
          | #d2b580 |    8.81 |    8.80 |    8.89 |    8.80 |
          | #cabf77 |    9.28 |    9.27 |    9.36 |    9.27 |
          | #d0ba95 |    9.20 |    9.20 |    9.29 |    9.20 |
          | #2fafff |    7.18 |    7.18 |    7.25 |    7.18 |
          | #79a8ff |    7.32 |    7.32 |    7.39 |    7.31 |
          | #00bcff |    7.96 |    7.96 |    8.04 |    7.96 |
          | #82b0ec |    7.74 |    7.74 |    7.81 |    7.74 |
          | #a0acef |    7.97 |    7.96 |    8.04 |    7.96 |
          | #80b2f0 |    7.89 |    7.88 |    7.96 |    7.88 |
          | #feacd0 |    9.94 |    9.93 |   10.03 |    9.93 |
          | #f78fe7 |    8.29 |    8.29 |    8.37 |    8.29 |
          | #b6a0ff |    7.82 |    7.81 |    7.89 |    7.81 |
          | #e0b2d6 |    9.51 |    9.50 |    9.60 |    9.50 |
          | #ef9fe4 |    8.88 |    8.88 |    8.96 |    8.87 |
          | #cfa6ff |    8.72 |    8.71 |    8.80 |    8.71 |
          | #00d3d0 |    9.28 |    9.27 |    9.36 |    9.27 |
          | #4ae2f0 |   11.09 |   11.09 |   11.20 |   11.09 |
          | #6ae4b9 |   11.08 |   11.07 |   11.18 |   11.07 |
          | #90c4ed |    9.34 |    9.34 |    9.43 |    9.33 |
          | #a0bfdf |    9.10 |    9.09 |    9.18 |    9.09 |
          | #a4d0bb |   10.18 |   10.17 |   10.27 |   10.17 |
    * Add docs on color overrides through blending.  Thanks to Alex Griffin
      for the contribution in issue 269 and the subsequent patch in merge
      request 56 (the patch is exempt from copyright assignment):
      - <https://gitlab.com/protesilaos/modus-themes/-/issues/269>.
      - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/56>.
    * Fixed typo in the ':group' value of some faces defined in
      modus-themes.el.  Thanks to Gustavo Barros for reporting it in issue
      266: <https://gitlab.com/protesilaos/modus-themes/-/issues/266>
    * Updated copyright statement in all .el files to use the same wording
      as all other files that are built into Emacs.
    * Made all sorts of tweaks and refinements to doc strings and nodes in the
    Thanks again to everyone involved!  This has been yet another cycle of
    intense work which further iterated on an already solid base.
  • 2.0.0-1
    8485dba0 · Update to version 2.0.0 ·
  • 2.0.0
    e02480f0 · Update to version 2.0.0 ·
    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
    * 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:
    * 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
    * 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
          (defun my-modus-themes-custom-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:
    * 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):
    * 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:
    * 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:
    * 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
    * 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:
    * 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.
    * 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
        - 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,
        - 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:
    * Rewrote several internal functions in the interest of consistency and
    * 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:
    * 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:
    * 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.
  • 1.7.0
    6f696277 · Update to version 1.7.0 ·
    Modus themes version 1.7.0
    By Protesilaos Stavrou <info@protesilaos.com> on 2021-11-18
    The present entry records the changes made to the project since the
    release of version 1.6.0 on 2021-09-29.  There have been more than 60
    commits since then.
    Every modification pertaining to colour combinations referenced herein
    is implemented 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).
    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 from Emacs by
    evaluating this form:
        (info "(modus-themes) Top")
    The themes are built into Emacs version 28 (next stable release), and
    are available on GNU ELPA as well as other archives.  This release is
    the first one that is included with Emacs 29, or else the 'master'
    branch in emacs.git.
    Customisation options
    + The 'modus-themes-no-mixed-fonts' has been deprecated and replaced by
      the 'modus-themes-mixed-fonts'.  This is a breaking change for users
      who want to use "mixed fonts": they must set the new variable to
      As the name implies, the new variable changes the meaning of the
      feature to make it opt-in by default.  This is consistent with the
      principle of least surprise, as users may not know why some fonts look
      different than others in certain cases.
      Thanks to Christian Tietze for clarifying the doc string of this new
      user option in merge request 51:
      For context, "mixed fonts" refers to a design where spacing-sensitive
      constructs, such as code blocks and Org tables, inherit from the
      'fixed-pitch' face to remain monospaced (and properly aligned) at all
      times.  Depending on the user's configurations, the 'fixed-pitch' face
      may not use the typeface that the user expects.
      The manual provides information on how to set the desired fonts by
      editing the 'default', 'fixed-pitch', and 'variable-pitch' faces.
    + The new 'modus-themes-mode-line-padding' can be used to control the
      apparent padding of the mode line when the user option
      'modus-themes-mode-line' includes the 'padded' property.  The padding
      must be a positive integer (otherwise the code would be needlessly
      complex to guard against values that make the mode line look awkward,
      like anything lower than -3 or maybe even -2).
      Thanks to Guilherme Semente and Manuel Uberti for the feedback in
      issue 245: <https://gitlab.com/protesilaos/modus-themes/-/issues/245>.
      Note that the out-of-the-box style of the themes has a padding of 1
      (technically a ':line-width' of 1 for the ':box' attribute), whereas
      the default style of Emacs has it at -1.  This is a design choice to
      avoid an overlap between the outer boundaries of a font's glyphs and
      the borders of the mode line, when using certain common typefaces at
      various point sizes.  Such an overlap can hinder readability.
      The manual contains a new Do-It-Yourself (DIY) section with detailed
      code samples on how to apply a negative value.
    + The new 'modus-themes-intense-markup' option can be set to non-nil to
      make constructs such as inline code and verbatim text more colourful.
      This has a general utility, though its consideration was prompted by a
      phenomenon reported by Stefan Kangas in issue 238 where the overlay of
      the 'hl-line-face' overrides the subtle background these constructs
      use and can thus make them virtually indistinguishable from ordinary
      text: <https://gitlab.com/protesilaos/modus-themes/-/issues/238>.
      Such is the standard behaviour of 'hl-line-mode' and there is nothing
      a theme can (or rather "should") do about it.  Thanks to Stefan Kangas
      for the feedback.
    + The 'modus-themes-headings' option can now accept and apply an exact
      font weight such as 'semibold' or 'light'.  (The list of available
      weights is the value of the 'modus-themes--heading-weights' internal
      variable.)  This supersedes the now-deprecated 'no-bold' property:
      'no-bold' is henceforth understood as the presence of a 'regular'
      Recall that this user option is an alist and can be used to target
      heading levels individually, which further reinforces the utility of
      this new property.
      Thanks to Christian Tietze for suggesting this idea in issue 248:
      <https://gitlab.com/protesilaos/modus-themes/-/issues/248>.  And
      thanks to Daniel Mendler for refining its implementation in commit
      54bfd62, which was sent as a patch file (yes, we accept those and I
      actually prefer them over a web app's UI).
    + The 'modus-themes-org-agenda' has seen improvements to its 'event' key
      (this is an alist that has multiple keys).  It now accepts a 'varied'
      property which differentiates between (i) plain timestamp entries and
      (ii) entries that are generated from either the diary or a symbolic
      expression.  The 'varied' property combines with the other available
      properties to particularise their effects.  Consult the doc string or
      the manual for the technicalities.
      Thanks to Gustavo Barros for the detailed commentary in issue 241:
    + The 'modus-themes-lang-checkers' now accepts a 'faint' property.  This
      has the effect of toning down the colours in use.  By default, the
      only colour is that of the underline, though more can be added by
      combining the properties accepted by this user option.  Consult its
      doc string or the manual for further details.
      Thanks to Morgan Smith for suggesting the idea in issue 239:
    Add support for new packages or face groups
    + 'company-tooltip-deprecated' face.  Thanks to Roman Rudakov for the
       feedback in issue 247: <https://gitlab.com/protesilaos/modus-themes/-/issues/247>.
    + 'corfu-default' face.  Thanks to Daniel Mendler (Corfu's developer)
      for the feedback in issue 254:
    + 'image-dired' package (Emacs 29).  Thanks to Stefan Kangas for making it
      happen in emacs.git and for the feedback in issue 250:
    + 'nano-modeline' package.
    + 'vertico-quick' package.  Thanks to Nicolas De Jaeghere for the
      contribution in merge request 48:
    Changes to existing faces or face groups
    + Added support for the new Org agenda faces that improve the
      contextuality of various views.  We implemented those upstream for Org
      version 9.5 in close cooperation with Gustavo Barros.  Thanks to
      Gustavo for the detailed feedback in issue 241:
      <https://gitlab.com/protesilaos/modus-themes/-/issues/241>.  The
      thread about the patch upstream:
    + Refined Org agenda date faces in the interest of consistency and in
      accordance with the aforementioned change.  Thanks again to Gustavo
      Barros for the discussion in issue 241.
    + Applied the 'shadow' face more consistently across all contexts where
      only a subtle foreground value is expected.  This design choice makes
      it possible for users to manually edit the foreground colour of
      'shadow' to something even more subtle than the 'fg-alt' palette
      variable we use, which maps to a gray colour (e.g. they could use
    + Implemented a subtle background colour to the 'widget-inactive' face.
      This makes it easier to discern inactive buttons, checkboxes, and the
      like, in contexts such as the Customize User Interface.  Thanks to
      Stefan Kangas for the feedback in issue 242:
    + Tweaked 'file-name-shadow' to also use italics (inherit from the
      'italic' face) in order to be more easy to distinguish it from
      ordinary text in the minibuffer.
      Recall that the manual documents the meaning of inheriting from the
      'bold' and 'italic' faces instead of hardcoding a bold weight and an
      italic slant, respectively.  In short: users can change the weight to
      what they want (e.g. semibold) and/or use distinct font families.
    + Amplified the style of Version Control (VC) warnings and errors to let
      them draw more attention to themselves (because these indicators need
      to be acted upon).
    + Recoloured the 'custom-group-tag' face to make it fit better in its
      context and be consistent with the rest of the themes' established
    + Made marks for selection in Dired, Ibuffer, and related, conform with
      the 'modus-themes-success-deuteranopia' option.  This means that they
      use blue colours when the option is non-nil, instead of their default
      shades of green.
    + Adjusted the box width of key bindings for Emacs 28 or higher.  They
      should no longer cause any alignment issues.  This style is now used
      throughout the themes, including in transient views (e.g. Magit) which
      were the exception before.  Thanks to Manuel Uberti and Kevin Fleming
      for the feedback in issue 232:
    + Wrote a brief description of every user option in the manual.  Also
      covered its type, as in boolean, alist, et cetera.
    + Corrected the mode line border width for one combination of properties
      in the 'modus-themes-mode-line' option.  This should now have the same
      height as all others:
          (setq modus-themes-mode-line '(accented borderless))
    + Ensured that mode line attributes would not be set to nil, but kept at
      an 'unspecified' value instead, where relevant.  This avoids problems
      with [faulty] code that unconditionally depends on something that does
      not exist, as in the following while ':box' is nil:
          (face-attribute 'mode-line :box)
    + Expanded, reworded, or otherwise improved the manual, based on the
    Thanks once again to everyone involved!
  • 1.6.0
    8dbfe43f · Update to version 1.6.0 ·
    Modus themes version 1.6.0
    By Protesilaos Stavrou <info@protesilaos.com> on 2021-07-15
    This entry records the changes made to the project since the release of
    version 1.5.0 on 2021-07-15.  There have been around 70 commits since
    Every colour-related modification referenced herein is always
    implemented 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).
    Such edits also account for colour-coding that is optimised for the
    needs of users with red-green colour deficiency (deuteranopia or
    Here is the URL of the manual: <https://protesilaos.com/modus-themes>.
    Or read it from Emacs by evaluating this form:
        (info "(modus-themes) Top")
    The themes are built into Emacs version 28 (current development target),
    and are available on GNU ELPA as well as other archives.  This release
    is the final one for the emacs-28 branch, as that gets cut as the next
    stable release of GNU Emacs.  Future releases will target Emacs 29 once
    that becomes the new 'master' branch.
    Customisation options
    [ Themes need to be reloaded for changes to take effect. ]
    + Introduced the new 'modus-themes-tabs-accented' boolean option.  When
      set to non-nil, it renders the background of all tab interfaces in a
      shade of blue.  Those interfaces are tab-bar (built-in), tab-line
      (built-in), and Centaur tabs.
      - The background "accented" colour is the same as the one used for
        mode lines when 'modus-themes-mode-line' is configured accordingly.
    + Tweaked the 'modus-themes-mode-line' to accept a 'padded' symbol as
      part of the list of properties it can read.  This will increase the
      spacing around the mode lines' text, making the line taller overall
      but also more spacious.
      Thanks to Manuel Uberti for making the proposal and providing feedback
      in issue 228: <https://gitlab.com/protesilaos/modus-themes/-/issues/228>.
    + Added the 'modus-themes-scale-small' which complements the existing
      scale values with one that is meant to be smaller than the base
      height.  This option is reserved for special cases and is currently
      only used as an opt-in feature in the Org agenda.
    + Expanded the 'modus-themes-org-agenda' with more parameters:
      - The current date can now also be underlined.
      - Date headings can be scaled/enlarged in size.
      - Events, like those of the Diary or sexp entries, can be customised.
      Consult the manual or the variable's doc string for the details.
    + Removed the obsoleted aliases 'modus-themes-slanted-constructs' and
      'modus-themes-scale-5'.  Those are superseded by the more
      appropriately named 'modus-themes-italic-constructs' and
      Thanks to Nicolas De Jaeghere for the patch in merge request 47:
    Faces and face groups
    + Make the 'prodigy' faces for red/green/yellow inherit from the faces
      'error'/'success'/'warning', respectively.  This is done to (i) avoid
      duplication and (ii) ensure that the green/success colour coding is
      consistent with the goal of the themes to empower users with red-green
      colour deficiency.  The boolean option that changes all such greens to
      shades of blue is 'modus-themes-success-deuteranopia'.
    + Assigned the ':extend' attribute to the 'org-code' face.  This is
      necessary when the Org source contains lines that start with a colon
      sign.  Those are interpreted as code blocks.  For example:
          :  #+BEGIN_SRC emacs-lisp
          :    (defun in-interval (bounds el)
          :      (and (>= el (car bounds)) (<= el (cadr bounds))))
          :  #+END_SRC
      With the ':extend' in place, the background stretches to the edge of
      the window, thus giving those lines a uniform rectangular shape.  For
      inline uses of 'org-code', the background should remain limited to the
      span of the text.
    + Broadened support for 'marginalia' faces in two phases.
      - The first pertained to the file permissions that are shown when
        completing against file paths.  Their style is similar to what
        'dired+' or the 'direfl' packages provide, however we have taken
        care to optimise the interface for the purposes of completion
        UIs---where things can look like Dired, we make them alike, but
        where they must differ, we differentiate the designs accordingly.
        There can be no compromises or arbitrary constraints.
        Also read: <https://github.com/minad/marginalia/pull/91>.
      - The second batch covered all sorts of extra classes that provide
        granular control over the appearance of Marginalia instances.
        Refinements also had to be made to already-supported faces for the
        sake of achieving consistency across the various Marginalia
        Also read: <https://github.com/minad/marginalia/pull/92>.
    + Refined 'diredfl' and 'dired+' faces.  For the various "priv" faces,
      the intent is to increase the difference in hueness between adjacent
      file permissions (the changes are minor, but they do change the
      overall result).  Numbers are toned down so that they do not clash
      with dates.  The file suffix no longer uses cyan to stand out more in
      detailed views.
    + Made 'icomplete-selected-match' (Emacs28) more legible by aligning its
      presentation with metaphors that are estaslished across the
      modus-themes.  Thanks to Kévin Le Gouguec (peniblec) for noting the
      inconsistency with the new face upstream and for writing the patch for
      it in merge request 50:
      Also thanks to Manuel Uberti for confirming that things would look
      consistent in the comments' section of that merge request.
    + Fixed faulty inheritance for the 'web-mode-keyword-face'.  It should
      now properly copy the attributes of 'font-lock-keyword-face'.
    + Made inheritance of the new 'help-key-binding' (Emacs28 key) the
      default for all faces that need to style key bindings.
      In Emacs 28 all key bindings are automatically displayed with the face
      'help-key-binding' which uses some new face attributes to draw a
      cleaner box around it.  Given that the themes must work with earlier
      versions of Emacs, we cannot inherit it unconditionally so we added
      the relevant conditionality.  It is nice to offer this feature to
      those who use the themes on Emacs 28.  Older versions retain the
      previous style of a blue colour coupled with a bold weight.
      The exception to this rule is the transient.el faces (this is the
      pop-up window used by Magit, among others---transient.el is now built
      into Emacs).  The box effect creates unpredictable misalignments, so
      we default to the old key binding style for those.
      Thanks to Manuel Uberti and Kevin Fleming for their feedback in issue
      232: <https://gitlab.com/protesilaos/modus-themes/-/issues/232>.
    + Added support for the new 'notmuch-jump-key' face.  I contributed this
      face in commits c37c9912, 5cc106b0 to the Notmuch git repo:
    + Updated the 'bookmark-face' (Emacs28) as it has been changed upstream
      to be a fringe indicator instead of an in-buffer, line-wide background
    + Aligned Ediff faces with other 'modus-themes-diffs' styles.  Before we
      would differentiate a "focus state", though that is now considered
      surplus to requirements.  The notion of a "focus state" only make
      sense in Magit which applies variegated colour-coding to diff hunks
      based on their state.  Whereas non-active Ediff changes are grayed
      out, so there is no need for further colour-coding nuances.  The most
      noticeable change is with:
          (setq modus-themes-diffs 'bg-only)
      As noted in the commit message of 64c74ae (from 2021-09-04):
          If users think this change is for the worse, we can always define a
          helper function like this:
              (defun modus-themes--ediff-style (bgonly default)
                "Diff style for Ediff.
              BGONLY and DEFAULT depend on the value of `modus-themes-diffs'.
              The former is more subtle."
                (if (eq modus-themes-diffs 'bg-only)
                    (list bgonly)
                  (list default)))
          And apply it thus:
              `(ediff-current-diff-A ((,class :inherit ,@(modus-themes--ediff-style
      No feedback was received towards that end in about a month, so we
      consider the change to be acceptable, without prejudice to the
      possibility of future updates.
    + Unified the styles of 'org-agenda-calendar-sexp', 'org-agenda-diary',
      and 'org-agenda-calendar-event'.  This is not a user-facing change but
      an internal refactoring to avoid repetition.  It also makes things
      easier for the implementation of the 'modus-themes-org-agenda' (as
      mentioned above).
    + Ensured that the 'bookmark-menu-bookmark' face inherits from the
      'bold' face.  By default it hardcodes the bold weight, whereas we
      instruct it to inherit the 'bold' face.  A user can thus change the
      ':weight' of that face to whatever they want, like semibold,
      extrabold, etc.  We do this throughout the themes for bold and
      italics---consider it a "hidden feature" of sorts.  Check the manual
      for more on the matter:
          (info "(modus-themes) Configure bold and italic faces (DIY)")
    + Provided support for tab-bar groups (Emacs28).  Specifically the faces
      'tab-bar-tab-group-current' and 'tab-bar-tab-group-inactive'.
      Thanks to Adam Porter (alphapapa) for the feedback in issue 8 over at
      the Github mirror: <https://github.com/protesilaos/modus-themes/issues/8>.
    + Decoupled the 'stripes' face from that of 'hl-line-face'.  This is
      because the stripes are not meant to change depending on the value of
      the user option 'modus-themes-hl-line'.
    + Revised the red shade of "flagged" entries in mu4e and notmuch.  Those
      are now consistent with Gnus.  The shade of red that was used before
      was closer to the orange side of the spectrum whereas the current has
      hints of blue (a cherry colour) and thus combines better with the cyan
      and blue that prevail in those interfaces.  These are fine margins,
      though the effect is noticeable regardless.
    + Configured the new 'ansi-color' faces (Emacs28) which are used by
      shells and terminals (among others).  Thanks to Manuel Uberti for
      reporting the changes to upstream Emacs in issue 236:
    + Expanded support for EMMS faces, pertaining to its browser views.
      Thanks to Feng Shu (tumashu) for bringing those to my attention in
      issue 11 over at the Github mirror:
    + Styled the new 'tab-line-tab-modified' face (Emacs28).  It should now
      use a faint red colour to denote changes to the underlying file.
      Thanks to Adam Porter (alphapapa) for bringing it to my attention in
      issue 12 over at the Github mirror:
    + Configured the single face that the 'cursor-flash' package has to
      offer.  Thanks to Manuel Uberti for the feedback in issue 231:
    + Included 'elpher' in the list of supported packages by means of
      covering the heading faces it implements.
    + Recalibrated certain dedicated colours for inactive tabs and tweaked
      tab faces to (i) marginally improve the default aesthetic and (ii)
      harmonise it with the style of 'modus-themes-tabs-accented'.
    + Removed the foreground attribute from all markup faces that are meant
      to denote emphasis in italics.  That is because such faces are
      typically composed with others, so we do not wish to inadvertently
      override any other colour that would otherwise have taken effect.
    + Wrote the faces for upstream Org that improve the contextuality of
      various agenda views (included in version 9.5).  This was done in
      close collaboration with Gustavo Barros who offered detailed feedback
      in issue 208 (which also led to the creation and eventual expansion of
      the 'modus-themes-org-agenda' user option):
      Four new faces improve certain styles and offer more flexibility for
      some Org agenda views: 'org-agenda-date-weekend-today',
      'org-imminent-deadline', 'org-agenda-structure-secondary',
      'org-agenda-structure-filter'.  They inherit from existing faces in
      order to remain backward-compatible.
      Quoting from <https://list.orgmode.org/87lf7q7gpq.fsf@protesilaos.com/>:
          + The 'org-imminent-deadline' is useful to disambiguate generic
            warnings from deadlines.  For example, a warning could be
            rendered in a yellow colored text and have a bold weight,
            whereas a deadline might be red and styled with italics.
          + The 'org-agenda-structure-filter' applies to all tag/term
            filters in agenda views that search for keywords or patterns.
            It is designed to inherit from 'org-agenda-structure' in
            addition to the 'org-warning' face that was present before (and
            removes the generic 'warning' face from one place).  This offers
            the benefit of consistency, as, say, an increase in font height
            or a change in font family in 'org-agenda-structure' will
            propagate to the filter as well.  The whole header line thus
            looks part of a singular design.
          + The 'org-agenda-structure-secondary' complements the above for
            those same views where a description follows the header.  For
            instance, the tags view provides information to "Press N r" to
            filter by a numbered tag.  Themes/users may prefer to
            disambiguate this line from the header above it, such as by
            using a less intense color or by reducing its height relative to
            the 'org-agenda-structure'.
          + The 'org-agenda-date-weekend-today' provides the option to
            differentiate the current date on a weekend from the current
            date on weekdays.
    Other patches I have made to, inter alia, emacs.git and org.git with
    regard to faces are documented in previous change log entries.
    + Removed references to old versions of the themes from before their
      refactoring in version 1.0.0.  Those old packages no longer exist.
      Users must install the 'modus-themes' and then load either of
      'modus-operandi' or 'modus-vivendi'.
    + Included various extensions of the Vertico package in the list of
      indirectly supported packages.  Those define faces which either
      inherit from basic ones that we already support or use colours that
      are consistent with our accessibility target.
    + Referenced 'side-hustle', 'tide', 'bufler' as an indirectly supported
      packages for the same reasons.
    + Simplified time-stamp local variables that are used in modus-themes.el
      to show the time the file was edited.  We apply 'time-stamp-pattern'
      instead of setting multiple time-stamp variables.  Thanks to Stephen
      Gildea for the patch, which was sent to me via email (yes, you can
      always do that).
    + Updated the manual's "acknowledgements" section to name all new
      contributors to code/ideas/feedback.
    + Furnished information on how to configure the 'highlight-parentheses'
      package and extend its faces for use with the themes.  The entry
      provides a complete Elisp implementation.
    + Improved the code samples for the prism.el setup that users may wish
      to set up by themselves.  The new lists of colours work better when
      Prism's colouration is limited to a small set of hues.
    + Deleted trailing whitespace in the manual which had adverse effects
      when trying to compile the modus-themes.org over at emacs.git.  Thanks
      to Philip Kaludercic for the patch in merge request 49:
    Thanks again to everyone involved.  Looking forward to see the Modus
    themes, version 1.6.0, as part of the next stable release of Emacs.
  • 1.5.0
    b6fb7cda · Update to version 1.5.0 ·
    Modus themes version 1.5.0
    By Protesilaos Stavrou <info@protesilaos.com> on 2021-07-15
    This entry outlines the set of changes made to the project since the
    release of version 1.4.0 on 2021-05-25.  There have been over 130
    commits since then.
    Every colour-related modification referenced herein is always
    implemented 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).
    Such edits also account for colour-coding that is optimised for the
    needs of users with red-green colour deficiency (deuteranopia or
    Here is the URL of the manual: <https://protesilaos.com/modus-themes>.
    Or read it from Emacs by evaluating this form:
        (info "(modus-themes) Top")
    The themes are built into Emacs version 28 (current development target),
    and are available on GNU ELPA as well as other archives.
    Customisation options
    Overview of new style of sets of properties
    Several variables now accept a list of symbols as a value.  Those
    represent properties, which can be combined with each other to realise
    the possible styles.  The idea was to simplify their specification in
    order to make them easier to both maintain and extend.  Thanks to Philip
    Kaludercic for introducing this concept in issue 210:
    The variables are:
    + 'modus-themes-prompts' by Philip Kaludercic in merge request 43:
    + 'modus-themes-mode-line' by Philip Kaludercic in merge request 40:
    + 'modus-themes-lang-checkers' by Philip Kaludercic in merge request 46:
    + 'modus-themes-org-agenda'
    + 'modus-themes-links'
    + 'modus-themes-headings'
    + 'modus-themes-hl-line'
    + 'modus-themes-paren-match'
    + 'modus-themes-region'
    + 'modus-themes-syntax'
    Take 'modus-themes-syntax' as an example.  Up until version 1.4.0, it
    would only accept a symbol, signifying a predefined style.  So we had
    the possible value 'faint' and another 'faint-yellow-comments'.  To make
    a third variant of the "faint" aesthetic, such as by combining it with
    the "alt syntax" and/or "green strings", we would need to write new
    presets in the form of 'faint-green-strings', 'faint-alt-syntax',
    'faint-alt-syntax-green-strings', 'faint-green-strings-yellow-comments',
    'faint-alt-syntax-green-strings-yellow-comments'.  That would have been
    inefficient, hence why it was not done.
    With the new approach of defining a list of properties, those
    combinations are all possible.  Such as:
        (setq modus-themes-syntax '(faint alt-syntax))
        (setq modus-themes-syntax '(yellow-comments alt-syntax green-strings))
    The order in which the properties are set is not significant.
    The doc string of each of the aforementioned variables, or the
    corresponding entry in the manual, provides guidance on how to configure
    things.  The old forms will continue to work for the time being, though
    they are considered deprecated and will stop being supported at a future
    Changes in stylistic variants for variables with sets of properties
    + The meaning of the "alt syntax" style in 'modus-themes-syntax' has
      been redefined.  In the past, it used to have green-coloured strings
      and doc strings.  Those are now red.  Some other changes have been
      implemented to make the overall looks more consistent.  Users who
      liked the old style can retain it by passing this list of properties:
          (alt-syntax green-strings)
      New styles for the "faint" aesthetic are possible, here shown as lists
      of properties:
          (faint green-strings)
          (faint alt-syntax)
          (faint alt-syntax green-strings)
      To each of those the 'yellow-comments' property can be added as well.
      Consult the doc string or the manual for the technicalities and code
    + The 'modus-themes-hl-line' no longer has styles that include only an
      underline.  Those proved to be problematic under certain circumstances
      and were thus removed.
      Minor changes have been implemented to make the following combination
      of properties more consistent, by colourising the underline:
          (accented intense underline)
    + The 'modus-themes-paren-match' now has styles that include an
      'underline' property.  Those extend the old options, such as:
          (bold intense underline)
    + The 'modus-themes-headings' have an improved set of styles for the "no
      text color" aesthetic.  Those involve the 'monochrome' property, which
      can now yield results that include a background (whereas before it was
      just colourless text for the headings, optionally without a bold
      weight).  As this is an alist, here is an example (always check the
      docs for fully fledged code samples):
          (setq modus-themes-headings
                '((1 . (background overline))
                  (2 . (overline background rainbow))
                  (t . (monochrome no-bold background))))
      To allow a heading level N to retain its original style, a 't' value
      can be passed.  In the previous version of the themes, it was possible
      to use 'nil' for the same purpose, though that is no longer valid.  In
      those cases, the fallback value of the alist will be used instead,
      such as what is noted above:
          (t . (monochrome no-bold background))
    + The 'modus-themes-links' provide several new possible styles, due to
      an expanded set of properties that includes, among others, 'bold',
      'italic', and 'background'.  The documentation covers the details.
    + The 'modus-themes-lang-checkers' can now attain a style that uses a
      prominently coloured background in addition to what was available
      before as a subtle background and the other variants.
    New variables
    + The 'modus-themes-org-agenda' provides the means to refashion the
      entirety of the Org agenda buffer.  The value it accepts is an alist,
      with some keys expecting a symbol and others a list of properties.
      The minutia are covered in its doc string.  A possible configuration
      can look like this:
          (setq modus-themes-org-agenda
                '((header-block . (variable-pitch scale-title))
                  (header-date . (grayscale workaholic bold-today))
                  (scheduled . uniform)
                  (habit . traffic-light)))
      'modus-themes-org-agenda' supersedes the old variable that was specific
      to the Org habit graph: 'modus-themes-org-habit'.  There now is a
      'habit' key which accepts the same values as before, plus a new style
      that is optimised for users with red-green colour deficiency:
      'traffic-light-deuteranopia'.  Please consult the doc string of
      'modus-themes-org-agenda' or the relevant entry to the manual.
      Thanks to Gustavo Barros for contributing to the creation of this
      variable as well as to all other changes in the relevant faces that
      were done in the interest of usability.  A full report about
      'modus-themes-org-agenda' with screen shots is available here:
      A patch has been sent to upstream Org, with its review pending, which
      improves upon some of the areas we had identified:
    + The 'modus-themes-inhibit-reload' controls a new behaviour of
      automatically reloading the active theme when an option is set via the
      Custom interfaces or with 'customize-set-variable'.  To opt-in to this
      feature, set the variable to a 'nil' value.
      Thanks to Philip Kaludercic for implementing this in merge request 40:
      In the development phase of this option, a bug was identified
      pertaining to recursion, as reported by Gustavo Barros in issue 213:
      <https://gitlab.com/protesilaos/modus-themes/-/issues/213>.  Changes
      have been made to remove that possibility, as found in merge request
      45: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/45>.
      A thread was started on the emacs-devel mailing list to inquire upon
      the technicalities of this option, but it did not gain any traction:
      As such, we have decided to take our chances by pressing on with this
      feature.  Users who are interested in it are encouraged to give it a
      try and report any possible complications.  Issue 213 remains open.
    + The 'modus-themes-italic-constructs' is the new name of the variable
      'modus-themes-slanted-constructs'.  The term "slant" was considered
      too vague or technical and some users could have missed the meaning of
      this option.
    + The 'modus-themes-scale-5' is renamed to 'modus-themes-scale-title' to
      better convey its utility.
    Changes to the manual
    + Rewrote or introduced the documentation for all the customisation
      options mentioned above.  Also updated relevant code samples, such as
      in the manual's introduction to the customisation options.  Evaluate
      this form for an annotated code overview:
          (info "(modus-themes) Customization Options")
    + Rephrased a reference to "gamma ray values" as "gamma values".  Thanks
      to Anders Johansson for the contribution in merge request 42:
    + Removed the Org macro that would insert the build date in the manual's
      introduction.  This was required to make the file reproducible,
      otherwise it would keep changing each time a new version of Emacs was
      built.  Refer to Emacs bug#48661 by Glenn Morris:
    + Included note on tweaking the key hints that the Avy package produces.
      This is in response to issue 215 by Rudolf Adamkovič:
      <https://gitlab.com/protesilaos/modus-themes/-/issues/215>.  Thanks to
      Nicolas De Jaeghere for providing the text.
    + Wrote a note on how to control the underlines that are generated in
      compilation-mode buffers and related.  It is about configuring the
      variable 'compilation-message-face'.
    + Documented how to configure the colours that are applied to the names
      of the days in the 'M-x calendar' interface.  The relevant variable is
    + Elaborated on a "do it yourself" (DIY) guide on how to benefit from
      the hidden feature of the themes about how they handle the bold weight
      and the italic slant.  In short, we do not hardcode values and thus
      make it easy for users to specify the particularities of what it means
      for a face to have a 'bold' or 'italic' attribute.
    Faces and face groups
    New entries
    Newly supported packages:
    + 'ledger-mode'.  Thanks to Pengji Zhang for the feedback in issue 202:
    + 'gotest'.  Thanks to Jerry Zhang for the feedback in issue 226:
    + 'css-mode'
    New faces for already supported groups:
    + 'shr-h1', 'shr-h2', 'shr-h3', 'shr-h4', 'shr-h5', 'shr-h6' of the
      shr.el library (simple HTML renderer, as experienced in, for example,
      EWW).  Those are available for Emacs28, with a patch by me:
    + 'apropos-button' as a generic face that fontifies faces in apropos
      buffers.  Available for Emacs28, with a patch by me:
    + 'selectrum-mouse-highlight'.  This makes the mouse hover effect for
      selectrum look the same as in most other contexts.  Thanks to okamsn
      for the feedback in issue 203:
    Review of existing entries
    + Added an ':extend' property to 'next-error' face.  This face is used
      for pulse effects.  It is good to have them extend to the edge of the
      window, so that they are easier to spot.  Thanks to Gustavo Barros for
      the feedback in issue 200, which is about pulse.el:
    + Tweaked the various Apropos faces.  The idea was to remove the colour
      from the pseudo headings so that we would not get an exaggerated
      result of too much variety in the buffer (e.g. that of 'M-x apropos').
      The individual buttons retain their style as links, meaning that they
      are governed by the variable 'modus-themes-links'.
    + Revised 'whitespace-line' face to make it look like a warning, as it
      ought to be.  Thanks to Pengji Zhang for the feedback in issue 204:
    + Reworked the colour-coding of the Hydra and Transient packages.  These
      are meant to tone down some excesses with the standard red and to
      adapt other colours to it.  Thanks to Gustavo Barros for providing
      suggestions and helping me tweak those in issue 206:
    + Recoloured 'transient-argument' to improve its uniqueness in its
      context and to better comply with the expectation of hydra-style
      colour coding, as noted right above.
    + Made the 'org-agenda-done' face conform with the customisation option
      'modus-themes-success-deuteranopia'.  This means that it will be
      coloured in blue instead of green when the option is set to a non-nil
    + Grayed out the foreground of the Org block delimiter lines on the
      premise that any extra colouration was not needed, given the presence
      of a gray background and the overall markup of the block.
    + Toned down the colouration of the 'org-code' face, so that it is
      consistent with 'org-verbatim' as well as the colours used in opening
      and closing lines of blocks.  Thanks to Gustavo Barros for suggesting
      this change in issue 206, though it went through a couple of reviews:
    + Simplified the inheritance of the 'fixed-pitch' face, which is used
      for internal purposes to ensure alignment of elements in buffers that
      must cope with mixed font configurations, such as an org-mode file
      with 'M-x variable-pitch-font' enabled.
      [ Recall that the option 'modus-themes-no-mixed-fonts' can disable
        this feature.  Also note that the 'mixed-fonts' package, or
        equivalent, is not needed while using the Modus themes (though there
        is nothing wrong with having them together). ]
    + Reduced the overall intensity of 'org-mode-line-clock-overrun'.
      Thanks to Gustavo Barros for the feedback in issue 208:
    + Simplified or otherwise tweaked several Org agenda faces to render
      possible the new 'modus-themes-org-agenda' variable, as documented
      above.  Thanks to Gustavo Barros for the feedback in issue 208:
    + Increased ever so slightly the foreground colour of the 'highlight'
      face.  This can help improve the perception of highlights, such as
      upon hovering over a link with the mouse.  Thanks to Rudolf Adamkovič
      for reporting the potential problem in issue 216:
    + Prevented the override of the 'diff-context' face when users assign a
      'bg-only' value to the 'modus-themes-diffs' variable.  This makes it
      consistent with the intent of this style, which is to work with a
      non-nil value for 'diff-font-lock-syntax' (basically to allow the
      usual colour highlights of the underlying code syntax in diff
    + Ensured consistency of all prompt-related faces by introducing a new
      face, 'modus-themes-prompt', that is inherited by all others (all
      prompt styles are controlled by the variable 'modus-themes-prompts').
      This was originally implemented with the 'comint-highlight-prompt'
      face, though that could potentially lead to undefined faces if the
      comint library was not loaded.  Whereas the 'modus-themes-prompt'
      guarantees that we pass a known face at all times.  Thanks to Philip
      Kaludercic for bringing this potential bug to my attention in a
      comment to merge request 43:
    + Removed the background colour from the 'widget-inactive' face.  It
      would create problems in some cases, such as in Custom buffers for
      multiple choice options.
    + Refined 'calendar-weekend-header' and 'calendar-weekday-header' to
      emulate the design of physical calendars and remain truthful to the
      expectations set by the default configuration of the calendar.el
      library.  Weekends now use a faint red, while weekdays are rendered in
      the same subtle gray they had before.  The underlying principle is to
      make weekends convey a subtle warning to the effect that "this is not
      a day for work" (notwithstanding precarious economic realities).  As
      noted above, there is an entry in the manual on how to make all days
      look the same, be it gray or faint red.  Evaluate this form:
          (info "(modus-themes) Note on calendarel weekday and weekend colors")
    Request for feedback on a potential version 2.0.0 of the Modus themes
    While we maintain a cautious stance towards preserving the default
    styles, there are some cases where we might be forced to introduce
    backward-incompatible changes.
    Three such cases that can benefit from user feedback are:
    + Issue 196 on 'modus-themes-no-mixed-fonts'
    + Issue 198 on 'modus-themes-hl-line'
      [ Note that 'modus-themes-hl-line now accepts a list of properties as
        described in the opening sections of this entry. ]
    + Issue 218 on 'modus-themes-diffs'
    + Recalibrated the value of the colour 'bg-hl-line-intense' in the
      palette 'modus-themes-vivendi-colors'.  The change should be
      practically indecipherable, though it slightly improves things in
      certain contexts.
    + Refined the intensity of the three main yellow colours in
    + Introduced a new 'modus-themes-faces' group so that those are
      decoupled from the customisation options in the various Custom
      buffers.  Thanks to Philip Kaludercic for the patch in merge request
      39: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/39>.
    + Updated the manual's "Acknowledgements" section to include all new
      users who contributed to the project.
    Thanks again to everyone involved!
  • 1.4.0
    15c973f7 · Update to version 1.4.0 ·
    Modus themes version 1.4.0
    By Protesilaos Stavrou <info@protesilaos.com> on 2021-05-25
    This entry records the changes made to the project since the release of
    version 1.3.0 on 2021-04-17.  There have been around 100 commits in the
    meantime, as is the norm.
    If you are coming from older versions, please consult the change log
    entry for version 1.0.0 with regard to the breaking changes that were
    Every colour-related modification is always done in accordance with the
    overarching 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).
    URL of the official manual: <https://protesilaos.com/modus-themes>.  Or
    read it with Emacs' Info reader by evaluating this form:
        (info "(modus-themes) Top")
    Remember that the themes are built into Emacs version 28 (current
    development target), and are available on GNU ELPA, as well as other
    Customisations variables
    + Redefined the style of 'fg-only' that 'modus-themes-diffs' accepts, so
      that it no longer uses a red-green colour coding, but applies a
      red-blue distinction instead.  The symbol 'fg-only' is a deprecated
      alias for the more descriptive 'fg-only-deuteranopia'.
      This is done because green text on a light background is one of the
      worst combinations for the purposes of legibility, as it does not
      stand out in its context and thus forces undesirable compromises.
      Whereas red and blue work well in this case, while making the style
      accessible to users with red-green colour deficiency (deuteranopia).
      To avoid inconsistencies between Modus Operandi and Modus Vivendi, we
      replace green with blue in both themes.  A full report is available in
      issue 183 which was created on April 21, 2021:
    + Introduced the boolean 'modus-themes-success-deuteranopia' which
      replaces all instances of green with blue in contexts where a
      red-green colour coding is in effect (e.g. Org TODO vs DONE keywords,
      isearch current match...).
    + Implemented 'modus-themes-mail-citations' to control the colouration
      of cited text in email-related buffers, such as Gnus or message.el.
      It accepts values nil, 'faint', and 'monochrome'.  By default (the nil
      value) the text of citations cycles through blue, green, red, yellow
      depending on the level of depth.
    + Expanded the set of options for 'modus-themes-mode-line' to encompass
      the values 'borderless-accented', 'borderless-accented-3d', and
      'borderless-accented-moody'.  Those are variations of existing styles.
      The complete list:
      - nil (default)
      - 3d
      - moody
      - borderless
      - borderless-3d
      - borderless-moody
      - accented
      - accented-3d
      - accented-moody
      - borderless-accented
      - borderless-accented-3d
      - borderless-accented-moody
    + Renamed the non-nil values that 'modus-themes-org-blocks' accepts from
      'grayscale', 'rainbow' to 'gray-background' and 'tinted-background',
      respectively.  The new symbols better describe their effect on Org
      source blocks, namely, that they affect the background of the block
      rather than the foreground.  The old symbols will still work but are
      considered deprecated aliases of the newer ones.
    + Altered the intensity of the 'modus-themes-hl-line' option
      'accented-background' to a more noticeable shade of cyan/teal.  The
      old style was too subtle to have the desired effect.  The value
      'underline-accented' is not affected by this change, as it still uses
      the same subtle background it did before in combination with a more
      pronounced underline colour.
    + Deleted all deprecation warnings that concerned the transition from
      version 0.13.0 of the themes to 1.0.0.  Those had been in effect for
      several months, spanning four tagged releases.
    Faces or face groups
    + Reconsidered the use of colour in all email-related citation faces to
      avoid exaggerations and reduce complexity.  Colour values have been
      tweaked to tone down their overall intensity, while the number of
      colours has been reduced to four.  Gnus and Mu4e have faces for more
      levels of citation depth, though those will simply repeat the
      four-colour cycle.
    + Made the 'message-mml' face look consistent with the rest of the
      buffer while composing an email by changing its foreground colour from
      a yellow to a cyan variant.
    + Refined several faces in the Notmuch group in the interest of harmony:
      - Individual message headers in 'notmuch-show-mode' use bold text in
        addition to their existing subtle background to better stand out in
        their context. The face is 'notmuch-message-summary-face'.
      - Tags are no longer set unconditionally to a bold typographic weight.
        They become such for unread threads in 'notmuch-search-mode'
        buffers, as well as for headers of 'notmuch-show-mode'.
      - Removal and addition of tags is now denoted by a strike-through and
        an underline effect, respectively, whereas before they both used
        underlines with the only difference being their colour.
      - The subject line in 'notmuch-search-mode' buffers uses the main
        foreground instead of a dimmed one.  The field of matching authors
        has a tweaked foreground to keep the tabular view easy to read.
      - All cryptography-related faces are simplified to not show a coloured
        background but only use a foreground colour instead.
    + Removed direct support for 'counsel-notmuch' as it already inherits
      from the relevant notmuch faces.  The package is thus considered
      indirectly supported.
    + Refrained from setting a background to the 'csv-separator-face' as it
      would inevitably colourise the negative space in the tabular view
      created by 'csv-align-mode'.  A red text colour is used instead, even
      though this is not common practice: it is easier to spot for small,
      single characters, such as a comma or a semicolon that is meant to
      have a special meaning.  Thanks to Kevin Fleming for reporting the
      problem and for offering feedback on the choice of colour in issue
      194: <https://gitlab.com/protesilaos/modus-themes/-/issues/194>.
    + Distinguished between ordinary links and widget buttons by removing
      the underline from the latter (the 'widget-button' face) and altering
      the shade of its foreground colour.  Such widgets are used in Emacs'
      Custom interfaces and can also be found in the default Notmuch "hello"
      buffer that runs 'notmuch-hello-mode'.
    + Tweaked the Ediff current faces to be consistent with 'diff-mode' and
      related.  In practice, this only applies when 'modus-themes-diffs' is
      set to a value of 'fg-only-deuteranopia', as it adds a dim background
      to the current diff hunk.  All other styles of 'modus-themes-diffs'
      look the same as before while using Ediff.
    + Simplified the faces of 'corfu' to match the current state of the
      upstream project.  Thanks to Daniel Mendler (its developer) for
      reporting this in issue 184:
    + Refined all Eshell faces so that the output of 'ls' is consistent with
      the overall aesthetic of the themes.  Also made 'eshell-prompt'
      inherit from 'comint-highlight-prompt' to look the same as other such
      prompts (all are configurable by 'modus-themes-prompts').
    + Revised 'eshell-prompt-extras' and 'eshell-git-prompt' to use colours
      and typographic weight that better match the style of the various
      configurations they offer.
    + Simplified 'eshell-syntax-highlighting' to inherit from the standard
      Eshell faces, where appropriate.
    + Adjusted the colour of 'centaur-tabs-active-bar-face' and removed the
      bespoke 'fg-tab-accent' colour from 'modus-themes-operandi-colors' and
      'modus-themes-vivendi-colors' that was only used by it (and which
      should have never been introduced to begin with).
    + Updated the 'tab-bar-groups' faces to match changes upstream.  Thanks
      to Fritz Grabo (its developer) for the patch in merge request 35:
    + Changed the Ibuffer title and group faces to better differentiate
      between group titles and special or non-file-visiting buffers.  Thanks
      to Nicolas De Jaeghere for the patch in merge request 37:
    + Ensured that all faces that denote a "success" state, or which are
      expected to be coloured in green in a red-green binary, can use an
      appropriate blue colour (or colour combination that involves blue)
      instead when 'modus-themes-success-deuteranopia' is set to a non-nil
    + Added support for the new 'bookmark-face' in Emacs version 28.  This
      means that the built-in bookmark.el library is directly supported by
      the themes.  This face can be disabled by setting 'bookmark-fontify'
      to nil.  Thanks to Mark Barton for reporting the presence of this new
      face and for providing feedback on its style in issue 189:
    + Aligned 'hes-mode' ('highlight-escape-sequences') with the standard
      font-lock faces for regexp grouping.  This means that it conforms with
      changes to the 'modus-themes-syntax' variable.
    + Reconfigured the 'org-quote' face to adapt its style depending on the
      value of 'modus-themes-org-blocks'.  The default is a subtle blue/cold
      foreground colour against the main background.  When a value of
      'gray-background' is assigned to 'modus-themes-org-blocks', the text's
      colour becomes that of the main foreground in order to maintain a good
      level of legibility.  Thanks to Rudolf Adamkovič for the feedback in
      issue 190: <https://gitlab.com/protesilaos/modus-themes/-/issues/190>.
    + Refashioned the 'show-paren-match-expression' face to make it apply a
      bespoke background colour and not override the expression's foreground
      colours.  This face is used by 'show-paren-mode' when the
      customisation variable 'show-paren-style' is set to the 'expression'
      value.  Thanks to Rudolf Adamkovič for the feedback in issue 191:
    + Made headings level 8 use a fine shade of magenta by default instead
      of gray (notwithstanding user changes to 'modus-themes-headings').
      This should have a negligible difference in Org or Outline buffers,
      but is more noticeable when editing Elisp in Emacs28 while also using
      'outline-minor-mode' and with 'outline-minor-mode-highlight' set to
      'override'.  That is because several top-level forms use that heading
      level with those configurations.
    Documentation (the manual)
    + Incorporated a sample configuration block with all customisation
      variables and with comment annotations of their available options, in
      an attempt to make it easier for users to discover what the themes
    + Replaced all instances of "modeline" with "mode line" for consistency
      with the Emacs style.  Thanks to Rudolf Adamkovič for the patch that
      started this process in merge request 33:
    + Wrote note on setting mode line faces that indicate the state of
      'god-mode'.  Thanks to Rudolf Adamkovič for the feedback in issue 187:
      <https://gitlab.com/protesilaos/modus-themes/-/issues/187>.  Also
      thanks to Rudolf for updating the applicable hook in merge request 34:
    + Listed 'org-mode' variables that affect fontification in blocks:
      'org-src-fontify-natively', 'org-fontify-whole-block-delimiter-line',
      and 'org-fontify-quote-and-verse-blocks'.  This complements the
      already documented variables 'org-fontify-whole-heading-line' and
      'org-fontify-done-headline' that pertain to headings.
    + Included note on fontifying inline Latex expressions in Org buffers.
      Thanks to Rudolf Adamkovič for the feedback in issue 190:
    + Elaborated on the use of 'face-remap-add-relative' by means of sample
      code that cycles through arbitrary colours for the 'region' face.
      This is filed under the "Do It Yourself" (DIY) section.
    + Provided a DIY method for adapting the fontification of Org source
      block delimiter lines to the value of 'modus-themes-org-blocks'.
    + Expanded the DIY entry on overriding the saturation of the active
      theme's colours with a method that combines the programmatic approach
      with manual overrides.  The user can thus specify the colour values
      they want to override and let the rest be handled by Elisp.
    + Introduced a section with answers to Frequently Asked Questions (FAQ)
      about the design of the themes as well as recommendations on how to
      ensure optimal reading conditions or start thinking about them.  The
      questions are:
      - Is the contrast ratio about adjacent colors?
      - What does it mean to avoid exaggerations?
      - Why are colors mostly variants of blue, magenta, cyan?
      - What is the best setup for legibility?
    + Removed superfluous code from internal functions and adapted their
      indentation to make them easier to read.
    + Recalibrated some values in 'modus-themes-vivendi-colors' to ensure
      consistency in luminance with other colours that are used in their
      context.  Those are subtle changes that can only be discerned in
      side-by-side comparisons of the before and after states.  Thanks to
      André Alexandre Gomes for the feedback in issue 193:
    + Changed the saturation and hueness of the bespoke 'fg-comment-yellow'
      in 'modus-themes-operandi-colors' and 'modus-themes-vivendi-colors' to
      better contrast with its context, while still keeping its luminance
      consistent with its role as a colour for comments in code.  This is
      used when 'modus-themes-syntax' is configured appropriately (read its
      doc string or consult the manual).
    + Attempted to add explicit support for the faces of the built-in
      pulse.el library, but ultimately opted against them as the doc string
      of 'pulse-highlight-face' advises against customising it, even though
      it is not clear from the source code in emacs.git what the problem
      could be.  We shall reconsider this case for the next release cycle.
      Thanks to Gustavo Barros for the feedback on several aspects of this
      topic in issues 185 and 200:
      - <https://gitlab.com/protesilaos/modus-themes/-/issues/185>
      - <https://gitlab.com/protesilaos/modus-themes/-/issues/200>
    + Took the feedback of John Haman in issue 199 as a reminder to complete
      the set of possible values for the 'modus-themes-mode-line' variable:
  • 1.3.2
    a3ff6dc9 · Update to version 1.3.2 ·
  • 1.3.1
  • 1.3.0
    Modus themes version 1.3.0
    By Protesilaos Stavrou <info@protesilaos.com> on 2021-04-17
    This entry records the changes introduced to the project since the
    publication of version 1.2.0 (2021-03-04).  There have been around 100
    commits in the meantime, as is the norm with all releases hitherto.
    Every colour-related modification documented herein conforms with the
    overarching 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).
    As the official manual is referenced several times throughout this log,
    make sure to store its URL: <https://protesilaos.com/modus-themes>.  Or
    read it from Emacs' Info reader by evaluating this form:
        (info "(modus-themes) Top")
    If you are coming from older versions, please consult the change log
    entry for version 1.0.0 with regard to the breaking changes that were
    Remember that the themes are built into Emacs28, and are available on
    GNU ELPA, as well as other archives.
    Customisation options
    + The old 'modus-themes-intense-hl-line' boolean variable has been
      replaced by 'modus-themes-hl-line', which provides several options for
      how to style the current line of 'hl-line-mode'.  To retain the old
      effect, one must do this:
          ;; Replacement for (setq modus-themes-intense-hl-line t)
          (setq modus-themes-hl-line 'intense-background)
      The list of possible values:
        1. nil (default)
        2. intense-background
        3. accented-background
        4. underline-neutral
        5. underline-accented
        6. underline-only-neutral
        7. underline-only-accented
      The doc string of 'modus-themes-hl-line' as well as the manual
      describe the specifics.  Thanks to Manuel Uberti for the feedback in
      commit b020592:
    + The 'modus-themes-mode-line' variable now accepts three new "accented"
      styles that complement the existing set:
        1. nil (default)
        2. 3d
        3. moody
        4. borderless
        5. borderless-3d
        6. borderless-moody
        7. accented
        8. accented-3d
        9. accented-moody
    + The 'modus-themes-region' is extended with two new options of an
      "accent" background:
        1. nil (default)
        2. no-extend
        3. bg-only
        4. bg-only-no-extend
        5. accent
        6. accent-no-extend
    + The default value of 'modus-themes-headings' for per-level styles can
      now be set to nil.  This fixes an inconsistency between the fallback
      value, which accepted nil, and the per-level styles which did not.
      Thanks to Mauro Aranda for reporting this in issue 163:
      Please read the manual for the specifics of this variable, as it is an
      alist that accepts several possible combinations.
    Updates to the manual
    + Rewrote the sections that cover the aforementioned customisation
      - For 'modus-themes-mode-line', we had to revise the recommendation
        for setting 'face-near-same-color-threshold' to 45000.  That value
        is appropriate for the 'moody' and 'borderless-moody' options.
        Whereas for 'accented-moody' the number should be raised to 70000.
        Thanks to Nicolas De Jaeghere for providing this piece of
    + Rephrased the GNU Free Documentation License quote to match the style
      of other manuals that are also built into Emacs.
    + Documented 'org-mode' variables that affect the looks of various
      fontification styles.
    + Simplified the 'kbd' macro that is declared in modus-themes.org to
      allow GNU ELPA's build system to parse the file for Emacs 26.
    + Documented existing support for 'tab-bar-mode' and 'tab-line-mode'.
    + Wrote a note on how to configure the 'dimmer.el' library by Neil
      Okamoto, in order to guarantee consistent results with the themes.
      The key is to use the RGB colour space instead of CIELAB.
    + Included note on shr.el fonts and how those are used by EWW and
    + Added a "Do-It-Yourself" (DIY) section on how to remap buffer-local
    + Detailed a DIY method to make the buffer-local backdrop of a pdf-tools
      page use a distinct colour than the default white for Modus Operandi.
      Extended the same principle to Modus Vivendi and described how to
      adapt to theme changes (such as via 'modus-themes-toggle').  Thanks to
      Utkarsh Singh for providing feedback on this topic in issue 175:
    + Elaborated on DIY techniques to programmatically override the
      saturation of all colours specified by the active Modus theme.  Thanks
      to user pRot0ta1p for the feedback in issue 166:
    Support for packages
    These are added to the already comprehensive list of explicitly
    supported packages:
    + corfu
    + embark
    + pandoc-mode.  Thanks to Farasha Euker for the feedback in issue 171:
    + tab-bar-groups
    + telega
    + vertico
    Also added support for the 'help-key-binding' face which is part of
    Emacs 28.
    Changes to already supported faces or face groups
    + Renamed all internal faces that the themes defined from
      "modus-theme-*" to "modus-themes-*".
    + Refashioned all Ediff faces in the process of a major review of this
      tools' overall design.  The manifold changes are:
      - All inactive diffs respect the underlying fontification
        (e.g. programming syntax highlighting).  Before they would override
        it with a gray foreground.
      - All inactive diffs have been toned down, as their background is a
        finer shade of gray than the prominent one that was used before.
      - There no longer is a visual distinction between even and odd
        inactive diffs (by means of different shades of gray).  We are of
        the opinion that such subtleties, whose utility is marginal at best,
        have no place in themes that are designed for accessibility.
      - All bespoke gray colour combinations that were only intended for
        those inactive diffs have thus been removed from each theme's
      - Active diffs follow the same style as diff-mode, to ensure
        theme-wide consistency (all diff styles are controlled by the
        variable 'modus-themes-diffs').
      This topic was discussed at length (with screenshots) in issue 169:
      <https://gitlab.com/protesilaos/modus-themes/-/issues/169>.  Thanks to
      peniblec and Nicolas De Jaeghere for their feedback.
    + Made 'smerge-markers' and 'vdiff-closed-fold-face' look like the
      headings in 'diff-mode' in the interest of consistency, especially
      while configuring the 'modus-themes-diffs' variable.
    + Ensured consistency between all faces that pertain to key bindings in
      contexts where the hint to the key is active, in that pressing the key
      performs the action (e.g. Magit's transient buffers, which-key,...).
      The 'help-key-binding' for Emacs 28 is not included in this group,
      because it applies in cases where the keys are not active, such as in
      Help buffers.
    + Refined 'epa-validity-disabled' and 'epa-validity-high' faces.  The
      former no longer uses a background, as that was considered an
      exaggeration.  While the latter is cast in a cyan hue instead of green
      for greater clarity (this relates to the general push to optimise for
      red-green colour deficiency, which means to only use green where it is
      absolutely necessary and, in such cases, to provide for a blue-ish
      alternative, as with the 'deuteranopia' value that can be assigned to
    + Reworked 'ace-window', 'avy', and 'magit-blame' faces to ensure that
      their overlays do not inherit the face properties of underlying text,
      such as a different font family or height.  Thanks to Nicolas De
      Jaeghere for the multiple merge requests and the concomitant feedback:
      - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/27>.
      - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/29>.
      - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/30>.
      - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/31>.
      - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/32>.
      Also thanks to Damien Cassou for reporting an intermediate problem
      with 'avy' in issue 177; a problem that was eventually addressed by
      Nicolas De Jaeghere in merge request 31 (cited above):
    + Optimised the colour combinations used by 'avy' to improve the
      distinction between consecutive characters.
    + Reduced the brightness of EWW certificate faces, as they would attract
      disproportionate attention to themselves.
    + Reworked all EWW text field and button faces to look more like what
      they are supposed to.
    + Removed the slant and distinct foreground from the 'org-quote' face,
      as they would interfere with emphasis within the quote block.  Thanks
      to Farasha Euker for the feedback in issue 171:
    + Reduced the intensity in colouration of 'org-code' and 'org-macro' in
      order to avoid exaggerations and prevent their compounding effect in
      technical documents that include a high concentration of those faces.
      They still retain their overall character and continue to look like
      variants of 'org-verbatim'.
    + Extended support for Selectrum's new 'selectrum-quick-keys-highlight'
      and 'selectrum-quick-keys-match'.
    + Adjusted a few bongo faces for improved consistency and a more
      pleasant result overall.  Quote from commit 07224cda08:
          Refine bongo faces for consistency
          The previous design was meant to keep the track fields distinct
          from each other.  However the use of yellow was not good
          aesthetically: it does not fit with the rest of the theme.
          Upon further experimentation, I realised that the album field
          (yellow) is only present when the artist and title fields are also
          available: first is the title, then the artist, and finally the
          album.  This is true even with 'bongo-join-inserted-tracks' set to
          a non-nil value.  So changing the face from yellow to a neutral
          value is safe.
          The other two faces are adapted to look better in the new context.
    + Made more command prompt faces respond to changes in the variable
      'modus-themes-prompts'.  This concerns faces from the groups cider,
      circe, erc, indium, rcirc.
    + Refashioned typescript faces, making them more prominent by default,
      while also exposing them to the value of 'modus-themes-syntax'.
    + Revised the style of 'info-colors-ref-item-command'.  This makes
      commands look the same as functions, which is technically correct.  It
      also predicates the exact style on the value of the variable
    + Made all enh-ruby-mode faces adapt to 'modus-themes-syntax'.  Same for
    + Reconfigured all ztree faces for stylistic consistency.  The
      'ztreep-diff-model-add-face' now responds to the 'deuteranopia' value
      that can be passed to 'modus-themes-diffs'.
    + Appended the ':extend t' attribute to 'gnus-summary-cancelled' and
      'gnus-summary-selected'.  These are only noticeable on Emacs 28
      following commit 88409b21c2 in emacs.git.
    + Tweaked all faces of 'highlight-changes-mode' to better deliver on the
      intent of that mode.
    + Opted to unconditionally render all 'dired-async' faces in a bold
      typographic weight, instead of basing them on a non-nil value for
      'modus-themes-bold-constructs'.  Also changed 'dired-async-message' to
      a blue foreground, which further improves the themes' performance for
      red-green colour deficiency.
    + Adjusted the colours of some 'notmuch-crypto-*' faces to better convey
      their meaning.
    + Removed remaining conditional logic for underline styles in some
      spell- and linter- related faces to ensure that all such cases are
      controlled by the variable 'modus-themes-lang-checkers' (building on
      work that had been done in the past).
    + Stopped changing 'keycast-key' to match the modeline style, as that
      diluted the meaning of the variable 'modus-themes-mode-line'.
    + Tweaked calendar and diary faces for stylistic effect, except for the
      'diary' face which has been converted from a green to a blue variant
      for the purposes of coping with cases of red-green colour deficiency.
    + Clarified the changes in the backward-incompatible transition from
      version 0.13.0 of the themes to >= 1.0.0.  Thanks to Damien Cassou for
      reporting the absence of easy-to-find information in issue 174:
    + There were three point releases after 1.2.0 which refined certain
      aspects of the themes' packaging so that they could work both as
      built-in themes for Emacs as well as in package format via the likes
      of GNU ELPA.  Those issues were eventually resolved by Basil
      L. Contovounesios:
      - Issue 162: <https://gitlab.com/protesilaos/modus-themes/-/issues/162>.
      - Emacs bug#45068: <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45068#218>.
    + Rewrote the 'modus-themes-headings' variable's declaration to improve
      its presentation in Custom interfaces.  Thanks to Mauro Aranda for
      submitting the patch for commit 1c60927ebd.
    + Applied the ':format' keyword to all 'defcustom' forms, based on the
      aforementioned patch.  This should make all options look better in the
      various Custom interfaces.  Thanks to Mauro Aranda for the feedback in
      issue 163: <https://gitlab.com/protesilaos/modus-themes/-/issues/163>.
    + Refined the colour values 'bg-alt' and 'bg-dim' in 'modus-vivendi' to
      improve their instantiation on Textual User Interfaces.  In
      particular, recalibrated the blue channel of light so that when the
      TUI cannot render the colour directly, it defaults to a gray value
      instead of a dark blue.
    + Added a "Last-Modified" meta header to modus-themes.el, with gets
      updated automatically and uses a timestamp.  This helps users who
      track the themes' git repo directly.  Thanks to Togan Muftuoglu for
      the feedback in issue 168:
    + Expanded the palette of each theme with accent values that are
      reserved for use in the tab-bar.  Those are used by the newly
      supported 'tab-bar-groups' package.
    + Recalibrated a few colour combinations to improve their resulting
      legibility.  The changes should not be noticeable to the untrained
      eye.  Interested parties can consult commit 349ea4a943.
    + Tweaked the hueness of the 'yellow-active' colour of 'modus-operandi'.
    Thanks once again to everyone involved!
  • 1.2.3
    0a36239b · Update to version 1.2.3 ·
  • 1.2.2
    ece5f3b9 · Update to version 1.2.2 ·
  • 1.2.1
  • 1.2.0
    68dff175 · Update to version 1.2.0 ·
    Modus themes version 1.2.0
    By Protesilaos Stavrou <info@protesilaos.com> on 2021-03-04
    This entry records the changes introduced to the project since the
    publication of version 1.1.0 (2021-01-24).  There have been close to 100
    commits in the meantime.
    Every colour-related modification documented herein conforms with the
    overarching 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).
    As the official manual is referenced several times throughout this log,
    make sure to store its URL: <https://protesilaos.com/modus-themes>.  Or
    read it from Emacs' Info reader by evaluating this form:
        (info "(modus-themes) Top")
    If you are coming from older versions, please consult the change log
    entry for version 1.0.0 with regard to the breaking changes that were
    Prior notice: Upgrading the themes in Emacs28 and GNU ELPA
    Emacs28, the current development target, now includes a 'require-theme'
    function.  It is a prerequisite to upgrading the Modus themes to their
    current version.  Prior to the definition of that function, the themes
    could not transition from their 0.13.0 version to >=1.0.0.  Special
    thanks to Basil L. Contovounesios for making it happen, as well Mauro
    Aranda and Eli Zaretskii for their feedback and support.
    Expect the Modus themes in upstream Emacs to be updated shortly after
    the publication of this document.
    GNU ELPA currently ships version 0.12.0 of the two standalone packages
    'modus-operandi-theme' and 'modus-vivendi-theme'.  This will change in
    the immediate future, as a new 'modus-themes' package will succeed them.
    That new package will be built directly from emacs.git, as it must now
    become a ':core' entity instead of being listed as an ':external' one.
    Again, expect a patch to be applied to elpa.git shortly after this
    document goes live.
    Customisation options
    [ All variables and their values are documented in the themes' manual.
      The default value is always nil. ]
    + The new boolean 'modus-themes-subtle-line-numbers' variable will make
      the effect of 'display-line-numbers-mode' more subtle when set to a
      non-nil value.  It removes the underlying background of the unfocused
      lines while toning down their foreground.
    + The 'modus-themes-diffs' variable now accepts a 'deuteranopia' value.
      This optimises for red-green colour deficiency in all modes that show
      diffs (diff-mode, ediff, Magit...).  In practice, all instances of
      green are replaced with appropriate blue hues.  For more on the
      matter, read the report which also includes pictures:
    + The 'modus-themes-syntax' variable now reads 'faint-yellow-comments'
      as a valid value.  This has the same scope as the existing 'faint'
      value with the added effect of assigning a yellow tint to comments: it
      tones down the saturation of colours that apply to code syntax
      (standard font-lock faces and others inheriting from them).
    + The 'modus-themes-links' variable is expanded to accept the new value
      of 'neutral-underline-only': it removes the foreground from the link
      and draws a neutral gray underline below it.
    Refinements to existing packages or face groups
    + Refashioned all faces that pertain to emails, including Gnus, Mu4e,
      Notmuch, and the standard 'message.el' library.  This concerns the
      colours that apply to the message header keys and their values, as
      well as quote levels.
      - Introduced more contrasting hues for headings and made more
        considerate use of bold typography.  The new colour combinations are
        better suited for the task of delivering a sense of structure;
        structure that is at once effective and subtle.
      - Applied less intense colours throughout all quotation levels.
      - Revised the sequencing of hues in quotation levels to allow distinct
        levels to stand out more without relying on excessive saturation.
      - Aligned the styling of Notmuch header dates with their counterparts
        in other similar contexts, in pursuit of theme-wide consistency.
    + Rewrote the faces of EBDB to achieve a better sense of structure.
    + Refined the colour combinations of change-log and log-view buffers to
      make it easier to discern distinct elements.
    + Tweaked the colours of certain Elfeed constructs to improve the
      overall presentation of its search buffers.
    + Changed the colour combinations of 'M-x re-builder' to amplify the
      distinction between the matching regexp groups while still reducing
      their overall intensity.
    + Reconfigured the 'diff-changed' face to always extend its background
      to the edge of the window.  Such "changed" lines are visible in
      'diff-mode' buffers when the command 'diff-unified->context' is
    + Tweaked the colour combinations of ancillary faces in diff buffers
      when the variable 'modus-themes-diffs' is set to the value 'fg-only'.
      In particular:
      - Removed the subtle background from the diff hunk headings and changed
        their colour to ensure good visibility---guarantees a sense of
      - Made the context lines inherit the default foreground colour (pure
        black/white), so that it contrasts better with red, green, and
        yellow text.
      - Applied an accented foreground to the diff header.  This is to
        ensure that it is not mistaken for a diff hunk's context.
      All these guarantee that the foreground-only highlights in line-wise
      differences draw more attention to themselves.
    + Aligned all the standard hi-* faces with their default aesthetics.
      Those are used by commands such as 'highlight-symbol-at-point'.
      Thanks to Philip K. for the valuable feedback in issue 157:
    + Removed obsolete Consult faces and added new ones, so as to remain in
      sync with the latest developments in that project.  Thanks to Daniel
      Mendler (Consult's maintainer) for reporting the inconsistency in
      issue 155: <https://gitlab.com/protesilaos/modus-themes/-/issues/155>.
      - 'consult-preview-line' now retains fontification on the current
        line, instead of applying its own foreground.
      - 'consult-narrow-indicator' is refashioned to be colour-coded in a
        consistent way with 'consult-async-split', as both denote the
        delineation of a given scope.
      - 'consult-imenu-prefix' contrasts better with text on its current
        line, while it adapts to possible customisations performed on the
        Consult front.
    + Expanded the coverage of 'marginalia' faces to two include
      'marginalia-char' and 'marginalia-type'.  This is done in the interest
      of internal consistency between the elements of this set, as their
      defaults were also accessible (they inherit from standard faces that
      we already support).
    + Opted to render the Notmuch logo in a neutral gray backdrop.  This was
      deemed necessary as the logo is an immutable image file that consists
      of black and white strokes.  Black and white are the main background
      values of 'modus-vivendi' and 'modus-operandi' respectively, which
      could lead to confusion.  The neutral gray ensures that the logo is
      visible at all times.  Thanks to Utkarsh Singh for the feedback in
      issue 122: <https://gitlab.com/protesilaos/modus-themes/-/issues/122>.
    + Refined the dedicated colour values used for diff hunk headings, as
      seen in diff-mode buffers or Magit.  The new colours yield text that
      is easier to read by slightly toning down the combined intensity of
    + Removed the subtle background of 'diff-header' and 'diff-file-header'.
      The header's foreground and textual representation suffice to render
      it distinct in its context.
    + Tweaked 'org-agenda-structure' and 'org-scheduled' to enhance the
      usability of Org Agenda buffers.
      - Made 'org-agenda-structure' use the largest possible height that we
        expose to users: 'modus-themes-scale-5'.
      - Re-calibrated the hueness of 'org-scheduled' and amplified its
        saturation, in order to better convey the meaning of a scheduled
      Thanks to Morgan Smith for the valuable feedback in issue 153:
    + Tweaked the faces of the 'bongo' package to enhance the
      distinctiveness of the constructs they style.
    + Adjusted the overall aesthetic of calendar faces in the interest of
      theme-wide consistency.
    + Aligned the visual metaphors of 'org-code' with those of 'org-macro'
      and 'org-verbatim', by ensuring that a subtle background is present
      behind the affected text, while the foreground conforms with the norms
      of the 'modus-themes-no-mixed-fonts' customisation option.
    + Made quoted text in Info buffers look the same as 'org-verbatim' and
      Markdown's inline code.
    + Instructed the faces of 'info-colors' to inherit from appropriate
      font-lock faces.  This guarantees that everything works as intended
      with the various values of 'modus-themes-syntax'.
    + Refined the language tag of Markdown fenced blocks so that it does
      attract unwarranted attention while delivering on its intended
    + Rendered explicit the slant of ace-window hints, guaranteeing that it
      does not inherit from the underlying text.  Thanks to Nicolas De
      Jaeghere for the patch:
      [ Some more changes have been discussed, but those require tweaks to
        the upstream package. ]
    + Ensured that the 'org-tree-slide-header-overlay-face' never draws an
      overline when the variable 'modus-themes-headings' includes a relevant
      setting for heading level 1.  Such as with the following example (all
      customisation options are documented in the themes' manual):
        (setq modus-themes-headings
              '((1 . section)
    + Extended support for the new 'tab-line-tab-inactive-alternate' face as
      that occurs in Emacs28 (current development target).  It comes into
      effect when the variable 'tab-line-tab-face-functions' includes a
      value of 'tab-line-tab-face-inactive-alternating'.
    Newly supported packages
    + bbdb :: Thanks to Nicolas De Jaeghere in issue 128:
    + mmm-mode :: Thanks to Davor Rotim for the feedback in issue 161:
    + quick-peek :: Thanks to Burgess Chang for the feedback in issue 151:
    + selectrum-prescient :: This new package was brought to my attention by
      Manuel Uberti.  The intent is to phase out the faces in Selectrum,
      namely 'selectrum-primary-highlight', 'selectrum-secondary-highlight',
      though those will still be supported by the Modus themes for the
      foreseeable future.
    + shortdoc
    + spray
    + terraform-mode :: Thanks to Kevin Fleming for the feedback in issue
      159: <https://gitlab.com/protesilaos/modus-themes/-/issues/159>.
    + vc-dir (Emacs28)
    Theme-related contributions to the wider community
    + Contributed the faces for 'vc-dir' in Emacs28 and applied them to all
      VC backends: <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=46358> and
    + Contributed a new face and some related tweaks to Emacs'
      'shortdoc.el': <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=46748>.
    + Added faces to the 'tab-bar-echo-area.el' package:
    + Reported issue that led to the review of the header face in
      'org-tree-slide': <https://github.com/takaxp/org-tree-slide/issues/38>.
    + Helped refine the faces of the 'rlist.el' package:
    Documentation updates
    + Wrote about the indirect support for the 'goggles' package.  I had
      helped write its faces, as was documented in the changelog for version
      1.1.0 of the themes.  Thanks to Manuel Uberti for bringing this to my
      attention in issue 158:
    + Explained that any changes to 'custom-theme-load-path' and/or
      'custom-theme-directory' should be performed before the themes are
      loaded.  Thanks to Adrian Manea for the feedback in issue 156:
    + Included the symbol 'bg-only' in the 'modus-themes-diffs' section of
      the manual.  Thanks to user "iSeeU" for reporting the omission:
    + Expanded the manual's entry on the semantics of the optional heading
      scale used by the themes (the variables 'modus-themes-scale-[1-5]').
      The values 1-4 apply to regular headings, with 4 being the largest on
      the scale.  While 'modus-themes-scale-5' is reserved for special
      headers, such as Org '#+title:' or the Org Agenda's structure.  Recall
      that those variables only come into effect if the boolean variable
      'modus-themes-scale-headings' is set to a non-nil value (it is nil by
    + Made several changes to the 'modus-themes.org' file in an effort to
      improve the accuracy of the generated Texinfo markup.  Thanks to Glenn
      Morris and Richard Stallman for their valuable feedback in
    + Recorded a note in the manual on the intended colouration of
      backgrounds applied by 'mmm-mode'.  It explains what the constraints
      are from an accessibility standpoint and how users can configure
      things locally for more colourful, yet inaccessible, backgrounds.
      Thanks to Davor Rotim for the valuable feedback in issue 161:
    + Refined the manual's note on prism.el, simplifying the code samples
      and clarifying the commentary.
    + Wrote indices for concepts, variables, functions, which are rendered
      in the Info manual.
    + Elaborated on the possibility---and relative merits---of implementing
      a theme-agnostic hook for advanced face configurations, as opposed to
      relying on 'modus-themes-after-load-theme-hook'.  Thanks to Daniel
      Mendler for the valuable feedback in issue 131:
    + Rewrote the documentation string of the 'deftheme' declaration of
      'modus-operandi' and 'modus-vivendi'.
    + Provided links to the Info nodes that discuss each of the 'defcustom'
    + Wrote doc strings for every custom face that the themes define.
  • 1.1.1
    Refer to tag 1.1.0 for a complete change log.