Tags give the ability to mark specific points in history as being important
  • 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 introduced. 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: <https://gitlab.com/protesilaos/modus-themes/-/commit/b020592e1a96d6e00d7d03faf9c293ec6081d49c>. + 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: <https://gitlab.com/protesilaos/modus-themes/-/issues/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 options. - 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 information: <https://gitlab.com/protesilaos/modus-themes/-/commit/ab6ba698269f012ec880b690282264649bfb3b0d#note_551342198> + 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 Elfeed. + Added a "Do-It-Yourself" (DIY) section on how to remap buffer-local faces. + 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: <https://gitlab.com/protesilaos/modus-themes/-/issues/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: <https://gitlab.com/protesilaos/modus-themes/-/issues/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: <https://gitlab.com/protesilaos/modus-themes/-/issues/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 palette. - 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 'modus-themes-diffs'). + 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): <https://gitlab.com/protesilaos/modus-themes/-/issues/177>. + 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: <https://gitlab.com/protesilaos/modus-themes/-/issues/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 'modus-themes-syntax'. + Made all enh-ruby-mode faces adapt to 'modus-themes-syntax'. Same for julia. + 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. Miscellaneous ------------- + 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: <https://gitlab.com/protesilaos/modus-themes/-/issues/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: <https://gitlab.com/protesilaos/modus-themes/-/issues/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   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 introduced. 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: <https://protesilaos.com/codelog/2021-02-25-modus-themes-diffs-deuteranopia/>. + 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 invoked. + 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 structure. - 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: <https://gitlab.com/protesilaos/modus-themes/-/issues/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 background+foreground. + 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 task. Thanks to Morgan Smith for the valuable feedback in issue 153: <https://gitlab.com/protesilaos/modus-themes/-/issues/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 purpose. + 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: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/27>. [ 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: <https://gitlab.com/protesilaos/modus-themes/-/issues/128>. + mmm-mode :: Thanks to Davor Rotim for the feedback in issue 161: <https://gitlab.com/protesilaos/modus-themes/-/issues/161>. + quick-peek :: Thanks to Burgess Chang for the feedback in issue 151: <https://gitlab.com/protesilaos/modus-themes/-/issues/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 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=46745>. + 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: <https://github.com/fritzgrabo/tab-bar-echo-area/pull/2>. + 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: <https://gitlab.com/mmemmew/rlist/-/commit/386f506d0110bebedd3a48ff972adba96e2232eb>. 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: <https://gitlab.com/protesilaos/modus-themes/-/issues/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: <https://gitlab.com/protesilaos/modus-themes/-/issues/156>. + Included the symbol 'bg-only' in the 'modus-themes-diffs' section of the manual. Thanks to user "iSeeU" for reporting the omission: <https://gitlab.com/protesilaos/modus-themes/-/issues/154>. + 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 default). + 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 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45143>. + 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: <https://gitlab.com/protesilaos/modus-themes/-/issues/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: <https://gitlab.com/protesilaos/modus-themes/-/issues/131>. Miscellaneous ------------- + 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' declarations. + Wrote doc strings for every custom face that the themes define.
    68dff175 · Update to version 1.2.0 ·
  • 1.1.1   1.1.1 Refer to tag 1.1.0 for a complete change log.
  • 1.1.0   Modus themes version 1.1.0 By Protesilaos Stavrou <info@protesilaos.com> on 2021-01-24 This entry records the changes introduced to the project since the publication of version 1.0.0 (2020-12-05). There have been around 150 commits in the meantime, qualifying this as one of the largest releases to date. As always, 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 (conformance with the WCAG AAA standard). As the official manual is referenced several times, make sure to store its URL: <https://protesilaos.com/modus-themes>. If you are coming from older versions, please consult the change log entry for version 1.0.0. Overview -------- + We have brought back the options that were present in version 0.13.0 or earlier which allowed users to override colors for either---or both---of Modus Operandi and Modus Vivendi. Compared to the old mechanism, the new one is more robust and should work regardless of whether users run byte compiled code or not. This is considered and advanced, "do-it-yourself" pathway to theme customisation. It is discussed at length in the manual. + The new 'modus-themes-with-colors' macro makes it possible to read palette variables from the active theme and, thus, pass them to arbitrary functions or variables. Again, this is part of the advanced customisations that are covered in the manual. + Several of the existing customisation options provide new stylistic variants, further expanding their utility. While there are some new customisations altogether. Combined with the above, we provide the infrastructure that allows the themes to adapt gracefully to a variety of circumstances and cover a broad range of demands. + More packages are added to the already comprehensive list of supported face groups. + Some of the supported faces have benefited from further, albeit subtle, refinements, demonstrating our commitment to consistency as well as our attention to detail. + Two reports on such "further refinements" were published on the code log section of protesilaos.com: <https://protesilaos.com/codelog>. + We have more people contributing to the project (and assigning copyright to the FSF---as the themes are part of Emacs) and newer users reporting issues. Also, there is anecdotal evidence from several sources on an increased interest to make new or existing faces accessible by default (such as by copying colour combinations from the themes). New customisation options ------------------------- + The existing 'modus-themes-mode-line' variable now supports three new borderless styles: 'borderless', 'borderless-3d', 'borderless-moody'. - The 'borderless' value uses the same colors as the default (nil value), but removes the border effect. This is done by making the box property use the same color as the background, effectively blending the two and creating some padding. - The 'borderless-3d' and 'borderless-moody' approximate the '3d' and 'moody' options respectively, while removing the borders. However, to ensure that the inactive modelines remain visible, they apply a slightly more prominent background to them than what their counterparts do (same inactive background as with the default). The complete list of options: 1. nil (default) 2. 3d 3. moody 4. borderless 5. borderless-3d 6. borderless-moody + 'modus-themes-lang-checkers' provides several styles for spell checkers and code linters with regard to how they underline text. The default (nil) is to use a colour-coded wavy underline, without changing the foreground of the affected text. Other options include the ability to set a straight underline and to control the saturation of the foreground, while one also provides for a change in the background of the text in question. The valid symbols are as follows (read the manual for more on the matter): 1. nil (default) 2. straight-underline 3. subtle-foreground 4. subtle-foreground-straight-underline 5. intense-foreground 6. intense-foreground-straight-underline 7. colored-background + The 'modus-themes-org-habit' lets users pick between three styles for the 'org-habit' table: (1) nil (the default), which uses a total of eight colours, (2) 'simplified' which reduces the effective colours to four, while applying less saturated hues, and (3) 'traffic-light' which bring the colour count to three, thus blending the "clear" and "ready" states for workflows where the distinction between is not useful. Please read the manual for a more detailed description of those variants. Thanks to Gustavo Barros for suggesting the idea, providing user feedback on stylistic choices, as well as sharing insights on the workflow that made the 'traffic-light' style possible: <https://gitlab.com/protesilaos/modus-themes/-/issues/135>. + 'modus-themes-variable-pitch-ui' when set to a non-nil value applies a proportionately spaced typeface (controlled by the 'variable-pitch' face) to the User Interface, specifically the mode line, header line, and tab-{bar,line}. + The existing 'modus-themes-links' variable now has a colourless stylistic alternative: 'underline-only'. The available styles: 1. nil (default) 2. faint 3. neutral-underline 4. faint-neutral-underline 5. no-underline 6. underline-only + The existing 'modus-themes-prompts' variable has two new grayscale styles: 'subtle-gray', 'intense-gray'. Furthermore, their old 'subtle' and 'intense' values have more informative aliases in the form of 'subtle-accented' and 'intense-accented'. All available values: 1. nil (default) 2. subtle-accented ('subtle' remains for backward-compatibility) 3. intense-accented ('intense' remains for backward-compatibility) 4. subtle-gray 5. intense-gray + The existing 'modus-themes-headings' variable now accepts two new styles: 'no-color', 'no-color-no-bold'. All stylistic variants: 1. nil (default fallback option---covers all heading levels) 2. t (default style for a single heading, when the fallback differs) 3. no-bold 4. line 5. line-no-bold 6. rainbow 7. rainbow-line 8. rainbow-line-no-bold 9. highlight 10. highlight-no-bold 11. rainbow-highlight 12. rainbow-highlight-no-bold 13. section 14. section-no-bold 15. rainbow-section 16. rainbow-section-no-bold 17. no-color 18. no-color-no-bold Please read the manual for instructions on how to apply those universally or on a per-level basis. Added support for packages -------------------------- + cfrs (used by treemacs) + cperl-mode + diredc + display-fill-column-indicator-mode. Thanks to Gustavo Barros for the feedback: <https://gitlab.com/protesilaos/modus-themes/-/issues/148>. + evil-snipe. Thanks to Peter Wu for the feedback: <https://gitlab.com/protesilaos/modus-themes/-/issues/139>. + isl (isearch-light). Thanks to Manuel Uberti for the feedback: <https://gitlab.com/protesilaos/modus-themes/-/issues/144>. + marginalia + org-tree-slide + recursion-indicator + solaire. Thanks to CsBigDataHub1 for the feedback: <https://gitlab.com/protesilaos/modus-themes/-/issues/137>. Refinements to already supported faces -------------------------------------- + Reviewed the 'rainbow-delimiters' faces. Everything is documented in a separate report (with screenshots). The short version is that we pay close attention to detail and are willing to go to great lengths in pursuit of improving the overall user experience: <https://protesilaos.com/codelog/2020-12-27-modus-themes-review-rainbow-delimiters/>. + Updated the dedicated colours for 'whitespace-mode'. The background should now be easier to discern. Also removed any remaining inconsistencies. Thanks to Toon Claes for the feedback: <https://gitlab.com/protesilaos/modus-themes/-/issues/149>. + Refined the faces of regexp constructs for strings affected by certain values passed to the 'modus-themes-syntax' option. This is done to disambiguate the backslashes and grouping delimiters from the rest of the string. The relevant values for 'modus-themes-syntax' are: - green-strings - yellow-comments-green-strings - alt-syntax - alt-syntax-yellow-comments The default colour for strings is blue, while regexp faces are yellow and red, whereas in those variants the strings become green, hence the need to make regexp faces more distinct (blue and magenta contrast better with green and also between themselves, thus matching the alternative aesthetics). + Reviewed dictionary.el faces (which ships with Emacs 28): - Made 'dictionary-reference-face' look like all other links. - Removed all properties from 'dictionary-word-definition-face': the default sets a font family, which can create inconsistencies. - Converted 'dictionary-word-entry-face' into comment-like text. + Refined and expanded the faces of Consult. - Made its grep commands look the same as those of all other grep tools. - Ensured that line number previews, such as for the 'consult-line' command use their own style of a subtle foreground instead of inheriting from the 'line-number' face. This is to avoid cases where previewed numbers and actual line numbers could be conflated for one another. - Removed the foreground pertinent to 'consult-imenu-prefix', as its bold weight combined with the structure of Imenu indices was deemed sufficient to differentiate it from actual 'consult-imenu' targets. + Eliminated exaggerations in the use of colour for various 'which-key' faces. + Removed the needless background from the 'log-view-commit-body' face. This is a new face that ships with Emacs 28 (its inclusion upstream was documented in the last changelog entry). + Applied a subtle background to the 'log-view-message' face, in the interest of improving the usability of its interface, in particular, to contribute to heightened situational awareness while invoking 'log-view-toggle-entry-display' in buffers such as those produced by 'vc-print-root-log'. + Introduced a neutral background for all 'outline-minor-faces' instead of merely mirroring the style of 'outline-mode' headings. This is because it can sometimes be hard to tell whether 'outline-minor-mode' is active, provided certain fairly common configurations in the 'modus-themes-headings' user option (refer to the manual for all customisation options). + Tweaked 'diff-mode' headings. - Adjusted the values of the dedicated colours for diff headings in order to amplify their relative contrast. - Assigned a bold typographic weight to the 'diff-hunk-header' face so as to enforce a greater sense of structure. - Instructed 'diff-function' to inherit 'modus-theme-diff-heading' in order to eliminate exaggerations in colouration. + Removed unnecessary underline from 'selectrum-current-candidate'. Thanks to Daniel Mendler for the feedback: <https://gitlab.com/protesilaos/modus-themes/-/issues/132>. + Made 'counsel-outline' inherit from the underlying Org faces. Also corrected the style of 'counsel-outline-default' to use the main foreground colour. Thanks to Gustavo Barros for the feedback: <https://gitlab.com/protesilaos/modus-themes/-/issues/134>. + Prevented headings, ultimately governed by the 'modus-themes-headings' user option, from inheriting the 'default' face as that could lead to unintended consequences, such as by retaining a background colour when none was expected. + Refashioned all faces that specified a foreground value of 'fg-alt' to inherit the 'shadow' face instead ('fg-alt' is the colour that is used, for example, in code comments by default). This makes it possible for users to enact change across the theme just by tweaking 'shadow'. + Fixed 'ruler-mode' text scaling adjustment, to make it cope well with 'text-scale-adjust' and relevant commands. Also introduced minor stylistic changes to the remainder of the 'ruler-mode' faces. + Eliminated the potentially problematic form of ':foreground nil' from the 'org-ellipsis' face. In such cases it is always better to either specify no foreground whatsoever, or declare an unspecified value. Patches from the community -------------------------- Remember that the themes are part of Emacs and, thus, contributions that exceed a cumulative total of ~15 lines require the assignment of copyright to the Free Software Foundation. Please consult the themes' manual on the matter. + Nicolas De Jaeghere added support for 'exwm-floating-border-color': <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/15>. + Anders Johansson added support for 'helm-fd-finish': <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/16>. + Carlo Zancanaro fixed misquoting of 'tuareg-font-lock-multistage-face': <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/17>. + Xinglu Chen expanded Notmuch support to all its remaining faces: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/18>. + Kostadin Ninev added support for Dired+: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/19>. + Nicolas De Jaeghere expanded the supported items of 'pdf-faces'. Also added an entry to the manual pertaining to link hints and the requisite setup: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/20>. + Nicolas De Jaeghere wrote the new 'modus-themes-with-colors' macro, which is documented at length in the manual: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/21>. + Nicolas De Jaeghere set up the infrastructure that grants users the ability to override palette colors; an option that was removed in the transition from version 0.13.0 to 1.0.0. The relevant variables are 'modus-themes-colors-operandi', 'modus-themes-colors-vivendi' (again, consult the manual): <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/23>. + Nicolas De Jaeghere deleted the 'modus-themes-core.el' file and merged its contents into the main 'modus-themes.el' library: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/24> and <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/25>. + Nicolas De Jaeghere made the 'compilation-info' face consistent with other compilation faces in terms of their optional bold weight: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/26>. Any remaining faults that may exist, despite our best intentions to remove them, are those of the maintainer and will be addressed as soon as they are identified. FSF copyright status: | Full name | Copyright | |---------------------+--------------| | Anders Johansson | covered | | Carlo Zancanaro | not required | | Kostadin Ninev | covered | | Nicolas De Jaeghere | covered | | Xinglu Chen | not required | Theme-related contributions to the wider community -------------------------------------------------- + Helped address an incomplete colour value in 'org-transclusion-block': <https://github.com/nobiot/org-transclusion/issues/41>. + Contributed to the formation of the zebra striping of 'embark': <https://github.com/oantolin/embark/commit/bb4ae2a666ab1f4a307edd71f77bcbb90fb25cef>. + Reviewed the faces of 'goggles': <https://github.com/minad/goggles/commit/d6e584a2c9487d3df4aee818c43485e437cb87ef>. + Helped raise awareness about refactoring 'org-tree-slide-header-overlay-face': <https://github.com/takaxp/org-tree-slide/issues/38>. + Reported an issue for Moody that would affect the subset of Emacs 28 users who enable the new 'mode-line-compact' option: <https://github.com/tarsius/moody/issues/28>. + Did the same for Keycast: <https://github.com/tarsius/keycast/issues/13>. + Defined the new 'perl-non-scalar-variable' in upstream Emacs: <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45840>. Miscellaneous ------------- + Created a new palette subset for "graph" colours, as none of the existing paradigms would suffice for cases where faithfulness to colour huenesss is important. Those are currently used by 'modus-themes-org-habit'. + Ensured that theme functions which need to produce an error message do so by calling 'error' instead of 'user-error'. + Added a 'modus-themes-load-themes' function that users can add to their init files. + Expanded the project's git repo README file with a sample 'use-package' configuration. + The previous two points followed from an inquiry into the subtleties between 'enable-theme' and 'load-theme'. Those are now documented at length in the manual. + Added screenshots to the web page that holds the official manual. Thanks to Damien Cassou for the feedback: <https://gitlab.com/protesilaos/modus-themes/-/issues/147>. + Swapped the values of 'cyan-faint' and 'cyan-alt-faint' for Modus Vivendi. + Tweaked 'font-lock-doc-face' and 'font-lock-type-face' variations when "faint syntax" is in effect: (setq modus-themes-syntax 'faint). + Refined 'font-lock-doc-face' for when modus-themes-syntax is given a value of either 'yellow-comments-green-strings' or 'green-strings'. The changes are minor when treated in isolation, though they have helped improve the overall consistency of the end result: the gestalt. + Reviewed select "faint" colours for both Modus Operandi and Modus Vivendi. The technicalities are discussed in a complete report: <https://protesilaos.com/codelog/2021-01-11-modus-themes-review-select-faint-colours/>. + Ensured that (setq modus-themes-syntax 'alt-syntax) and its "yellow comments" variant are more truthful to their intended style, by eliminating any exaggerations in the use of colour. + Adjusted the saturation of the green-alt value of Modus Vivendi. + Updated the manual to reflect all of the aforementioned. Thanks once again to everyone who contributed patches or reported an issue. This has been yet another period of intense work; work which helps solidify the Modus themes as (i) uncompromisingly accessible in accordance with the highest legibility standard, (ii) highly customisable in true Emacs fashion, (iii) thoroughly comprehensive in terms of face coverage, and (iv) meticulously designed throughout.
    97fa6679 · Update to version 1.1.0 ·
  • 1.0.2   Modus themes version 1.0.2 Minor tweaks to the manual to ensure that the right instructions are provided for those who install the themes manually or will be using the version that is shipped with Emacs. For all the rest, please refer to the release notes for version 1.0.0: <https://protesilaos.com/codelog/2020-12-05-modus-themes-1-0-0/>.
    ab0f5583 · Update to version 1.0.2 ·
  • 1.0.0   Modus themes version 1.0.0 By Protesilaos Stavrou <info@protesilaos.com> on 2020-12-05 This entry documents the changes since version 0.13.0 (2020-10-08). They constitute a major release with backward-incompatible additions which are described below. As always, 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 (conformance with the WCAG AAA standard). Expect to find examples of basic and advanced customisations in the comprehensive Info manual bundled with the themes, which is also available at: <https://protesilaos.com/modus-themes>. Overview of major changes ========================= 0. The option that was present in earlier releases to override the colour palette has been removed. It cannot work with byte compilation. We must not compromise on performance, especially in light of the fairly high line count of the themes (broad face coverage combined with a multitude of customisation options). 1. The code base has been refactored. The two themes, Modus Operandi (light) and Modus Vivendi (dark), derive from the same source. 2. The refactoring makes it possible to distribute the two themes as part of a single package. You can find 'modus-themes' on MELPA, with other archives and core Emacs following suit soon thereafter (the Modus themes are built into Emacs since their version 0.12.0). 3. The 'modus-operandi-theme' and 'modus-vivendi-theme' packages in MELPA and GNU ELPA are obsolete. MELPA has already deleted them and now only provides 'modus-themes', while GNU ELPA shall do so soon enough. + Package providers of GNU/Linux distros, or other archives, are encouraged to update their sources so that they only deliver a single package that covers both themes. 4. To avoid surprises, the refactored code is in the 'main' branch which becomes the default henceforth. The 'master' branch, from where all prior releases were built, is thus deprecated. Existing installs of 'modus-operandi-theme' and/or 'modus-vivendi-theme' must manually switch to the new package sources, which offer a certain guarantee that they are informed of the breaking changes documented herein. + Users of 'straight.el' must make sure that they pull from the 'main' branch. This may also be the case for other such tools, though I have not had the time to test them all. 5. The refactoring introduces a unified customisation framework. Now all user-facing variables are named 'modus-themes-*' instead of 'modus-operandi-*' and 'modus-vivendi-*'. Users of both items can thus cut down on duplicate code or inelegant workarounds on their end. Example: modus-operandi-bold-constructs | | | | | | | ====> modus-themes-bold-constructs modus-vivendi-bold-constructs 6. The themes now provide common user-facing functions. + 'modus-themes-load-operandi' and 'modus-themes-load-vivendi' can be used in Lisp to load the theme they name, while disabling their counterpart and running 'modus-themes-after-load-theme-hook'. The hook can be used to override or further customise faces (examples are furnished in the manual). + 'modus-themes-toggle' interactively switches between Modus Operandi and Modus Vivendi or opens a minibuffer prompt to select between the two if none of them is active. It ultimately calls the aforementioned functions to load the themes, so it also triggers the hook. Bind this command to a key of your convenience (the author uses F5). + 'modus-themes-color' returns the colour value of a symbol in the alists that hold the themes' palettes. The alists are 'modus-themes-colors-operandi' and 'modus-themes-colors-vivendi'. 'modus-themes-color' always operates on the active theme, making it suitable for post-theme-load customisations (via the hook we covered earlier). Its usage is documented in the manual and is meant to be employed by those who are prepared to assume responsibility for face-related changes they introduce on their setup. + 'modus-themes-color-alts' occupies the same niche as the one right above, with the exception that it takes two arguments. The first is the alist key to be used by 'modus-operandi' and the second is for 'modus-vivendi'. + 'modus-themes-wcag-formula' implements the WCAG formula to measure a colour value's relative luminance. While 'modus-themes-contrast' applies the formula to derive the contrast ratio between two colour values in hexadecimal RGB notation. This can be used to verify the accessibility of colour combinations provided by the themes or new ones defined at the user level (the Modus themes conform with the WCAG AAA standard which means that this kind of contrast is 7:1 or higher for all applicable background+foreground combinations). Customisation options ===================== This is the complete list with all the customisation options: modus-themes-slanted-constructs (boolean) modus-themes-bold-constructs (boolean) modus-themes-variable-pitch-headings (boolean) modus-themes-no-mixed-fonts (boolean) modus-themes-headings (alist) modus-themes-scale-headings (boolean) modus-themes-fringes (choice) modus-themes-org-blocks (choice) modus-themes-prompts (choice) modus-themes-mode-line (choice) modus-themes-diffs (choice) modus-themes-syntax (choice) modus-themes-intense-hl-line (boolean) modus-themes-paren-match (choice) modus-themes-region (choice) modus-themes-links (choice) modus-themes-completions (choice) Plus those which are contingent on 'modus-themes-scale-headings': modus-themes-scale-1 modus-themes-scale-2 modus-themes-scale-3 modus-themes-scale-4 modus-themes-scale-5 Consult the manual for each of them and please verify that none of the older options remains in your init file. Customisation options that did not exist in earlier versions ------------------------------------------------------------ New entries and their possible values: 1. modus-themes-syntax * nil (default) * faint * yellow-comments * green-strings * yellow-comments-green-strings * alt-syntax * alt-syntax-yellow-comments (supersedes options for "faint syntax" and "comments") 2. modus-themes-links * nil (default) * faint * neutral-underline * faint-neutral-underline * no-underline (supersedes options for "no underlines") 3. modus-themes-paren-match * nil (default) * intense * subtle-bold * intense-bold (supersedes options for "intense paren match") 4. modus-themes-region * nil (default) * no-extend * bg-only * bg-only-no-extend Furthermore, the 'modus-themes-diff' has a new option to choose from: the symbol 'bg-only'. It applies colour-coded backgrounds but does not override any syntax highlighting that may be present. This makes it suitable for use with a non-nil value for diff-font-lock-syntax (which is the default for diff-mode buffers in Emacs 27 or higher). Support for new faces or face groups ==================================== + consult + macrostep + make-mode + pdf-tools + popup + shr + sieve-mode (remember that the list of supported packages is already comprehensive) Thanks to: + Adam Spiers for bringing 'macrostep' to my attention. + Madhavan Krishnan for submitting the code for pdf-tools: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/14>. + Manuel Uberti for reporting the issue with popup.el: <https://gitlab.com/protesilaos/modus-themes/-/issues/107>. + Again thanks to Manuel for consult: <https://gitlab.com/protesilaos/modus-themes/-/issues/123>. And to Daniel Mendler, its developer, for communicating with us on the status of the project. + Togan Muftuoglu for reporting the issue with sieve-mode: <https://gitlab.com/protesilaos/modus-themes/-/issues/121>. Refinements to existing faces ============================= + The diary and holiday marks in 'M-x calendar' are displayed using a slightly tinted background in order to improve their contrast. Holidays are also rendered in a bold font. Thanks to Nicolas De Jaeghere for reporting the issue and following it up with valuable feedback: <https://gitlab.com/protesilaos/modus-themes/-/issues/127>. + Code blocks in 'markdown-mode' now have a subtle background that extends to the edge of the window. Thanks to Roman Rudakov for the suggestion and Hörmetjan Yiltiz for further testing: <https://gitlab.com/protesilaos/modus-themes/-/issues/115>. + Inline code in 'markdown-mode' has a subtle background that covers the length of the construct. Refer to issue #115 as above. + Ivy's main pattern-matching faces are slightly adjusted to work more effectively when users opt for "modus-themes-completions 'moderate" or "modus-themes-completions 'opinionated". + Swiper's 'swiper-isearch' command defaults to a more colourful presentation that clearly disambiguates matching pattern groups between themselves as well as their own active and inactive states. Thanks to John Haman for reporting the problem: <https://gitlab.com/protesilaos/modus-themes/-/issues/125>. + Swiper's remaining faces are tweaked to better convey the intent of this tool. + The border of 'ivy-posframe' is more noticeable. Thanks to Pete Kazmier: <https://gitlab.com/protesilaos/modus-themes/-/issues/126>. + The 'fringe' face no longer returns a nil background, which allows 'dap-ui-controls-mode' to display things properly. Thanks to Simon Pugnet: <https://gitlab.com/protesilaos/modus-themes/-/issues/106>. + Tags and priority cookies in Org mode no longer have a box property. This is because of changes in upstream Org that we helped solve and that are covered in the previous CHANGELOG entry (in short: Org heading constructs inherit the underlying heading's properties that are not part of their own specs, while they retain those that are explicitly defined for them---adaptive headings). Properly solves the following issues: * <https://gitlab.com/protesilaos/modus-themes/-/issues/104>. Thanks to user "bepolymathe". * <https://gitlab.com/protesilaos/modus-themes/-/issues/95>. Thanks to Roman Rudakov. + The faces of 'M-x re-builder' are less intrusive. + All the following now inherit from basic font-lock faces and thus benefit from options such as 'modus-themes-syntax': * geiser * nxml-mode * tuareg * web-mode * xah-elisp-mode + Diff headers have a subtle grey background that extends to the edge of the window. + The faces of log-view and change-log use colour combinations that better differentiate the various objects on display. + 'font-lock-type-face' uses a cyan hue instead of magenta. + 'magit-header-line-key' uses a blue foreground colour instead of red. + Doc strings in code syntax are rendered in a new dedicated colour. The change is fairly subtle and should practically go unnoticed. + 'org-date' now respects the 'modus-themes-no-mixed-fonts' option. Thanks to user "fleimgruber" for reporting the issue: <https://gitlab.com/protesilaos/modus-themes/-/issues/124>. + 'org-property-value' uses a slightly different shade of cyan. + 'dim-autoload' will always look like a regular comment. + The 'italic' face is inhereted by all relevant faces instead of hard-wiring a slant property. This offers the potential advantage of specifying a distinct family (or other properties) for constructs that are meant to be rendered in italics (the manual has an example in its DIY sections for this scenario though it uses the 'bold' face---just apply the same idea to the 'italic' face). + 'dictionary-reference-face' inherits from 'button' (as with all links). + Several comment-related faces beyond the basic ones work with 'modus-themes-syntax' when that has an effect on the colour of comments. The faces are: * git-commit-comment-file * git-commit-comment-heading * git-rebase-comment-hash * git-rebase-comment-heading + 'transient-value' is more noticeable and fits better in its context. + All remaining Org metadata-related faces are refined for consistency between them in an attempt to make them unobtrusive. More subtle colouration is applied. Affected faces: * org-drawer * org-property-value * org-special-keyword Theme-related contributions to the wider community ================================================== + Defined the 'log-view-commit-body' for Emacs 28.1: <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg00303.html> and <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg02196.html>. + Specified the version of the 'diff-error' face for Emacs 28.1: <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg01328.html>. + Added the 'org-dispatcher-highlight' face to upstream Org: <https://lists.gnu.org/archive/html/emacs-orgmode/2020-10/msg00158.html>. * Report with screenshots: <https://protesilaos.com/codelog/2020-10-24-org-export-dispatcher-face/>. + Helped fix face of Flymake's unknown backend in inactive modelines: <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg01119.html>. + Solved bug#44198 about a user not knowning the themes are in Emacs: <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-10/msg02001.html>. Miscellaneous ============= + The new default 'main' branch of the Modus themes' git repo is an idea that was presented by user "Emacs Contrib" in issue 112: <https://gitlab.com/protesilaos/modus-themes/-/issues/112>. Raising awareness about the negative impact of potentially, tacitly, or explicitly offensive language is a goal worth pursuing. Plus "main" is a more appropriate name for the primary branch of a project and we do not lose anything by introducing this change as part of version 1.0.0, which anyhow requires manual interventions in user configurations. + Thanks to Manuel Uberti, Jeremy Friesen, and Gitlab user "Eugene" for their feedback during the process that eventually led to the development of the 'modus-themes-syntax' customisation option: <https://gitlab.com/protesilaos/modus-themes/-/issues/105>. + Thanks to André Alexandre Gomes for the feedback in issue 111, which led to the simplification of the manual's references to Guix: <https://gitlab.com/protesilaos/modus-themes/-/issues/111>. + Thanks to Nicolas De Jaeghere for noting that BBDB is indirectly supported: <https://gitlab.com/protesilaos/modus-themes/-/issues/128>. Between the refactoring of the code base and all other changes, this has been yet another period of hard work to deliver on the promise of themes that are (i) highly accessible and (ii) comprehensive in both their face coverage and customisation options, while always conforming with the highest accessibility standard for legible text. Special thanks to the MELPA maintainers for all their contributions. MELPA is an integral part of the wider Emacs community. Thanks, in particular, to Chris Rayner who has reviewed all my pull requests hitherto, and to Jonas Bernoulli for checking the latest one (and its concomitant issue) that introduced the new 'modus-themes' package. Thank you, the reader, for your attention and for understanding the longer term benefits of the refactoring, despite the short term friction it may have introduced.
  • 0.13.0   Modus Operandi and Modus Vivendi version 0.13.0 By Protesilaos Stavrou <info@protesilaos.com> on 2020-10-08 This entry documents the changes since version 0.12.0 (2020-08-26). There have been around 150 commits in the meantime, making this the largest release to date (though sheer volume should not be conflated with quality, of which there is plenty). As always, everything described 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 combinations (conformance with the WCAG AAA standard). Overview ======== 1. There is a new Info manual that documents the customisation options as well as every other piece of information pertinent to the themes. You will find it in the Info pages inside of Emacs. Or browse it online: <https://protesilaos.com/modus-themes>. 2. New customisation options grant users more power to further adapt the active theme to their preferences. 3. Extended coverage for even more faces and face groups, adding to the already comprehensive list of directly supported ones. 4. Lots of tweaks to improve the use of colour and avoid exaggerations (well, "exaggerations" is relative, since the prior state was already carefully designed). 5. A new page hosts all pictures that demo the themes across a wide range of scenaria: <https://protesilaos.com/modus-themes-pictures>. 6. Similarly, the change log also has its own dedicated web page: <https://protesilaos.com/modus-themes-changelog>. New customisation options ========================= Note that all customisation options are documented at length in the new Info manual. What is offered here is not necessarily exhaustive. Diff styles ----------- Symbol names ("choice" type): + modus-operandi-theme-diffs + modus-vivendi-theme-diffs Possible values: 1. nil (default) 2. desaturated 2. fg-only DEPRECATED ("boolean" type): + modus-operandi-theme-subtle-diffs + modus-vivendi-theme-subtle-diffs This option supersedes older ones while retaining their functionality. The default remains unaltered, meaning that the diffs will use fairly prominent colour-coded combinations for the various elements (e.g. green text on an unambiguously green backdrop). A 'desatured' value will tone down the default aesthetic, giving a less vibrant feel. While 'fg-only' removes almost all coloured backgrounds, opting to apply colour only to the relevant text (this was the case with the now-deprecated options). There are some exceptions, like word-wise or "refined" diffs, which still use coloured backgrounds to convey their meaning. Modeline styles --------------- Symbol names ("choice" type): + modus-operandi-theme-mode-line + modus-vivendi-theme-mode-line Possible values: 1. nil (default) 2. 3d 3. moody DEPRECATED ("boolean" type): + modus-operandi-theme-3d-modeline + modus-vivendi-theme-3d-modeline The default modeline continues to be a two-dimensional rectangle with a border around it. Active and inactive modelines use different colour combinations for their main background and foreground. Option '3d' produces an effect similar to what you get in a generic Emacs session, where the active modeline has a pseudo three-dimensional effect applied to it. This option offers the same functionality as that of the deprecated variables. Option 'moody' is designed specifically for use with the Moody library, though it can also be used without it. Instead of implementing a box effect, it applies an overline and underline instead, while also toning down the inactive modeline. Thanks to Nicolas De Jaeghere for the feedback and code samples in issue 80: <https://gitlab.com/protesilaos/modus-themes/-/issues/80> Headline styles --------------- Symbol names ("alist" type): + modus-operandi-theme-headings + modus-vivendi-theme-headings DEPRECATED ("boolean" type): + modus-operandi-theme-rainbow-headings + modus-operandi-theme-section-headings + modus-vivendi-theme-rainbow-headings + modus-vivendi-theme-section-headings Possible values, which can be specified for each heading level (examples further below): 0. nil (default fallback option---covers all heading levels) 1. t (default style for a single heading, when the fallback differs) 2. no-bold 3. line 4. line-no-bold 5. rainbow 6. rainbow-line 7. rainbow-line-no-bold 8. highlight 9. highlight-no-bold 10. rainbow-highlight 11. rainbow-highlight-no-bold 12. section 13. section-no-bold 14. rainbow-section 15. rainbow-section-no-bold This supersedes and greatly expands upon what the deprecated variables once offered. It is now possible to (i) benefit from more stylistic choices, and (ii) apply them on a per-level basis. As always, the defaults remain in tact: headings are just rendered in a bold weight and their colours are not too saturated to offer a plain text impression that relies on typography to convey its meaning. The info manual explains the details. A few examples: ;; Per-level styles (t means everything else) (setq modus-operandi-theme-headings '((1 . highlight) (2 . line) (t . rainbow-line-no-bold))) ;; Uniform style for all levels (setq modus-operandi-theme-headings '((t . rainbow-line-no-bold))) ;; Default style for level 1, while others differ (setq modus-operandi-theme-headings '((1 . t) (2 . line) (t . rainbow-line-no-bold))) Thanks to Adam Spiers for the feedback in issue 81: <https://gitlab.com/protesilaos/modus-themes/-/issues/81>. Also thanks to Nicolas De Jaeghere for helping refine relevant stylistic choices: <https://gitlab.com/protesilaos/modus-themes/-/issues/90>. No link underlines ------------------ Symbol names ("boolean" type): + modus-operandi-theme-no-link-underline + modus-vivendi-theme-no-link-underline Possible values: 1. nil (default) 2. t By default, the themes apply an underline effect to links, symbolic links, and buttons. Users can now disable this style by setting the new option to 't'. Thanks to Utkarsh Singh for the feedback in issue 94: <https://gitlab.com/protesilaos/modus-themes/-/issues/94> No mixed fonts -------------- Symbol names ("boolean" type): + modus-operandi-theme-no-mixed-fonts + modus-vivendi-theme-no-mixed-fonts Possible values: 1. nil (default) 2. t By default, the themes configure some spacing-sensitive faces, such as Org tables and code blocks, to always inherit from the 'fixed-pitch' face (documented in the manual). This is to ensure that those constructs remain monospaced when users opt for something like the built-in 'M-x variable-pitch-mode'. Otherwise the layout would break. The obvious downside with this theme design is that users need to explicitly configure the font family of 'fixed-pitch' in order to apply their desired typeface (how to do this is also covered in the manual). That may be something they do not want to do. Hence this option to disable any kind of font mixing done by the active theme. Set it to 't'. Support for new faces or face groups ==================================== + awesome-tray + binder + cperl-mode + eldoc-highlight-function-argument + erc escaped colour sequences + eshell-syntax-highlighting + flycheck-color-mode-line + isearch regexp groups (Emacs version >= 28) + mpdel + objed + org 9.4 new faces: 'org-headline-todo' and 'org-table-header' + racket-mode + typescript-mode Thanks to: + Damien Cassou for reporting the issue with mpdel: <https://gitlab.com/protesilaos/modus-themes/-/issues/99> + Dario Gjorgjevski for reporting the issue with erc: <https://gitlab.com/protesilaos/modus-themes/-/issues/92> + Markus Beppler for contributing the patch for cperl-mode: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/11> + User "Moesasji" for reporting the issue with objed: <https://gitlab.com/protesilaos/modus-themes/-/issues/79> Refinements to existing faces ============================= + calfw applies colours and styles in a way that makes it consistent with the rest of the themes' metaphors. + diredfl makes more considerate use of colour. We still apply colour everywhere (the whole point of this package) but make sure to avoid exaggerations. + doom-modeline-battery-error face fits better with the rest of the design. + elfeed search buffers use less intense colours, while still keeping all elements fairly distinct. The intent is to avoid a "rainbow effect" in such a dense interface. + elfeed read and unread items are more distinct. + git commit and vc log edit messages benefit from refined colour combinations for their various constructs. The commit's summary is now rendered in a bold weight, to better convey the idea that this is a quasi heading element. + gnus heading colours are more consistent. All information remains clearly distinct, but we now avoid using colours that are on opposite sides of the colour spectrum. Basically to keep things distinct without going over the top. + gnus read and unread items are easier to tell apart. Thanks to user "Nick" for reporting the issue: <https://gitlab.com/protesilaos/modus-themes/-/issues/97>. + help-argument-name has a distinct foreground colour, so that it is easier to spot it in "*Help*" buffers. Its slant is also controlled by the active theme's customisation option for slanted constructs (nil by default---check the manual). + helpful-heading now is consistent with other heading styles. Thanks to Nicolas De Jaeghere for reporting the issue: <https://gitlab.com/protesilaos/modus-themes/-/issues/90>. + icomplete, ido, orderless are all tweaked to work better under various circumstances. + info-menu-star uses a red colour to make it easier to select a menu entry by estimating its number. This face applies to every third element and is a nice little extra to have. + info quoted strings are configured to always render in 'fixed-pitch', in line with the themes' design for mixed fonts (remember to check the relevant customisation option). + line numbers work properly with 'text-scale-adjust'. Thanks to user "jixiuf" for reporting the issue: <https://gitlab.com/protesilaos/modus-themes/-/issues/98>. + line-number-current-line no longer applies a bold weight to its text. This is to avoid a certain "jump effect" while moving between lines, where the affected numbers grow and shrink in weight as the line changes (once you see it, you will know what I mean). + line-number-major-tick and line-number-minor-tick do use a bold weight because they are fixed on the scale. Their colours are also improved to better complement their intended role (these faces are for Emacs 27 or higher). + magit-diff-file-heading-selection, magit-diff-hunk-heading-selection use more appropriate colour combinations. + markdown blockquotes and org quote blocks use a different foreground, which is colder than the previous one. Just to make sure that they are not mistaken for inline code. + message headers use less exaggerated colour combinations. The differences are fairly minor. + message-mml no longer uses a green foreground, as that could potentially cause confusion with quoted text in some cases. A unique, albeit less saturated, foreground is used instead. + message-separator uses a more neutral colour combination, while retaining its overall uniqueness within its context (i.e. mail composition). + modeline colours are refined to improve the contrast between active and inactive states. + mu4e-replied-face has a new colour that accounts for colour distance relative to its context. Thanks to Shreyas Ragavan for reporting the issue: <https://gitlab.com/protesilaos/modus-themes/-/issues/69>. + org agenda date and structure no longer behave like headings in other Org buffers. Instead, they have their own styles to better perform their intended function and to avoid exaggerations. + org agenda dimmed to-do items (which have blocked sub-items) are no longer assigned a subtle grey background colour. They are instead rendered with a bold weight and a subtle grey foreground to minimise distractions. Thanks to Roman Rudakov for reporting this in issue 101: <https://gitlab.com/protesilaos/modus-themes/-/issues/101>. + org agenda clocked items are configured to extend their background to the edge of the window. Otherwise they are cut off at the last text character, which creates inconsistencies while using tags: a tag is placed to the right so the background extends further than without them. Based again on the feedback of Roman Rudakov in issue 101: <https://gitlab.com/protesilaos/modus-themes/-/issues/101>. + org agenda current time no longer uses a background. A bold weight and a blue foreground are applied instead. The intent is to keep things clean. This is also covered by Roman Rudakov's feedback in issue 101: <https://gitlab.com/protesilaos/modus-themes/-/issues/101>. + org-checkbox-statistics-done, org-checkbox-statistics-todo inherit from org-done and org-todo respectively, instead of defining their own properties. + org drawers and their data now use 'fixed-pitch' in the interest of consistency with other metadata-like faces. Thanks (yet again!) to Nicolas De Jaeghere for reporting the issue: <https://gitlab.com/protesilaos/modus-themes/-/issues/91>. + org-footnote underlines will now always use the same colour, instead of applying the one of other coloured constructs (e.g. when the footnote is inline and part of the text is rendered as verbatim). + org-meta-line is less prominent and, thus, more consistent with other metadata-related constructs. + org-roam faces are updated to match the current state of the upstream project. The main colour of org-roam links is now different than that of standard links in an attempt to differentiate between the two (due to their unique semantics). If this is not desired, you can evaluate the following: (setq org-roam-link-use-custom-faces nil) + org-todo, org-done, as well as relevant faces such as priorities and statistics are reviewed to work better with all heading combinations. Though please read the next section about "adaptive headings", as such workarounds will no longer be necessary for future stable releases of Org. + selectrum uses different styles than before to account for its unique property of overlaying matching characters on top of the current line's background. We want to avoid scenaria where matches are difficult to discern and the current line is not clear. + vc modeline states benefit from improved colour choices. Just minor adjustments to account for the review of the base modeline colours. + vterm base colours now are variants of gray to ensure that some tools, such as zsh suggestions work properly. Thanks to user "jixiuf" for reporting this issue and suggesting a possible solution: <https://gitlab.com/protesilaos/modus-themes/-/issues/93>. Contributions to the wider community ==================================== Sometimes the themes reveal bugs in other packages. It is of paramount importance that we report those to the upstream developers, try to help them reproduce the issue, and, where possible, support them in tracing the problem's root cause. Four such cases during this release: 1. Adaptive Org headings. Solved upstream and documented on my website: <https://protesilaos.com/codelog/2020-09-24-org-headings-adapt/>. Reported and discussed on the themes' issue tracker: <https://gitlab.com/protesilaos/modus-themes/-/issues/37>. 2. Alignment of Org tags with proportional fonts. Ongoing thread: <https://lists.gnu.org/archive/html/emacs-orgmode/2020-09/msg00415.html>. Reported and discussed on the themes' issue tracker: <https://gitlab.com/protesilaos/modus-themes/-/issues/85>. 3. Org priority cookie has extra space. Ongoing thread: <https://lists.gnu.org/archive/html/emacs-orgmode/2020-09/msg00696.html>. Reported and discussed on the themes' issue tracker, with feedback from Roman Rudakov: <https://gitlab.com/protesilaos/modus-themes/-/issues/95>. 4. Company overlay pop-up misaligns items. Reported upstream and acknowledged as a known issue that occurs in certain cases: <https://github.com/company-mode/company-mode/issues/1010>. Discussion on the themes' issue tracker, with feedback from Iris Garcia: <https://gitlab.com/protesilaos/modus-themes/-/issues/96>. Miscellaneous ============= + Belatedly (by about 2 weeks) pushed tag for version 0.12.0. Thanks to Alex Griffin for bringing this to my attention: <https://gitlab.com/protesilaos/modus-themes/-/issues/89> + Fixed a bug with how some older customisation options were declared as obsolete. Thanks to Tassilo Horn for noticing and reporting the problem: <https://gitlab.com/protesilaos/modus-themes/-/issues/88>. + Fixed a misplaced optional prefix argument in the manual for how to switch themes using a custom function. Thanks to Manuel Uberti for catching this omission of mine and reporting it: <https://gitlab.com/protesilaos/modus-themes/-/issues/84>. + Silenced the Elisp package linter for a spurious error on a single eldoc face. Thanks to Steve Purcell for the guidance: <https://github.com/purcell/package-lint/issues/187>. + Defined two new dedicated background colours for exceptional cases. These are intended for internal use in very special circumstances. + Reword GuixSD to "Guix System" in the list of package formats currently available. + Reviewed the main blue colours for both themes. While the changes are practically impossible to discern upon first sight, the process was far from straightforward. A complete report documents the minutia: <https://protesilaos.com/codelog/2020-09-14-modus-themes-review-blues/>. + Reviewed the "active" palette subset, typically used in the modelines. No report was necessary for those, as the changes were fairly simple. + Reviewed the "intense" background colour that comes into effect when users opt for the customisation option for intense paren-match styles (check the manual). Both the hue and the saturation have been changed to better conform with the intended function of this particular entry. + Reviewed the fringe-specific accented backgrounds. Commit 7316e3320 contains tables that compare the relative luminance of old and new values. + Improved the advice for setting fonts using 'set-face-attribute'. The information is in the manual and is also available as a blog entry: <https://protesilaos.com/codelog/2020-09-05-emacs-note-mixed-font-heights/>. + Rewrote an expression as "(or x y)" instead of "(if x x y)" in one place. Just goes to show that tweaking the code is also part of the deal. + Abstracted and simplified heading level properties by using bespoke theme faces. Makes it easier to keep things consistent across the various face groups. + Same principle as above for diff-related styles. + Users who prefer to do things their own way or who just wish to contribute code to the Modus themes may wish to read my "Notes for aspiring Emacs theme developers": <https://protesilaos.com/codelog/2020-08-28-notes-emacs-theme-devs/>. This has been yet another period of intense work: reviewing faces and applying colours is never easy, adding new customisation options is always tricky, and documenting everything takes a lot of time (unless you do all of those on a whimsy, which hopefully is not the case here). Thanks again to everyone who helped improve the themes!
    a5832c93 · Update to version 0.13.0 ·
  • 0.12.0   Modus Operandi and Modus Vivendi version 0.12.0 By Protesilaos Stavrou <info@protesilaos.com> on 2020-08-26 This entry documents the set of changes since version 0.11.0 (2020-07-31). There have been around 70 commits in the meatime, though the sheer number may obfuscate the fact that a lot of work has gone into this release. As always, every change described here conforms with the accessibility objective of the themes for a minimum 7:1 contrast ratio between background and foreground values in their given combinations (conformance with the WCAG AAA standard). New customisation options ========================= 1 Completion Frameworks ----------------------- The star of the show has to be the new option that refashions the aesthetics of completion UIs: Helm, Icomplete, Ido, Ivy, Sallet, Selectrum. The 'modus-operandi-theme-completions' and 'modus-vivendi-theme-completions' accept the following symbols: + nil (default) + moderate + opinionated Nil means that the overall presentation of the UI follows the patterns established by its own source code. For example, Ivy uses four distinct background and foreground combinations of accented colours to highlight the matching groups. A grey background is added to denote the implicit match between those groups. So we choose to respect this metaphor, while applying colours that conform with the accessibility goal of our project. Whereas Icomplete or Ido use subtle styles to present their results. Again, we remain faithful to their presentation. With 'moderate', we apply nuanced background and foreground combinations of accented colour values. This will slightly tone down Helm, Ivy, Sallet, Selectrum, while it will slightly adjust the looks of Icomplete and Ido. Whereas 'opinionated' has a more pronounced effect on the overall aesthetics of the UI. For the likes of Icomplete and Ido which are subtle by default, this option will use intense combinations of background and foreground colours. They are the diametric opposite of the nil value. Whereas Helm, Ivy, Sallet, Selectrum, will use even more subtle colours. Again, they are farther away than their default looks. These new options supersede the now-deprecated and more limited in scope variables of prior releases: + modus-operandi-theme-intense-standard-completions + modus-vivendi-theme-intense-standard-completions Thanks to the following people for their valuable feedback in issue 75: https://gitlab.com/protesilaos/modus-themes/-/issues/75 + Anders Johansson + Manuel Uberti + Shreyas Ragavan 2 Prompts --------- The 'modus-operandi-theme-prompts' and modus-vivendi-theme-prompts' will change the overall looks of minibuffer and shell prompts ('M-x shell' as well as 'M-x eshell'). Their possible values are: + nil (default) + subtle + intense Nil will only use a coloured foreground for the prompts' text. Simple and effective. With 'subtle', the default foreground value is retained but is now complemented by an appropriately tinted background. The effect is more noticeable than the default, though not by much. While 'intense' applies a coloured background and foreground combination that should clearly stand out from the rest of the context. Thanks to Manuel Uberti for sharing feedback in issue 74: https://gitlab.com/protesilaos/modus-themes/-/issues/74 3 Fringe visibility ------------------- A new pair of symbols supersedes older variables: + modus-operandi-theme-visible-fringes ==> modus-operandi-theme-fringes + modus-vivendi-theme-visible-fringes ==> modus-vivendi-theme-fringes While the deprecated options were booleans, the current ones offer a choice between the following: + nil (default) + subtle + intense Nil means that the fringes have no distinct background of their own. They still exist per the settings of 'fringe-mode', but can only be discerned by tracking the negative space between the frame's or window's edge and the buffer's effective boundaries. The 'subtle' value will apply a greyscale background that is fairly close to the default main background (pure white/black). The fringes are now visible. As its name implies, 'intense' has a more pronounced effect than the other values. It also uses a greyscale background. Review of already supported faces and colours ============================================= 1 Magit blame styles -------------------- The headers that Magit's blame interface produces were difficult to tell apart from their context. A set of carefully selected colours now makes sure that they are always distinct. Some subtle background values are used, in addition to other typographic elements. Thanks to Damien Cassou for reporting this problem and for providing valuable feedback that informed the final design. Refer to issue 71: https://gitlab.com/protesilaos/modus-themes/-/issues/71 2 Paren match colours --------------------- The face that highlights the matching delimiter when 'show-paren-mode' (or equivalent) is enabled uses two dedicated colours, whose names are: 'bg-paren-match' and 'bg-paren-match-intense'. Those have been reviewed to make them more obvious in various contexts and to improve their overall consistency. A report with relative contrast ratios is available on my website: https://protesilaos.com/codelog/2020-08-09-modus-themes-paren-match/ I benefited from valuable feedback from Shreyas Ragavan in issue 70: https://gitlab.com/protesilaos/modus-themes/-/issues/70 3 Mu4e faces ------------ Some faces were tweaked to make it easier to distinguish replied, forwarded, and draft messages from other headers. The changes are fairly small in scope, but the effect should be that of an overall improvement. Thanks to Shreyas Ragavan for noticing these inconsistencies and for their continued participation in addressing them. See issue 69: https://gitlab.com/protesilaos/modus-themes/-/issues/69 4 Notmuch message headings -------------------------- A couple of inconsistencies with how notmuch would style email addresses and folded messages were addressed. The generic 'italic' face was also tweaked in the process, removing the foreground it would falsely define. Thanks to Damien Cassou for bringing these to my attention in issue 72: https://gitlab.com/protesilaos/modus-themes/-/issues/72 5 hl-todo --------- Let the special keywords of 'hl-todo-mode' use an optional slant, just like code comments do. This is to ensure that they feel part of their context. 6 Magit general interface ------------------------- Several faces were reviewed in the interest of colour harmony and to address potential inconsistencies or exaggerations. The most noticeable change pertains to the log views, as we now use fewer accent values, reducing whatever unnecessary "rainbow effect" may have existed. 7 VC commit logs ---------------- The presentation of 'vc-print-log' and 'vc-print-root-log' has been reviewed to reduce the stark contrast between the colours it once used. While the elements remain distinct, the differences between them are more subtle, which is preferable when viewing long lists of similar-looking patterns. 8 Powerline ----------- The active and inactive minibuffers now use appropriate accented backgrounds or foregrounds for some of their elements. This makes them better for their intended function. Thanks to Shreyas Ragavan and tycho garen for their feedback in issue 73, which was actually about adding support for Spaceline. It uses Powerline as its dependency, so we eventually had to accommodate both of them: https://gitlab.com/protesilaos/modus-themes/-/issues/73 Shreyas also helped by adding a short note in the README which informs users of those two packages on how to tweak things when conducting tests or changing themes. See merge requests 9 and 10: + https://gitlab.com/protesilaos/modus-themes/-/merge_requests/9 + https://gitlab.com/protesilaos/modus-themes/-/merge_requests/10 9 Latex sectioning ------------------ The themes will no longer affect the height of the Latex sectioning faces. This is because there already exists a variable that scales them accordingly. Thanks to Anders Johansson for providing insights in issue 77: https://gitlab.com/protesilaos/modus-themes/-/issues/77 10 Transient pop-up menu ------------------------ Extended support for its new colour-coded faces that follow in the footsteps of the 'hydra' package for visual semantics. 11 Miscellaneous ---------------- The following faces were refined: + 'org-formula' inherits from 'fixed-pitch' to ensure that it does not break table layouts when the user opts for a mixed-font setup (such as with 'M-x variable-pitch-mode'). + 'bongo-elapsed-track-part' uses a more appropriate accented background. + 'symbol-overlay-default-face' is less intense than before. This is in response to feedback I received from Manuel Uberti as an aside in issue 75: https://gitlab.com/protesilaos/modus-themes/-/issues/75 + 'rectangle-preview' uses a slightly accented background, which distinguishes it from the highlighted region. This is to denote a different state where the user is typing in some text. + 'diff-hl-change' now uses the more appropriate yellow colour instead of blue. Yellow denotes "mixed changes" and, therefore, stands between "removed" (red) and "added" (green). As it so happens, yellow is a colour that derives by mixing red with green. New packages ============ The following are now explicitly supported by the themes: + org-table-sticky-header + pkgbuild-mode + semantic + spaceline More faces or face groups that are defined: + git-rebase (magit) + doom-modeline-debug-visual + file-name-shadow + the faces used by Emacs 27's 'display-line-numbers-major-tick' and 'display-line-numbers-minor-tick' + table-cell Final notes =========== There now exists an HTML version of the README, which will hopefully make things easier for users: https://protesilaos.com/modus-themes/ Other changes are not user-facing. For example, using 'pcase' instead of 'cond' to make relevant expressions more succinct. Or defining a coloured underline in a more straightforward way. No need to document them at length. While this release introduces customisation options, it feels as though the themes are approaching a stable state. We know what works, we have a comprehensive colour palette that can meet our evolving needs, and we have already achieved broad package/face coverage. All while conforming with the overarching objective of this project for a minimum 7:1 contrast ratio between background and foreground values in any given combination we specify. I wish to thank everyone who has helped me by testing things and sharing their thoughts. The people already mentioned herein: - Anders Johansson (https://gitlab.com/andersjohansson) - Damien Cassou (https://gitlab.com/DamienCassou) - Manuel Uberti (https://gitlab.com/muberti) - Shreyas Ragavan (https://gitlab.com/shrysr) - tycho garen (https://gitlab.com/tychoish)
    67554a62 · Prepare version 0.12.0 ·
  • 0.11.0   Modus Operandi and Modus Vivendi version 0.11.0 By Protesilaos Stavrou <info@protesilaos.com> on 2020-07-31 This entry records the changes since version 0.10.0 (2020-06-24). The present release covers close to 100 commits, some of which introduce far-reaching changes. It is not just the quantity that matters. Sometimes even a minor tweak requires lots of testing and forethought. This release represents another month of intense work and attention to detail. Palette review of "nuanced" colours =================================== The themes contain a subset of palette variables that have a two-fold utility: 1. Provide a subtle coloured background that can be combined with all foreground colours that are intended for text/code highlighting. 2. Produce variegated text in cases where complementary information needs to be displayed alongside some more prominent construct (e.g. Org table formulas). In early July 2020, these colours went through a comprehensive review to improve their intended use. The complete report is available on my website: <https://protesilaos.com/codelog/2020-07-08-modus-themes-nuanced-colours/> This formed the preparatory work that enabled several of the changes documented herein, most noticeable among which is the "Org blocks" customisation option. Customisation options ===================== Org blocks ---------- 1. The symbols 'modus-operandi-theme-distinct-org-blocks' and 'modus-vivendi-theme-distinct-org-blocks' are DEPRECATED. They are now REPLACED by the general-purpose 'modus-operandi-theme-org-blocks' and 'modus-vivendi-theme-org-blocks' respectively. 2. The aforementioned new symbols allow users to configure different styles for Org blocks. + Option 'greyscale' (which you must quote like this: 'greyscale) will apply a subtle grey background to the contents of the block, while it will extend its beginning and end lines to ensure that the area is distinct from the rest of the buffer. This is the style you would normally get with the old customisation options. + Option 'rainbow' (again, must be quoted) will instead apply a colour-coded subtle background in the main area of the block. The exact colour depends on the programming language being used. You would need to check the source code for how these are currently mapped (search for "org-src-block-faces"). The basic idea is to have different colours that make it easier for mixing the input/output of multiple programming languages. Users who engage in literate programming may find this particularly useful. Because the block is already quite apparent, the beginning and end lines are not extended to the edge of the window, to avoid exaggerations that could create distractions. Variable pitch headings (proportionately-spaced headings) --------------------------------------------------------- The symbols 'modus-operandi-theme-proportional-fonts' and 'modus-vivendi-theme-proportional-fonts' are DEPRECATED. They are now REPLACED by the more appropriately-named 'modus-operandi-theme-variable-pitch-headings' and 'modus-vivendi-theme-variable-pitch-headings' respectively. The intended effect is exactly the same as before, namely, to let headings in Org and relevant modes use a proportionately-spaced font regardless of what the default is (typically a monospaced typeface). Remember that to configure the exact font family for the generic 'variable-pitch' face, you can use something like this: (set-face-attribute 'variable-pitch nil :family "FiraGO") Check the README for further details on setting and mixing fonts. Faint syntax for programming ---------------------------- Users can now enable 'modus-operandi-theme-faint-syntax' or 'modus-vivendi-theme-faint-syntax'. The intended effect is to tone down all syntax highlighting in programming modes, while always respecting the overarching objective of these themes for a minimum contrast ratio of 7:1 (highest accessibility standard for colour contrast---WCAG AAA). The default is to use more saturated colours. Intense hl-line --------------- Toggling on 'modus-operandi-theme-intense-hl-line' or 'modus-vivendi-theme-intense-hl-line' will apply a more pronounced grey to the background of faces that highlight the current line. This affects tools such as the built-in 'hl-line-mode', which is in turn enabled automatically by lots of other packages, like 'elfeed' and 'mu4e'. The default is to use a subtle grey. Intense paren-match ------------------- Same principle as above. 'modus-operandi-theme-intense-paren-match' and 'modus-vivendi-theme-intense-paren-match' will make the matching parentheses more intense than the default subtle warm background. This concerns modes such as that of the 'smartparens' package as well as the built-in 'show-paren-mode'. Refactored the use of bold ========================== A major review of the themes now makes it possible to specify the exact weight of what a "bold" typeface is. This is only meaningful for cases where a font family has variants such as "semibold". Evaluate this, replacing "semibold" with the one your typeface supports: (set-face-attribute 'bold nil :weight 'semibold) The default is to use a standard bold weight. Packages and face groups ======================== Refine already-supported faces ------------------------------ + The following packages now use more appropriate colour combinations: - diary - annotate - transient (magit pop-up menu, though also used elsewhere) - fountain - calendar - mu4e - markdown-mode - outline-minor-faces + Other changes: - org-agenda has undergone a thoroughgoing review to improve the semantics of colour for scheduled tasks, deadlines, modeline filters, current date etc. - org and outline-mode headings have been refined to look better with the "rainbow headings" option that was introduced in an earlier release (check the README). - org-quote now works properly with the "Org blocks" option mentioned above. - org-checkbox-statistics uses the same foreground colour as org-todo, for the sake of consistency. - org-date now always inherits from 'fixed-pitch', to ensure proper alignment of elements when a mixed fonts setup is used (tools for achieving this effect are documented at length in the README). The relevant patch was contributed by Matthew Stevenson. - org-meta-line no longer looks like a comment, which helps denote its special utility (e.g. when evaluating a table's formula). - org-warning now uses a variant of red for its text, which works better in the contexts this face is used (e.g. the agenda or the export dispatcher). - We now apply a slightly more accented colour combination for 'secondary-selection', which is chiefly used by Org and Calendar in various contexts. - Gnus group level faces make more considerate use of colour to better denote their significance. - Cited text in message buffers has a better sequence of colours. - Two new Helm faces are supported. - Let 'keycast' use a different border colour when the "3D modeline" option is enabled (refer to the README for that option). - Extend 'hl-todo-keyword-faces' with the "bug" keyword. - More intense colour for 'diff-hl-reverted-hunk-highlight'. - Tone down the focused modeline's border colour. - Define new bespoke faces that the themes use internally. - Use more appropriate colours for 'header-line-highlight'. - Apply greyscale line highlight for flycheck current line in the diagnostics buffer, instead of the warmer colour combination it had before. - Tweak text colour difference between MU4E read and unread messages. Added support for new packages ------------------------------ + bongo + boon + dictionary + eshell-fringe-status + eshell-git-prompt + eshell-prompt-extras + highlight-tail + hl-defined + notmuch + tty-menu Miscellaneous ============= + Expand the README with new documentation and clarify parts of the existing one. + Update the Wiki page with screenshots and their descriptions (this in itself is a day's worth of work): https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots + Make the source code of each theme work better with the built-in 'outline-minor-mode'. Check my video if you need a demo on how I use this in tandem with 'imenu': https://protesilaos.com/codelog/2020-07-20-emacs-outline-imenu/ Thanks to, in no particular order: + Shreyas Ragavan (https://gitlab.com/shrysr) for introducing me to the idea that derived the "rainbow" Org blocks and for providing valuable feedback in several issues. + Matthew Stevenson (https://gitlab.com/matth0204) for contributing the aforementioned patch for the 'org-date' face. + Manuel Uberti (https://gitlab.com/muberti) for offering valuable feedback in a number of issues (and special thanks for doing this for several months now). + Dinko (https://gitlab.com/dinkonin) for noticing a not-so-obvious bug in the initial implementation of the "rainbow Org blocks" option. + okamsn (https://gitlab.com/okamsn) for providing the necessary feedback that allowed me to refactor the use of "bold", mentioned above. Refer to the issue tracker (or commit log) for further details: https://gitlab.com/protesilaos/modus-themes/-/issues
    c376b080 · Prepare version 0.11.0 ·
  • 0.10.0   Modus Operandi and Modus Vivendi version 0.10.0 By Protesilaos Stavrou <info@protesilaos.com> on 2020-06-24 This entry records the changes since version 0.9.0 (2020-06-03). The present release is focused on stability and internal improvements. Fixes and adjustments --------------------- Basil L. Contovounisios, aka @basil-conto, (and also a contributor to core Emacs) sent several patches that do the following: + Fix top-level parentheses so that the results of 'custom-theme-set-faces' and 'custom-theme-set-variables' are not passed as arguments to the first 'custom-theme-set-faces'. + Fix the docstrings of the custom 'modus-theme-*' faces. + Simplify the syntax of properties assigned to each face. + Improve the way styles are inherited by Dired and Ibuffer. Basil also pointed out an inconsistency with regard to an unwanted underline effect for the 'doom-modeline-urgent' face in Modus Vivendi. It was promptly removed. From my part, I fixed issues 46 and 51 that concerned the way the compiler would evaluate each theme's palette. The palette is now defined as a constant. Further information: - https://gitlab.com/protesilaos/modus-themes/-/issues/46 - https://gitlab.com/protesilaos/modus-themes/-/issues/51 Improvements to existing faces ------------------------------ André Alexandre Gomes (@aadcg) provided valuable feedback and suggestions in issue 50 on the redesign of several 'org-mode' faces. The thread is long and contains lots of screenshots: https://gitlab.com/protesilaos/modus-themes/-/issues/50 The changes in outline: + Org checkboxes have a subtle background which gives them a more pronounced appearance while retaining their overall simplicity. + Org dates use a more saturated variant of cyan than they did before. It helps distinguish them from their context. Especially true for dates inside of tables. + Org agenda dates have also undergone a slight review to match the above. + Org time grid now uses a more appropriate foreground colour, which has been designed specifically for unfocused context. + Org todo keywords use a more semantically-correct variant of red, rather than the purple one they had before. + Org statistics' cookies for pending tasks use a red variant as well rather than the previous yellow one, in the interest of consistency and to avoid exaggerations. Other internal refinements -------------------------- + Subtle review of the Modus Vivendi palette. In short, it addresses: - Imbalanced levels of luminance and inconsistent differences in hue between them and their neighbouring colours (e.g. the greens between them, and the greens next to the yellows in the context of syntax highlighting). The result was that they would create an undesirable emphatic 'pop out' effect when placed close to more moderate colours. - Differences in luminance and hue could lead to scenaria where two colours could be conflated with each other or otherwise fail to perform their intended function. - The complete report is on my website: https://protesilaos.com/codelog/2020-06-13-modus-vivendi-palette-review/ + Major review of the 'diredfl' faces, in the interest of improved readability and harmony between the various colours. This benefits from the palette changes in Modus Vivendi, but also from a similar review to Modus Operandi that was documented in version 0.9.0. + Refactor the names of dedicates colours for "marking" purposes. These are used in Dired, Ibuffer, Proced, etc. Then apply them consistently throughout each theme. + Make sure that 'stripes' uses the same colours as 'hl-line-mode'. + Let symlinks use a more appropriate colour in Dired and Trashed. + Refine the use of colour in 'magit-tag', 'eshell-prompt', 'message-header-name', 'log-edit-header', 'change-log-function', 'message-mml', 'message-header-name', 'message-separator'. These are subtle (i.e. difficult) tweaks that improve the overall presentation in context. + Make diff indicators not use an unnecessary background when the user-facing option for "subtle diffs" is enabled (check the README for the exact name of this option). This ensures consistency between the indicators and the actual scope of the diffs. + Add support for the 'minibuffer-line' package and extend existing support of the faces used in the built-in Emacs info pages. My thanks to Basil and André for their contributions!
    aa3897c8 · Upgrade to version 0.10.0 ·
  • 0.9.0   0.9.0 Modus Operandi and Modus Vivendi version 0.9.0 By Protesilaos Stavrou <info@protesilaos.com> on 2020-06-03 This entry records the changes since version 0.8.0 (2020-04-28). The present release contains about 50 commits, covering a month of active development. All changes are aligned with the primary objective of this project, which is conformance with the WCAG AAA accessibility standard for colour contrast. This translates to a minimum contrast ratio of 7:1 between a given combination of foreground and background colours. The highest standard of its kind. All customisation options that are booleans are off ('nil') by default. The project's policy is to offer such features on an "opt-in" basis, while always respecting the principle of least surprise. Refer to the README for further information on the exact names of symbols and the like. New customisation options ------------------------- + It is now possible to make the faces of Icomplete, Ido, and a few other related tools such as 'orderless', use coloured backgrounds to style their feedback. This is the aesthetic already in effect for Ivy, Helm, and Selectrum. The default is more subtle, in that it uses just an accented foreground value without any added background. + Advanced users can now override both the exact values of colour variables, as well as the mapping of properties/variables to faces. In practice this means that it is possible to completely change parts of the theme (or the entirety of it for that matter). It also means that users can simply access the theme's palette for the sake of correctly passing the appropriate value to some bespoke face of theirs. + An extra increment for scaled headings is now available. This should hold the highest value on the scale. Such variables only take effect when the user opts for the "scaled headings" option. Overview of changes ------------------- + A set of internal reforms were carried through in order to allow the colour palette to be accessed from user configuration files. This required a lot of debugging work to make sure the themes compile properly and performance is not affected. - The original idea for this redesign was suggested by Len Trigg in issue 39: https://gitlab.com/protesilaos/modus-themes/-/issues/39. Len also provided a real-world implementation of this new option, which is included in the project's README. - André Alexandre Gomes helped figure out the problems caused by the initial design of this feature. In particular, André identified a performance penalty as well as errors pertaining to byte compilation. Everything was eventually resolved. For more see issue 44: https://gitlab.com/protesilaos/modus-themes/-/issues/44. + Several org-mode faces were reviewed in order to cope well with mixed font settings. This is about use-cases where the main typeface is proportionately-spaced, either by default or by some minor mode like the built-in 'variable-pitch-mode'. The intent of configuring those faces is to make them always inherit a fixed-pitch (monospace) font family, in the interest of preserving the alignment of elements. The idea, suggested code, as well as user feedback were offered by Ben in issue 40: https://gitlab.com/protesilaos/modus-themes/-/issues/40. + Mixed font settings may have some side-effects depending on user configurations. This is unavoidable as we cannot control how users define their fonts. Mark Barton reported one such case, while he was able to fix it by making use of the suggested typeface definitions. See issue 42: https://gitlab.com/protesilaos/modus-themes/-/issues/42. + The faces for the 'tab-bar-mode' and 'tab-line-mode' that ship with Emacs 27 were written anew. Same for those of 'centaur-tabs'. The ideas for the redesign as well as the overall aesthetic are Ben's, per issue 41: https://gitlab.com/protesilaos/modus-themes/-/issues/41. + An edge case with Helm's interpretation of colour values for its ripgrep interface was reported by Manuel Uberti in issue 49: https://gitlab.com/protesilaos/modus-themes/-/issues/49. It essentially had to do with the syntax for the regexp engine as read by the underlying 'rg' executable. Collaboration on that front eventually led to fixes in Helm itself, committed by its maintainer. Note that the README for the Modus themes already contains information on how Helm applies a face to the matches of grep or grep-like commands. Issue 49 confirmed what was already known in that regard (i.e. that the "--color=never" command-line option is required to use the Helm face, else a colour value from the ANSI colour vector is used---both are supported by the themes). + The faces for Flycheck, Flymake, and Flyspell that would apply an underline effect were completely rewritten to account for relevant differences between GUI and TUI Emacs. - For GUI Emacs, all affected faces will now just use a colour-coded wavy underline. Empowered by the introduction of dedicated linter-related colours in prior commits (for version 0.8.0), we no longer have to change the foreground value of the offending text in addition to applying the underline effect. Whereas before the text would also get repainted, which was too intrusive in most circumstances. - If support for wavy underlines is not available, we assume the presence of a TUI, which generally is relatively more limited in its ability to reproduce colours with precision (meaning that the dedicated linter colour could be distorted, potentially producing inaccessible combinations). So for those cases we apply a straight underline combined with a colour-coded foreground for the affected text. This makes it more intense compared to the GUI equivalent, but is the necessary course of action to overcome the constraints imposed by the underlying terminal. + The palette of Modus Operandi underwent lots of subtle changes to make the background value of hl-line-mode more visible while retaining the overall style and character of the theme. In principle, you should not be able to tell the difference, unless presented with a careful side-by-side comparison. This is the comprehensive report, including a reproducible org-mode document with all the relevant contrast ratios: https://protesilaos.com/codelog/2020-05-10-modus-operandi-palette-review/. + Fixed `org-hide' to actually "hide" by using the appropriate colour value. + Several other face groups received minor tweaks. + The README was improved to better present the available customisation options and to cover other topics of interest. + Updated the screen shots and their description in the relevant Wiki page: https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots. Added support for ----------------- + circe + el-search + eros + golden-ratio-scroll-screen + highlight-indentation + hyperlist + indium + journalctl-mode + minimap + nxml-mode + vdiff + yasnippet
    3406e29e · Upgrade to version 0.9.0 ·
  • 0.8.1   0.8.1 Fixes a missing comma in a single colour variable.
    89a31f62 · Update to version 0.8.1 ·
  • 0.8.0   Modus Operandi and Modus Vivendi version 0.8.0 By Protesilaos Stavrou <info@protesilaos.com> on 2020-04-28 This entry records the changes since version 0.7.0 (2020-03-30). The present release contains a little more than a hundred commits, covering one month of intense work. All changes are aligned with the primary objective of this project, which is conformance with the WCAG AAA accessibility standard for colour contrast. This translates to a minimum contrast ratio of 7:1 between a given combination of foreground and background colours. All customisation options mentioned herein are off ('nil') by default. The project's policy is to offer such features on an "opt-in" basis, while always respecting the principle of least surprise. Refer to the README for further information. Four new customisation options ------------------------------ The options in outline, with their detailed description below: + Rainbow headings + Section headings + 3D modeline + Subtle diffs 1. "Rainbow headings" will apply more vivid colours to headings in 'org-mode' and 'outline-mode'. The gradation is similar to that of a rainbow's colour spectrum. The default is to use colour values that are closer to the grey scale. 2. "Section headings" also apply to 'org-mode' and 'outline-mode'. They will draw an overline over each heading and use a nuanced background colour that is appropriate for each level. For Org, this option has some additional effects, where it will render keywords and priority cookies in a box and add to them a subtle background. This is to make sure that everything feels consistent (to the extent possible). The default is to not use overlines, backgrounds, boxes in any of the relevant faces. This is consistent with the standard austere colouration of headings: to not deviate too much from a "plain text" aesthetic. NOTE: "rainbow headings" and "section headings" can work on their own or be combined together. 3. "3D modeline" will use a faux unpressed button style for the current window's modeline (like the standard looks of 'emacs -Q'). The colours used for the active and inactive modelines are tweaked accordingly to maximise the effect while retaining the visual distinction between them. The default is to draw the modelines in a two-dimensional style, with the active one having a more noticeable border around it. 4. "Subtle diffs" will use colour-coded text for line-wise differences without applying any appropriately-coded background value or, where necessary, by using only a subtle greyscale background. This affects 'diff-mode', 'magit', 'ediff', and 'smerge-mode'. For Magit an extra set of tweaks is implemented to account for the differentiation between the focused and unfocused diff hunks. Due to their unique requirements, word-wise or refined changes are always drawn with a colour-coded background, though it is less intense when this option is enabled. The default is to use a colour-coded background and foreground combination (e.g. light green text on a dark green backdrop) and to make appropriate adjustments for refined diffs and modes of interaction such as Magit's focused/unfocused diff states. Other major refinements ----------------------- + Thoroughly revise the colours of 'ediff' and 'smerge-mode', so that they are aligned with those of 'diff-mode' and 'magit'. This is in addition to the "subtle diffs" options mentioned in the previous section. + Review the faces used by Flycheck and Flymake. A wavy/curly underline is now used in all terminals that support it. The underlined text is drawn with a more nuanced foreground than before. The previous design was exaggerating an already clear effect and could make things more difficult under certain circumstances. + All language checkers, including the aforementioned linter front-ends, now benefit from a new set of colours that are designed specifically for this particular purpose. Makes the affected faces feel more different than their context. + Use dedicated colours for escape sequences, regular expression constructs, and quoted characters. The goal is to better differentiate them from their surroundings. + Tweak the colours of 'hydra' to improve the distinction between its various types of behaviour. + Reduce the overall luminance of the background colours used in the fringes by the likes of 'flycheck', 'flymake', 'diff-hl', etc. They should now not stand out more than they should, while retaining their intended role. + Implement more saturated colours in Elfeed. The previous choices could make it harder to differentiate the various parts of the presentation. + Make better use of the customisation options for bold and slanted constructs where that is allowed. If a face is not tied to the semantics of these styles then it is drawn without them, unless the user specifically opts for the relevant customisation options. Added support for packages (A-Z) -------------------------------- + ag + color-rg + ctrlf + debbugs + eglot + forge + helpful + highlight-symbol + ibuffer + icomplete + iflipb + magit-imerge + man + orderless + page-break-lines + parrot + phi-grep + phi-search + pomidor + rcirc + spell-fu + switch-window + swoop + tab-bar-mode + tab-line-mode + trashed + tomatinho + tuareg + vimish-fold + visible-mark + vterm + wcheck-mode + winum + woman Miscellaneous changes and concluding remarks -------------------------------------------- + Rewrote large parts of the README to make the customisation options easier to discover and understand. + Updated the screen shots and their description in the relevant Wiki page: https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots
    29078bdb · Upgrade to version 0.8.0 ·
  • 0.7.0   0.7.0 Modus Operandi and Modus Vivendi version 0.7.0 By Protesilaos Stavrou <info@protesilaos.com> on 2020-03-30 This entry documents the changes since version 0.6.0 (2020-03-01). The present release is the largest to date containing 110 commits. All changes conform with the primary objective of this project, which is conformance with the WCAG AAA accessibility standard for colour contrast. This represents a minimum contrast ratio of 7:1 between a given combination of foreground and background colours. All customisation options mentioned herein are off ('nil') by default. The project's policy is to offer such features on an "opt-in" basis. Refer to the README or each theme's source code for the names of these user-facing symbols. Major refinements to existing face groups ----------------------------------------- + The headline feature of this release is a refined set of colours for visualising version-control-system differences ("diffs"). The new colours are less intense than before and are designed to better convey the meaning of the constructs they apply to. Affected face groups are those of 'magit' and 'diff-mode'. A future release will assess how similar packages, such as 'ediff', can benefit from this work. + The other major set of changes concerns the colours that apply to fringes (see 'fringe-mode'). A new customisation option allows for a distinct background for the fringes (courtesy of Anders Johansson in commit 80fb704). The default uses the same colours as the main buffer's background. Building on this effort, fringe indicators, such as those of 'flycheck' now benefit from an entirely new set of background+foreground colour combinations that are designed specifically for the fringes. + A new customisation option allows users to render 'org-mode' source blocks in a distinct background colour. The default is to use the same background as the rest of the buffer. When this option is enabled, the background colour for the beginning and end line of such blocks is extended to the end of the window (using the ':extend t' attribute for >= Emacs 27). Older Emacs versions already extend to the end of the window. + The colour combination that shows the matching parentheses or delimiters has been reviewed. The commit is fairly small and the changes are immediately noticeable only to the most discerning of eyes. Still, the considerations informing the review imposed a rigorous method. Rather than summarise the findings, interested readers are advised to refer to commit af3a327: it offers a comprehensive analysis on the matter. Added support for packages (A-Z) -------------------------------- + auctex/tex + bm + buffer-expose + centaur-tabs + cider (tentative, feedback is much appreciated) + csv-mode + dynamic-ruler + ebdb + elfeed-score + flyspell-correct + fold-this + freeze-it + frog-menu + git-walktree + helm-switch-shell + highlight-defined + highlight-escape-sequences (hes-mode) + highlight-numbers + highlight-thing + hl-todo + ioccur + julia + kaocha-runner + markup-faces (adoc-mode) + multiple-cursors + num3-mode + org-roam + org-superstar + org-treescope + outline-minor-mode + paradox + rainbow-identifiers + rg + ripgrep + sallet (tentative, feedback is much appreciated) + selectrum + sesman + side-notes + skewer-mode + stripes + symbol-overlay + syslog-mode + vc-annotate (C-x v g) + volatile-highlights + web-mode + yaml-mode Note about VC-annotate ---------------------- Quoting from the relevant note in the project's README: Due to the unique way `vc-annotate' (`C-x v g') applies colours, support for its background mode (`vc-annotate-background-mode') is disabled at the theme level. Normally, such a drastic measure should not belong in a theme: assuming the user's preferences is bad practice. However, it has been deemed necessary in the interest of preserving colour contrast accessibility while still supporting a useful built-in tool. If there actually is a way to avoid such a course of action, without prejudice to the accessibility standard of this project, then please report as much (or contribute as per the information in the Contributing section). Overview of refinements to already supported packages ----------------------------------------------------- In this section the notion of "dedicated colours" pertains to colour values that are reserved for special faces. They are never used for syntax highlighting or other common scenaria. + Define new background colours for fringe indicators (as noted in the first section). Apply them to 'bm', 'diff-hl', 'git-gutter', 'flycheck' fringe indicators. All such indicators are now made more visible and work better with the new customisation option for rendering the fringes in a distinct background. + Define dedicated colours for tab-like interfaces. Currently these apply only to 'centaur-tabs'. The intention is to eventually implement them to the tab modes that ship with Emacs 27, as well as any other package that offers such functionality. + Define dedicated colours for actions that "mark" items. Use them in 'dired', 'proced', 'gnus'. An accented background is combined with an accented foreground. The intention is to make the underlying construct distinct even under circumstances where the mark's background changes, such as when it intersects with 'hl-line-mode' or 'stripes': the accented foreground will still be recognisable as a colour that differs from the main foreground. The use of a bold font weight further reinforces the intended action. + Refine 'dired' faces to account for the new "mark" styles. Directories are no longer rendered in a bold weight. + Tweak the colours used in the built-in 'diary' and 'calendar' for better usability. + Tweak 'deadgrep' colours for consistency with packages that offer similar functionality. + Tweak 'compilation-line-number' in the interest of consistency with similar interfaces. + Use a more appropriate colour for 'trailing-whitespace'. It now is a colour value that was designed specifically as a background. + Expand 'fountain-mode' support by covering its new heading faces. The headings will be presented in larger font sizes, or using proportional fonts, should the user enable the relevant theme customisation options (see README or source code). + Remove bold weight from matching parentheses in 'show-paren-mode' and 'smartparens'. The temporarily applied bold weight can cause misalignments while using certain fonts. Also apply the new colours for matching delimiters, as documented in the first section. + Refine 'outline-mode' colours to be consistent with those of Org's headings. + Several usability and colour refinements for 'helm' and related packages in that milieu. + Remove box property from emphasis markers in the mode line. It created inconsistencies with other faces. + Refine the colours used in Magit logs, `change-log', `log-view'. They are meant to be more distinct from their context, without drawing too much attention to themselves. + Minor internal fixes for indentation and the like. Miscellaneous changes and concluding remarks -------------------------------------------- + Add section in the README which documents a legal requirement for all potential non-trivial code contributions: the need to assign copyright to the Free Software Foundation. The Modus Themes are now distributed via the official GNU ELPA repository and copyright over them is assigned to the FSF. + Add CHANGELOG file which consolidates all tagged release notes such as this one. + Add new screen shots to the relevant Wiki page, together with detailed descriptions on what is being demonstrated: https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots Special thanks to Manuel Uberti for reporting several issues and offering feedback where appropriate. I was able to add support for lots of new packages. While a few among the already supported face groups underwent tweaks and refinements. The 'helm' ecosystem benefited the most. Thanks to Anders Johansson for the patch that introduced the fringes-related customisation option. It inspired me to reconsider the use of this particular area of the interface, which eventually led to the barrage of commits that refashioned the fringe indicators. A major win overall. Thanks to Jonathan Otsuka for fixing an error of mine on the naming of some symbols. My apologies for missing it: I will be more careful from now on. Note: both patches were small, requiring no copyright assignment. Larger contributions are always welcome, though make sure you read the section in the README with regard to assigning copyright to the Free Software Foundation.
    cedb3310 · Upgrade to version 0.7.0 ·
  • 0.6.0   Version 0.6.0 This release contains lots of refinements and additions. Let me start with an administrative point: I have completed the process of assigning my copy rights to the Free Software Foundation. This covers every contribution I make to GNU Emacs. In practice, it means that the Modus themes can now be included in the official ELPA archive and theoretically be shipped with Emacs itself. The ELPA inclusion is ongoing. Once it is completed, I will update the docs accordingly. The administrative change has no effect on the way this project is handled. I still am the developer/maintainer and will continue to improve things further. If you still have questions, feel free to contact me: https://protesilaos.com/contact Moving on to the changes since version 0.5.0 (2020-01-26). Added support for: + alert + apropos (built-in) + dap-mode + deft + dim-autoload + dired-git + enhanced-ruby-mode + gbd-mi.el (built-in library) + helm-ls-git + helm-xref + imenu-list + jira (org-jira) + js2-mode + jupyter + org-pomodoro + origami + rmail (built-in) + vc-print-log (built-in) + window-divider-mode (built-in) + xref (built-in) Refinements to existing faces: + A new subset of "nuanced" accent colours has been introduced. These are named {red,green,yellow,blue,magenta,cyan}-nuanced. Their purpose is to be used in contexts where lots of structured information is presented to the user, but each component does not need to draw too much attention to itself (e.g. Org's metadata). As always, their contrast ratio is designed to always be >= 7:1 relative to the backgrounds they may be combined with. + Greatly improve the support for Gnus, even though most changes are subtle and are made in the interest of consistency. The group levels now make use of the "nuanced" palette where appropriate (to denote levels of lower importance). + Several refinements for Org, including the use of "nuanced" colours for various metadata tags. The agenda headers will now be scaled appropriately and use a variable-pitch font if the user sets the relevant customisation values of the theme they are using (check the documentation in each theme file or the repo's README). + Lots of refinements for Helm. Some of these were introduced to align the overall aesthetic with equivalent metaphors in Ivy. Others are meant to improve the styles of the headers and make various constructs consistent with their variants in the Helm ecosystem but also with their non-Helm counterparts (such as xref file names with and without Helm, but also with Helm's grep). + Improve the colours of buttons in contexts such as M-x customize. This is especially noticeable in modus-vivendi-theme (the dark theme) where the buttons are a darker shade of grey rather than the original lighter one. + Keycast now uses styles that are more consistent with the overall aesthetic of the Modus themes. This means that the mode line indicators are blue-ish (blue is generally used for highlights in the mode line, but also when hovering over an item with the mouse pointer). The pseudo button effect (colours + 3d) has been removed in favour of a flat look, in line with the flatness of the mode line itself. Whereas before the keycast faces where designed to be consistent with the package's defaults. There were also a few minor refinements for: + calendar and diary + icomplete + mm-uu-extract + nobreak-hyphen and nobreak-space + org-habit + tooltip-mode Finally, the Commentary section of each theme has been greatly expanded. It now includes the user-facing customisation options and the complete list of supported packages.
  • 0.5.0   Version 0.5.0 This release contains support for several new packages and lots of refinements for existing ones. A lot of work went into making the themes more robust by reviewing the inheritance of styles from one face group to another (in general, the ':inherit' property should not be used frivolously). Several subtle changes were made to the colour palette of both themes to ensure consistency, enable more possible combinations, and avoid potential ambiguity under certain potential circumstances. Overall, this release gives me confidence that the themes have reached a fairly stable state. What follows is an overview of the changes since version 0.4.0 (2020-01-02). Added support for: + equake + flymake + focus + fountain (fountain-mode) + git-lens + git-timemachine + hi-fill-column + highlight-blocks + info-colors + lsp-mode + lsp-ui + proced (built-in) + regexp-builder (built-in) + suggest Refinements: + The header line uses its own dedicated colours. Several changes were made in 'eww', 'info', 'elfeed', 'magit', 'flycheck' to make sure that any accent value that appears there conforms with the overarching accessibility objective of the Modus themes (contrast ratio of >= 7:1, else WCAG AAA). + 'ivy' no longer uses a box style for the current line, as that was not always reliable. Appropriate colours are used instead. + 'org-mode' blocks use a foreground value that distinguishes their opening and closing tags from source code comments. + The 'org-ellipsis' face was configured to always inherit the looks of its respective heading or element, rather than have its own excessive styling. + 'paren-match' has colours that are designed specifically for it. This is done to retain their utility while making sure they are not mistaken for some other type of feedback. + 'magit' has explicit styles for the mode line process indicators, instead of inheriting from another face. The intention is to use foreground values that are designed specifically for use on the mode line (the minimum contrast ratio requirement). + 'erc' faces have been thoroughly reviewed in the interest of better usability. Its mode line indicators now use appropriate colours. + The faces of the 'messages' library have been thoroughly reviewed. This affects various email interfaces, but also 'elfeed' entry metadata headings. + 'whitespace-mode' no longer has a newline character that stands out. That kind of emphasis was not necessary, given that the symbol used is a dollar sign, which is already far more visible than a mid dot. + 'font-lock' (generic syntax highlighting) has better colour combinations for regexp grouping constructs. + 'rainbow-delimiters' was given its missing base error face. + 'git-commit' comment action uses a slightly different foreground value than before to better match its context. + 'isearch' and 'query-replace' use colours that properly denote each action's utility. + 'visual-regexp' has been reviewed to make the matching groups more distinct from each other. + 'occur' and any other buffer that relies on the 'match' face can now benefit from the new colour combinations, in that its results cannot be confused for the active 'isearch' or 'query-replace' or even their lazily highlighted results (or, indeed, of any other search tool). + 'company' uses faces for its search feedback that are consistent with other search metaphors. + Emacs 27's new ':extend' property is only implemented where necessary (note that the latest release is version 26.3).
    ec9332a6 · Bump version to 0.5.0 ·
  • 0.4.0   Version 0.4.0 This is an overview of the changes since version 0.3.0 (2019-12-25). Add support for: + ert + flycheck-indicator + mentor + mu4e-conversation + powerline-evil + telephone-line + vc (built-in version control) Refinements to already-supported packages: + company-mode (several refinements) + doom-modeline (major review) + helm (several tweaks) + hl-line-mode (use unique background) + ivy (improve matching line) + line-number-mode (minor tweaks) + markdown-mode (comprehensive expansion) + mode-line (more appropriate styles for the highlight) + powerline (minor tweaks) + region (use unique background) + swiper (improve matching line in main window) + whitespace-mode (several refinements) + mu4e (tweak mu4e-modeline-face for consistency) Miscellaneous: + Fix actual and potential problems with cursor faces that would distort the use of appropriate background and foreground colours. The documentation stipulates that the `cursor' face cannot be inherited by other faces, due to its peculiar nature of only recognising the background colour. + Add support for more bold constructs in code. As with all such options, it is disabled by default, expecting the user to explicitly opt in. + Declare additional custom faces. Only meant for internal use. + Subtle refinements to "active" colour values in both Modus Operandi and Modus Vivendi. These mostly concern the mode line (with a few special exceptions), where emphasis has been placed on the need to provide greater contrast between accent values that can be used there. + Minor documentation refinements.
    ed89fbe2 · Update to version 0.4.0 ·