CHANGELOG.org (395865B)
1 #+TITLE: Change log of the Modus Themes for GNU Emacs 2 #+AUTHOR: Protesilaos Stavrou 3 #+EMAIL: info@protesilaos.com 4 #+OPTIONS: ':nil toc:nil num:nil author:nil email:nil 5 6 This document contains the release notes that are included in each 7 tagged commit on the project's main git repository: 8 <https://git.sr.ht/~protesilaos/modus-themes>. 9 10 The newest release is at the top. Since the notes are meant to be in 11 plain text format, I copy them verbatim. 12 13 For further details, please consult these additional resources: 14 15 + Manual :: <https://protesilaos.com/emacs/modus-themes> 16 + Screenshots :: <https://protesilaos.com/emacs/modus-themes-pictures> 17 18 * 4.3.0 19 :PROPERTIES: 20 :CUSTOM_ID: h:4783bc29-3055-426d-9acb-51e4d0741871 21 :END: 22 23 ** All themes except the tritanopia ones have a new hover colour 24 :PROPERTIES: 25 :CUSTOM_ID: h:b92b176e-3e9a-420d-bbbe-3c3e38b47027 26 :END: 27 28 The previous colour was not sufficiently distinct from what each theme 29 defines for the =bg-completion= palette entry (preview a palette with 30 =M-x modus-themes-preview-colors= or =M-x modus-themes-preview-colors-current=). 31 This would make it hard to spot the difference while, for example, 32 using ~vertico-mode~ in tandem with ~vertico-mouse-mode~. 33 34 Same principle for the difference between the mouse hover and lazy 35 isearch highlights (e.g. in Dired or Occur buffers). 36 37 Changing the hue here follows the same principle that underpinned the 38 redesign of the grey backgrounds for version 4 of the project: 39 depending on hardware capabilities, colour reproduction may not be 40 optimal, so we need to be more considerate with the choice of colour 41 values, erring on the side of caution. 42 43 The ~modus-operandi-tritanopia~ and ~modus-vivendi-tritanopia~ themes 44 are not affected by this initiative, as they already used highly distinct hues. 45 46 Thanks to Daniel Mendler for bringing this matter to my attention and 47 for testing the proposed alternatives. This was done via a private 48 channel and the information is shared with permission. Daniel is the 49 developer of ~vertico~, among many other excellent packages: 50 <https://github.com/minad> 51 52 ** Japanese holidays have the expected style 53 :PROPERTIES: 54 :CUSTOM_ID: h:2de9cef6-c6f1-4c2e-97ce-46d8a7306bae 55 :END: 56 57 Japanese calendars style Saturdays uniquely and the Modus themes now 58 do the same for those who use the ~japanese-holidays~ package. 59 Saturdays show up in a blue colour (which changes to cyan for the 60 ~modus-operandi-tritanopia~, ~modus-vivendi-tritanopia~ themes). 61 62 Each theme's palette has a new semantic colour mapping called 63 =date-holiday-other=, just in case we ever encounter another scenario 64 like this one (users can override any entry in the palette---consult 65 the manual for the technicalities). 66 67 Thanks to Olaf Meeuwissen for bringing this package to my attention 68 and showing me how traditional Japanese calendars style Saturdays. 69 This was done in issue 311 on the GitLab mirror: 70 <https://gitlab.com/protesilaos/modus-themes/-/issues/311>. 71 72 ** Each theme has semantic colour mappings for terminal emulators 73 :PROPERTIES: 74 :CUSTOM_ID: h:f3ae786a-9e01-4363-ae98-898f2ad34f7b 75 :END: 76 77 These are used by ~ansi-term~, ~vterm~, and the like. The idea is to 78 empower users to differentiate background and foreground values, 79 should they ever encounter a need to do so (when in doubt, do 80 nothing). 81 82 By convention, terminal emulators use the same value for both 83 background and foreground, although this is not optimal with high 84 contrast themes because what works as a foreground does not 85 necessarily look nice as a background. 86 87 The default values of the new mappings retain the prior state, just to 88 not break existing configurations. Consider this a tacit user option 89 for those who really need it. 90 91 Thanks to Tony Zorman for reporting the problem that provided the 92 impetus for this change: 93 <https://lists.sr.ht/~protesilaos/modus-themes/%3C87fs4wforf.fsf%40hyperspace%3E>. 94 95 ** All theme definitions conform with the latest standard for metadata 96 :PROPERTIES: 97 :CUSTOM_ID: h:2af0114f-b96a-4e89-ad2f-850d53538efa 98 :END: 99 100 Themes are expected to declare their background type and affinity, 101 such that the built-in command ~theme-choose-variant~ can do what it 102 describes (switch between related themes). I was already doing this, 103 though I had to make some adjustments. This is in response to Emacs 104 bug#65468: <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=65468>. 105 Thanks to Mauro Aranda for bringing the matter to my attention. 106 107 ** Proper colours for the inline preview of the ~corfu~ top candidate 108 :PROPERTIES: 109 :CUSTOM_ID: h:89d40a68-7573-4994-9ecc-fea40c823472 110 :END: 111 112 The ~corfu-candidate-overlay~ package is used in tandem with the 113 ~corfu~ package to create an inline preview of the first matching 114 candidate. Thanks to Nicolas Semrau for bringing this matter to my 115 attention in issue 89 on the GitHub mirror: 116 <https://github.com/protesilaos/modus-themes/issues/89>. 117 118 ** Context indicators for the mode-line or header-line (breadcrumb.el) 119 :PROPERTIES: 120 :CUSTOM_ID: h:dc391e85-650f-444e-b909-849d659921fb 121 :END: 122 123 I added support for the new ~breadcrumb~ package by João Távora. It 124 displays information about where we are in the given file, such as 125 under which Org heading or inside which function. The indicator can 126 be shown on the mode-line or the header-line. Either way, it will now 127 be legible and consistent with its surroundings. 128 129 ** The new family of nerd-icons is covered by the themes 130 :PROPERTIES: 131 :CUSTOM_ID: h:0409d429-5307-43d6-9bf4-fabc958c2540 132 :END: 133 134 This is a new set of packages: ~nerd-icons~, ~nerd-icons-completion, 135 ~nerd-icons-dired~, ~nerd-icons-ibuffer~. A popular package that uses 136 the Nerd icons is ~doom-modeline~, which the themes support as well. 137 138 ** All icons look as intended again 139 :PROPERTIES: 140 :CUSTOM_ID: h:a01075c6-b931-4b35-bdbd-2d1223101560 141 :END: 142 143 Some faces from the ~all-the-icons~ package were not configured 144 because I accidentally changed their name from something like 145 ~all-the-icons-red-alt~ to ~all-the-icons-red-warmer~. I did that 146 while renaming the colours defined in each theme's palette, to make 147 them more meaningful ("warmer red" can hint at something whereas "alt 148 red" is more abstract). 149 150 ** Corrected the documentation about custom Org faces 151 :PROPERTIES: 152 :CUSTOM_ID: h:5c254346-370e-4510-bcc7-70a1cca2c5a0 153 :END: 154 155 The Modus themes manual shows how to configure arbitrary TODO keywords 156 to inherit the style of an arbitrary face (get the list of faces 157 present in your Emacs with =M-x list-faces-display=). The previous 158 value I used was faulty. It now is as intended. Thanks to 159 soaringbird for reporting the issue on the mailing list: 160 <https://lists.sr.ht/~protesilaos/modus-themes/%3CNXPVkVk--3-9%40tuta.io%3E>. 161 162 ** The colours used by =avy= are better for users with tritanopia 163 :PROPERTIES: 164 :CUSTOM_ID: h:3605693e-bd6d-40a0-a1d4-199684c89081 165 :END: 166 167 I changed the sequence of colours displayed by commands such as 168 ~avy-goto-char-timer~ such that each individual background does not 169 blend with the ones adjacent to it, while respecting the overall needs 170 of a tritanopia-friendly design. I also tweaked the colour values to 171 achieve the desired result. The backgrounds remain distinct from 172 their context but now also work harmoniously together. 173 174 ** The =bg-dim= palette entry is marginally brighter in all Modus operandi variants 175 :PROPERTIES: 176 :CUSTOM_ID: h:8a3cb4f1-e7f8-48f1-832c-27e64b126b2d 177 :END: 178 179 After extensive testing and side-by-side comparisons, I have concluded 180 that the marginal increase in brightness improves the affected 181 interfaces. 182 183 The =bg-dim= background is used, among others, in the header-line, the 184 popup of the ~company~ and ~corfu~ packages, as well as the Org source 185 blocks (when the user option ~modus-themes-org-blocks~ is configured 186 appropriately). 187 188 ** The "intense" palette override preset has new colours for tables and prose metadata 189 :PROPERTIES: 190 :CUSTOM_ID: h:3a990310-337c-457f-8f40-1af6d1b557f6 191 :END: 192 193 This concerns the ~modus-themes-preset-overrides-intense~ (refer to 194 its documentation on how to use it). The primary target of these 195 changes is Org mode and the overall effect is subtle. The previous 196 colours did not combine nicely with all structural elements. For 197 example, Org clocktables would obscure timestamps by being the same 198 colour as them, while the table formula would not stand out. These 199 styles did not fit into the concept of "intense" colours. 200 201 ** The "warmer" palette override preset has more legible strings 202 :PROPERTIES: 203 :CUSTOM_ID: h:64cbd701-1344-48cc-8bcf-fc9712438013 204 :END: 205 206 The ~modus-themes-preset-overrides-warmer~ uses a more prominent warm 207 green value for strings in programming modes. The effect is subtle, 208 though it fits in better with the overall aesthetic of these palette 209 overrides. 210 211 ** Org document keywords like =#+author= are optionally monospaced 212 :PROPERTIES: 213 :CUSTOM_ID: h:096b75ec-802c-43e4-81ed-6db92b45654c 214 :END: 215 216 When the user option ~modus-themes-mixed-fonts~ is non-nil, all Org 217 document keywords will be rendered with the ~fixed-pitch~ face. This 218 ensures consistency between keywords such as =#+author= and "meta 219 lines" like =#+texinfo=. Thanks to user fluentpwn for the change: it 220 is one line and thus the author does not need to assign copyright to 221 the Free Software Foundation. 222 223 ** Git commit summary lines have a more precise style 224 :PROPERTIES: 225 :CUSTOM_ID: h:2aecd902-3a0b-4544-98f4-dbb42cbad672 226 :END: 227 228 This concerns the first line in a Git commit message, as seen while 229 working with the ~magit~ package. Same principle for the ~log-edit~ 230 buffer used by the built-in VC framework. Before, I was hardcoding a 231 blue colour value, whereas now I apply the ~success~ face. The 232 ~success~ face is designed to contrast with the ~warning~ face that is 233 used to show overlong summaries. Furthermore, the added indirection 234 makes it possible to particularise the colour value, which I do for 235 the tritanopia themes that cannot use blue. 236 237 ** Miscellaneous 238 :PROPERTIES: 239 :CUSTOM_ID: h:7391fd7d-6e70-4419-a8d6-f34d9ae075b1 240 :END: 241 242 - Removed explicit support for the built-in ~css-mode~. Its default 243 faces are decent. They inherit from standard font-lock faces that 244 the themes already cover. 245 246 - Recalibrated wordwise ("refined") diffs for deuteranopia. The 247 ~modus-operandi-deuteranopia~ and ~modus-vivendi-deuteranopia~ have 248 a little bit more intense colour values applied to wordwise, else 249 "refined", diffs. These concern removed lines. The effect is 250 visible while using ~magit~ or the built-in ~diff-mode~. 251 252 - Backported emacs.git commit =4cf33b6bd02b868ebbf112da7926d7c3c64517ce=. 253 It removed the space from the front matter of the =modus-themes.org= 254 file (i.e. the manual) because the Org export did not produce the 255 right results, per Emacs bug#64548. Thanks to Stephen Berman for 256 reporting the issue and making the requisite change. 257 258 - Added support for the `erts-mode`. Thanks to Kevin Fleming for 259 informing me about this built-in mode. This was done in issue 85 on 260 the GitHub mirror: <https://github.com/protesilaos/modus-themes/issues/85>. 261 262 - Fixed a typo in the ~modus-themes-preset-overrides-intense~ doc 263 string. Thanks to Nicolas Semrau for bringing this matter to my 264 attention. It was done in issue 90 on the GitHub mirror: 265 <https://github.com/protesilaos/modus-themes/issues/90>. 266 267 - Made all commands that prompt for a theme (~modus-themes-select~, 268 ~modus-themes-preview-colors~) apply the =theme= category to the 269 available candidates. This allows the user to target said category 270 to affect the relevant functions. For example, to set completion 271 styles with ~completion-category-overrides~ or to define a custom 272 annotation function with the ~marginalia~ package. 273 274 - Added support for new ~appt-notification~ face (Emacs 30). Change 275 upstream by me. 276 277 * 4.2.0 278 :PROPERTIES: 279 :CUSTOM_ID: h:29370d83-23c4-415b-afbf-ad85d4296c86 280 :END: 281 282 ** I won a Google award for the Modus themes 283 :PROPERTIES: 284 :CUSTOM_ID: h:1ffc8660-511d-4fa8-aff4-11da8246a186 285 :END: 286 287 Report here: <https://protesilaos.com/codelog/2023-05-25-emacs-google-award/>. 288 289 This is not a "change" per se, but it is worth documenting here. It 290 shows how important accessibility can be in empowering people to use 291 their computer and, in our case, to exercise their software freedoms. 292 293 The Modus themes tend to one aspect of accessibility. They do not 294 exhaust the topic, though they should at least raise awareness about 295 the significance of tending to the usability needs of everyone. The 296 effort I put into documenting the themes (and my other packages) 297 should be understood in this light as a means of helping people enjoy 298 their software freedom by learning how to use and extend the program 299 in question. 300 301 ** New tritanopia-optimised themes 302 :PROPERTIES: 303 :CUSTOM_ID: h:b92706b0-9d53-4015-8916-9db3c0c87068 304 :END: 305 306 I have created a pair of light and dark themes that are intended for 307 people with blue-yellow colour deficiency (tritanopia). These are 308 ~modus-operandi-tritanopia~ (light) and ~modus-vivendi-tritanopia~ 309 (dark). Screenshots of all the Modus themes are available on my 310 website: <https://protesilaos.com/emacs/modus-themes-pictures>. 311 312 The entire collection is now described in the manual as follows: 313 314 #+begin_quote 315 The Modus themes consist of eight themes, divided into four subgroups. 316 317 - Main themes :: ~modus-operandi~ is the project's main light theme, 318 while ~modus-vivendi~ is its dark counterpart. These two themes are 319 part of the project since its inception. They are designed to cover 320 a broad range of needs and are, in the opinion of the author, the 321 reference for what a highly legible "default" theme should look 322 like. 323 324 - Tinted themes :: ~modus-operandi-tinted~ and ~modus-vivendi-tinted~ 325 are variants of the two main themes. They slightly tone down the 326 intensity of the background and provide a bit more color variety. 327 ~modus-operandi-tinted~ has a set of base tones that are shades of 328 light ochre (earthly colors), while ~modus-vivendi-tinted~ gives a 329 night sky impression. 330 331 - Deuteranopia themes :: ~modus-operandi-deuteranopia~ and its 332 companion ~modus-vivendi-deuteranopia~ are optimized for users with 333 red-green color deficiency. This means that they do not use red and 334 green hues for color-coding purposes, such as for diff removed and 335 added lines. Instead, they implement colors that are discernible by 336 users with deueteranopia or deuteranomaly (mostly yellow and blue 337 hues). 338 339 - Tritanopia themes :: ~modus-operandi-tritanopia~ and its counterpart 340 ~modus-vivendi-tritanopia~ are optimized for users with blue-yellow 341 color deficiency. The idea is the same as with the deuteranopia 342 variants: color coding relies only on hues that are accessible to 343 people with tritanopia or tritanomaly, namely, shades of red and 344 cyan. 345 #+end_quote 346 347 ** Recalibrated the "graph" colours in all themes 348 :PROPERTIES: 349 :CUSTOM_ID: h:60bb2797-2db6-4d47-9d27-7d1f32291707 350 :END: 351 352 The new palette subset improves the contrast of all the relevant 353 colours when presented side-by-side. These are most notably used by 354 the ~org-habit~ consistency graph, which is displayed in the Org 355 agenda. The deuteranopia and tritanopia themes have their own bespoke 356 colours for this purpose, due to their specific requirements for 357 colour coding (e.g. they cannot use green). 358 359 ** Faces or face groups 360 :PROPERTIES: 361 :CUSTOM_ID: h:4b68159e-d998-4781-b202-74a3dcc8ae8e 362 :END: 363 364 - Introduced a subtle 3D effect for clickable buttons, replacing the 365 previous 2D design. I realised the flat style creates ambiguity 366 between the button and the text fields. This happens, for example, 367 with =M-x customize-variable= for ~org-capture-templates~ which has 368 lots of button and text field combinations. The added sense of 369 depth helps with the usability of these buttons because it makes 370 them unambiguous. Personally, I prefer the 2D approach, but here we 371 have a trade-off between usability and aesthetics. According to 372 what I state in the manual: 373 374 #+begin_quote 375 If there arises an inescapable trade-off between usability and 376 stylistic considerations, we will always opt for the former. 377 #+end_quote 378 379 - Refashioned the ~whitespace-mode~ to be much more subtle and added 380 the concomitant semantic colour mappings. 381 382 The previous style involved the use of a dim grey background for 383 each invisible character. While this is was good to spot invisible 384 characters quickly, it was a major hindrance for users who want to 385 run ~whitespace-mode~ at all times (e.g. for the Python programming 386 language which is space-sensitive). 387 388 We thus remove the backgrounds by default but provide the option to 389 reinstate them via palette overrides (as documented at length in the 390 manual). To this end, we have two new semantic colour mappings for 391 ordinary space, its invisible characters, as well as space errors. 392 393 Thanks to Christian Tietze and Oliver Epper for their feedback in 394 issue 80 on the GitHub mirror: 395 <https://github.com/protesilaos/modus-themes/issues/80>. 396 397 - Applied a more subtle background for faces ~menu-bar-mode~, 398 ~tool-bar-mode~, ~scroll-bar-mode~. They do not need to stand out 399 so much because the toolkit already takes care of that. Also, we do 400 not want to dillute the semantic value of either ~bg-tab-bar~ or 401 ~fringe~ palette colour mappings that I was wrongly using before in 402 this context. Note that those faces may not apply, depending on the 403 underlying tool kit. For example, I encounter them with the Lucid 404 build of Emacs, though not with the GTK one. 405 406 - Fix the critical typo of 'widget-buton', which prevented the actual 407 ~widget-button~ face from being affected by the themes. Thanks to 408 Steve Downey for pointing it out in issue 73 on the GitHub mirror: 409 <https://github.com/protesilaos/modus-themes/issues/73>. 410 411 - Added support for the ~disk-usage~ package. It is made to look like 412 Dired, to the extent possible. Thanks to Nacho Barrientos for the 413 patch: <https://lists.sr.ht/~protesilaos/modus-themes/patches/39822>. 414 The change is small and does not require copyright assignment to the 415 Free Software Foundation. 416 417 - Made the ~eglot-diagnostic-tag-unnecessary-face~ look like a 418 warning. By default it inherits the ~shadow~ face, which makes it 419 counter-intuitive as it dims the text instead of bringing it to our 420 attention. The intent of ~eglot-diagnostic-tag-unnecessary-face~ is 421 to highlight unused symbols, so this is better presented as a 422 warning. 423 424 Thanks to Augusto Stoffel for bringing this matter to my attention. 425 This was done via a private channel and the information is shared 426 with permission. 427 428 - Changed the ~smerge-markers~ to inherit from ~diff-header~ instead 429 of ~diff-heading~. Thanks to Steve Downey for the contribution. 430 This was done in pull request 74 on the GitHub mirror: 431 <https://github.com/protesilaos/modus-themes/pull/74>. The change 432 is small and does not require copyright assignment to the Free 433 Software Foundation. 434 435 - Added support for the ~jinx~ package. This was originally done by 436 Tomasz Hołubowicz in pull request 71 on the GitHub mirror: 437 <https://github.com/protesilaos/modus-themes/pull/71>. The change 438 is small and does not require copyright assignment to the Free 439 Software Foundation. I then modified it to make the underlines look 440 like warnings instead of errors. This is because of how the package 441 works: it automatically highlights misspellings in the visible 442 portion of the buffer. There are cases where this results in a very 443 intense presentation, which can be distracting. We want to reduce 444 the overall intensity and not draw too much attention to those 445 highlights. 446 447 - Extended coverage of Org to the new ~org-agenda-calendar-daterange~ 448 face (part of Org version 9.7). Thanks to Gautier Ponsinet for the 449 patch, which I received via a private channel. The change is small 450 and does not require copyright assignment to the Free Software 451 Foundation. In addition to this, I introduced a new semantic colour 452 mapping in the themes' palette called ~date-range~. This can be 453 used with the palette overrides, which are documented at length in 454 the manual (there are lots of copy-pastable examples as well). 455 456 - Supported all of the new faces of the built-in ~proced~ package. 457 These are part of Emacs 29 and make the ~proced~ buffers more 458 colourful, subject to the user option ~proced-enable-color-flag~. 459 As always, the themes strive to avoid exaggerations, meaning that I 460 apply colour with restraint: not all faces need to stand out. 461 462 - Included the ~rst-mode~ in the list of explicitly supported 463 packages, making its heading look like those of Org, Markdown, etc. 464 Thanks to David Edmondson for the patch: 465 <https://lists.sr.ht/~protesilaos/modus-themes/patches/40625>. I 466 believe David has already assigned copyright to the Free Software 467 Foundation, though this patch is small anyway. 468 469 - Covered all the new faces of the built-in ~flymake~ package. These 470 concern the inline feedback messages (Emacs 30) as well as those 471 that appear in the echo area (Emacs 29). The former are subject to 472 the user option ~flymake-show-diagnostics-at-end-of-line~. 473 474 - Reduced the intensity of the ~which-key~ prefix descriptions. Those 475 are the keymaps that displayed by ~which-key~ to hint that typing 476 the given key will open a new ~which-key~ page with more keys. 477 478 - Configured new ~vundo-saved~ and ~vundo-last-saved~ faces of the 479 ~vundo~ package. They are designed to be easy to read, without 480 going over-the-top. Thanks to Nicolas Semrau for bringing this 481 matter to my attention in issue 79 on the GitHub mirror: 482 <https://github.com/protesilaos/modus-themes/issues/79>. 483 484 - Removed the deprecated ~consult-preview-cursor~ face and made the 485 requisite adjustments to the ~consult~ faces. This was done in 486 commit =267b0c9= of the Consult Git repository. Discussed here: 487 <https://github.com/minad/consult/issues/764#issuecomment-1537491625>. 488 489 - Instructed the ~shr-selected-link~ face of the built-in ~shr~ 490 package to use a "mark selection" style instead of the semantically 491 incorrect "intense red" it had before. This change is helpful for 492 those who override the palette of their Modus theme of choice, while 493 it also allows us to have varied colours depending on the 494 requirements of each theme (e.g. deuteranopia/tritanopia compared to 495 the defaults). 496 497 - Did the same as above, mutatis mutandis, for the faces 498 ~transient-disabled-suffix~, ~web-mode-error-face~, 499 ~erc-dangerous-host-face~, ~aw-minibuffer-leading-char-face~, 500 ~binder-sidebar-highlight~, ~binder-sidebar-missing~, 501 ~image-dired-thumb-flagged~, ~image-dired-thumb-mark~, 502 ~info-menu-star~, ~rainbow-delimiters-mismatched-face~, 503 ~evil-ex-substitute-matches~, ~iedit-occurrence~, 504 ~iedit-read-only-occurrence~, ~pgtk-im-0~, ~dired-narrow-blink~. 505 506 - Enhanced the ~image-dired~ mark faces with a box border, as the use 507 of a background alone can be obscured by the underlying image 508 thumbnail, depending on its figures/colours. 509 510 - Removed the backgrounds from the ~powerline-evil~ faces and 511 simplified their overral presentation in the interest of 512 maintainability. The old styles were hard to predict and test. 513 There could easily be conflicts, such as if the user would override 514 the colours of the mode line. 515 516 - Ensured that ~diary~ and ~holiday~ colours are distinct and legible, 517 without being too intense. 518 519 ** Changes to the manual or other documentation 520 :PROPERTIES: 521 :CUSTOM_ID: h:d3c12dd0-4231-420b-a212-b6bd571c5c34 522 :END: 523 524 - Updated the doc string of the primary customisation group defined by 525 the themes to reflect the support for the case of tritanopia. 526 527 - Included links to the web page of the manual and the one with the 528 sample pictures in the customisation groups. Those links appear in 529 the various Custom UI buffers. 530 531 - Introduced an annotation function for all commands that involve 532 minibuffer completion. The annotations display the one-line 533 description of each theme, making it easier for a user to pick their 534 preferred choice (e.g. when using the ~modus-themes-select~ 535 command). 536 537 - Defined semantic colour mappings for "marks". These are used by 538 ~dired~, ~trashed~, ~proced~, and others. These is no change to the 539 default appearance of what users are already familiar with, though 540 it is now possible to override those styles. 541 542 - Complemented the subset of semantic colour mappings for 543 errors/warnings with "prominent" variants. Those employ a 544 background and foreground combination. They are used in all sorts 545 of contexts, such as for fringe errors (~flymake~, ~flycheck~, ...), 546 ~query-replace~, ~isearch-fail~, and others. 547 548 - Wrote sample code on how to add "padding" to the Emacs frame and the 549 space between the Emacs windows. This makes for a presentation that 550 some users find easier to work with. 551 552 - Corrected the sample code for ~git-gutter~ to use the appropriate 553 symbols from the theme palette. Thanks to Christian Tietze for the 554 patch: <https://lists.sr.ht/~protesilaos/modus-themes/patches/40354>. 555 The change is small and does not require copyright assignment to the 556 Free Software Foundation. 557 558 - Removed ~moody~ from the list of packages explicitly supported by 559 the themes. We stopped supporting it since version 4 that removed 560 the relevant user option for the mode line. The idea is that the 561 mode line is better handled by the user without interference from 562 the theme, due to the number of options available (and how brittle 563 those can be when interacting with unpredictable face definitions). 564 Thanks to Nicolas De Jaeghere for reminding me to remove ~moody~ 565 from the manual: 566 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cypi9jzyclqxy.fsf%40gmail.com%3E#%3C87jzybdgg1.fsf@dejaeghe.re%3E>. 567 568 ** Miscellaneous 569 :PROPERTIES: 570 :CUSTOM_ID: h:7240990a-2b4d-442c-a15c-84c8d8b26622 571 :END: 572 573 - Added two new preset palette overrides to make the overall 574 presentation "warmer" or "cooler". Those are called 575 ~modus-themes-preset-overrides-warmer~ and 576 ~modus-themes-preset-overrides-cooler~, respectively. The manual 577 explains how those presets can be used. I suggest the user does not 578 add such overrides if they intend to load any of the deuteranopia or 579 tritanopia themes, due to the specific requirements of their design. 580 581 - Refined the deuteranopia yellows for warnings, errors, and comments. 582 These otherwise slight adjustments make it considerably easier to 583 tell apart distinct elements that may be positioned close together. 584 585 - Tweaked the deuteranopia semantic colour mappings for emails. The 586 subject line use a more appropriate colour value, while level 3 587 quotes stand out a bit more than they did before, without being 588 needlessly intense. 589 590 - Arranged for the ~modus-themes-load-theme~ function return the value 591 of the =THEME= argument it accepts. The intent is to allow other 592 functions that call this one to capture the return value for their 593 purposes (such as with a ~let~ binding). Thank to Oliver Epper for 594 the feedback in issue 78 on the GitHub mirror: 595 <https://github.com/protesilaos/modus-themes/issues/78>. 596 597 * 4.1.0 598 :PROPERTIES: 599 :CUSTOM_ID: h:d028f117-8a74-4c0c-b838-9f6bf2b43c19 600 :END: 601 602 ** Recursive semantic colour mapping 603 :PROPERTIES: 604 :CUSTOM_ID: h:262e2f5f-4db0-4549-a5ba-4e57cd2edc6a 605 :END: 606 607 Version 4 of the Modus themes changed how all colour-related 608 customisations are done. Instead of multiple user options with 609 hard-coded stylistic presets, users have access to a comprehensive 610 system of "named colours" and "semantic colour mappings". The former 611 is an association between a name, like =blue-warmer=, and a colour 612 value such as =#3548cf=. While semantic colour mappings are 613 associations between syntactic/interface constructs and named colours, 614 such as what value level 2 headings have. 615 616 When overriding the palette users can now define semantic colour 617 mappings whose value is another such mapping. This recursion 618 simplifies how multiple overrides are defined. 619 620 The manual offers extensive guidance on the topic of palette 621 overrides. There are many sections that include code samples that are 622 ready for use. 623 624 The addition of recursive semantic colour mappings solves a problem 625 reported by Imran Khan on the mailing list where they were trying to 626 do what made sense (recursion) but the old code did not permit as 627 much: 628 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cb7ca4702162fd575593f8ded28d9a888.contact%40imrankhan.live%3E>. 629 630 I was aware of that constraint from before the release of version 631 4.0.0 but was hesitant to implement recursion prior to getting some 632 feedback on the new palette overriding feature. 633 634 Also thanks to Christian Tietze for participating in that discussion 635 on the mailing list. 636 637 ** Extract an arbitrary colour from a given theme's palette 638 :PROPERTIES: 639 :CUSTOM_ID: h:6ba1437f-e55f-4c3a-9c03-b0035293b4a2 640 :END: 641 642 I formalised the function ~modus-themes-get-color-value~ and 643 documented it at length. It accepts a =COLOR= argument, which 644 represents an entry in the palette (named colour or semantic colour 645 value), as well as optional =OVERRIDES= and =THEME= arguments. When 646 =OVERRIDES= is non-nil, ~modus-themes-get-color-value~ will read from 647 the overrides, otherwise it will only consult the default palette 648 value. The =THEME= argument specifies which theme's palette to use. 649 In the absence of =THEME=, the current one is used. 650 651 I already had the "get colour" functionality internally, but was 652 inspired to make it public after checking Sacha Chua's blog post 653 "Making highlight-sexp follow modus-themes-toggle": 654 <https://sachachua.com/blog/2023/01/making-highlight-sexp-follow-modus-themes-toggle/>. 655 Sacha was using a private function from the themes, which would have 656 been problematic if I would ever move things around. 657 658 Remember to read the documentation of ~modus-themes-list-colors~. 659 That command shows a preview of the named colours. When called with a 660 prefix argument (=C-u= by default), it shows a preview of the semantic 661 colour mappings. 662 663 ** Option to disable other themes while loading Modus 664 :PROPERTIES: 665 :CUSTOM_ID: h:5af072da-38f6-44d0-9342-e799f0196006 666 :END: 667 668 In the past, we used to disable all other themes while loading a Modus 669 theme. I revised this for version 4 because I learnt that some users 670 use "themes" as bundles of arbitrary configurations. 671 672 With the addition of the ~modus-themes-disable-other-themes~ user 673 option, which is non-nil by default, I am restoring the old behaviour: 674 when loading a Modus theme all other themes are disabled. 675 676 This happens when the theme is loaded with the commands 677 ~modus-themes-toggle~ and ~modus-themes-select~, or via Lisp with the 678 function ~modus-themes-load-theme~. 679 680 Users who need to run multiple themes can set this option to a nil 681 value. (Personally, I use minor modes for such stylistic bundles and 682 never have to worry about ~(mapc #'disable-theme custom-enabled-themes)~.) 683 684 Thanks to Tony Zorman for the feedback on the mailing list, which led 685 me to the introduction of this user option: 686 <https://lists.sr.ht/~protesilaos/modus-themes/%3C874jtew0gp.fsf%40hyperspace%3E#%3C87bkne84d2.fsf@hyperspace%3E>. 687 688 ** Renamed the named colours for bg-{added,changed,removed}-intense 689 :PROPERTIES: 690 :CUSTOM_ID: h:d43ef5cb-10dd-4c33-9429-2289a5fb2506 691 :END: 692 693 They are now called ~bg-added-fringe~, ~bg-changed-fringe~, 694 ~bg-removed-fringe~. Please update any palette overrides to reflect 695 this renaming. 696 697 ** Documented how to override diffs for more optional combinations 698 :PROPERTIES: 699 :CUSTOM_ID: h:220d4361-7245-4632-998e-c0e2ee3b5f7d 700 :END: 701 702 The manual includes details (with copy-pastable code) on how to 703 achieve foreground-only diffs and/or how to have red+blue diffs 704 instead of the default red+green or the deuteranopia yellow+blue. 705 706 Thanks to Andrew Tropin for requesting this feature. We used to 707 provide this style in earlier versions of the themes, but now it is 708 much more flexible. Andrew's request was done via a private channel 709 and the information is shared with permission. 710 711 [ Since we are here, also thanks to Andrew for keeping the Guix 712 package of the Modus themes up to date. ] 713 714 ** Stylistic changes 715 :PROPERTIES: 716 :CUSTOM_ID: h:fdcff629-22c1-4203-9104-4f732c59f731 717 :END: 718 719 - Guaranteed consistency between all of the line-related faces of the 720 ~consult~ package. We use the ~shadow~ face in all interfaces where 721 line numbers are contextual information (Occur, Grep,...). With 722 Consult, this was not the case for commands like ~consult-line~. 723 724 Thanks to Daniel Mendler (also known as @minad) for bringing this 725 matter to my attention: 726 <https://lists.sr.ht/~protesilaos/ef-themes/%3Cb03413a6-cb77-615d-145d-db4eb710bfca%40daniel-mendler.de%3E>. 727 728 - Refined all diff colours for fringes and reduced the saturation for 729 added lines in ~modus-operandi-deuteranopia~, ~modus-vivendi-deuteranopia-theme~. 730 Thanks to Andrew Tropin for showing me some usability issues with 731 the previous styles. This was done via a private channel and the 732 information is shared with permission. 733 734 - Instructed the ~dashboard~ icons to retain their underlying colour. 735 The default value of the ~dashboard-items-face~ made all icons use 736 the same colour, detracting from their distinctiveness. Thanks to 737 Thanos Apollo for bringing this matter to my attention. It was done 738 via a private channel and the information is shared with permission. 739 740 - Amplified the intensity of the =#+begin_src= text when the user 741 option opts for ~(setq modus-themes-org-blocks 'gray-background)~. 742 The text is now easier to discern. That user option makes the 743 inside of the block have a gray background and the begin/end lines 744 to have a more intense gray, giving off a "blocky" impression. 745 746 - Made the ~compilation-warning~ face also inherit the 747 ~modus-themes-bold~ face. This means that it responds to the value 748 of the user option ~modus-themes-bold-constructs~, the same way the 749 other compilation-related mode line faces do. Thanks to Manuel 750 Giraud for informing me about the inconsistency in 751 ~compilation-warning~. This was done via a private channel and the 752 information is shared with permission. 753 754 - Calibrated the hueness of the "nuanced" backgrounds in the 755 ~modus-operandi-tinted~ and ~modus-vivendi-tinted~ themes. These 756 tweaks are necessary to retain thematic consistency. 757 758 - Reset ~mu4e-header-highlight-face~ to its intended style. I made a 759 mistake before: I did not want the ~highlight~ face to be used in 760 this case as it is too intense. Sorry! 761 762 - Toned down the highlight line of the ~ctrlf~ and ~swiper~ packages. 763 I mistakenly used the ~highlight~ before, which is too intense for 764 the purposes of an ancillary background colour. 765 766 - Applied "nuanced" backgrounds to the tinted Org blocks. This fixes 767 an error of mine where I amplified the background colouration of Org 768 blocks. This concerns the case where the user option 769 ~modus-themes-org-blocks~ has a =tinted-background= value. Thanks 770 to Mark Bestley for informing me about this in issue 60 on the 771 GitHub mirror: 772 <https://github.com/protesilaos/modus-themes/issues/60#issuecomment-1374530488>. 773 774 - Removed the hardcoding of the ~italic~ style in three faces, opting 775 instead to make them subject to the user option ~modus-themes-italic-constructs~. 776 The faces are ~marginalia-documentation~, ~markup-attribute-face~, 777 and ~org-agenda-calendar-sexp~. 778 779 - Tweaked the Org agenda deadline and today schedule to use a bold 780 weight only when the user option ~modus-themes-bold-constructs~ is 781 set to a non-nil value. Thanks to Marko Kocic for reporting an 782 issue that brought this matter to my attention: 783 784 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C35588839.256749.1673272214728%40office.mailbox.org%3E> 785 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C874jszvk5g.fsf%40protesilaos.com%3E> 786 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C87ilhfu101.fsf%40protesilaos.com%3E> 787 788 - Enforced the main foreground colour in the faces =highlight= and 789 =secondary-selection=. This should have always been there to avoid 790 awkward colour combinations. I realised it was missing after 791 corresponding with Edgar Vincent on a relevant topic: 792 <https://lists.sr.ht/~protesilaos/modus-themes/%3C878ri95h1q.fsf%40posteo.net%3E#%3C87ilhc7usc.fsf@posteo.net%3E>. 793 794 - Made the ~eglot-mode-line~ face conditionally bold, by subjecting it 795 to the user option ~modus-themes-bold-constructs~. 796 797 - Ensure that the background of the ~company~ package's popup is the 798 same as that of the ~corfu~ package. This is a subtle neutral 799 value. 800 801 - Fixed the hue of the ~org-habit~ "ready" faces. It should be green 802 and I made a mistake here. The ~modus-operandi-deuteranopia~ and 803 ~modus-vivendi-deuteranopia~ themes do change the underlying hues 804 though, as green is not suitable for them. 805 806 - Simplified the ~keycast~ faces so that (i) they do not use a =:box= 807 attribute that can look awkward in some cases and (ii) the name of 808 the given command is not colourised to avoid exaggerations with the 809 use of colour. 810 811 - Made the ~powerline-active1~ face inherit from ~mode-line~ instead 812 of ~mode-line-active~. The latter only exists in newer versions of 813 Emacs and we do not want to make the themes break in older versions. 814 Thanks to TitusMu for identifying this and reporting it in issue 64 on 815 the GitHub mirror: <https://github.com/protesilaos/modus-themes/issues/64>. 816 817 - Decoupled all ~ediff~ faces from their ~diff-mode~ counterparts. 818 Ediff does not depend on ~diff-mode~, so we want to make each set of 819 faces stand on its own. Thanks to Bernd Rellermeyer for pointing 820 out this implicit dependency in issue 68 on the GitHub mirror: 821 <https://github.com/protesilaos/modus-themes/issues/68>. 822 823 ** Miscellaneous 824 :PROPERTIES: 825 :CUSTOM_ID: h:14d1f1b0-00e0-4275-a06c-9e34daf6411a 826 :END: 827 828 - Improved the clarity and robustness of the code that does the work 829 of ~modus-themes-list-colors~. 830 831 - Refined the colour value of the =blue-warmer= named colour for all 832 the light themes. It is a tiny bit darker than before. 833 834 - Introduced a ~t~ fallback value for the user option 835 ~modus-themes-completions~. It makes it easier to apply the same 836 styles for the selection line and matching characters. 837 838 - Documented how to not extend the active region background. 839 840 - Explained how to make tabs more or less colourful by using palette 841 overrides. 842 843 - Removed obsolete and redundant statements from the documentation the 844 user option ~modus-themes-completions~. There was (i) an outdated 845 reference to the =background= value, which is no longer supported, 846 and (ii) a statement about the standard Completions' buffer that was 847 not useful. Thanks to Rudolf Adamkovič for informing me about this: 848 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm2tu1211qz.fsf%40me.com%3E>. 849 850 - Rephrase the statement ="*Completions* buffer"= in the documentation 851 in the interest of clarity. Thanks to Rudolf Adamkovič for the 852 suggestion: 853 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm2tu1211qz.fsf%40me.com%3E#%3Cm2eds43htz.fsf@me.com%3E>. 854 855 - Updated the sample configuration of the themes with ~use-package~ in 856 the interest of simplicity. Thanks to Sergey Nichiporchik for the 857 contribution. Sergey's contribution is within the ~15 line limit 858 and thus does not require copyright assignment to the Free Software 859 Foundation. 860 861 This was done in merge request 59 on the GitLab mirror: 862 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/59>. 863 864 The prepatory discussion took place in issue 310 on the same mirror: 865 <https://gitlab.com/protesilaos/modus-themes/-/issues/310>. 866 867 Weeks later I further simplified the relevant samples for the sake 868 of uniformity with the generic package setup. Thanks to Zoltan 869 Kiraly for informing me about the fact that the ~:bind~ keyword 870 delays the load of the package until the given command is invoked: 871 <https://github.com/protesilaos/modus-themes/pull/67>. 872 873 Streamlining the configuration makes it easier for me to propose one 874 set of basic configurations without the need to know what a 875 configuration macro is doing behind the scenes. 876 877 - Fixed an example colour in the documentation. Thanks to Russell Sim 878 for spotting the error of me using =bg-blue= instead of 879 =bg-blue-intense=: 880 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cyger0wa9gsn.fsf%40simopolis.xyz%3E>. 881 882 - Defined the missing =modus-themes-nuanced-{red,green,yellow,blue,magenta,cyan}= faces. 883 Those are used internally to avoid repetition, though users can also 884 rely on them for their personal configurations (same for all other 885 Modus faces). 886 887 - Improved the documentation on how to have a borderless mode line 888 style by using the palette overrides. 889 890 - Updated the manual's entry on the ~pdf-tools~ backdrop to make it 891 use the new conventions that have been in place since version 4 of 892 the themes. Thanks to Utkarsh Singh for the patches: 893 <https://lists.sr.ht/~protesilaos/modus-themes/patches/37902>. 894 895 - Add an explicit notice that the version of the themes that is built 896 into Emacs must use the ~require-theme~ function instead of the 897 familiar ~require~. Built-in themes are not considered "code", due 898 to old conventions, and are not part of the ~load-path~ that 899 ~require~ reads from. This is not up to the theme to decide. 900 Interested users must simply know about this important technicality. 901 Thanks to Koen van Greevenbroek for reporting the problem that 902 helped me identify this issue: 903 <https://lists.sr.ht/~protesilaos/modus-themes/%3C31038fd76868fa3d07c9a429dfed8fd6ac374bb8.camel%40posteo.net%3E>. 904 905 - Clarified the wording of the ~modus-themes-with-colors~ setup for 906 custom faces. It explains when this macro should be called. Thanks 907 to user bangedorrunt for the feedback in issue 59 on the GitHub 908 mirror: <https://github.com/protesilaos/modus-themes/issues/59>. 909 910 * 4.0.0 911 :PROPERTIES: 912 :CUSTOM_ID: h:cd353ccc-daf5-4ee5-885a-b3f21be92b66 913 :END: 914 915 This is the biggest release in the history of the project. 916 Previously, a new version would consist of about 100 commits to the 917 Git repository. This one includes 400+ of them in the span of one 918 month. The out-of-the-box looks of the themes are largely the same as 919 before, though I have made a lot of internal changes that affect how 920 the themes are instantiated and customised. 921 922 As part of this development cycle, I produced publications informing 923 users of the upcoming changes, while demonstrating the new feature of 924 overriding the colour palette and its semantic mappings. 925 926 - 2022-12-03 Emacs: breaking changes coming to 'modus-themes' version 4 :: <https://protesilaos.com/codelog/2022-12-03-modus-themes-v4-development/> 927 - 2022-12-07 Emacs: change colour values and mappings in Modus themes version 4 :: <https://protesilaos.com/codelog/2022-12-07-modus-themes-4-colour-values-mappings/> 928 - 2022-12-17 Emacs: modus-themes version 4 demo [video] :: <https://protesilaos.com/codelog/2022-12-17-modus-themes-v4-demo/> 929 - 2022-12-28 Emacs: note for MELPA or Git users of the Modus themes ahead of version 4 :: <https://protesilaos.com/codelog/2022-12-28-note-modus-themes-4-melpa/> 930 931 I did this in the hope of preparing users for the refactored Modus 932 themes, though I understand that not everyone has had the chance to 933 consult those entries. The general idea is that *old custom code will 934 not work* and most user options are either removed or confined to a 935 more precise scope. 936 937 Custom code will not work because the named colours of the palettes 938 have changed. Many user options are made redundant by the new 939 overrides' system. Specifically, if an option pertains to 940 colouration, it is now done via overrides instead of the old method of 941 me hardcoding styles (e.g. for stuff like "rainbow" headings). 942 943 More details below. This is a long entry. Please take your time to 944 study it before upgrading to the new version of the themes. 945 946 ** There now are six Modus themes for more legibility needs 947 :PROPERTIES: 948 :CUSTOM_ID: h:f305dd08-a713-4369-a16d-af9403ab6c22 949 :END: 950 951 Quoting from the manual's "Overview" section: 952 953 #+begin_quote 954 The Modus themes consist of six themes, divided into three subgroups. 955 956 - Main themes :: ~modus-operandi~ is the project's main light theme, 957 while ~modus-vivendi~ is its dark counterpart. These two themes are 958 part of the project since its inception. They are designed to cover 959 a broad range of needs and are, in the opinion of the author, the 960 reference for what a highly legible "default" theme should look 961 like. 962 963 - Tinted themes :: ~modus-operandi-tinted~ and ~modus-vivendi-tinted~ 964 are variants of the two main themes. They slightly tone down the 965 intensity of the background and provide a bit more color variety. 966 ~modus-operandi-tinted~ has a set of base tones that are shades of 967 light ochre (earthly colors), while ~modus-vivendi-tinted~ gives a 968 night sky impression. 969 970 - Deuteranopia themes :: ~modus-operandi-deuteranopia~ and its 971 companion ~modus-vivendi-deuteranopia~ are optimized for users with 972 red-green color deficiency. This means that they do not use red and 973 green hues for color-coding purposes, such as for diff removed and 974 added lines. Instead, they implement colors that are discernible by 975 users with deueteranopia or deuteranomaly (mostly yellow and blue 976 hues). 977 #+end_quote 978 979 All six themes will be included in Emacs 30 (~modus-operandi~ and 980 ~modus-vivendi~ are in Emacs since August 2020). I asked about it on 981 the emacs-devel mailing list and received the approval of Eli 982 Zaretskii, one of the Emacs maintainers. The full thread: 983 <https://lists.gnu.org/archive/html/emacs-devel/2022-12/msg00834.html>. 984 985 *** New command to select one of the Modus themes 986 :PROPERTIES: 987 :CUSTOM_ID: h:e4f011c4-46d3-4e4f-ad3e-9a609ef8bd5e 988 :END: 989 990 The ~modus-themes-select~ command uses minibuffer completion to load 991 one of the six themes in the collection. Loading a Modus theme 992 disables all other Modus themes. 993 994 NOTE that Emacs can load multiple themes, which typically produces 995 undesirable results and undoes the work of the designer. Use the 996 ~disable-theme~ command if you are trying other themes beside the 997 Modus collection. 998 999 *** New user option to specify themes to toggle 1000 :PROPERTIES: 1001 :CUSTOM_ID: h:c4efdaca-505b-4724-81b4-4a5340cbcaba 1002 :END: 1003 1004 The ~modus-themes-to-toggle~ is a variable that affects the command 1005 ~modus-themes-toggle~. By default, the toggling happens between the 1006 ~modus-operandi~ and ~modus-vivendi~ themes, as was always the case. 1007 Though with the addition of new themes, it is possible to change this 1008 to something like: 1009 1010 #+begin_src emacs-lisp 1011 (setq modus-themes-to-toggle '(modus-operandi-deuteranopia modus-vivendi-deuteranopia)) 1012 #+end_src 1013 1014 If ~modus-themes-to-toggle~ does not specify two Modus themes, the 1015 ~modus-themes-toggle~ command will prompt with completion for a theme 1016 among the collection (this is practically the same as the aforementioned 1017 ~modus-themes-select~ command). 1018 1019 ** Colour palettes and their overrides are much more powerful 1020 :PROPERTIES: 1021 :CUSTOM_ID: h:c20673d3-d992-4827-bd24-80329962dc8e 1022 :END: 1023 1024 In previous versions, there were options to override colour values. 1025 Those were difficult to use as they (i) required expertise on picking 1026 the correct values and (ii) it was not clear which colour was used 1027 where. 1028 1029 The new version broadens the colour palette to include *named colours* 1030 and *semantic colour mappings*. Named colours are associations 1031 between a symbol and a colour value, such as =(blue-warmer "#354fcf")=. 1032 While semantic colour mappings apply those named colours to specific 1033 constructs such as =(heading-2 yellow-faint)= for all level 2 headings. 1034 1035 What this means is that overrides can now be targeted at semantic 1036 mappings as well to refashion practically every aspect of the themes. 1037 The manual provides lots of examples that can be copied and used 1038 directly. For example, it is possible to change the sequence of 1039 colours in headings so that, say, there is a colour-coding that 1040 denotes depth. Links to relevant entries are included in this 1041 document. 1042 1043 The ~modus-themes-common-palette-overrides~ user option contains 1044 entries that are shared between all the themes. While there also 1045 exist theme-specific options such as ~modus-operandi-palette-overrides~. 1046 1047 For technical insight into the palette overrides, consult the manual: 1048 <https://protesilaos.com/emacs/modus-themes#h:34c7a691-19bb-4037-8d2f-67a07edab150>. 1049 1050 For practical examples check "Stylistic variants using palette 1051 overrides" and its subsections: 1052 <https://protesilaos.com/emacs/modus-themes#h:df1199d8-eaba-47db-805d-6b568a577bf3>. 1053 1054 ** Preset overrides for faint or intense colouration 1055 :PROPERTIES: 1056 :CUSTOM_ID: h:5ba76bb2-9ca8-4202-aca3-31aaca239d94 1057 :END: 1058 1059 The palette overrides are comprehensive and can be tweaked in a 1060 detailed way. Still, users may prefer to use the presets for a 1061 "faint" or "intense" style. These presets showcase the new feature by 1062 styling elements that were previously not subject to configuration. 1063 They also provide the convenience of a common set of stylistic 1064 patterns. 1065 1066 Read the "Palette override presets" section in the manual for how to 1067 use and/or extend those: 1068 <https://protesilaos.com/emacs/modus-themes#h:b0bc811c-227e-42ec-bf67-15e1f41eb7bc>. 1069 1070 ** Named colours are more meaningful 1071 :PROPERTIES: 1072 :CUSTOM_ID: h:94e59644-8ef8-4a46-9666-a241ba04b21a 1073 :END: 1074 1075 In the past, the variants of the main accent colours were named like: 1076 1077 - =red= 1078 - =red-alt= 1079 - =red-alt-other= 1080 1081 The improved naming scheme changes those to: 1082 1083 - =red= 1084 - =red-warmer= 1085 - =red-cooler= 1086 1087 Semantically, the "warmer" variants have more yellow or red while the 1088 "cooler" ones have greater contribution of cyan or blue. As such, the 1089 user can expect =green-warmer= to be an olive green and =green-cooler= 1090 to be that of the pine (though olive trees can have blue-green 1091 colouration and pine trees can be "warmer", but I digress). 1092 1093 Named colours can be previewed with the commands 1094 ~modus-themes-list-colors~ (alias ~modus-themes-preview-colors~) and 1095 ~modus-themes-list-colors-current~ (alias 1096 ~modus-themes-preview-colors-current~). 1097 1098 Those commands accept a =C-u= prefix argument, in which case they show 1099 the semantic colour mappings. 1100 1101 ** Rationalisation of the colour palette 1102 :PROPERTIES: 1103 :CUSTOM_ID: h:cb378214-54a1-4b5b-a801-aa206b94ae38 1104 :END: 1105 1106 In previous versions, there were a lot of named colours that were 1107 added ad-hoc, such as =fg-special-cold= and =bg-special-calm-faint=. 1108 There was no clear design pattern behind them, nor was it obvious 1109 where those colours should be used. Furthermore, there were colours 1110 that were reserved for the various permutations of user options. 1111 1112 This was too complex for users who wanted/needed to refashion aspects 1113 of the themes. It was also difficult to maintain. 1114 1115 The new palettes are more streamlined and their application is more 1116 predictable. This only matters to users who tweak the themes: it 1117 makes their life easier, although it does render inapplicable any 1118 previous custom code. 1119 1120 ** Deprecation of user options 1121 :PROPERTIES: 1122 :CUSTOM_ID: h:fcaa0f80-7e78-44b1-ab04-90acb0046139 1123 :END: 1124 1125 The following subsections explain the topics in further detail. The 1126 general idea for this change is that palette overrides provide a more 1127 powerful, more flexible, and less complex alternative. The code base 1128 is considerably smaller. 1129 1130 With overrides, I can now provide support to cases such as: 1131 1132 - Users who need different sets of greys as their monitor has 1133 inadequate colour reproduction (this is much more common than you 1134 think). 1135 - Users who want to make individual elements stand out, such as to 1136 turn the delimiters of Org source blocks (the =#+begin_src= and 1137 =#+end_src= lines) into, say, a shade of red. 1138 - Users who want to tone down the =TODO= and =DONE= keywords while 1139 making headings more colourful. Or the inverse, or any combination 1140 in-between the extremes. 1141 - Users who want Org property drawers to be more colourful but inline 1142 code to be faint. 1143 1144 You get the idea... All these and many more are now possible. 1145 Whereas in the past I would either have to tell people that it is not 1146 possible or hardcode a stylistic alternative via user options, thus 1147 further complicating the code base. 1148 1149 Catering to all those use-cases is important due to the maximalist 1150 scope of the Modus themes: I cannot tell people to use another theme, 1151 because here is where they come for their legibility needs. This is 1152 consistent with my experience that accessibility is not a 1153 one-size-fits-all and that the most accessible design is that which is 1154 flexible, ceteris paribus. 1155 1156 *** ~modus-themes-intense-mouseovers~ 1157 :PROPERTIES: 1158 :CUSTOM_ID: h:7f4a658a-613b-4ab9-bc05-d9aa6179830b 1159 :END: 1160 1161 This user option would amplify the background colour of mouse hover 1162 effects (technically, the ~highlight~ and ~mode-line-highlight~ 1163 faces). It always used a blue colour. 1164 1165 The same effect can now be achieved via overrides, except it is now 1166 possible to use any background colour or level of intensity that is 1167 provided by the themes' palette. The manual provides concrete 1168 examples: <https://protesilaos.com/emacs/modus-themes#h:b5cab69d-d7cb-451c-8ff9-1f545ceb6caf>. 1169 1170 *** ~modus-themes-org-agenda~ 1171 :PROPERTIES: 1172 :CUSTOM_ID: h:778abb81-4bcb-4a5c-85eb-eec9f417a443 1173 :END: 1174 1175 This was a complex user option that was hard to test, document, and 1176 maintain. Most aspects of the Org agenda can be affected via 1177 overrides, as demonstrated in the manual: 1178 <https://protesilaos.com/emacs/modus-themes#h:a5af0452-a50f-481d-bf60-d8143f98105f>. 1179 1180 *** ~modus-themes-fringes~ 1181 :PROPERTIES: 1182 :CUSTOM_ID: h:b1ee38d7-45a0-474b-8c97-774f61462cc6 1183 :END: 1184 1185 This user option provided two shades of grey and the option for an 1186 invisible background for the Emacs fringe. The same and better can be 1187 done via overrides, as shown in the manual: 1188 <https://protesilaos.com/emacs/modus-themes#h:c312dcac-36b6-4a1f-b1f5-ab1c9abe27b0>. 1189 1190 *** ~modus-themes-lang-checkers~ 1191 :PROPERTIES: 1192 :CUSTOM_ID: h:ad06917b-a078-48c8-97e8-1182e085a15c 1193 :END: 1194 1195 This was another complex user option that offered several stylistic 1196 variants of dubious value. The main problem it had is that linter 1197 highlights are often applied automatically, so any super intense style 1198 becomes unusable. Same when a file has lots of warnings/errors. 1199 1200 The semantic colour mappings I provide for this case are limited to 1201 underlines, which I think is the most usable/legible design. The 1202 manual provides concrete examples on how to tweak those: 1203 <https://protesilaos.com/emacs/modus-themes#h:03dbd5af-6bae-475e-85a2-cec189f69598>. 1204 1205 *** ~modus-themes-mode-line~ 1206 :PROPERTIES: 1207 :CUSTOM_ID: h:1b82b764-97f5-406a-8440-bae415c7d294 1208 :END: 1209 1210 Yet another very complex user option that I removed in the interest of 1211 maintainability. All its stylistic permutations (and more) for 1212 colours are possible via overrides: 1213 1214 - Make the mode line borderless :: <https://protesilaos.com/emacs/modus-themes#h:80ddba52-e188-411f-8cc0-480ebd75befe> 1215 - Make the active mode line colorful :: <https://protesilaos.com/emacs/modus-themes#h:e8d781be-eefc-4a81-ac4e-5ed156190df7> 1216 1217 It is also possible to add padding to the mode line, though I explain 1218 why this was always a dirty hack: 1219 <https://protesilaos.com/emacs/modus-themes#h:5a0c58cc-f97f-429c-be08-927b9fbb0a9c>. 1220 1221 *** ~modus-themes-diffs~ 1222 :PROPERTIES: 1223 :CUSTOM_ID: h:dd2879a4-37c1-4ded-bc7e-24a217248961 1224 :END: 1225 1226 I have redesigned all diff-related colours to improve their usability. 1227 They are less intense than before, but still stand out clearly. I am 1228 purposefully not documenting how to use overrides here as I want users 1229 to give this redesign a try. We can always document and refine things 1230 at a later point. 1231 1232 *** ~modus-themes-subtle-line-numbers~ 1233 :PROPERTIES: 1234 :CUSTOM_ID: h:bcce1b94-a223-4324-b0a6-940e389819a8 1235 :END: 1236 1237 This was a simple, but ultimately very limited option. We can do much 1238 better with overrides because we can tweak every aspect of this 1239 interface without making the code more complex. The manual shows how 1240 to do it in style: 1241 <https://protesilaos.com/emacs/modus-themes#h:b6466f51-cb58-4007-9ebe-53a27af655c7>. 1242 1243 *** ~modus-themes-markup~ 1244 :PROPERTIES: 1245 :CUSTOM_ID: h:5eedfd24-9480-4b76-8b64-e625d3220a8d 1246 :END: 1247 1248 This was a poorly named user option that only affected inline code 1249 elements in prose. The new semantic colour mappings provide more 1250 points of entry and thus make it easier to tweak things to one's 1251 liking (including tables, property drawers, source block delimiters 1252 (the =#+begin_src= and =#+end_src= lines)), and more. The manual 1253 shows how: 1254 <https://protesilaos.com/emacs/modus-themes#h:bb5b396f-5532-4d52-ab13-149ca24854f1>. 1255 1256 *** ~modus-themes-paren-match~ 1257 :PROPERTIES: 1258 :CUSTOM_ID: h:8dbe54c3-5bfc-424c-8952-f68015f6c6c4 1259 :END: 1260 1261 The colouration of matching parentheses of the ~show-paren-mode~ can 1262 still be affected via overrides: 1263 <https://protesilaos.com/emacs/modus-themes#h:259cf8f5-48ec-4b13-8a69-5d6387094468>. 1264 1265 *** ~modus-themes-syntax~ 1266 :PROPERTIES: 1267 :CUSTOM_ID: h:22910131-87bf-4c03-bbf4-aac3010b570a 1268 :END: 1269 1270 This was a user option that controlled the colouration of programming 1271 modes. We can reproduce it with overrides, except we now also have 1272 the freedom to adapt things further: 1273 1274 - Make comments yellow and strings green :: <https://protesilaos.com/emacs/modus-themes#h:26f53daa-0065-48dc-88ab-6a718d16cd95> 1275 - Make code syntax use the old alt-syntax style :: <https://protesilaos.com/emacs/modus-themes#h:c8767172-bf11-4c96-81dc-e736c464fc9c> 1276 - Make use of alternative styles for code syntax :: <https://protesilaos.com/emacs/modus-themes#h:943063da-7b27-4ba4-9afe-f8fe77652fd1> 1277 1278 *** ~modus-themes-links~ 1279 :PROPERTIES: 1280 :CUSTOM_ID: h:68d41ee9-d277-45f9-a6cd-543dac9282c8 1281 :END: 1282 1283 The colouration of links can now be affected via palette overrides, as 1284 documented in the manual: 1285 <https://protesilaos.com/emacs/modus-themes#h:6c1d1dea-5cbf-4d92-b7bb-570a7a23ffe9>. 1286 1287 *** ~modus-themes-region~ 1288 :PROPERTIES: 1289 :CUSTOM_ID: h:b97b78df-9ed9-4173-8de2-303851231e06 1290 :END: 1291 1292 Overrides can be used to affect the region's colouration and/or to 1293 prevent the active region highlight from changing the underlying text 1294 colour. As always, the manual covers the details: 1295 <https://protesilaos.com/emacs/modus-themes#h:c8605d37-66e1-42aa-986e-d7514c3af6fe>. 1296 1297 *** ~modus-themes-deuteranopia~ 1298 :PROPERTIES: 1299 :CUSTOM_ID: h:e5fee2a1-2ace-4b4b-9aea-554d2b4a7c2d 1300 :END: 1301 1302 Instead of this rather limited option, users are advised to use the 1303 new bespoke themes: ~modus-operandi-deuteranopia~ and 1304 ~modus-vivendi-deuteranopia~. They are designed to cater to the needs 1305 of people with red-green colour deficiency. 1306 1307 *** ~modus-themes-mail-citations~ 1308 :PROPERTIES: 1309 :CUSTOM_ID: h:bb8a81c5-d0c1-4150-bf7a-254d1684d95e 1310 :END: 1311 1312 All parts of an email composition buffer (per the standard 1313 =message.el= library) are configurable via palette overrides. Not 1314 just citation lines, but also message headers. The manual shows 1315 several stylistic alternatives: 1316 <https://protesilaos.com/emacs/modus-themes#h:7da7a4ad-5d3a-4f11-9796-5a1abed0f0c4>. 1317 1318 Note that apart from this change, I also redesigned several faces that 1319 affect emails. This was done in the interest of consistency and to 1320 avoid some exaggerations. 1321 1322 *** ~modus-themes-tabs-accented~ 1323 :PROPERTIES: 1324 :CUSTOM_ID: h:1574b5bc-d615-4053-9bbf-79396745519b 1325 :END: 1326 1327 I do not provide documentation on how to reproduce this style because 1328 I think it was not widely used. It is possible to do it with 1329 overrides. If anyone needs it, they are invited to contact me about 1330 it. 1331 1332 *** ~modus-themes-box-buttons~ 1333 :PROPERTIES: 1334 :CUSTOM_ID: h:19c81a75-a65e-49cb-83e5-c44167821865 1335 :END: 1336 1337 All "graphical" buttons use a proportionately spaced font 1338 (~variable-pitch~) by default as it helps with legibility. The 1339 colours of those buttons can be changed by overriding the relevant 1340 entries: 1341 <https://protesilaos.com/emacs/modus-themes#h:4f6b6ca3-f5bb-4830-8312-baa232305360>. 1342 1343 [ Use my ~fontaine~ package to affect fonts via faces and to apply 1344 presets for various contexts. ] 1345 1346 ** Changes to remaining user options 1347 :PROPERTIES: 1348 :CUSTOM_ID: h:c93db0f4-1032-411a-881e-0c5fd23480cf 1349 :END: 1350 1351 *** The ~modus-themes-headings~ also affects the Org agenda 1352 :PROPERTIES: 1353 :CUSTOM_ID: h:c2f088b6-dc84-4285-9ece-c877be6b274f 1354 :END: 1355 1356 This user option applies to heading level 0 through 8 and also to the 1357 agenda date and structure constructs. Here is a complete example: 1358 1359 #+begin_src emacs-lisp 1360 (setq modus-themes-headings ; read the manual's entry of the doc string 1361 '((0 . (variable-pitch light 1.9)) 1362 (1 . (variable-pitch light 1.8)) 1363 (2 . (variable-pitch regular 1.7)) 1364 (3 . (variable-pitch regular 1.6)) 1365 (4 . (variable-pitch regular 1.5)) 1366 (5 . (variable-pitch 1.4)) ; absence of weight means `bold' 1367 (6 . (variable-pitch 1.3)) 1368 (7 . (variable-pitch 1.2)) 1369 (agenda-date . (semilight 1.5)) 1370 (agenda-structure . (variable-pitch light 1.9)) 1371 (t . (variable-pitch 1.1)))) 1372 #+end_src 1373 1374 *** The ~modus-themes-headings~ no longer affects colours 1375 :PROPERTIES: 1376 :CUSTOM_ID: h:bb0bac60-ad22-4699-9579-881431972294 1377 :END: 1378 1379 All colour-related changes can be done via palette overrides. This 1380 gives the user maximum flexibility on the choice of applied colours 1381 (e.g. to have alternating contrasting foregrounds or shades of the 1382 same hue). The manual shows several examples: 1383 <https://protesilaos.com/emacs/modus-themes#h:11297984-85ea-4678-abe9-a73aeab4676a>. 1384 1385 *** The ~modus-themes-completions~ is simpler 1386 :PROPERTIES: 1387 :CUSTOM_ID: h:0b29c525-7def-4149-a26b-70ca5e021a27 1388 :END: 1389 1390 It no longer covers =popup= entries as distinct from =selection=. 1391 This is because I revised all the applicable colours and faces to 1392 consolidate styles. 1393 1394 The =matches= and =selection= keys now read the same list of values. 1395 1396 All changes to colours are done through palette overrides, as 1397 demonstrated in the manual (again, far more flexible): 1398 <https://protesilaos.com/emacs/modus-themes#h:d959f789-0517-4636-8780-18123f936f91>. 1399 1400 *** The ~modus-themes-prompts~ is simpler 1401 :PROPERTIES: 1402 :CUSTOM_ID: h:7e5b9fea-b696-4e8a-bebe-a7fbb0eb460a 1403 :END: 1404 1405 This user option now only affects the typographic features of prompts. 1406 It can read any font weight, as explained in its documentation. 1407 Colours are influenced by semantic colour mappings in the palette and 1408 can be overridden accordingly. The manual shows several styles: 1409 <https://protesilaos.com/emacs/modus-themes#h:bd75b43a-0bf1-45e7-b8b4-20944ca8b7f8>. 1410 1411 *** Auto-reload theme when configuring via Custom 1412 :PROPERTIES: 1413 :CUSTOM_ID: h:b26a2a1f-ee1e-4001-a3d0-4d4d7cb4fd5f 1414 :END: 1415 1416 The user option ~modus-themes-custom-auto-reload~ supersedes the old 1417 ~modus-themes-inhibit-reload~. It is now set to a non-~nil~ value by 1418 default. 1419 1420 We do this as a convenience for users who tweak theme settings via the 1421 Custom UI and who do not know that all modifications to user options 1422 require a theme re-load for changes to take effect. Read more in the 1423 manual: 1424 <https://protesilaos.com/emacs/modus-themes#h:9001527a-4e2c-43e0-98e8-3ef72d770639>. 1425 1426 ** Deprecation of public functions 1427 :PROPERTIES: 1428 :CUSTOM_ID: h:8167bf46-7a43-4b46-b2ed-a66e5d73bb96 1429 :END: 1430 1431 The ~modus-themes-color~ and ~modus-themes-color-alts~ are deprecated. 1432 Users are invited to concentrate on the ~modus-themes-with-colors~ 1433 macro. The manual provides several examples on that front. 1434 1435 The ~modus-themes-load-themes~ is no longer necessary due to the 1436 refactoring of the code base. 1437 1438 The ~modus-themes-load-operandi~ and ~modus-themes-load-vivendi~ are 1439 superseded by the general ~modus-themes-load-theme~. It accepts the 1440 symbol of a Modus theme as its argument. 1441 1442 The command ~modus-themes-report-bug~ is no more. Just send an email 1443 to the mailing list or to me privately. Find the information with 1444 =M-x describe-package= and then specify =modus-themes=. 1445 Alternatively, check my website: <https://protesilaos.com/contact>. 1446 1447 ** Removed support for some packages 1448 :PROPERTIES: 1449 :CUSTOM_ID: h:34ffc5ed-574d-44f1-8a27-c2e6bb8c69e0 1450 :END: 1451 1452 These are the most notable packages that are no longer supported: 1453 1454 - ~dired+~ 1455 - ~lsp-mode~ 1456 - ~helm~ 1457 - ~treemacs~ 1458 1459 The reason is that they are very hard to use for me as an outsider. 1460 They provide lots of features, which means that I cannot easily 1461 identify faces in their context unless I become an expert in the 1462 relevant functionality. 1463 1464 Other removed packages: 1465 1466 - ~artbollocks-mode~. Use ~writegood-mode~. 1467 - ~apropos~. Its default faces are fine. 1468 - ~awesome-tray~. 1469 - ~bbdb~ and ~ebdb~. They are hard to set up, but their faces are 1470 usable. 1471 - ~calfw~. Hard to set up and also seems to no longer be maintained. 1472 - ~easy-jekyll~ 1473 - ~dir-treeview~ 1474 - ~eros~ 1475 - ~eshell-git-prompt~ 1476 - ~eshell-prompt-extras~ 1477 - ~eshell-syntax-highlighting~ 1478 - ~evil-goggles~ 1479 - ~evil-snipe~ 1480 - ~evil-visual-mark-mode~ 1481 - ~fountain-mode~. I need someone who uses it to help me test it. 1482 - ~macrostep~ 1483 - ~mentor~ 1484 - ~mini-modeline~ 1485 - ~mmm-mode~. I need someone who uses it to help me test it. 1486 - ~org-table-sticky-header~. 1487 - ~phi-grep~ 1488 - ~pomidor~ 1489 - ~rainbow-blocks~. Use Adam Porter's (aka alphapapa) =prism.el=. 1490 - ~semantic~ 1491 - ~smartparens~ 1492 - ~spaceline~ 1493 - ~sx~ 1494 - ~telephone-line~ 1495 - ~tomatinho~ 1496 - ~winum~ 1497 - ~xterm-color~. 1498 1499 ** Thanks for their feedback on the development of version 4 1500 :PROPERTIES: 1501 :CUSTOM_ID: h:bdaa3eaf-67e8-4de8-b8d5-7b11fa28dbcd 1502 :END: 1503 1504 In alphabetical order: 1505 1506 - Aleksei Pirogov :: Noticed that there were no semantic colour 1507 mappings for the ~rainbow-delimiters~ (and related), thus reminding 1508 me to make the requisite arrangements. Aleksei also spotted a 1509 regression during the development of the "faint" overrides' preset. 1510 These were done on the GitHub mirror: 1511 1512 - <https://github.com/protesilaos/modus-themes/issues/54> 1513 - <https://github.com/protesilaos/modus-themes/issues/55> 1514 1515 - Anders Johansson :: Pointed out some irregularities with the use of 1516 ~make-obsolete~ in the =version-4= development branch. I should be 1517 using ~make-obsolete-variable~ in some cases: 1518 <https://lists.sr.ht/~protesilaos/modus-themes/%3CCAKJdtO-dzvR%3D2BaSd5qPzwDE%3D%2BaJSR6js7ii1O6KD7oFOB7gDw%40mail.gmail.com%3E> 1519 1520 - Charlotte Van Petegem :: Reminded me to document how to reproduce 1521 the old "alt-syntax" style by using palette overrides: 1522 <https://lists.sr.ht/~protesilaos/modus-themes/%3C877cy917jw.fsf%40vanpetegem.me%3E> 1523 1524 - Christian Tietze :: Spotted a bug in how shared palette overrides 1525 would not be read in certain scenaria. Also suggested tweaks to the 1526 documentation, which reminded me of tasks that still had to be done: 1527 1528 - <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm1cz81rq9m.fsf%40christiantietze.de%3E> 1529 - <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm1fscxrr0s.fsf%40christiantietze.de%3E> 1530 - <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm1ilhtrs09.fsf%40christiantietze.de%3E> 1531 1532 - Daniel Mendler (aka @minad on GitHub) :: Contacted me to comment on 1533 the general redesign. From the discussion I learnt that preset 1534 overrides would be useful. This information is shared with 1535 permission, as it was done via a private channel. 1536 1537 - James Ferguson :: Commented on the colours of the tab-bar and thus 1538 inspired me to define relevant semantic colour mappings: 1539 <https://lists.sr.ht/~protesilaos/modus-themes/%3CCAMtGdSnrKDGdagT7vGC9DnBZnOvkbM%3D4Nxwn3ts2tdO8YmUnxw%40mail.gmail.com%3E> 1540 1541 - Philip Kaludercic :: Opined that the ~modus-themes-inhibit-reload~ 1542 should not be deprecated in the interest of usability. As noted 1543 above, its functionality is preserved and now enabled by default in 1544 ~modus-themes-custom-auto-reload~. Through the discussion we also 1545 arrived at the concept of shared palette overrides instead of only 1546 having theme-specific ones: 1547 1548 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C87h6y3gyxx.fsf%40posteo.net%3E> 1549 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C87wn6qgjkx.fsf%40posteo.net%3E> 1550 1551 - Tony Zorman :: Noted that there was no clear upgrade path to 1552 version 4. This helped me explain some of the technicalities of 1553 packaging and of the themes' redesign, but also to update the 1554 manual: 1555 <https://lists.sr.ht/~protesilaos/modus-themes/%3C874jtew0gp.fsf%40hyperspace%3E>. 1556 1557 - a1ks :: Reported a bug caused by the typo of an extra backtick. 1558 This was done on the GitHub mirror: 1559 <https://github.com/protesilaos/modus-themes/issues/53>. 1560 1561 - soaringbind :: Identified some omissions in the code where I forgot 1562 to update certain Avy and Org faces. This continued in a second 1563 thread about the use of some obsolete faces: 1564 1565 - <https://lists.sr.ht/~protesilaos/modus-themes/%3CNKXY2k1--3-9%40tuta.io%3E> 1566 - <https://lists.sr.ht/~protesilaos/modus-themes/%3CNKd3jM_--3-9%40tuta.io%3E> 1567 1568 - tumashu :: Experimented with the overrides and thus helped me 1569 identify an area where the documentation could be improved. This 1570 was done on the GitHub mirror: 1571 1572 - <https://github.com/protesilaos/modus-themes/issues/56> 1573 - <https://github.com/protesilaos/modus-themes/issues/57> 1574 1575 - wakamenod :: Encountered a bug that was caused by a mistake of mine 1576 that affected how themes are instantiated. This was done on the 1577 GitHub mirror: <https://github.com/protesilaos/modus-themes/issues/50>. 1578 1579 ** The largest release to date 1580 :PROPERTIES: 1581 :CUSTOM_ID: h:54a6bcd1-6ba0-42ed-8fdd-b83ee3efee73 1582 :END: 1583 1584 There are many more changes that I did not describe. This already 1585 lengthy document is me covering just the headline features. The gist 1586 is that I spent the last month refactoring and testing the themes to 1587 ensure they can cope with the needs of users for years to come. 1588 1589 I understand that the palette overrides are a new way of doing things 1590 and that some users may be inconvenienced over the short-term as they 1591 update their configurations. I strongly believe that this system is 1592 better and the Modus themes can now cover all the legibility needs of 1593 users, while also catering to their aesthetic preferences. 1594 1595 + Package name (GNU ELPA): ~modus-themes~ 1596 + Official manual: <https://protesilaos.com/emacs/modus-themes> 1597 + Change log: <https://protesilaos.com/emacs/modus-themes-changelog> 1598 + Colour palette: <https://protesilaos.com/emacs/modus-themes-colors> 1599 + Sample pictures: <https://protesilaos.com/emacs/modus-themes-pictures> 1600 + Git repo on SourceHut: <https://git.sr.ht/~protesilaos/modus-themes> 1601 - Mirrors: 1602 + GitHub: <https://github.com/protesilaos/modus-themes> 1603 + GitLab: <https://gitlab.com/protesilaos/modus-themes> 1604 + Mailing list: <https://lists.sr.ht/~protesilaos/modus-themes> 1605 + Backronym: My Old Display Unexpectedly Sharpened ... themes 1606 1607 * 3.0.0 1608 :PROPERTIES: 1609 :CUSTOM_ID: h:6829db8d-52c5-43a8-a026-f213dcfaced9 1610 :END: 1611 1612 #+begin_src text 1613 Modus themes version 3.0.0 1614 1615 By Protesilaos Stavrou <info@protesilaos.com> on 2022-10-28 1616 1617 1618 The version that will ship with Emacs 29 1619 ======================================== 1620 1621 The 'modus-operandi' and 'modus-vivendi' themes (package name is 1622 'modus-themes') have been a part of Emacs since August 2020. Emacs 28 1623 ships with version 1.6.0 of the themes. Emacs 29 will include version 1624 3.0.0. 1625 1626 There is no clean upgrade path from the old version of the themes to 1627 the current one. Users are advised to review their configurations and 1628 consult with the detailed manual of the themes. 1629 1630 I am available to answer any questions, either via my personal email 1631 or on the official sources of the themes. Find the full list here: 1632 <https://protesilaos.com/emacs>. 1633 1634 1635 Minor breaking changes 1636 ====================== 1637 1638 I have changed the default value of the following user options: 1639 1640 1. 'modus-themes-hl-line' 1641 2. 'modus-themes-completions' 1642 3. 'modus-themes-fringes' 1643 1644 In the case of the first two, the background of the highlighted line 1645 is made to look a bit more intense. 1646 1647 For the fringes, this tweak makes them visible, using a subtle grey 1648 colour. By default, "fringe" is an 8-pixel-wide area to the left and 1649 right side of an Emacs window. 1650 1651 The intent of these changes is to make the out-of-the-box experience 1652 consistent with the accessibility considerations of the Modus themes. 1653 Specifically because some users may not realise that the themes are 1654 highly customisable. 1655 1656 To revert to the old defaults, users must include this (or equivalent) 1657 in their init file: 1658 1659 (setq modus-themes-completions nil 1660 modus-themes-hl-line nil 1661 modus-themes-fringes nil) 1662 1663 As always, changes to theme user options take effect upon a reload of 1664 the theme. 1665 1666 This was announced on my website: 1667 <https://protesilaos.com/codelog/2022-10-23-breaking-modus-themes-3-0-0-notice/>. 1668 1669 1670 Support for new faces or changes to existing ones 1671 ================================================= 1672 1673 ,* Refined the 'telega' faces for inline code and preformatted 1674 elements. The faces are 'telega-entity-type-code' and 1675 'telega-entity-type-pre', respectively. This change makes them 1676 subject to the style specified in the user option 1677 'modus-themes-markup'. 1678 1679 Thanks to Pablo Stafforini for showing me screenshots of how they 1680 look, as I am not a telega/telegram user and cannot do this myself. 1681 Done as part of issue 170 on the GitLab mirror: 1682 <https://gitlab.com/protesilaos/modus-themes/-/issues/170#note_1143975582>. 1683 1684 ,* Removed all attributes from the 'textsec-suspicious' face. By 1685 default, it applies a background, but does not affect the 1686 foreground. The result is thus inaccessible in many cases 1687 (e.g. blue links against a red background). There is no need for 1688 such a background though, as the warnings are accompanied by the 1689 relevant emoji: ⚠️. 1690 1691 To support this face, we need it to affect the foreground as well. 1692 1693 ,* Deleted some 'consult' "preview" faces in the interest of 1694 consistency. This is to match the current style of the project: 1695 <https://github.com/minad/consult/commit/1343e39fefcf8a28a7a415aa4b0a8ff7094370bf>. 1696 1697 ,* Expanded support of the built-in 'diff-mode' faces to include the 1698 'diff-changed-unspecified'. It is made to look the same as 1699 'diff-changed', i.e. yellow-tinted. There is a good chance that a 1700 user will never see this face in action (I only encountered it 1701 once). 1702 1703 ,* Reworked all the 'highlight-regexp' faces (like 'hi-yellow') to use 1704 bespoke colour values. 1705 1706 These faces need to have a background that is consistent with their 1707 semantics. Furthermore, they need to use the 'inverse-video' 1708 attribute which, in turn, affects the combinations of colour we can 1709 apply. Our accented backgrounds are designed to contrast well with 1710 our nominal main foreground values, whereas this case demands 1711 coloured backgrounds that contrast nicely with what would normally 1712 be the main background colour. As such, we cannot apply our 1713 ordinary entries from each theme's palette. It would be inefficient 1714 to expand the palette of each theme just for this edge case. 1715 1716 Thanks to Kevin Kainan Li for the feedback on the mailing list, where 1717 they informed me that the previous design was too dark/mute (and I 1718 agreed with that assessment) and provided feedback on my samples: 1719 <https://lists.sr.ht/~protesilaos/modus-themes/%3CCAMTq2Vp3Nnzv-i9wJdq4-OJ4X_QfWXySpUtAieBy0dgKLEOSBg%40mail.gmail.com%3E>. 1720 1721 ,* Recoloured the 'modus-themes-completion-match-1' to use a shade of 1722 blue instead of cyan. This contributes to the distinctiveness of 1723 those matches relative to 'modus-themes-completion-match-0' and the 1724 other groups. These faces are used in completion User Interfaces, 1725 such as 'vertico', 'corfu', 'orderless'. They are subject to the 1726 user option 'modus-themes-completions'. 1727 1728 ,* Added support for the 'olivetti-fringe' face. Its background is the 1729 same as the main background, meaning that the fringes are invisible 1730 when 'olivetti-mode' is enabled. Thanks to Matthias Fuchs for 1731 producing a report that helped me track this problem. It was done 1732 in issue 46 on the GitHub mirror: 1733 <https://github.com/protesilaos/modus-themes/issues/46>. 1734 1735 1736 Miscellaneous 1737 ============= 1738 1739 ,* Added the new Emacs 29 theme properties to 'modus-operandi' and 1740 'modus-vivendi'. These make the themes work with the new built-in 1741 command 'toggle-theme'. Thanks to Philip Kaludercic for the patch 1742 and for the work on this in emacs.git: 1743 <https://lists.gnu.org/archive/html/bug-gnu-emacs/2022-10/msg00886.html>. 1744 1745 ,* Refrained from deprecating the 'modus-themes-toggle' command in 1746 favour of the new generic 'toggle-theme'. 1747 1748 The 'toggle-theme' is not functionally equivalent to the command 1749 'modus-themes-toggle' due to the optional arguments it accepts. 1750 With 'toggle-theme' we are prompted to confirm loading the theme, 1751 due to how unsafe themes can be... Further, we are asked to add the 1752 loaded theme to the list of "safe" themes. This only applies to the 1753 packaged version of the 'modus-themes', not the items that are built 1754 into Emacs. 1755 1756 These prompts are consistent with how 'load-theme' works, but not 1757 with what the user of 'modus-themes-toggle' has come to expect. 1758 1759 Users who do not like to maintain a 'custom-file' (like me) are thus 1760 penalised each time they invoke the command. 1761 1762 The 'modus-themes-toggle' will only be deprecated if there is, say, 1763 a user option in Emacs that disables those prompts each time a theme 1764 is loaded. Basically, we need an arrangement that just toggles 1765 themes without questions. 1766 1767 Thanks to Rudolf Adamkovič for suggesting the idea and to Philip 1768 Kaludercic for the 'toggle-theme' (and related functionality): 1769 <https://lists.sr.ht/~protesilaos/modus-themes/%3C877d116lh4.fsf%40posteo.net%3E#%3Cm2lepgrd8l.fsf@me.com%3E>. 1770 1771 ,* Corrected the one-line description of the 'modus-vivendi' theme, 1772 which was describing itself as a "light" theme. 1773 1774 ,* Ensured that the manual and all doc strings in the code use American 1775 English, per the convention of emacs.git (my CHANGELOG still uses 1776 what I prefer). Thanks to Stefan Kangas for contributing to this 1777 effort with a patch that properly renders 'non-nil' in the texinfo 1778 output as 'non-@code{nil}'. 1779 1780 ,* Made other minor tweaks and refinements. 1781 #+end_src 1782 1783 * 2.7.0 1784 :PROPERTIES: 1785 :CUSTOM_ID: h:4d86106c-1df5-4f5f-bc6c-f14f5d13403b 1786 :END: 1787 1788 #+begin_src text 1789 Modus themes version 2.7.0 1790 1791 By Protesilaos Stavrou <info@protesilaos.com> on 2022-10-01 1792 1793 1794 Support for packages or faces 1795 ============================= 1796 1797 ,* Reinstated support for 'centaur-tabs'. I had removed it in commit 1798 2235ce5 (done on 2022-08-02) for version 2.5.0 of the modus-themes. 1799 At the time I wrote: 1800 1801 centaur-tabs has a bug where it cannot read the value of a face if it 1802 uses the standard ':inherit' attribute. I have sent a patch to fix it, 1803 but have received no response since February: 1804 <https://github.com/ema2159/centaur-tabs/pull/179>. 1805 1806 Relevant reports: 1807 1808 - <https://github.com/protesilaos/modus-themes/issues/30> 1809 - <https://gitlab.com/protesilaos/modus-themes/-/issues/288> 1810 - <https://github.com/protesilaos/modus-themes/issues/15> 1811 1812 I am happy to reinstate support for centaur-tabs as soon as the package 1813 gets the maintenance it needs. 1814 1815 My patch/pull-request is now merged and the package is actively 1816 maintained once again. Hence the decision to bring back support for 1817 it, as promised. 1818 1819 ,* Applied styles for the 'icon-button' face of Emacs 29. 1820 1821 1822 ,* Styled the 'log-edit-headers-separator' face of Emacs 29 (it was 1823 introduced upstream by a patch of mine). 1824 1825 ,* Made the 'gnus-summary-low-unread' face inherit from the 'italic' 1826 face like the rest of that subgroup of faces. This helps 1827 differentiate it from the 'gnus-summary-high-unread' face. Thanks 1828 to Mark Simpson for pointing out the possibility of conflating those 1829 two faces: <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm2r0zszc2z.fsf@gmail.com%3E>. 1830 1831 ,* Covered the 'read-multiple-choice-face' by adding a noticeable 1832 background colour to it. The default attributes it has, which look 1833 like other key bindings (bold and blue) plus an underline are 1834 technically okay, though the context of this face is in the echo 1835 area which is one line tall. Moreover, the highlighted keys are 1836 inlined with other text. These make it difficult to spot the 1837 highlights without some extra spacing. I use the addition of a 1838 background in Org's export dispatcher interface which also has some 1839 unique requirements (the 'org-dispatcher-highlight' face). The 1840 principle is to have theme-wide consistency (e.g. "all key bindings 1841 must look the same") EXCEPT when the specifics require a different 1842 set of styles in the interest of usability. 1843 1844 ,* Extended the coverage of the 'auctex' package's faces to include the 1845 'font-latex-underline-face'. Thanks to Luis Miguel Castañeda for 1846 reporting a typo I made which caused an error: 1847 <https://lists.sr.ht/~protesilaos/modus-themes/%3C7h7d2oudpb.fsf@imaginarymagnitude.net%3E> 1848 1849 ,* Added support for 'crontab-mode'. Thanks to Antonio Ruiz for the 1850 patch: <https://lists.sr.ht/~protesilaos/modus-themes/patches/35080>. It 1851 is below the ~15 line threshold and thus requires no copyright 1852 assignment to the Free Software Foundation. 1853 1854 ,* Extended support for the 'company' package's 'company-scrollbar-bg' 1855 and 'company-scrollbar-fg' faces. 1856 1857 ,* Added support for the 'spell-fu' package. Thanks to Antonio Ruiz 1858 for the patch: <https://lists.sr.ht/~protesilaos/modus-themes/%3C87fshnq7uv.fsf%40purelymail.com%3E>. 1859 Same as further above for Antonio's copyright status. 1860 1861 ,* Moved the 'selectrum-prescient' faces to the 'prescient' group, to 1862 be consistent with changes in the respective upstream packages. 1863 Thanks to okamsn for the contribution, which was done in pull 1864 request 41 on the GitHub mirror: <https://github.com/protesilaos/modus-themes/pull/41>. 1865 The user okamsn has assigned copyright assignment to the Free 1866 Software Foundation, although this patch is within the allowed 1867 limits. 1868 1869 1870 Change to 'fill-column-indicator' 1871 ================================= 1872 1873 Made the 'fill-column-indicator' face more noticeable. It is what the 1874 'display-fill-column-indicator-mode' uses to draw a line on where the 1875 'fill-column' is. 1876 1877 This change is in response to private messages I received as well as 1878 this, at parts impolite and toxic, thread that I refrained from 1879 participating in: 1880 <https://lists.gnu.org/archive/html/help-gnu-emacs/2022-08/msg00255.html>. 1881 1882 [ I do not follow that mailing list, by the way. All my projects have 1883 multiple communication channels and I always reply in a timely 1884 fashion. Social media, fora about Emacs, generic mailing lists, 1885 etc. are not among those channels. 1886 <https://protesilaos.com/codelog/2022-07-24-report-issues-official-channels/>. ] 1887 1888 The core idea is that the previous design was (1) considered 1889 "invisible" and (2) it prevented the customisation of the user option 1890 'display-fill-column-indicator-character'. 1891 1892 I am addressing point 1, but point 2 puts us in an awkward spot as we 1893 would then not be allowed to use a background and a height value. Not 1894 doing so produces a dashed line by default, with the dashes further 1895 apart the greater the line-spacing is (especially in, say, Org 1896 headings that can have a greater height than paragraph text). It 1897 looks broken and I keep getting requests to fix what is not the 1898 themes' fault. So no, the themes will remain opinionated in this 1899 regard by ignoring 'display-fill-column-indicator-character' through 1900 the styling they apply to make the line contiguous. 1901 1902 For context, also read Emacs bug#57424 and please don't take my words 1903 in a private message out of context. If I need to state my opinion in 1904 a public setting, I know how to do it. 1905 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=57424>. 1906 1907 1908 Refinement to modus-vivendi 'bg-diff-focus-removed' colour 1909 ========================================================== 1910 1911 Made the default removed diff background slightly more luminant. The 1912 colour is seen in diff-mode, ediff, and the Magit focused diff hunk. 1913 1914 When the user option 'modus-themes-diffs' is set to either 'bg-only' or 1915 'desaturated', this colour is used to highlight word-wise ("refined") 1916 changes. The increased luminance lets it stand out more compared to the 1917 more subtle backdrop. 1918 1919 Thanks to Kévin Le Gouguec for bringing this issue to my attention and 1920 for discussing it with me: 1921 <https://lists.sr.ht/~protesilaos/modus-themes/%3C87bks4i9tg.fsf@gmail.com%3E> 1922 1923 1924 Note about 'goto-address-mode' 1925 ============================== 1926 1927 Quote from the manual: 1928 1929 The built-in 'goto-address-mode' uses heuristics to identify URLs and 1930 email addresses in the current buffer. It then applies a face to them 1931 to change their style. Some packages, such as 'notmuch', use this 1932 minor-mode automatically. 1933 1934 The faces are not declared with 'defface', meaning that it is better 1935 that the theme does not modify them. The user is thus encouraged to 1936 consider including (or equivalent) this in their setup: 1937 1938 (setq goto-address-url-face 'link 1939 goto-address-url-mouse-face 'highlight 1940 goto-address-mail-face 'link 1941 goto-address-mail-mouse-face 'highlight) 1942 1943 My personal preference is to set 'goto-address-mail-face' to nil, as 1944 it otherwise adds too much visual noise to the buffer (email addresses 1945 stand out more, due to the use of the uncommon '@' character but also 1946 because they are often enclosed in angled brackets). 1947 1948 1949 Changes to the manual 1950 ===================== 1951 1952 ,* Fixed a few typos and ensured that spelling using American English 1953 as that is what emacs.git requires. 1954 1955 ,* Added the missing ':config' keywords from the example configuration 1956 of the 'circadian' package. Thanks to Koen van Greevenbroek for the 1957 patch: <https://lists.sr.ht/~protesilaos/modus-themes/%3C8735cb6zm3.fsf%40posteo.net%3E>. 1958 #+end_src 1959 1960 * 2.6.0 1961 :PROPERTIES: 1962 :CUSTOM_ID: h:fc108f65-3e0b-4e28-8030-86c797cb2b25 1963 :END: 1964 1965 #+begin_src text 1966 Modus themes version 2.6.0 1967 1968 By Protesilaos Stavrou <info@protesilaos.com> on 2022-08-19 1969 1970 1971 Changes to supported faces or face groups 1972 ========================================= 1973 1974 ,* Made the 'font-lock-warning-face' adapt to comments. This changes the 1975 face from a yellow to a red hue when the user adds a value to 1976 'modus-themes-syntax' which includes 'yellow-comments' property. 1977 Before, this face was indistinguishable from yellow comments due to a 1978 regression in version 2.5.0 of the themes. Thanks to Augusto Stoffel 1979 and Manuel Uberti for their feedback on the mailing list: 1980 <https://lists.sr.ht/~protesilaos/modus-themes/%3C87r11k1c22.fsf%40gmail.com%3E>. 1981 1982 ,* Applied a consistent foreground color (a not-so-intense yellow hue) to 1983 the 'org-checkbox' and 'markdown-gfm-checkbox-face'. The change comes 1984 from the discussion on the mailing list where it became apparent that 1985 a bit of colour is needed for such constructs: 1986 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm2fsi9cja4.fsf%40me.com%3E>. 1987 1988 Thanks to Rudolf Adamkovič, Christian Tietze, and Karthik Chikmagalur 1989 for their participation. 1990 1991 ,* Added support for the 'mu4e-related-face'. Thanks to Simon Pugnet for 1992 the feedback on the mailing list: 1993 <https://lists.sr.ht/~protesilaos/modus-themes/%3C87edxhvqwp.fsf@polaris64.net%3E>. 1994 1995 ,* Included support for the 'consult-preview-insertion' face. There are 1996 two reasons for adding this: 1997 1998 1. It decouples it from the 'region' face, which means that the user 1999 option 'modus-themes-region' no longer has an unintended effect on 2000 it. 2001 2002 2. It makes it look consistent with the 'rectangle-preview' face (see 2003 it in action with C-x SPC, move point down a few lines, type C-t 2004 and then insert some text). I feel these sort of previews need to 2005 look the same, though I don't have a strong attachment to the style 2006 now in use. 2007 2008 2009 Removed support for the 'solaire' package 2010 ========================================= 2011 2012 The 'solaire-mode' package dims the background of what it considers 2013 ancillary "UI" buffers, such as the minibuffer and Dired buffers. The 2014 Modus themes used to support Solaire on the premise that the user was 2015 (i) opting in to it, (ii) understood why certain buffers were more gray, 2016 and (iii) knew what other adjustments had to be made to prevent broken 2017 visuals (e.g. the default style of the 'modus-themes-completions' uses a 2018 subtle gray background for the selection, which with Solaire becomes 2019 practically invisible). 2020 2021 However, the assumption that users opt in to this feature does not 2022 always hold true. There are cases where it is enabled by default such 2023 as in the popular Doom Emacs configuration. Thus, the unsuspecting user 2024 who loads 'modus-operandi' or 'modus-vivendi' without the requisite 2025 customizations is getting a sub-par experience; an experience that we 2026 did not intend and cannot genuinely fix. 2027 2028 [ Relevant reading about "The case of git-gutter, the modus-themes, and 2029 Doom Emacs": 2030 <https://protesilaos.com/codelog/2022-08-04-doom-git-gutter-modus-themes/> ] 2031 2032 Because the Modus themes are meant to work everywhere, we cannot make an 2033 exception for Doom Emacs and/or Solaire users. Furthermore, we shall 2034 not introduce hacks, such as by adding a check in all relevant faces to 2035 be adjusted based on Solaire or whatever other package. Hacks of this 2036 sort are unsustainable and penalize the entire userbase. Besides, the 2037 themes are built into Emacs and we must keep their standard high. 2038 2039 The fundamental constraint with Solaire is that Emacs does not have a 2040 real distinction between "content" and "UI" buffers. For themes to work 2041 with Solaire, they need to be designed around that package. Such is an 2042 arrangement that compromises on our accessibility standards and/or 2043 hinders our efforts to provide the best possible experience while using 2044 the Modus themes. 2045 2046 As such, 'solaire-mode' is not---and will not be---supported by the 2047 Modus themes (or any other of my themes, for that matter). Users who 2048 want it must style the faces manually. Below is some sample code, based 2049 on what we cover at length in the manual: 2050 2051 (defun my-modus-themes-custom-faces () 2052 (modus-themes-with-colors 2053 (custom-set-faces 2054 `(solaire-default-face ((,class :inherit default :background ,bg-alt :foreground ,fg-dim))) 2055 `(solaire-line-number-face ((,class :inherit solaire-default-face :foreground ,fg-unfocused))) 2056 `(solaire-hl-line-face ((,class :background ,bg-active))) 2057 `(solaire-org-hide-face ((,class :background ,bg-alt :foreground ,bg-alt)))))) 2058 2059 (add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces) 2060 2061 2062 Changes to the manual 2063 ===================== 2064 2065 ,* Added a missing parenthesis to a sample code block. Thanks to Paul 2066 David for the contribution in pull request 39 on the GitHub mirror: 2067 <https://github.com/protesilaos/modus-themes/pull/39>. 2068 2069 ,* Clarified the wording of individual statements pertaining to the need 2070 of reloading a theme for changes to user options to become effective. 2071 #+end_src 2072 2073 * 2.5.0 2074 :PROPERTIES: 2075 :CUSTOM_ID: h:32438044-6eee-4909-8e5a-860ce1457049 2076 :END: 2077 2078 #+begin_src text 2079 Modus themes version 2.5.0 2080 2081 By Protesilaos Stavrou <info@protesilaos.com> on 2022-08-03 2082 2083 This entry documents the changes made to the project since the 2084 publication of version 2.4.0 on 2022-06-01. It spans more than 60 2085 commits to an already stable project. 2086 2087 The 'modus-operandi' and 'modus-vivendi' themes are built into Emacs-28 2088 (latest stable release) or later, and are available on GNU ELPA as well 2089 as other archives. Emacs-28 ships version 1.6.0, while the current 2090 'master' branch (i.e. Emacs-29) and, by extension, GNU ELPA include the 2091 latest tagged release. The packaged version is available as 2092 'modus-themes'. 2093 2094 Read the manual inside Emacs by evaluating: 2095 2096 (info "(modus-themes) Top") 2097 2098 Or visit: <https://protesilaos.com/emacs/modus-themes> (the website only 2099 documents the latest version). 2100 2101 2102 Enhancement to the user option 'modus-themes-headings' 2103 ====================================================== 2104 2105 The user option 'modus-themes-headings' now reads a level 0 heading in 2106 addition to numbers 1--8. Heading 0 accepts the same list of properties 2107 as all other levels (please consult the doc string of the user option or 2108 the corresponding entry in the manual). Currently only the value of the 2109 Org #+title is affected (face is 'org-document-title'), but we may cover 2110 more faces if needed. 2111 2112 Sample configuration: 2113 2114 ;; The `modus-themes-headings' is an alist with lots of possible 2115 ;; combinations, including per-heading-level tweaks: read the 2116 ;; manual or its doc string. 2117 (setq modus-themes-headings 2118 '((0 . (variable-pitch light (height 2.2))) 2119 (1 . (rainbow variable-pitch light (height 1.6))) 2120 (2 . (rainbow variable-pitch light (height 1.4))) 2121 (3 . (rainbow variable-pitch regular (height 1.3))) 2122 (4 . (rainbow regular (height 1.2))) 2123 (5 . (rainbow (height 1.1))) 2124 (t . (variable-pitch extrabold))) 2125 2126 Given this change, I am also tweaking the default foreground value of 2127 the 'org-document-title'. It is a bit more saturated than before, but 2128 remains close to the spirit of the previous one. 2129 2130 Thanks to Rudolf Adamkovič for proposing the idea on the mailing list: 2131 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm2y1x5tewl.fsf@me.com%3E>. 2132 2133 2134 Stylistic tweak to the user option 'modus-themes-syntax' 2135 ======================================================== 2136 2137 Prevented the 'alt-syntax' property from desaturating the effect of the 2138 'yellow-comments' property when the two would be combined. Such as: 2139 2140 (setq modus-themes-syntax '(alt-syntax yellow-comments)) 2141 2142 The previous design was incorrect because it was always using the faint 2143 variant of the yellow comments, as if the user had specified: 2144 2145 (setq modus-themes-syntax '(alt-syntax faint yellow-comments)) 2146 2147 [ Read the doc string of 'modus-themes-syntax' or the manual for an 2148 explanation of all properties and their combinations. ] 2149 2150 2151 Review of the Isearch (and related) colours 2152 =========================================== 2153 2154 Emacs' standard search has a face for the currently matched query and 2155 all its inactive matches. The faces are 'isearch' and 'lazy-highlight', 2156 respectively. Before, we were using a green background by default for 2157 the 'isearch' face and a cyan background for the 'lazy-highlight'. This 2158 was a choice that was made in the early days of the project when the 2159 palette was not yet fully realised. 2160 2161 Green and cyan do not always contrast well side-by-side (subject to 2162 hardware capabilities and environmental lighting), so the 'isearch' face 2163 also had an added bold weight. This was not my preference, but it was 2164 necessary under the circumstances. The previous combinations were also 2165 not ideal when the user option 'modus-themes-deuteranopia' was set to a 2166 non-nil value: the blue background which was used instead of the green 2167 one could be conflated with the subtle teal of the 'lazy-highlight' 2168 under certain circumstances, such as poor colour reproduction at the 2169 monitor level or in terminal emulators with limited colour support. 2170 2171 The new colours (intense yellow for active matches and subtle cyan for 2172 lazy ones) are complementary, meaning that they are naturally easy to 2173 tell apart. 2174 2175 [ Read "Colour theory and techniques used in the Modus themes": 2176 <https://protesilaos.com/codelog/2022-04-21-modus-themes-colour-theory/> ] 2177 2178 These specific hues are also well-suited for users with red-green colour 2179 deficiency: yellow stays as-is, while the cyan colour becomes a bit more 2180 grey though remains distinct. As such, we do not need to run the helper 2181 function 'modus-themes--deuteran' to set the style based on the value of 2182 'modus-themes-deuteranopia'. 2183 2184 The new colours do not clash with the style of the relevant 'match' face 2185 (used by 'M-x occur', 'M-x grep', and related), nor with the various 2186 permutations of the 'region' face (subject to the user option 2187 'modus-themes-region'). 2188 2189 Finally, the bold weight has been removed from the 'isearch' face. It 2190 was always a kludge. Also, it would make paragraphs rendered in the 2191 'variable-pitch' face (or proportional fonts in general) jump around as 2192 the user would move between the matches, because bold letters occupy 2193 more space than their regular weight counterparts so they affect the 2194 length of the line. This problem was reported by Augusto Stoffel on the 2195 mailing list: <https://lists.sr.ht/~protesilaos/modus-themes/%3C87sfnbswe9.fsf@gmail.com%3E>. 2196 2197 2198 Rewrote parts of the colour preview commands 2199 ============================================ 2200 2201 The 'modus-themes-list-colors', 'modus-themes-list-colors-current' are 2202 commands that produce a buffer which shows previews of every entry in 2203 the palette. Their code has been simplified and they now produce a 2204 warning when the display terminal has limited colour support. 2205 Furthermore, they read any overrides as specified in the user options 2206 'modus-themes-operandi-color-overrides', 'modus-themes-vivendi-color-overrides'. 2207 2208 2209 The "summertime" re-spin of colour overrides 2210 ============================================ 2211 2212 The manual now includes a complete hand-crafted example of a pair of 2213 themes that override the default palette. This is done as a technology 2214 demonstration. It is not considered an "official" extension of the 2215 Modus themes and will never be part of the code base as it does not 2216 conform with our lofty accessibility standards. However, I took great 2217 care in picking the colour overrides in the hope that users will (i) 2218 have a usable theme, should they opt for it, and (ii) they recognise the 2219 potential of our colour-overriding feature. 2220 2221 Screenshots and related information: 2222 <https://protesilaos.com/codelog/2022-07-26-modus-themes-color-override-demo/>. 2223 2224 Thanks to user “Summer Emacs” for (i) suggesting the name “summertime”, 2225 (ii) testing variants of this in her setup, and (iii) sending me 2226 feedback on possible tweaks and refinements. All errors are my own. 2227 2228 The idea for this project came from an exchange where Summer discovered 2229 an old theme of mine (from my pre-Emacs days) and asked if I had 2230 anything like it for Emacs. Voilà! 2231 2232 [ This information is shared with permission. ] 2233 2234 As for whether I have more plans... "Perhaps!" ;) 2235 2236 2237 Removed support for certain packages or face groups 2238 =================================================== 2239 2240 I periodically install and use the packages we support to see if they 2241 have any updates we need to cover but also to confirm that they work. 2242 Usually, the user does not learn about this work, as I don't need to 2243 make any changes or will make some minor tweaks. When I think that the 2244 package is not in a good shape, I remove it from the list of explicitly 2245 supported packages, meaning that the modus-themes no longer cover the 2246 faces it defines. The removal of any package is done on a case-by-case 2247 basis. If you disagree with this decision, please inform me about and I 2248 shall reconsider. 2249 2250 ,* centaur-tabs :: Those of you who have been reading these release notes 2251 are aware of a bug in centaur-tabs which basically prevents us from 2252 using the standard ':inherit' attribute to style the centaur-tabs 2253 faces. I have sent a patch to fix it, but have received no response 2254 since February: <https://github.com/ema2159/centaur-tabs/pull/179>. 2255 To me, this gives the package the "unmaintained" status, though I am 2256 happy to revert the change as soon as it gets the maintenance it 2257 needs. 2258 2259 Relevant reports (and I got many others in my private inbox): 2260 2261 - <https://github.com/protesilaos/modus-themes/issues/30> 2262 - <https://gitlab.com/protesilaos/modus-themes/-/issues/288> 2263 - <https://github.com/protesilaos/modus-themes/issues/15> 2264 2265 ,* cursor-flash :: its default face should be visible enough. 2266 2267 ,* dynamic-ruler :: The package does not build on my Emacs 29. Also, its 2268 default faces are usable even without our recolouring. 2269 2270 ,* emacs-dashboard :: Its default faces inherit from basic faces that we 2271 already support. 2272 2273 ,* frog-menu :: I have not seen this package being used anywhere. I 2274 suspect it is because it has not found a niche between transient, 2275 hydra, and embark. 2276 2277 ,* mct :: A few months ago I announced that its development is 2278 discontinued. Either use vertico or switch to what Emacs provides as 2279 a built-in option: <https://protesilaos.com/codelog/2022-04-14-emacs-discontinue-mct/>. 2280 2281 ,* org-treescope :: The package points to a GitHub repo, which is 2282 archived. The current source is on GitLab, but the package is not 2283 updated accordingly. This makes me believe it is not actively 2284 maintained and am thus removing it from the list. 2285 2286 ,* paradox :: When I tried paradox, it took over my C-c g binding which I 2287 have for Magit. As an Emacs user, I consider this an unacceptable 2288 transgression. Looking at paradox's git repo, the project is not 2289 maintained. If things change, I am happy to reinstate support for it. 2290 2291 ,* vc-annotate (built-in) :: It has not been working properly for a long 2292 time now. Colours are unset and are not re-applied when switching 2293 between the 'modus-operandi' and 'modus-vivendi' themes. 2294 2295 Furthermore, the way 'vc-annotate-color-map' intersects with 2296 'vc-annotate-background-mode' puts us in an awkward spot: when the 2297 mode is non-nil, the mapped values are used as backgrounds WITHOUT 2298 giving us the chance to make the appropriate adjustments to the 2299 foreground (so we end up with inaccessible colour combinations). This 2300 means that we must fix a problem which is not ours by overriding the 2301 user option of the background altogether. A theme outright disabling 2302 user options is bad form. 2303 2304 Even documenting a user-level set of configurations will not suffice, 2305 as the results are unreliable. I tried the code which I copy further 2306 below to test annotation with/without background, plus the change in 2307 values when switching between modus-operandi and modus-vivendi. 2308 Again, colours are not updated properly (I know the buffer of 'M-x 2309 vc-annotate' needs to be generated again), as 'modus-operandi' may 2310 retain the values set by 'modus-vivendi' or vice-versa. 2311 2312 Ultimately, I feel 'vc-annotate' needs to be refactored to use 2313 ordinary faces in ordinary ways. Or, at least, not try to outsmart 2314 the user/theme about the choice of colours. 2315 2316 Thanks to Philip Kaludercic for starting the thread about the 2317 'vc-annotate-background-mode' which reminded me about this problem: 2318 <https://lists.sr.ht/~protesilaos/modus-themes/%3C875ylfxkgi.fsf@posteo.net%3E>. 2319 2320 The code I alluded to: 2321 2322 (setq vc-annotate-background-mode nil) 2323 2324 (defun my-modus-themes-vc-annotate () 2325 ;; Actual values are for demo purposes 2326 (modus-themes-with-colors 2327 (if vc-annotate-background-mode 2328 (setq vc-annotate-background bg-alt 2329 vc-annotate-color-map 2330 `((20 . ,red-intense-bg) 2331 (40 . ,red-subtle-bg) 2332 (60 . ,red-refine-bg) 2333 (80 . ,yellow-intense-bg) 2334 (100 . ,yellow-subtle-bg) 2335 (120 . ,yellow-refine-bg) 2336 (140 . ,magenta-intense-bg) 2337 (160 . ,magenta-subtle-bg) 2338 (180 . ,magenta-refine-bg) 2339 (200 . ,cyan-intense-bg) 2340 (220 . ,cyan-subtle-bg) 2341 (240 . ,cyan-refine-bg) 2342 (260 . ,green-intense-bg) 2343 (280 . ,green-subtle-bg) 2344 (300 . ,green-refine-bg) 2345 (320 . ,blue-intense-bg) 2346 (340 . ,blue-subtle-bg) 2347 (360 . ,blue-refine-bg))) 2348 (setq vc-annotate-background nil 2349 vc-annotate-color-map 2350 `((20 . ,red) 2351 (40 . ,magenta) 2352 (60 . ,magenta-alt) 2353 (80 . ,red-alt) 2354 (100 . ,yellow) 2355 (120 . ,yellow-alt) 2356 (140 . ,fg-special-warm) 2357 (160 . ,fg-special-mild) 2358 (180 . ,green) 2359 (200 . ,green-alt) 2360 (220 . ,cyan-alt-other) 2361 (240 . ,cyan-alt) 2362 (260 . ,cyan) 2363 (280 . ,fg-special-cold) 2364 (300 . ,blue) 2365 (320 . ,blue-alt) 2366 (340 . ,blue-alt-other) 2367 (360 . ,magenta-alt-other)))))) 2368 2369 (add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-vc-annotate) 2370 2371 2372 Revised supported faces or face groups 2373 ====================================== 2374 2375 ,* Enhanced the default background colour of the current date in the Org 2376 agenda. This is a subtle change, all things considered, which makes 2377 it easier to discern where the highlight is while it remains close to 2378 the spirit of the previous design. The idea is to not add too much 2379 saturation here, because the buffer is already "busy" with lots of 2380 highlights. Thanks to Daniel Mendler for the feedback on the mailing 2381 list: <https://lists.sr.ht/~protesilaos/modus-themes/%3C3d8b1096-a7db-1e08-fefe-d39bed4a7ea3@daniel-mendler.de%3E>. 2382 2383 ,* Restyled the 'M-x man' and 'M-x woman' faces to have a bit more 2384 saturation. A while ago I desaturated the 'Man-overstrike' and 2385 'woman-bold' faces on the premise that the added bold weight would be 2386 sufficient. However, the bold weight may sometimes not draw the 2387 desired attention, such as at small point sizes or with certain font 2388 configurations. As such, the added intensity in colour is necessary. 2389 2390 ,* Changed the Selectrum quick key faces ('selectrum-quick-keys-match' 2391 and 'selectrum-quick-keys-highlight') to have the same style as Avy, 2392 Vertico's own "quick keys", and related. For a technical analysis, 2393 read "Modus themes: case study on Avy faces and colour combinations": 2394 <https://protesilaos.com/codelog/2022-04-20-modus-themes-case-study-avy/>. 2395 2396 ,* Made internal adjustments so that 'M-x list-packages' inherits from 2397 the standard 'success', 'warning', and 'error' faces instead of adding 2398 its own face attributes. In practice, the user will notice a change 2399 for new packages in the listing if 'modus-themes-deuteranopia' is 2400 non-nil. 2401 2402 ,* Introduced the same inheritance rules as above for the 'syslog' 2403 package (mutatis mutandis). 2404 2405 ,* Increased the saturation of the 'package-status-available' face, which 2406 is shown in the 'M-x list-packages' buffer. The overall effect is 2407 subtle, though sufficiently noticeable. 2408 2409 ,* Revised the faces of the 'deft' package to make it look consistent 2410 with the rest of the theme's relevant interfaces (to the extent 2411 possible as Deft uses a non-standard presentation). 2412 2413 ,* Aligned the 'speedbar-highlight-face' with the user option 2414 'modus-themes-intense-mouseovers'. 2415 2416 ,* Refined the 'highlight-thing' face (see package of the same name). 2417 This makes it stand out more and it also aligns it with the standard 2418 'match' face, which is pertinent here. 2419 2420 ,* Amplified the saturation of the 'dired-git-info' face. Makes it 2421 easier to differentiate the Git commit text from the Dired listing, 2422 without drawing too much attention to itself. 2423 2424 ,* Adjusted the hue of the 'easy-jekyll-help-face' from teal to blue. 2425 This makes it look more like the standard 'help-key-binding' face, 2426 although 'easy-jekyll' does not align with upstream Emacs in this 2427 regard. 2428 2429 ,* Intensified the background of 'rectangle-preview' to work even in 2430 cases where a grey background is already on display. This face is 2431 used for the 'string-rectangle' command (e.g. C-x SPC to draw a 2432 rectangle and C-t to insert text in its stead---works as a simple 2433 "multiple cursors" on a straight line). 2434 2435 2436 Support for new faces or face groups 2437 ==================================== 2438 2439 ,* chart (built-in) 2440 ,* denote 2441 ,* edmacro-label (Emacs 29) 2442 ,* info+ 2443 ,* leerzeichen 2444 2445 A comment on 'info+'. As is the case with PACKAGE+ packages from the 2446 Emacs Wiki, info+ defines lots of faces that hardcode colour values 2447 instead of inheriting from basic faces. It does so for no good reason 2448 and the results will likely not look decent in any theme. Furthermore, 2449 these faces colourise too much even when the colour values can be 2450 appropriately combined (ceteris paribus), making the buffer harder to 2451 read. 2452 2453 The support I add for info+ is consistent with the design principles of 2454 the modus-themes, one of which is to avoid exaggerations as those 2455 indirectly affect legibility. As such, some of the changes I introduce 2456 here outright remove colouration, while others align the various 2457 constructs with the overall aesthetic of the themes. 2458 2459 Note that, by default, info+ adds clickable buttons to glossary terms. 2460 This produces awkward combinations such as by buttonising the "string" 2461 component inside of what actually is a function's argument. So you 2462 have, say, FORMAT-[STRING] where "[]" represents the button: the FORMAT 2463 gets one face and the [STRING] another, even though they are part of a 2464 single argument. To me this looks broken and is counter-productive, 2465 though it is not up to the theme to decide how packages fontify the 2466 various constructs. At any rate, button styles at the theme level are 2467 controlled by the user option 'modus-themes-box-buttons'. 2468 2469 Thanks to Jonas Collberg for the feedback in issue 33 over at the GitHub 2470 mirror: <https://github.com/protesilaos/modus-themes/issues/33>. 2471 2472 2473 Miscellaneous 2474 ============= 2475 2476 ,* Named the mailing list address as the =Maintainer:= of Denote. 2477 Together with the other package headers, they help the user find our 2478 primary sources and/or communication channels. This change conforms 2479 with work being done upstream in package.el by Philip Kaludercic. I 2480 was informed about it here: 2481 <https://lists.sr.ht/~protesilaos/general-issues/%3C875ykl84yi.fsf%40posteo.net%3E>. 2482 2483 ,* Addressed byte compilation warnings in doc strings pertaining to the 2484 use of literal quotes. Thanks to Matt Armstrong and Rudolf Adamkovič 2485 for the feedback on the mailing list: 2486 <https://lists.sr.ht/~protesilaos/modus-themes/%3C87bktlvgyy.fsf@rfc20.org%3E>. 2487 2488 ,* Fixed the ':link' value in the declaration of the user options 2489 'modus-themes-operandi-color-overrides', 'modus-themes-vivendi-color-overrides'. 2490 It once again directs to the correct heading in the manual. 2491 2492 ,* Documented all the aforementioned, where necessary. 2493 2494 ,* Mentioned my 'fontaine' and 'lin' packages in the relevant sections of 2495 the manual. The former helps set fonts and switch between font 2496 presents. The latter is a stylistic variant of hl-line (its 2497 documentation explains its raison d'être). 2498 #+end_src 2499 2500 * 2.4.0 2501 :PROPERTIES: 2502 :CUSTOM_ID: h:ee0dcce9-3481-4533-8ded-a9a1f5269a41 2503 :END: 2504 2505 #+begin_src text 2506 Modus themes version 2.4.0 2507 2508 By Protesilaos Stavrou <info@protesilaos.com> on 2022-06-01 2509 2510 This entry documents the changes made to the project since the 2511 publication of version 2.3.0 on 2022-04-01. It spans more than 60 2512 commits to an already stable project. 2513 2514 The 'modus-operandi' and 'modus-vivendi' themes are built into Emacs-28 2515 (next stable release) or later, and are available on GNU ELPA as well as 2516 other archives. Emacs-28 ships version 1.6.0, while the current 2517 'master' branch (i.e. Emacs-29) and, by extension, GNU ELPA include the 2518 latest tagged release. The packaged version is available as 2519 'modus-themes'. 2520 2521 Read the manual inside Emacs by evaluating: 2522 2523 (info "(modus-themes) Top") 2524 2525 Or visit: <https://protesilaos.com/emacs/modus-themes>. 2526 2527 2528 Migration to SourceHut 2529 ====================== 2530 2531 The sources of the project are as follows: 2532 2533 - Git repo on SourceHut: <https://git.sr.ht/~protesilaos/modus-themes> 2534 - Mirrors: 2535 - GitHub: <https://github.com/protesilaos/modus-themes> 2536 - GitLab: <https://gitlab.com/protesilaos/modus-themes> 2537 - Mailing list: <https://lists.sr.ht/~protesilaos/modus-themes> 2538 2539 - Official manual: <https://protesilaos.com/emacs/modus-themes> 2540 - Change log: <https://protesilaos.com/emacs/modus-themes-changelog> 2541 - Colour palette: <https://protesilaos.com/emacs/modus-themes-colors> 2542 - Sample pictures: <https://protesilaos.com/emacs/modus-themes-pictures> 2543 2544 It is still possible to open issues on either of the mirrors and I will 2545 handle them in a timely fashion, though I encourage you to at least try 2546 the mailing list workflow---it is ordinary email (just remember to 2547 "reply to all"). 2548 2549 Further reading that is relevant to SourceHut: 2550 2551 - Moving all my Emacs projects to SourceHut: 2552 <https://protesilaos.com/codelog/2022-04-07-all-emacs-projects-sourcehut/> 2553 2554 - Primer on formatting Git patches with Emacs (Magit): 2555 <https://protesilaos.com/codelog/2022-04-09-simple-guide-git-patches-emacs/> 2556 2557 2558 Problems with byte compilation on Emacs 29 2559 ========================================== 2560 2561 For some time between mid-April to mid-May, users of Emacs 29 could not 2562 byte compile the Modus themes. This has now been fixed in emacs.git, 2563 per bug#55414: <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=55414>. 2564 Thanks to everyone involved (A-Z): Alan Mackenzie, Eli Zaretskii, Lars 2565 Ingebrigtsen, Mattias Engdegård, Stefan Monnier. 2566 2567 2568 Messages about invalid face attributes while using the centaur-tabs 2569 =================================================================== 2570 2571 I mentioned this issue in the previous change log as well: upstream does 2572 not allow us to use indirection in faces (the ':inherit' attribute). 2573 This is not our bug. It is standard behaviour for themes to use 2574 inheritance. 2575 2576 I have an open pull request on the matter (since 2022-02-24): 2577 <https://github.com/ema2159/centaur-tabs/pull/179>. 2578 2579 Relevant reports: 2580 2581 - <https://github.com/protesilaos/modus-themes/issues/30> 2582 - <https://gitlab.com/protesilaos/modus-themes/-/issues/288> 2583 - <https://github.com/protesilaos/modus-themes/issues/15> 2584 2585 2586 Support for new faces or face groups 2587 ==================================== 2588 2589 Directly supported 2590 ------------------ 2591 2592 These are packages whose faces we override to make them work with the 2593 themes. 2594 2595 - 'calibredb'. I have tried to limit the wanton use of colour in the 2596 relevant buffers and also align the package with the overall style of 2597 the themes. The currently selected line is affected by the user 2598 option 'modus-themes-hl-line'. 2599 2600 Thanks to Ivan Popovych for the feedback on the official mailing list: 2601 <https://lists.sr.ht/~protesilaos/modus-themes/%3C87zgkgroi7.fsf%40gmail.com%3E>. 2602 2603 Ivan also introduced some new faces to 'calibredb', which I helped 2604 test. See: <https://github.com/chenyanming/calibredb.el/pull/60>. 2605 2606 - 'ein' (Emacs IPython Notebook). We support its code blocks with the 2607 appropriate colouration, while avoiding exaggerations. Thanks to 2608 Maxime Tréca for the feedback in issue 31 over at the GitHub mirror: 2609 <https://github.com/protesilaos/modus-themes/issues/31>. 2610 2611 - 'tree-sitter'. My intent was to reduce the overall colouration 2612 produced by the default 'tree-sitter' faces. These tweaks give us 2613 good results, though there still are some cases where 'tree-sitter' 2614 exaggerates the styles it uses, such as by combining types with 2615 constants to produce ad-hoc (anonymous) faces. We cannot do anything 2616 about anonymous faces at the theme level. As such, we may get an 2617 additional bold weight (when 'modus-themes-bold-constructs' is 2618 non-nil) when we would rather not have it and/or a different colour 2619 than the one desired. 2620 2621 Thanks to Przemysław Kryger for the feedback in issue 303 over at the 2622 GitLab mirror: <https://gitlab.com/protesilaos/modus-themes/-/issues/303>. 2623 2624 If you are involved in the 'tree-sitter' project, please eliminate all 2625 anonymous faces and replace them with symbols (i.e. defface) that are 2626 editable by the user/theme. You are welcome to contact me if you need 2627 help/ideas. 2628 2629 - 'vundo' 2630 2631 2632 Indirectly supported 2633 -------------------- 2634 2635 These are packages that either (i) inherit from base faces we already 2636 support, or (ii) use colours from the Modus themes' palette. A list of 2637 them is available in the manual. 2638 2639 - egerrit. an in-development package by Niklas Eklund which provides an 2640 Emacs interface to Gerrit: <https://git.sr.ht/~niklaseklund/egerrit>. 2641 2642 2643 Changes to supported face 2644 ========================= 2645 2646 - Reworked the internal functions that handle the styling of diffs to 2647 allow the user option 'modus-themes-deuteranopia' to combine with the 2648 styles of the 'modus-themes-diffs' option. 2649 2650 Before, when 'modus-themes-deuteranopia' was non-nil it would affect 2651 diffs by forcibly applying the default style of 'modus-themes-diffs' 2652 (fairly prominent background colours) with the primary difference of 2653 replacing greens with blues. 2654 2655 Now all combinations work as expected. For example: 2656 2657 (setq modus-themes-deuteranopia t 2658 modus-themes-diffs 'desaturated) ; nil, 'desaturated, 'bg-only 2659 2660 Thanks to Kevin Le Gouguec for the feedback on the mailing list: 2661 <https://lists.sr.ht/~protesilaos/modus-themes/%3C878rqt4jhm.fsf@gmail.com%3E> 2662 2663 - Conducted a major (and highly demanding) review of the colours used by 2664 Avy in the interest of optimising the contrast between its constructs. 2665 Read the analysis: <https://protesilaos.com/codelog/2022-04-20-modus-themes-case-study-avy/>. 2666 2667 Thanks to Daniel Mendler and Damien Cassou for their feedback on the 2668 mailing list: 2669 2670 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C83f18e2e-d726-0248-72f5-95e896cbcf4c%40daniel-mendler.de%3E> 2671 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C87czhgt5nm.fsf%40cassou.me%3E> 2672 2673 - Updated the 'vertico-quick' faces to be consistent with Avy. 2674 2675 - Made the 'line-number' face conform with the user option 2676 'modus-themes-mixed-fonts'. This means that if the user option is 2677 non-nil, line numbers of 'display-line-numbers-mode' will use a 2678 monospaced typeface at all times (inheriting the 'fixed-pitch' face, 2679 as explained in the themes' manual). Otherwise they use whatever font 2680 the 'default' face has. This makes it better when the user enables 2681 'variable-pitch-mode' but still wants spacing-sensitive constructs to 2682 remain monospaced. 2683 2684 Thanks to Christopher League for the feedback in issue 302 over at the 2685 GitLab mirror: <https://gitlab.com/protesilaos/modus-themes/-/issues/302>. 2686 2687 - Aligned the regexp construct faces with the meaning of the user option 2688 'modus-themes-bold-constructs'. They will use a bold weight only when 2689 the user option is non-nil. This design is consistent with all other 2690 aspects of syntax highlighting. These specific faces were 2691 unconditionally bold due to a mistake of mine. 2692 2693 Remember to check the manual on what "a bold weight" means, as we make 2694 everything easy to customise (e.g. if you prefer a semibold weight): 2695 <https://protesilaos.com/emacs/modus-themes#h:2793a224-2109-4f61-a106-721c57c01375>. 2696 2697 - Removed the typographic emphasis from the 'file-name-shadow' face by 2698 no longer inheriting the 'italic' face. Thanks to Nicolas De Jaeghere 2699 for the patch. 2700 2701 [ Nicolas has assigned copyright to the Free Software Foundation. ] 2702 2703 - Stopped using the 'inverse-video' face attribute in 'powerline'. We 2704 now apply the colours directly. The reason is that 'inverse-video' 2705 makes it tricky to override the face as it swaps the foreground with 2706 the background. That behaviour is only needed in special cases: 2707 'powerline' is not one of them. 2708 2709 Thanks to Thibaut Verron for the feedback in issue 305 over at the 2710 GitLab mirror: <https://gitlab.com/protesilaos/modus-themes/-/issues/305>. 2711 2712 - Ensured that git commit/rebase comments (as seen in the workflow of 2713 the 'magit' package) inherit from appropriate font-lock faces. This 2714 makes it possible to customise 'font-lock-comment-face' and have the 2715 changes apply to those elements as well. Such a customisation can, 2716 for example, involve the change of the font family or the addition of 2717 a background colour. We want the whole comment block, including those 2718 special keywords from Git, to look consistent. This change also makes 2719 git-{commit,rebase}-comment-heading attain the foreground colour of 2720 comments, instead of the default one (black or white), making it look 2721 part of the comment block. 2722 2723 - Tweaked the 'fountain' package comments to be the same as all others. 2724 This avoids inconsistencies, such as when the user opts for something 2725 like the following: 2726 2727 (setq modus-themes-syntax '(yellow-comments)) 2728 2729 - Disabled padding in the 'keycast' package, meaning that the box around 2730 the key indicator always has the same height, even if the user opts 2731 for a padding value in 'modus-themes-mode-line' (read the manual or 2732 its doc string for how to assign a padding). 2733 2734 This is in response to a change upstream that introduces the 2735 'keycast-tab-bar-mode', which re-uses the faces that were originally 2736 intended for the mode line in the tab-bar. Ideally, upstream will 2737 provide distinct faces for each context so that we can have padding in 2738 the mode line but not the tab-bar. However, I have not had the 2739 opportunity to suggest such a change and/or prepare the relevant patch 2740 (it is not straightforward). 2741 2742 - Refined some colour combinations for the "alternative syntax" style 2743 that is available when the user option 'modus-themes-syntax' includes 2744 the 'alt-syntax' property. These tweaks pertain to changes in hue 2745 that improve the appearance of certain faces in their context. 2746 2747 - Enabled conditional use of 'fixed-pitch' for key bindings. This 2748 happens when the user option 'modus-themes-mixed-fonts' is non-nil 2749 (all spacing-sensitive elements become monospaced even if the user 2750 opts for a default font that is proportionately spaced or activates 2751 the 'variable-pitch-mode'). Thanks to Manuel Giraud for the patch. 2752 2753 [ Manuel has assigned copyright to the Free Software Foundation. ] 2754 2755 - Covered the face rotation option of 'highlight-changes-mode'. It is 2756 done with the 'highlight-changes-rotate-faces' command when 2757 'highlight-changes-mode' is enabled (the mode is built into Emacs). 2758 2759 Thanks to Philip Kaludercic for the feedback on the mailing list: 2760 https://lists.sr.ht/~protesilaos/modus-themes/<878rs14il4.fsf@posteo.net> 2761 2762 2763 Updates to the manual 2764 ===================== 2765 2766 - Acknowledged Andrew Tropin as one of the contributors to the Guix 2767 package of the Modus themes. The latest patch to that end: 2768 <https://issues.guix.gnu.org/55268>. 2769 2770 - Rewrote the note on 'fill-column-indicator' to show how the user can 2771 use a thicker line than the one we style by default. 2772 2773 - Wrote a note in manual about 'php-mode' multiline comments which use 2774 the 'font-lock-doc-face' instead of 'font-lock-comment-face'. Sample 2775 code is provided to ensure consistency between all types of comments. 2776 2777 - Added note about custom 'hl-todo' colours, specifically the user 2778 option 'hl-todo-keyword-faces' (which the themes customise as an 2779 exception to the rule, otherwise the default colours would not always 2780 be accessible). 2781 2782 This is in relation to the mailing list thread on the matter with 2783 feedback from Vincent Foley and Christian Tietze: 2784 <https://lists.sr.ht/~protesilaos/modus-themes/%3C871qwh1r88.fsf%40era.co%3E>. 2785 2786 - Elaborated on the style of 'git-gutter' faces in Doom Emacs, which are 2787 not as the Modus themes intend. Basically, the problem is that Doom 2788 changes the way that package draws its bitmaps: the faces we configure 2789 no longer appear as intended and sensitive colouration is lost. 2790 2791 Thanks to Gonçalo Marrafa for reporting the issue, testing the code we 2792 recommend on Doom Emacs, and suggesting the inclusion of the reference 2793 to the 'after!' call (a macro that Doom defines). 2794 2795 2796 Miscellaneous 2797 ============= 2798 2799 - Dedicated the colours of the Modus themes---just the colours---to the 2800 public domain. The Emacs package as a whole is still distributed 2801 under the terms of the GNU General Public License. The announcement: 2802 <https://protesilaos.com/codelog/2022-05-10-modus-themes-palette-cc0/> 2803 2804 - Stopped using a timestamp in the modus-themes.el file. It could lead 2805 to situations where there was a mismatch between the latest change and 2806 the recorded time. It also introduced a barrier to entry for 2807 contributors, as they need to set up 'time-stamp.el'. 2808 2809 - Removed the unnecessary 'require' call to the 'seq' library and made 2810 the necessary changes. Thanks to Daniel Mendler for the patch. 2811 2812 [ Daniel has assigned copyright to the Free Software Foundation. ] 2813 2814 - Applied the correct order of inheritance for all markup faces. This 2815 fixes a problem where not all typographic attributes where applied to 2816 the faces when 'modus-themes-mixed-fonts' was non-nil and the value of 2817 'modus-themes-markup' included '(bold italic)'. 2818 2819 - Tweaked how 'org-date' conditionally uses 'fixed-pitch'. Basically, 2820 we remove an internal stylistic inconsistency. There is no 2821 user-facing change. Thanks to Manuel Giraud for the patch. 2822 2823 - Implemented the command 'modus-themes-report-bug'. It might help 2824 users find the email address of the mailing list and get started with 2825 the email-centric workflow of SourceHut. Note this is but a first 2826 step in that direction. If you think it can be improved, please 2827 report as much (or send a patch). 2828 2829 - Included the command 'modus-themes-version', which prints in the echo 2830 area the current version of the package. With an optional prefix 2831 argument, it inserts the string at point. 2832 2833 The version either is the last tagged release, such as '2.4.0', or an 2834 in-development version like '2.5.0-dev'. As we use semantic 2835 versioning, tags of the '2.4.1' sort are not considered: those would 2836 count as part of '2.5.0-dev'. 2837 #+end_src 2838 2839 * 2.3.0 2840 :PROPERTIES: 2841 :CUSTOM_ID: h:f95fb7e2-fcc8-43f6-bde5-27fe51b1bdd5 2842 :END: 2843 2844 #+begin_src text 2845 Modus themes version 2.3.0 2846 2847 By Protesilaos Stavrou <info@protesilaos.com> on 2022-04-01 2848 2849 This entry documents the changes made to the project since the 2850 publication of version 2.2.0 on 2022-02-23. It spans more than 70 2851 commits. 2852 2853 To access the URL of the manual visit: 2854 <https://protesilaos.com/emacs/modus-themes>. Or read it in the Emacs 2855 Info reader by evaluating: 2856 2857 (info "(modus-themes) Top") 2858 2859 The 'modus-operandi' and 'modus-vivendi' themes are built into Emacs-28 2860 (next stable release) or later, and are available on GNU ELPA as well as 2861 other archives. Emacs-28 ships version 1.6.0, while the current 2862 'master' branch (i.e. Emacs-29) and, by extension, GNU ELPA include the 2863 latest tagged release. 2864 2865 2866 Customisation options 2867 ===================== 2868 2869 ,* The 'modus-themes-completions' now accepts a 'text-also' property for 2870 the 'selection' key. This has the effect of colourising the current 2871 line's text. Whereas the default does not change the text colour, 2872 re-using whatever underlying colours are available. Consult the doc 2873 string of this user option, as it provides for fine-grained control of 2874 how completion UIs may look. Thanks to Morgan Willcock whose feedback 2875 in issue 278 inspired me to add the 'text-also' property: 2876 <https://gitlab.com/protesilaos/modus-themes/-/issues/278>. 2877 2878 ,* The 'modus-themes-box-buttons' now accepts an 'all-buttons' property. 2879 It applies whatever other style is used for the boxed buttons to the 2880 generic 'widget.el'. By default, the faces of 'widget.el' do not look 2881 like graphical buttons: they have a bold weight and a foreground 2882 colour instead. Examples where those are used are the Notmuch "hello" 2883 buffer and the main view of the 'elfeed-summary' package. Thanks to 2884 Daniel Mendler, Rudolf Adamkovič, and Tony Zorman for their feedback 2885 in issue 296: <https://gitlab.com/protesilaos/modus-themes/-/issues/296>. 2886 2887 ,* The 'modus-themes-intense-mouseovers' is a boolean user option which 2888 makes mouse hover effects more intense when set to a non-nil value. 2889 By default, mouseovers use a cyan background value. This changes it 2890 to a more prominent blue. Thanks to John Haman for the feedback in 2891 issue 290: <https://gitlab.com/protesilaos/modus-themes/-/issues/290>. 2892 2893 ,* The user options 'modus-themes-box-buttons', 'modus-themes-mode-line', 2894 'modus-themes-org-agenda', and 'modus-themes-headings' can now read a 2895 number value as a cons cell. The old method of a plain number 2896 continues to work. This makes it possible to be more descriptive on 2897 what a given value signifies. Each doc string describes the 2898 technicalities. Here are samples that yield identical results: 2899 2900 (setq modus-themes-mode-line '(accented 0.9 borderless 2)) 2901 (setq modus-themes-mode-line '(accented (heigh 0.9) borderless (padding 2))) 2902 2903 Thanks to Daniel Mendler for proposing this idea in issue 282: 2904 <https://gitlab.com/protesilaos/modus-themes/-/issues/282#note_842257619> 2905 2906 2907 Attempted bug fix for byte compiled files 2908 ========================================= 2909 2910 Quoting from the git log: 2911 2912 commit f067d2ef39c22174b95584f2cba7942aaf03bcca 2913 Author: Protesilaos Stavrou <info@protesilaos.com> 2914 Date: Thu Mar 3 06:52:31 2022 +0200 2915 2916 Reify themes with eval-and-compile 2917 2918 This is an attempt to fix a bug that has existed since version 1.2.0 of 2919 the themes or even earlier. 2920 2921 The bug is about a mismatch between compiled code and runtime 2922 dependencies. The runtime expects the current version while the 2923 compiled code only furnishes an outdated one, thus resulting in an 2924 error. This only happens when: 2925 2926 1. Private functions change to accept more/fewer arguments. 2927 2. Variables change their acceptable value (e.g. from symbol to list). 2928 3. The user is installing the package via the package.el mechanism which 2929 takes care of byte compilation (though anything that mimics 2930 package.el should exhibit the same behaviour). 2931 2932 My understanding is that the cause was the limited scope of the 2933 'eval-and-compile' we had before: it would run the 'require' also at 2934 compile time, whereas the 'modus-themes-theme' macro, which reifies the 2935 actual theme, would only be evaluated at runtime. Hence the mismatch as 2936 'require' would read the already installed byte code while the macro 2937 would expect newer forms. 2938 2939 Wrapping everything in the 'eval-and-compile' should address this 2940 problem. Hopefully it will not engender new ones... 2941 2942 ,* * * 2943 2944 The latest reports about this bug: 2945 2946 ,* GitLab issue 287 with Mark Bestley and Daniel Mendler: 2947 <https://gitlab.com/protesilaos/modus-themes/-/issues/287>. 2948 2949 ,* GitHub issue 22 with Rytis Paškauskas: 2950 <https://github.com/protesilaos/modus-themes/issues/22>. 2951 2952 doc/modus-themes.info | 30 +++++++++++++++--------------- 2953 doc/modus-themes.org | 15 ++++++++------- 2954 modus-operandi-theme.el | 10 +++++----- 2955 modus-vivendi-theme.el | 10 +++++----- 2956 4 files changed, 33 insertions(+), 32 deletions(-) 2957 2958 After nearly one month, no problem has been observed as a result of this 2959 change. 2960 2961 2962 Newly supported packages 2963 ======================== 2964 2965 These are added to the already comprehensive coverage we guarantee. 2966 2967 Directly supported: 2968 2969 ,* devdocs. Thanks to Augusto Stoffel, its developer, for the feedback 2970 which was sent via email. 2971 2972 ,* mini-modeline. Thanks to Julio C. Villasante for the feedback in 2973 issue 24 over at the GitHub mirror: 2974 <https://github.com/protesilaos/modus-themes/issues/24>. 2975 2976 Indirectly supported (they use faces that we already cover): 2977 2978 ,* elfeed-summary 2979 ,* undo-hl 2980 2981 2982 Changes to supported faces or packages 2983 ====================================== 2984 2985 ,* Improved the colours used by 'avy' to always guarantee constrast in 2986 hueness between side-by-side characters with a variety of user 2987 settings. I tried various styles, such as: 2988 2989 (setq avy-style 'pre) 2990 (setq avy-style 'at-full) 2991 2992 For the sake of completeness, I also ran tests by modifying the 2993 'avy-lead-faces' (which is a 'defconst', not a 'defcustom'): 2994 2995 (setq avy-lead-faces 2996 '(avy-lead-face 2997 avy-lead-face-0 2998 avy-lead-face-2 2999 avy-lead-face 3000 avy-lead-face-0 3001 avy-lead-face-2)) 3002 3003 (setq avy-lead-faces 3004 '(avy-lead-face 3005 avy-lead-face-1 3006 avy-lead-face-1 3007 avy-lead-face-1 3008 avy-lead-face-1)) 3009 3010 (setq avy-lead-faces 3011 '(avy-lead-face 3012 avy-lead-face-2 3013 avy-lead-face-2 3014 avy-lead-face-2 3015 avy-lead-face-2)) 3016 3017 ,* Updated the 'vertico-quick' faces to keep them aligned with the new 3018 Avy styles. Thanks to Daniel Mendler (Vertico's developer) for the 3019 reminder: 3020 <https://gitlab.com/protesilaos/modus-themes/-/commit/404a9658196debdde95a51148fc62c5b2faccfb9#note_856454659>. 3021 3022 ,* Applied warmer though still not saturated colours for Org clocking 3023 overlays. The previous style could be mistaken for a mouse highlight 3024 or the highlighted line if 'modus-themes-hl-line' included the 3025 properties 'intense' and 'accented'. Thanks to Rudolf Adamkovič for 3026 the feedback in issue 293: 3027 <https://gitlab.com/protesilaos/modus-themes/-/issues/293>. 3028 3029 ,* Broadened coverage of the built-in 'shr.el' library to include the new 3030 'shr-code' face (Emacs 29). 3031 3032 ,* Expanded support for the 'embark' package by covering its new 3033 'embark-collect-marked' face. Thanks to Daniel Mendler for the 3034 feedback in issue 299: 3035 <https://gitlab.com/protesilaos/modus-themes/-/issues/299>. 3036 3037 ,* Made the 'fill-column-indicator' a contiguous line. It was a dashed 3038 line before, per the Emacs defaults, which led to awkward results 3039 depending on the font family and value of 'line-spacing'. Thanks to 3040 Daniel Mendler for the feedback in issue 297: 3041 <https://gitlab.com/protesilaos/modus-themes/-/issues/297>. 3042 3043 ,* Added explicit support for the built-in 'separator-line' face in order 3044 to refine its presentation. This is present in 'M-x shortdoc' buffers 3045 (Emacs 28). Thanks to Daniel Mendler for the feedback in issue 297: 3046 <https://gitlab.com/protesilaos/modus-themes/-/issues/297>. 3047 3048 ,* Applied explicit styling to the generic 'underline' face in order to 3049 ensure its consistent colouration. The problem before was that an 3050 underline that spanned text with distinct colours would inherit the 3051 colour of the affected character. A uniform presentation makes 3052 everything easier to read. 3053 3054 ,* The 'ement.el' Matrix client now uses a subtle background for username 3055 mentions and/or quoted text. This is consistent with how other Matrix 3056 clients style such constructs. Thanks to Adam Porter (aka 3057 "alphapapa"), the developer of ement.el, for explaining the 3058 technicalities and providing the relevant feedback in issue 25 over at 3059 the GitHub mirror: <https://github.com/protesilaos/modus-themes/issues/25>. 3060 3061 ,* Enforced consistency between 'icomplete' and 'ido'. The first match 3062 was coloured differently in 'ido-mode' by mistake. Thanks to Morgan 3063 Willcock for the feedback in issue 278: 3064 <https://gitlab.com/protesilaos/modus-themes/-/issues/278>. 3065 3066 ,* Used the main foreground for Company's tooltip. This is how it should 3067 have been. Corfu is designed that way as well. Thanks to user okamsn 3068 for the feedback in issue 278: 3069 <https://gitlab.com/protesilaos/modus-themes/-/issues/278>. 3070 3071 ,* Corrected an omission whereby the AUCTeX verbatim face was not 3072 consistent with other such faces. Now it too is governed by the user 3073 option 'modus-themes-markup'. 3074 3075 ,* Fixed the 'centaur-tabs' invalid background message. Thanks to 3076 Lennart C. Karssen for reporting the bug in issue 288: 3077 <https://gitlab.com/protesilaos/modus-themes/-/issues/288>. Note, 3078 however, that the problem is due to some decisions made upstream. My 3079 patch has not been merged yet (open since 2022-02-24): 3080 <https://github.com/ema2159/centaur-tabs/pull/179>. Given this 3081 opportunity, always anticipate that faces may ':inherit' from others 3082 and thus functions like 'face-background' might return an undesirable 3083 nil value if used without a fallback. 3084 3085 3086 Miscellaneous 3087 ============= 3088 3089 ,* Made the 'modus-themes--current-theme' return the first Modus theme 3090 instead of the 'car' of 'custom-enabled-themes'. This makes the 3091 themes work at all times even when the user has multiple of them 3092 enabled. Thanks to Pierre Téchoueyres for the patch, which was sent 3093 via email with regard to Emacs bug#54598: 3094 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=54598>. 3095 3096 ,* Implemented compile-time requirement for built-in libraries to be sure 3097 that the themes work in all cases. Thanks to Antonio Hernández Blas 3098 for reporting in issue 292 the bug with the old design that assumed 3099 the 'cl-lib' and 'subr-x' as already loaded: 3100 <https://gitlab.com/protesilaos/modus-themes/-/issues/292>. 3101 3102 ,* Wrote in the manual how to achieve a monochrome style (with 3103 permutations) for code syntax highlighting. Thanks to Augusto Stoffel 3104 for sharing the idea via an email exchange (this information is 3105 divulged with permission). 3106 3107 ,* Clarified some statements in the manual's section about the nuances in 3108 "enabling" and "loading" a theme. 3109 3110 ,* Documented how the applicable palette affects the outer boundaries of 3111 the colour range that terminal emulators set when Emacs is ran without 3112 a GUI. Here "the palette" refers to the relevant 16 ANSI escape 3113 sequences (terminal colours 0 through 15). For the sake of 3114 convenience, the node includes ready-to-use palettes for XTerm, which 3115 can be adapted to other terminal emulators. This entry complements an 3116 existing one on improving the colour accuracy in terminal emulators. 3117 3118 ,* Used American English constructions in a few places such as "color" 3119 instead of "colour" as that is what core Emacs expects (and the themes 3120 are part of emacs.git). 3121 3122 ,* Updated the description of the themes to be more user-friendly. 3123 Instead of "Highly accessible themes (WCAG AAA)" we now have "Elegant, 3124 highly legible and customizable themes". Nothing changes in terms of 3125 substance. Thanks to Jorge Morais for the feedback. 3126 3127 ,* Clarified that the version of the themes which is built into Emacs 3128 does not use 'require'. It is in response to this thread: 3129 <https://lists.gnu.org/archive/html/help-gnu-emacs/2022-03/msg00049.html>. 3130 Thanks to Philip Kaludercic for bringing the issue to my attention. 3131 3132 ,* Improved the code samples that show how to set up the package. 3133 3134 ,* Wrote the correct symbols for some obsoletion forms. 3135 3136 Thanks once again to everyone involved! 3137 #+end_src 3138 3139 * 2.2.0 3140 :PROPERTIES: 3141 :CUSTOM_ID: h:251849ee-3328-48c7-af5f-d1d6daca3a97 3142 :END: 3143 3144 #+begin_src text 3145 Modus themes version 2.2.0 3146 3147 By Protesilaos Stavrou <info@protesilaos.com> on 2022-02-23 3148 3149 The present entry records the changes made to the project since the 3150 publication of version 2.1.0 on 2022-02-17. This spans about 10 commits 3151 (though one of them is massive). Normally the release cycle occurs over 3152 periods of 4-5 weeks. This is a necessary exception. 3153 3154 To access the URL of the manual visit this web page: 3155 <https://protesilaos.com/emacs/modus-themes>. Or read it in the Emacs 3156 Info reader by evaluating this form: 3157 3158 (info "(modus-themes) Top") 3159 3160 The 'modus-operandi' and 'modus-vivendi' themes are built into Emacs-28 3161 (next stable release) or later, and are available on GNU ELPA as well as 3162 other archives. Emacs-28 ships version 1.6.0, while the current 3163 'master' branch (i.e. Emacs-29) and, by extension, GNU ELPA include the 3164 latest tagged release. 3165 3166 3167 Initialisation of user options 3168 ============================== 3169 3170 Removed a superfluous default value that hampered the initialisation of 3171 defcustom forms in the M-x customize interface. Things would still 3172 work, but the interface was not looking right while editing the relevant 3173 variables. Thanks to Gustavo Barros for reporting the bug in issue 267: 3174 <https://gitlab.com/protesilaos/modus-themes/-/issues/267>. 3175 3176 3177 Refactor 'modus-themes-completions' 3178 =================================== 3179 3180 Implemented thoroughgoing reforms across all completion User Interfaces 3181 (UIs) in order to make them more flexible/powerful and harmonise their 3182 looks. 3183 3184 'modus-themes-completions' now accepts an alist instead of a symbol. 3185 Each cons cell is in the form of '(key . list-of-properties)'. The doc 3186 string describes all the details. 3187 3188 In terms of out-of-the-box appearences, all completion UIs have a subtle 3189 aesthetic. This was always the case for the likes of Vertico, Icomplete 3190 (Fido), and related, though it constitutes a marked departure from what 3191 Ivy and Helm used to look like. Users of the latter two can still get 3192 the more colourful or intense style with something like this: 3193 3194 (setq modus-themes-completions '((matches . (background intense)) 3195 (selection . (accented intense)) 3196 (popup . (accented intense)))) 3197 3198 Or simply: 3199 3200 (setq modus-themes-completions '((t background intense accented))) 3201 3202 The documentation explains all those associations in-depth. There also 3203 are other styles on offer (and combinations thereof). 3204 3205 Furthermore, the new 'modus-themes-completions' encompasses more UIs 3206 than its predecessor, including Company and Corfu. 3207 3208 In the interest of theme-wide consistency, all applicable faces have 3209 been reviewed. 3210 3211 Finally, note that the previous tagged release also made changes on this 3212 front, but it did not disrupt the status quo that was in place from 3213 before the release of version 1.0.0 of the themes (more than a year 3214 ago). In other words, it tried to make unnecessary compromises within 3215 the confines of an outdated design that did not fit in with the rest of 3216 the code base. The new 'modus-themes-completions' might require manual 3217 intervention from users who want to customise things to their liking, 3218 though I feel this change is to our long-term benefit. 3219 3220 Thanks to Daniel Mendler and Rudolf Adamkovič for their feedback in 3221 issue 278: <https://gitlab.com/protesilaos/modus-themes/-/issues/278>. 3222 And thanks to Kenta Usami for recommending the use of a warning in issue 3223 286: <https://gitlab.com/protesilaos/modus-themes/-/issues/286>. 3224 3225 3226 Miscellaneous changes 3227 ===================== 3228 3229 + Removed the pseudo-button effect from the 'org-checkbox' face. It was 3230 not up-to-date with the current style of the rest of the themes, 3231 including the Org constructs for source block delimiters, the TODO 3232 keywords, the priority cookies (e.g. '[#A]'), and others. 3233 3234 + Introduced a section in the manual which provides an alternative to 3235 the standard 'modus-themes-toggle' that leverages 'enable-theme' 3236 instead of 'load-theme' under the hood. These technicalities are all 3237 explained in the manual. 3238 3239 + Provided an alternative greyscale palette subset for 'modus-operandi' 3240 in the manual's section about overriding colours. 3241 3242 + Added support for the built-in 'custom-variable-obsolete' face. 3243 3244 + Fixed typo in the 'modus-themes-box-buttons' variable. Thanks to 3245 Illia Ostapyshyn for the patch in merge request 58: 3246 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/58>. 3247 #+end_src 3248 3249 * 2.1.0 3250 :PROPERTIES: 3251 :CUSTOM_ID: h:15098250-7b41-404b-86e1-9a99984976b9 3252 :END: 3253 3254 #+begin_src text 3255 Modus themes version 2.1.0 3256 3257 By Protesilaos Stavrou <info@protesilaos.com> on 2022-02-17 3258 3259 The present entry records the changes made to the project since the 3260 publication of version 2.0.0 on 2021-12-24. There have been more than 3261 110 commits in the meantime (and this log is close to 5000 words). 3262 3263 All modifications of colour combinations mentioned herein are made in 3264 accordance with the primary accessibility objective of the themes for a 3265 minimum contrast ratio of 7:1 between background and foreground values 3266 in their given combination (the WCAG AAA standard for relative colour 3267 luminance). Edits also account for colour-coding that is optimised for 3268 the needs of users with red-green colour deficiency (deuteranopia). 3269 3270 To access the URL of the manual visit this web page: 3271 <https://protesilaos.com/emacs/modus-themes>. Or read it in the Emacs 3272 Info reader by evaluating this form: 3273 3274 (info "(modus-themes) Top") 3275 3276 The 'modus-operandi' and 'modus-vivendi' themes are built into Emacs-28 3277 (next stable release) or later, and are available on GNU ELPA as well as 3278 other archives. Emacs-28 ships version 1.6.0, while the current 3279 'master' branch (i.e. Emacs-29) and, by extension, GNU ELPA include the 3280 latest tagged release. 3281 3282 3283 Commands 3284 ======== 3285 3286 The following produce a buffer that previews the colour palette of the 3287 given theme ('modus-operandi' or 'modus-vivendi'). 3288 3289 ,* 'modus-themes-list-colors' prompts for a theme before producing the 3290 preview. 3291 3292 ,* 'modus-themes-list-colors-current' uses the current Modus theme. 3293 3294 These commands are useful to anyone who wants to reference a named 3295 colour from the themes or copy a colour value, such as for the purposes 3296 of user-level customisation (as documented at length in the manual 3297 across several use-cases and with the inclusion of custom code). 3298 3299 The commands are not bound to any key. 3300 3301 3302 Customisation options 3303 ===================== 3304 3305 ,* Implemented the 'modus-themes-markup' variable, which supersedes the 3306 now-deprecated 'modus-themes-intense-markup'. The new user option 3307 accepts a list of properties (symbols). It affects constructs such as 3308 Org's =verbatim=, ~code~, and macro (with three pairs of braces). By 3309 default, when this user option is either nil or an empty list, the 3310 affected constructs only have a foreground colour (e.g. Org verbatim 3311 is magenta). Properties that change this style are: 3312 3313 1. 'italic' for an added slant to the text. 3314 2. 'bold' for a heavier weight. 3315 3. 'background' to add a background colour. 3316 4. 'intense' to amplify the colouration (especially of 'background'). 3317 3318 As with all user options which accept a list of properties, the order 3319 of the symbols is no significant. In user configurations it may look 3320 like this: 3321 3322 (setq modus-themes-markup '(background intense bold)) 3323 3324 [ Read the manual for bold and italic fonts. We do not hardcode a 3325 :weight or :slant, instead giving the user the option to set their 3326 own values. The defaults are what you would normally expect from 3327 "bold" and "italic". ] 3328 3329 Thanks to Rudolf Adamkovič for reporting some problems with the old 3330 design in issue 274: 3331 <https://gitlab.com/protesilaos/modus-themes/-/issues/274>. 3332 3333 ,* Added the 'modus-themes-box-buttons' which affects all pseudo 3334 graphical buttons, such as those found in Custom UI buffers or EWW web 3335 pages which include search forms and the like. The variable accepts a 3336 list of properties as its value. By default (nil or empty list), 3337 buttons have a grey background and the familiar 3D effect. Valid 3338 properties are: 3339 3340 1. 'flat' to remove the 3D effect. 3341 2. 'accented' to shift the colouration away from grey. 3342 3. 'faint' to reduce the overall colouration (e.g. grey becomes white). 3343 4. 'variable-pitch' to apply a proportionately spaced font. 3344 5. 'underline' to draw a line instead of applying a 3D or flat box 3345 (particularly useful for those who use Emacs in a terminal emulator). 3346 6. The symbol of a font weight, such as 'bold', 'semibold', 'light' or 3347 any one among those included in the 'modus-themes-weights' constant 3348 (the underlying font family has to support the given weight). 3349 7. A number, expressed as a floating point (e.g. 0.9), which adjusts 3350 the height of the button’s text to that many times the base font 3351 size. The default height is the same as 1.0, though it need not be 3352 explicitly stated. 3353 3354 The order in which those symbols appear in the list is not 3355 significant. If 'underline' and 'flat' are both specified, the former 3356 takes precedence. In user init files the form may look like this: 3357 3358 (setq modus-themes-box-buttons '(variable-pitch flat semilight 0.9)) 3359 3360 Thanks to Daniel Mendler for suggesting this user option and providing 3361 the relevant feedback in issue 282: 3362 <https://gitlab.com/protesilaos/modus-themes/-/issues/282>. 3363 3364 ,* Expanded the 'modus-themes-mail-citations' with an 'intense' variant. 3365 For example: 3366 3367 (setq modus-themes-mail-citations 'intense) 3368 3369 The default is a moderately coloured style. Other variants include 3370 'faint' for subtle colouration and 'monochrome' for an all-grey look. 3371 3372 ,* Reviewed the 'modus-themes-completion' option and harmonised all the 3373 face specifications it governs. The variable now accepts a fourth 3374 stylistic variant in 'super-opinionated': it is like the 'opinionated' 3375 one though some details are even more pronounced. Other noteworthy 3376 items: 3377 3378 [ Remember to read the doc string of 'modus-themes-completions', which 3379 explains the grouping of the completion UIs. ] 3380 3381 - The (setq modus-themes-completions 'moderate) style is more-or-less 3382 the same across all completion UIs. The highlight applied to the 3383 current line is a bespoke shade of blue, the characters are less 3384 saturated than before and their hues are different, though the 3385 overall effect should still feel "sufficiently colourful, but not 3386 overdone". 3387 3388 - The (setq modus-themes-completions nil) is the same as before. 3389 However: 3390 3391 - The current line in Ivy now uses a shade of blue that is 3392 specific to completion UIs instead of an intense cyan 3393 background. This is for theme-wide consistency. 3394 3395 - Helm's current line has the same bespoke blue for its current 3396 line instead of another shade of blue it was using before. 3397 3398 - The (setq modus-themes-completions 'opinionated) should be the same 3399 as before, notwithstanding the aforementioned tweaks to Ivy/Helm. 3400 3401 - The (setq modus-themes-completions 'super-opinionated) for 3402 Icomplete, Vertico, Selectrum, Mct uses the same blue for the 3403 current line as is the default of Ivy and Helm. 3404 3405 Miscellaneous: 3406 3407 - The relevant private helper functions were rewritten. 3408 3409 - We declare a few faces to help streamline certain styles. 3410 3411 - Ivy action keys now inherit from 'modus-themes-key-binding'. We 3412 generally try to make all keys look the same, except when that would 3413 be detrimental to the usability of the given context/interface. 3414 3415 - Some Ivy faces are simplified or otherwise tweaked to fit in with 3416 the rest of the theme. 3417 3418 Thanks to Rudolf Adamkovič for the feedback about Vertico in issues 3419 214 and 278 which prompted me to review all completion UIs: 3420 3421 - <https://gitlab.com/protesilaos/modus-themes/-/issues/214> 3422 - <https://gitlab.com/protesilaos/modus-themes/-/issues/278> 3423 3424 ,* Adjusted the applicable hues in some 'modus-themes-syntax' variants. In 3425 particular: 3426 3427 - The strings' hue has more hints of blue when 'modus-themes-syntax' 3428 includes the 'green-strings' property. Such as: 3429 3430 (setq modus-themes-syntax '(green-strings)) 3431 (setq modus-themes-syntax '(alt-syntax green-strings)) 3432 (setq modus-themes-syntax '(alt-syntax green-strings faint)) 3433 (setq modus-themes-syntax '(alt-syntax green-strings faint yellow-comments)) 3434 3435 - Strings are more orange/yellow than red when 'modus-themes-syntax' 3436 includes the 'alt-syntax' property but NOT the 'green-strings'. For 3437 example: 3438 3439 (setq modus-themes-syntax '(alt-syntax)) 3440 (setq modus-themes-syntax '(alt-syntax yellow-comments)) 3441 (setq modus-themes-syntax '(alt-syntax yellow-comments faint)) 3442 3443 - Backslashes for regexp constructs are coloured appropriately to look 3444 distinct from the rest of the string and from the escaped construct in 3445 all cases. 3446 3447 ,* Removed background colours from the the default style of Org block 3448 delimiters. 3449 3450 As I explained in Emacs bug#52587,[1] Org has code that overrides 3451 themes which prefer not to extend the block delimiter faces to the 3452 edge of the window (as we would like to do by default). This 3453 practically means that we cannot have backgrounds for those lines and 3454 keep them limited to the stretch of area covered by their text. 3455 3456 As such, the default for Org block delimiter lines now is a gray 3457 foreground with no distinct background colour. The user option 3458 'modus-themes-org-blocks' provides "blocky" alternatives that use 3459 background colours---those extend to the edge of the window. 3460 3461 [1] <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52587#46> 3462 3463 ,* Deleted the compatibility layer for all user options that used to 3464 accept symbols in the past but now expect a list of symbols. The 3465 manual contains a snippet with all customisation options for those who 3466 do not want to read all the relevant doc strings. Evaluate this: 3467 3468 (info "(modus-themes) Customization Options") 3469 3470 Or visit: <https://protesilaos.com/emacs/modus-themes#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f>. 3471 3472 The original plan was to remove those during the transition to version 3473 2.0.0 (about a month ago) though I changed my mind thinking they would 3474 not pose a longer-term problem. 3475 3476 New information by Mark Bestley in issue 272 shows that this kind of 3477 complexity can lead to errors: 3478 <https://gitlab.com/protesilaos/modus-themes/-/issues/272#note_826725412>. 3479 3480 So it is better to keep things simple and ask users to configure all 3481 user options based on the up-to-date documentation. 3482 3483 Also thanks to Saša Janiška for the feedback in issue 272. 3484 3485 3486 New packages, faces, or face groups 3487 =================================== 3488 3489 ,* all-the-icons-dired. 3490 3491 ,* all-the-icons-ibuffer. 3492 3493 ,* 'child-frame-border' face (Emacs 28). 3494 3495 ,* 'citar' package. Thanks to Rudolf Adamkovič for the feedback in issue 3496 280: <https://gitlab.com/protesilaos/modus-themes/-/issues/280>. 3497 3498 ,* 'elisp-shorthand-font-lock-face' (Emacs 29). Read the manual by 3499 evaluating: 3500 3501 (info "(elisp) Shorthands") 3502 3503 ,* 'ement' (ement.el) Matrix client, though it is not listed in any 3504 archive yet: <https://github.com/alphapapa/ement.el>. 3505 3506 Thanks to Samuel Culpepper for the feedback in issue 279: 3507 <https://gitlab.com/protesilaos/modus-themes/-/issues/279>. 3508 3509 Also check the Ement issue tracker on the matter: 3510 <https://github.com/alphapapa/ement.el/issues/53>. 3511 3512 ,* 'mct' package. 3513 3514 ,* 'menu' face (built-in) which is used in the menu-bar when Emacs runs 3515 without a graphical toolkit. 3516 3517 ,* 'pgtk-im-0' face (Emacs 29). This is shown as a single-character-long 3518 block when you type the Compose key followed by the composable 3519 characters. 3520 3521 ,* 'pyim' (an input method for CJK characters). Thanks to Yuanchen Xie for 3522 the contribution in merge request 57: 3523 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/57>. 3524 The patch is small and is thus excluded from the requirement for 3525 copyright assignment to the FSF (remember that the themes are built 3526 into Emacs and any major contribution needs such copyright 3527 assignment---read the relevant entry in the themes' manual). 3528 3529 ,* 'slime' and 'sly' packages. Thanks to John Haman for the feedback 3530 which was done via email due to some problems with the web UI on 3531 GitLab (this information is shared with permission). Please note that 3532 I am not familiar with Common Lisp and could not test these 3533 thoroughly. Any mistakes or omissions are my own. 3534 3535 Concerning the web UI, there is a fully functional mirror of the 3536 themes on GitHub, while email is always an option. Use whatever works 3537 for you to report an issue or send a patch. 3538 3539 ,* 'textsec' package (Emacs 29). 3540 3541 New indirectly supported packages 3542 --------------------------------- 3543 3544 These inherit from base faces and look good enough already or use 3545 appropriate colours from the Modus themes: 3546 3547 ,* dtache 3548 ,* org-remark 3549 3550 3551 Changes to supported faces or face groups 3552 ========================================= 3553 3554 ,* Stopped making key bindings look like boxes. We revert to the old 3555 style we were using before the introduction of the 'help-key-binding' 3556 face (Emacs 28). 3557 3558 By default Emacs 28 or higher will render all key bindings it 3559 identifies with a box around them. The idea is to make them look like 3560 keys on a keyboard, which I never really liked because without 3561 generous padding you get a very tight space between the character and 3562 the box's borders which can look weird at small point sizes (Emacs 3563 faces do not have padding in the same way CSS does). 3564 3565 I tried following the default style for a few months and have concluded 3566 that it is not good enough for our purposes (my preferences 3567 notwithstanding): 3568 3569 - The box attribute does not work in terminal emulators. This means 3570 that keys only get a subtle grey background and the default 3571 foreground, which can be hard to make them stand out from their 3572 surrounding text if the font height is small and/or the keybinding is 3573 short (e.g. a single character). 3574 3575 - The box and grey background combination limits our options when we 3576 need to colour-code different types of keys. For example, the 3577 'which-key' package can show TAB as T and applies to it a different 3578 face to make the distinction obvious. In that case, the presence of 3579 the tight box makes the use of a bold weight inappropriate: the 3580 character and the box's borders seem to overlap. While the grey 3581 background limits our choice of colour as, for instance, yellow 3582 never looks good against it. Same principle for interfaces that can 3583 have colour-coded keys like 'transient' and 'hydra', where we lose 3584 much-needed flexibility. 3585 3586 ,* Adjusted the brightness of the 'which-key-special-key-face'. This is 3587 the face that applies to special keys. For example: 3588 3589 (setq which-key-special-keys '("SPC" "TAB" "RET" "ESC" "DEL")) 3590 3591 ,* Made 'transient' faces which are supposed to be de-emphasise certain 3592 elements inherit the 'shadow' face. This is an implicit customisation 3593 option, as it allows the user to adjust the foreground value of all 3594 "less important" constructs simply by changing the 'shadow' face. 3595 3596 ,* Covered the 'transient-purple' face (these are like the colour-coding 3597 of 'hydra'). 3598 3599 ,* Tweaked the 'transient-argument' and 'transient-value' faces to make 3600 things look a bit more consistent with the other transient faces. 3601 This is to avoid potential conflicts with the highlighted key 3602 bindings, especially when transient uses hydra-style colour-coded 3603 keys. 3604 3605 ,* Applied the same metaphors for key bindings to 'marginalia-key' 3606 ('marginalia' package) and 'embark-keybinding' ('embark' package). 3607 They inherit the 'modus-themes-key-binding' when possible. The only 3608 exception is with (setq modus-themes-completions nil) where conflicts 3609 may arise between the key's style and matching characters of the 3610 ongoing completion session. 3611 3612 Thanks to Rudolf Adamkovič for pointing out the inconsistency in issue 3613 278: <https://gitlab.com/protesilaos/modus-themes/-/issues/278>. 3614 3615 ,* Refrained from treating LaTeX sections as headings. This is because 3616 unlike Org/Outline/Markdown Latex is basically source code, so the 3617 sectioning does not work the same way it does for those lightweight 3618 markup/outlining modes. 3619 3620 Furthermore, font-latex.el defines 'font-latex-fontify-sectioning' 3621 which can be used to control the scale of those sections. It makes 3622 sense for the themes to not interfere with that design and just allow 3623 users to customise things uniformly regardless of the active theme. 3624 3625 Thanks to Gustavo Barros for the detailed feedback in issue 265: 3626 <https://gitlab.com/protesilaos/modus-themes/-/issues/265>. 3627 3628 ,* Reviewed the hues of 'all-the-icons' and related packages. 3629 3630 ,* Applied the correct style to 'info-menu-header', meaning that it now 3631 only uses a bold weight as it is not a real heading, instead of being 3632 affected by the user option 'modus-themes-headings'. 3633 3634 ,* Included new 'telega-entity-type-spoiler' face. Thanks to bit9tream 3635 for informing me about it in issue 271: 3636 <https://gitlab.com/protesilaos/modus-themes/-/issues/271>. The 3637 conclusion: 3638 3639 Tricky though perhaps dull 3640 3641 I understand this is not an interesting topic and it probably is 3642 too difficult to relate to the various data points without 3643 visualising them and comparing the before and after 3644 states. Furthermore, data can be deceptive and I have always 3645 maintained that theme development stands at the intersection of 3646 science and art (at least for the purposes of conforming with the 3647 rigorous accessibility standards of the Modus themes). 3648 3649 That granted, I wanted to shed light on the “behind the scenes” 3650 work that is not immediately obvious when one checks a diff that 3651 introduces some seemingly trivial tweaks like '#49d239'->'#49c029' 3652 or '#7fcfff'->'#8fbfff'. 3653 3654 ,* Tweaked the hues of all graph colours, which are used in the 3655 'org-habit' table. The changes are subtle and should improve the 3656 overall usability of the graph. For the technicalities, read: 3657 <https://protesilaos.com/codelog/2022-01-02-review-modus-themes-org-habit-colours/>. 3658 3659 Also thanks to Rudolf Adamkovič for reporting the problem with white 3660 text on yellow background in issue 270: 3661 <https://gitlab.com/protesilaos/modus-themes/-/issues/270>. 3662 3663 ,* Styled the 'markdown-highlighting-face'. This is the face used for 3664 text in between double equals signs when the user option 3665 'markdown-enable-highlighting-syntax' is non-nil. 3666 3667 ,* Amplified the overall colouration of Eldoc's current argument. It is 3668 a yellow foreground with a tinted background. The blue foreground 3669 which was applied before could be hard to tell apart in some cases, 3670 especially because it is a common colour that is used elsewhere in the 3671 themes. Whereas the warmer hues are easier to discern, especially 3672 while relying only on peripheral vision. 3673 3674 Thanks to Rudolf Adamkovič for the feedback in issue 275: 3675 <https://gitlab.com/protesilaos/modus-themes/-/issues/275>. 3676 3677 ,* Instructed Geiser to use the same style for its argument as Eldoc 3678 (edited the faces 'geiser-font-lock-autodoc-current-arg' and 3679 'geiser-font-lock-autodoc-identifier'). 3680 3681 ,* Made the 'keycast-key' face work when 'modus-themes-mode-line' has a 3682 padding value (read the latter doc string or consult the manual). 3683 3684 ,* Refined the 'magit' faces for bisect, reflog, sequence, and signature 3685 views. They get a bold weight and, where appropriate, are made to 3686 comply with the 'modus-theems-deueteranopia' option (meaning that 3687 greens turn into blues). 3688 3689 ,* Recoloured 'elfeed' tags from a shade of cyan to magenta, in the 3690 interest of theme-wide consistency but also to make them easier to 3691 tell apart from the name of the feed. Also updated the faces used in 3692 the header-line to look better in context. 3693 3694 ,* Removed the hardcoded ':slant italic' from the 'italic' face, which is 3695 consistent with how we do not hardcode ':weight bold' in the 'bold' 3696 face. 3697 3698 Such a design allows users to configure those faces and have the 3699 desired slant/weight (and even font family) apply consistently 3700 throughout the theme. Read the manual for further details: 3701 <https://protesilaos.com/emacs/modus-themes#h:2793a224-2109-4f61-a106-721c57c01375>. 3702 3703 Thanks to user derek-upham for pointing out the inconsistency in issue 3704 21 over at the GitHub mirror: 3705 <https://github.com/protesilaos/modus-themes/issues/21>. 3706 3707 ,* Improved the styles that apply to compilation buffers and related. 3708 The overarching intent was to reduce the excess colouration, without 3709 upsetting expectations and affecting the overall presentation. 3710 3711 Thanks to Rudolf Adamkovič for the feedback in issue 277: 3712 <https://gitlab.com/protesilaos/modus-themes/-/issues/277>. 3713 3714 Note that compilation buffers apply an underline by default. The 3715 manual explains how to change that: 3716 <https://protesilaos.com/emacs/modus-themes#h:420f5a33-c7a9-4112-9b04-eaf2cbad96bd>. 3717 3718 ,* Ensured a consistent style for the 'highlight' face across all 3719 contexts (typically used for mouse hover effects). The mode line has 3720 an exception when its style includes an accented background (per 3721 'modus-themes-mode-line'). 3722 3723 Thanks to Rudolf Adamkovič for the feedback in issue 214: 3724 <https://gitlab.com/protesilaos/modus-themes/-/issues/214>. 3725 3726 ,* Changed the foreground of 'mode-line-emphasis' from blue to purple, in 3727 order to avoid potential (albeit unlikely) confusion with other 3728 indicators. 3729 3730 ,* Desaturated the 'man' and 'woman' foreground value of the bold 3731 constructs and tweaked other faces to avoid potential inconsistencies. 3732 Thanks to Daniel Mendler for the feedback: 3733 <https://gitlab.com/protesilaos/modus-themes/-/commit/8080eb1c6c0020ba82e8abaa933d6686327bc616#note_841424489>. 3734 3735 ,* Removed certain exaggerations from widgets as seen in the Custom UI 3736 and EWW. Specifically: 3737 3738 - 'widget-field' does not need to ':extend', as that typically does 3739 not look good. 3740 3741 - 'custom-state' gets a warmer colour to convey its message more 3742 effectively. 3743 3744 - 'eww-form-text' no longer uses a ':box' because that breaks when the 3745 widget occupies more than one line. 3746 3747 - 'eww-form-textarea' can now inherit from 'eww-form-text'. 3748 3749 Thanks to Daniel Mendler for the feedback on the style of those faces in 3750 issue 284: <https://gitlab.com/protesilaos/modus-themes/-/issues/284>. 3751 3752 3753 The manual 3754 ========== 3755 3756 ,* Clarified the wording of 'shr' fonts, which affect 'eww', 'elfeed', 3757 'ement', and possibly others. 3758 3759 ,* Wrote section on custom Org emphasis faces. It includes code samples. 3760 3761 ,* Answered a Frequently Asked Question on whether the Modus themes are 3762 "colour schemes"---they are not and it is important to understand why. 3763 3764 ,* Addressed another Frequently Asked Question about porting the themes 3765 to other platforms or editors. Relevant blog posts which explain how 3766 complex the issue is and why porting requires the same attention to 3767 detail as this project: 3768 3769 - <https://protesilaos.com/codelog/2022-01-03-modus-themes-port-faq/>. 3770 - <https://protesilaos.com/codelog/2022-01-23-base16-modus-themes/>. 3771 3772 ,* Improved the sample code in the section about the backdrop of PDF 3773 files while using 'pdf-tools'. Thanks to Utkarsh Singh for the patch, 3774 which was sent via email. 3775 3776 ,* Provided sample code on an alternative style for Ediff. 3777 3778 There was a discussion with Philip Kaludercic in issue 273 about making 3779 this a defcustom: <https://gitlab.com/protesilaos/modus-themes/-/issues/273>. 3780 3781 I first entertained the notion and did set up a branch for testing 3782 purposes. However, I ultimately decided that such a course of action 3783 would establish a bad precedent because then every conceivable stylistic 3784 tweak could, in principle, become a user option. Furthermore, the 3785 potential defcustom would introduce too much complexity as Ediff would 3786 have to continue to behave as other diffs (per 'modus-themes-diffs') if 3787 the user did not want the alternative style. 3788 3789 As such, documenting how a user can achieve this is the right choice. 3790 3791 ,* Fixed internal link in the manual. Thanks to Rudolf Adamkovič for 3792 reporting the problem in issue 277: 3793 <https://gitlab.com/protesilaos/modus-themes/-/issues/277>. 3794 3795 3796 Miscellaneous 3797 ============= 3798 3799 ,* Covered workaround for improving the accuracy of colour reproduction 3800 in terminal emulators. The results are still not as good as the 3801 graphical version of Emacs, though they are considerably better than 3802 before. Thanks to gitrj95's issue 18 at the GitHub mirror, which 3803 prompted me to research this topic: 3804 <https://github.com/protesilaos/modus-themes/issues/18>. 3805 3806 ,* Helped report a bug in the PGTK build of Emacs where a new emacsclient 3807 window with the 'modus-vivendi' face would not show the cursor: 3808 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=53073>. Thanks to 3809 contributed to the discussion on issue 7 over at the GitHub mirror: 3810 <https://github.com/protesilaos/modus-themes/issues/7> 3811 3812 ,* Shifted the hue of the intense 'hl-line' from a grey-cyan to a more 3813 vivid blue by reducing the relative contribution of the green channel 3814 of light. 3815 3816 The change affects these styles: 3817 3818 (setq modus-themes-hl-line '(accented intense)) 3819 (setq modus-themes-hl-line '(accented intense underline)) 3820 3821 Thanks to Rudolf Adamkovič for suggesting a more vivid colour in issue 3822 214: <https://gitlab.com/protesilaos/modus-themes/-/issues/214>. 3823 3824 ,* Recalibrated the 'modus-vivendi' named colour 'bg-paren-match'. 3825 3826 I wanted to increase its distance relative to the main background, 3827 just to be sure that it is easier to spot. This is achieved by moving 3828 the hueness from the yellow to the magenta side of the spectrum. 3829 3830 Overall, the change is subtle and has no major impact on the contrast 3831 ratio relative to the main background and foreground (we need to 3832 consider both due to the specifics of show-paren-mode (and related)). 3833 3834 The results (#5f362f is the old, #6f3355 the new): 3835 3836 | | #000000 | #ffffff | #000000 | #ffffff | 3837 |---------+---------+---------+---------+---------| 3838 | #5f362f | 2.06 | 10.22 | 37904 | 333060 | 3839 | #6f3355 | 2.28 | 9.21 | 58282 | 291037 | 3840 3841 The TBLFM formula for this table (org-mode notation): 3842 3843 $2='(Λ $1 @1$2);%.2f :: $3='(Λ $1 @1$3);%.2f :: $4='(Δ $1 @1$4) :: $5='(Δ $1 @1$5) 3844 3845 The Greek letters mean: 3846 3847 (defalias 'Λ #'modus-themes-contrast) 3848 (defalias 'Δ #'color-distance) 3849 3850 ,* Expanded the "special" subset of the palette with faint variants of 3851 the four backgrounds. These are reserved for special circumstances, 3852 as the name implies. Below are the contrast values (see 3853 'modus-themes-contrast'). 3854 3855 Modus Operandi main accept colours against faint special backgrounds: 3856 3857 | | #f0f1ff | #ebf5eb | #fef2ea | #faeff9 | 3858 |---------+---------+---------+---------+---------| 3859 | #a60000 | 7.15 | 7.17 | 7.29 | 7.16 | 3860 | #972500 | 7.26 | 7.28 | 7.40 | 7.28 | 3861 | #a0132f | 7.13 | 7.15 | 7.27 | 7.14 | 3862 | #7f1010 | 9.44 | 9.47 | 9.63 | 9.47 | 3863 | #702f00 | 8.94 | 8.97 | 9.12 | 8.96 | 3864 | #7f002f | 9.64 | 9.67 | 9.83 | 9.66 | 3865 | #005e00 | 7.20 | 7.23 | 7.34 | 7.22 | 3866 | #315b00 | 7.13 | 7.15 | 7.27 | 7.15 | 3867 | #145c33 | 7.18 | 7.20 | 7.32 | 7.20 | 3868 | #104410 | 10.09 | 10.12 | 10.29 | 10.12 | 3869 | #30440f | 9.56 | 9.59 | 9.75 | 9.58 | 3870 | #0f443f | 9.76 | 9.79 | 9.96 | 9.79 | 3871 | #813e00 | 7.14 | 7.17 | 7.28 | 7.16 | 3872 | #70480f | 7.14 | 7.17 | 7.28 | 7.16 | 3873 | #863927 | 7.13 | 7.15 | 7.27 | 7.15 | 3874 | #5f4400 | 8.10 | 8.12 | 8.26 | 8.12 | 3875 | #5d5000 | 7.17 | 7.19 | 7.31 | 7.19 | 3876 | #5e3a20 | 8.91 | 8.94 | 9.09 | 8.93 | 3877 | #0031a9 | 9.31 | 9.34 | 9.49 | 9.33 | 3878 | #2544bb | 7.14 | 7.16 | 7.28 | 7.16 | 3879 | #0000c0 | 10.64 | 10.67 | 10.85 | 10.66 | 3880 | #003497 | 9.66 | 9.70 | 9.86 | 9.69 | 3881 | #0f3d8c | 9.06 | 9.09 | 9.24 | 9.09 | 3882 | #001087 | 13.15 | 13.20 | 13.42 | 13.19 | 3883 | #721045 | 9.99 | 10.02 | 10.19 | 10.01 | 3884 | #8f0075 | 7.72 | 7.75 | 7.88 | 7.74 | 3885 | #5317ac | 8.98 | 9.01 | 9.16 | 9.00 | 3886 | #752f50 | 8.22 | 8.25 | 8.38 | 8.24 | 3887 | #7b206f | 8.22 | 8.25 | 8.38 | 8.24 | 3888 | #55348e | 8.26 | 8.29 | 8.42 | 8.28 | 3889 | #00538b | 7.18 | 7.20 | 7.32 | 7.19 | 3890 | #30517f | 7.18 | 7.20 | 7.32 | 7.20 | 3891 | #005a5f | 7.13 | 7.15 | 7.27 | 7.15 | 3892 | #005077 | 7.76 | 7.79 | 7.91 | 7.78 | 3893 | #354f6f | 7.49 | 7.52 | 7.64 | 7.51 | 3894 | #125458 | 7.69 | 7.72 | 7.85 | 7.71 | 3895 3896 Modus Vivendi main accept colours against faint special backgrounds: 3897 3898 | | #0e183a | #001f1a | #241613 | #251232 | 3899 |---------+---------+---------+---------+---------| 3900 | #ff8059 | 7.01 | 7.01 | 7.07 | 7.00 | 3901 | #ef8b50 | 7.01 | 7.00 | 7.07 | 7.00 | 3902 | #ff9077 | 7.85 | 7.85 | 7.93 | 7.85 | 3903 | #ffa0a0 | 8.91 | 8.91 | 9.00 | 8.91 | 3904 | #f5aa80 | 9.04 | 9.04 | 9.13 | 9.04 | 3905 | #ff9fbf | 9.06 | 9.05 | 9.14 | 9.05 | 3906 | #44bc44 | 7.04 | 7.04 | 7.11 | 7.04 | 3907 | #70b900 | 7.13 | 7.13 | 7.20 | 7.12 | 3908 | #00c06f | 7.24 | 7.24 | 7.31 | 7.24 | 3909 | #78bf78 | 7.87 | 7.86 | 7.94 | 7.86 | 3910 | #99b56f | 7.60 | 7.59 | 7.67 | 7.59 | 3911 | #88bf99 | 8.23 | 8.22 | 8.30 | 8.22 | 3912 | #d0bc00 | 8.98 | 8.98 | 9.07 | 8.98 | 3913 | #c0c530 | 9.31 | 9.31 | 9.40 | 9.30 | 3914 | #d3b55f | 8.71 | 8.71 | 8.79 | 8.71 | 3915 | #d2b580 | 8.81 | 8.80 | 8.89 | 8.80 | 3916 | #cabf77 | 9.28 | 9.27 | 9.36 | 9.27 | 3917 | #d0ba95 | 9.20 | 9.20 | 9.29 | 9.20 | 3918 | #2fafff | 7.18 | 7.18 | 7.25 | 7.18 | 3919 | #79a8ff | 7.32 | 7.32 | 7.39 | 7.31 | 3920 | #00bcff | 7.96 | 7.96 | 8.04 | 7.96 | 3921 | #82b0ec | 7.74 | 7.74 | 7.81 | 7.74 | 3922 | #a0acef | 7.97 | 7.96 | 8.04 | 7.96 | 3923 | #80b2f0 | 7.89 | 7.88 | 7.96 | 7.88 | 3924 | #feacd0 | 9.94 | 9.93 | 10.03 | 9.93 | 3925 | #f78fe7 | 8.29 | 8.29 | 8.37 | 8.29 | 3926 | #b6a0ff | 7.82 | 7.81 | 7.89 | 7.81 | 3927 | #e0b2d6 | 9.51 | 9.50 | 9.60 | 9.50 | 3928 | #ef9fe4 | 8.88 | 8.88 | 8.96 | 8.87 | 3929 | #cfa6ff | 8.72 | 8.71 | 8.80 | 8.71 | 3930 | #00d3d0 | 9.28 | 9.27 | 9.36 | 9.27 | 3931 | #4ae2f0 | 11.09 | 11.09 | 11.20 | 11.09 | 3932 | #6ae4b9 | 11.08 | 11.07 | 11.18 | 11.07 | 3933 | #90c4ed | 9.34 | 9.34 | 9.43 | 9.33 | 3934 | #a0bfdf | 9.10 | 9.09 | 9.18 | 9.09 | 3935 | #a4d0bb | 10.18 | 10.17 | 10.27 | 10.17 | 3936 3937 ,* Add docs on color overrides through blending. Thanks to Alex Griffin 3938 for the contribution in issue 269 and the subsequent patch in merge 3939 request 56 (the patch is exempt from copyright assignment): 3940 3941 - <https://gitlab.com/protesilaos/modus-themes/-/issues/269>. 3942 - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/56>. 3943 3944 ,* Fixed typo in the ':group' value of some faces defined in 3945 modus-themes.el. Thanks to Gustavo Barros for reporting it in issue 3946 266: <https://gitlab.com/protesilaos/modus-themes/-/issues/266> 3947 3948 ,* Updated copyright statement in all .el files to use the same wording 3949 as all other files that are built into Emacs. 3950 3951 ,* Made all sorts of tweaks and refinements to doc strings and nodes in the 3952 manual. 3953 3954 Thanks again to everyone involved! This has been yet another cycle of 3955 intense work which further iterated on an already solid base. 3956 #+end_src 3957 3958 * 2.0.0 3959 :PROPERTIES: 3960 :CUSTOM_ID: h:46d92baa-eff3-4973-bac0-cf762b457e2d 3961 :END: 3962 3963 #+begin_src text 3964 Modus themes version 2.0.0 3965 3966 By Protesilaos Stavrou <info@protesilaos.com> on 2021-12-24 3967 3968 This entry covers the changes made to the project since the publication 3969 of version 1.7.0 on 2021-11-18. There have been more than 90 commits in 3970 the meantime. This is a major upgrade with some backward-incompatible 3971 changes, even though most work was done behind the scenes (i.e. not in 3972 git commits but local testing) to guarantee the relevance of all 3973 user-facing styles, code practices, et cetera. 3974 3975 All modifications of colour combinations mentioned herein are made in 3976 accordance with the primary accessibility objective of the themes for a 3977 minimum contrast ratio of 7:1 between background and foreground values 3978 in their given combination (the WCAG AAA standard for relative colour 3979 luminance). Edits also account for colour-coding that is optimised for 3980 the needs of users with red-green colour deficiency (deuteranopia). 3981 3982 To access the URL of the manual visit this web page: 3983 <https://protesilaos.com/emacs/modus-themes>. Or read it in the Emacs 3984 Info reader by evaluating this form: 3985 3986 (info "(modus-themes) Top") 3987 3988 The 'modus-operandi' and 'modus-vivendi' themes are built into Emacs-28 3989 (next stable release) or later, and are available on GNU ELPA as well as 3990 other archives. Emacs-28 ships version 1.6.0, while the current 3991 'master' branch (i.e. Emacs-29) and, by extension, GNU ELPA include the 3992 latest tagged release. 3993 3994 A fully fledged org-mode file with the annotated task list for Modus 3995 themes version 2.0.0 is supplied as complementary material to the 3996 present entry. It should be annexed below this text on the announcement 3997 page: <https://protesilaos.com/codelog/2021-12-24-modus-themes-2-0-0/>. 3998 3999 4000 Customisation options 4001 ===================== 4002 4003 There are some breaking changes that were necessary to improve the code 4004 base and make things easier as well as more efficient for end users. 4005 Please read carefully and apologies in advance for whatever 4006 inconvenience. 4007 4008 ,* The 'modus-themes-variable-pitch-headings' no longer has any effect. 4009 Instead, users can specify a 'variable-pitch' property to the list 4010 they pass to the 'modus-themes-headings' or 'modus-themes-org-agenda' 4011 (examples below). 4012 4013 ,* All 'modus-themes-scale-*' options are removed. Scaling of headings 4014 is now handled directly by the user options 'modus-themes-headings' 4015 and 'modus-themes-org-agenda' (code samples below). 4016 4017 ,* The 'modus-themes-headings' option now accepts a floating point (see 4018 function 'floatp') that represents the multiplier relative to the base 4019 font size. This can be used to scale headings accordingly. Since 4020 this option can target individual heading levels (for 1 through 8), 4021 users can now implement their desired scale with greater precision. 4022 Whereas before it was limited to the first four levels, admittedly for 4023 no good reason. 4024 4025 The newly introduced 'variable-pitch' property can also be applied on 4026 a per-level basis (making it easy to combine with existing properties, 4027 such as a custom weight, for maximum control). Example: 4028 4029 ;; This is an alist: read the manual or its doc string. 4030 (setq modus-themes-headings 4031 '((1 . (variable-pitch light 1.6)) 4032 (2 . (overline semibold 1.4)) 4033 (3 . (monochrome overline 1.2)) 4034 (4 . (overline 1.1)) 4035 (t . (rainbow 1.05)))) 4036 4037 ,* The 'modus-themes-org-agenda' follows the same design as the 4038 'modus-themes-headings' where appropriate. Headings that can be 4039 scaled accept a floating point, while those that may be rendered in a 4040 proportionately spaced font accept the 'variable-pitch' property. In 4041 addition, a custom font weight is also supported in the relevant 4042 places (just as with 'modus-themes-headings'). Overall, the interface 4043 can now be tailored to the user's preferences with greater precision. 4044 4045 ;; This is an alist: read the manual or its doc string. 4046 (setq modus-themes-org-agenda 4047 '((header-block . (variable-pitch light 1.6)) 4048 (header-date . (bold-today grayscale underline-today 1.2)) 4049 (event . (accented varied)) 4050 (scheduled . uniform) 4051 (habit . traffic-light))) 4052 4053 ,* The 'modus-themes-scale-small' that was used in the Org agenda 4054 interface has been removed. No replacement is provided, as the 4055 downsizing had the undesired effect of breaking the otherwise neat 4056 alignment of elements on the grid. 4057 4058 ,* The 'modus-themes-mode-line-padding' option has been removed. 4059 Instead, users can specify a natural number (positive integer) 4060 directly in the list of properties passed to the 4061 'modus-themes-mode-line' variable. This has no effect when the 4062 'moody' property is also set, because the Moody library applies its 4063 own padding. For example: 4064 4065 (setq modus-themes-mode-line '(borderless accented 4)) 4066 4067 Though not related to changes on our end, users of Emacs 29 must now 4068 set 'x-use-underline-position-properties' to nil for padding to work 4069 properly (due to other adjustments upstream). This relates to Emacs 4070 bug#52324 we had reported: 4071 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52324>. 4072 4073 ,* All deuteranopia styles are consolidated in a single toggle: 4074 'modus-themes-deuteranopia'. The 'modus-themes-success-deuteranopia' 4075 is thus rendered obsolete and superseded, while the individual 4076 deuteranopia-friendly styles for diffs ('modus-themes-diffs') and the 4077 Org agenda's habit graph ('modus-themes-org-agenda') are altogether 4078 removed. As opposed to top-level forms, there is no clean way to 4079 notify the user of the deprecation of individual values of a user 4080 option. 4081 4082 ,* The "foreground only" style has been altogether removed from the user 4083 option 'modus-themes-diffs'. It never was up to the aesthetic 4084 standard of the themes even though the colours met the minimum 7:1 4085 contrast ratio. There is a new section in the manual which documents 4086 how to implement such a style with user-level configurations. Short 4087 version: 4088 4089 (defun my-modus-themes-custom-faces () 4090 (modus-themes-with-colors 4091 (custom-set-faces 4092 `(modus-themes-diff-added ((,class :background unspecified :foreground ,green))) ; OR ,blue for deuteranopia 4093 `(modus-themes-diff-changed ((,class :background unspecified :foreground ,yellow))) 4094 `(modus-themes-diff-removed ((,class :background unspecified :foreground ,red))) 4095 4096 `(modus-themes-diff-refine-added ((,class :background ,bg-diff-added :foreground ,fg-diff-added))) 4097 ;; `(modus-themes-diff-refine-added ((,class :background ,bg-diff-added-deuteran :foreground ,fg-diff-added-deuteran))) 4098 `(modus-themes-diff-refine-changed ((,class :background ,bg-diff-changed :foreground ,fg-diff-changed))) 4099 `(modus-themes-diff-refine-removed ((,class :background ,bg-diff-removed :foreground ,fg-diff-removed))) 4100 4101 `(modus-themes-diff-focus-added ((,class :background ,bg-dim :foreground ,green))) ; OR ,blue for deuteranopia 4102 `(modus-themes-diff-focus-changed ((,class :background ,bg-dim :foreground ,yellow))) 4103 `(modus-themes-diff-focus-removed ((,class :background ,bg-dim :foreground ,red))) 4104 4105 `(modus-themes-diff-heading ((,class :background ,bg-alt :foreground ,fg-main))) 4106 4107 `(diff-indicator-added ((,class :foreground ,green))) ; OR ,blue for deuteranopia 4108 `(diff-indicator-changed ((,class :foreground ,yellow))) 4109 `(diff-indicator-removed ((,class :foreground ,red))) 4110 4111 `(magit-diff-added ((,class :background unspecified :foreground ,green-faint))) 4112 `(magit-diff-changed ((,class :background unspecified :foreground ,yellow-faint))) 4113 `(magit-diff-removed ((,class :background unspecified :foreground ,red-faint))) 4114 `(magit-diff-context-highlight ((,class :background ,bg-dim :foreground ,fg-dim)))))) 4115 4116 ;; This is so that the changes persist when switching between 4117 ;; modus-operandi and modus-vivendi 4118 (add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces) 4119 4120 4121 Removed support for packages 4122 ============================ 4123 4124 The following are no longer supported by the themes. The reasons vary 4125 in each case, though they boil down to (i) the package being obsoleted, 4126 or (ii) the package's faces inheriting from base faces that we already 4127 support (e.g. font-lock). Each case was carefully considered as part of 4128 the comprehensive review of all packages supported by the themes, though 4129 chances are that some mistake was made regardless. If you believe a 4130 package should not have been removed, please report as much. 4131 4132 ,* ag 4133 ,* apt-sources-list 4134 ,* apt-sources-list 4135 ,* buffer-expose 4136 ,* counsel-org-capture-string 4137 ,* define-word 4138 ,* diredc 4139 ,* disk-usage 4140 ,* easy-kill 4141 ,* flyspell-correct 4142 ,* git-gutter{,fringe}+ 4143 ,* git-lens 4144 ,* git-walktree 4145 ,* highlight-blocks 4146 ,* highlight-defined 4147 ,* highlight-escape-sequences 4148 ,* highlight-symbol 4149 ,* highlight-tail 4150 ,* hyperlist-mode 4151 ,* isl (isearch-light) 4152 ,* minibuffer-line 4153 ,* mu4e-conversation 4154 ,* no-emoji 4155 ,* objed 4156 ,* parrot 4157 ,* phi-search 4158 ,* pkgbuild-mode 4159 ,* rainbow-identifiers 4160 ,* sallet 4161 ,* spell-fu 4162 ,* spray 4163 ,* swoop 4164 ,* vdiff 4165 ,* volatile-highlights 4166 4167 4168 Changes to supported faces or face groups 4169 ========================================= 4170 4171 ,* Eliminated any possible exaggerations in wgrep faces. Those no longer 4172 use coloured backgrounds. Instead they have colour-coded foreground 4173 colours as well as a bold weight (they ultimately inherit from the 4174 'bold' face, which is a "hidden" customisation option, as explained in 4175 the manual). 4176 4177 ,* Forced Org block delimiters to not extend their background by default 4178 (though check 'modus-themes-org-blocks'). That was the intended 4179 design all along, but now it needs to be made explicit. See, for 4180 example, bug#52587 for Emacs: 4181 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52587> 4182 4183 ,* Revised the 'org-sexp-date' face so that it no longer looks like 4184 'org-date'. Dates are clickable buttons: they work like links, so 4185 they have an underline by default and are subject to the 4186 'modus-themes-links' user option. Whereas the 'org-sexp-date' is not 4187 applied to interactive elements and must thus be visually distinct. 4188 4189 This face is used for diary-style entries in Org files. For example: 4190 4191 %%(diary-anniversary 2000 12 25) NAME %d%s birthday 4192 4193 ,* Rewrote several Auctex/Tex faces to inherit from base faces where 4194 relevant (e.g. 'bold', 'success') as well as from font-lock faces. In 4195 the latter case, the end-result makes Auctex/Tex subject to the 4196 'modus-themes-syntax' option. These refinements promote theme-wide 4197 consistency without detracting from the established styles. 4198 4199 ,* Improved Git (Magit) commit faces for warnings or errors. This 4200 concerns two cases: 4201 4202 1. The summary line exceeds the recommended limit of 50 characters. 4203 This now uses a yellow foreground colour which contrasts well with 4204 the summary line's new blue hue (blue and yellow are complementary 4205 for our purposes, meaning that they have good contrast in hueness). 4206 4207 2. The second line (the one right below the summary) has text that 4208 should not be there. This one is coloured in a shade of red, which 4209 again contrasts well with blue. 4210 4211 Thanks to Damien Cassou for noticing in issue 261 that the previous 4212 style of applying tinted backgrounds did not work well when 4213 'hl-line-mode' was enabled ('hl-line-mode' overrides backgrounds and 4214 so the warnings/errors where not always obvious): 4215 <https://gitlab.com/protesilaos/modus-themes/-/issues/261>. 4216 4217 ,* Added support for the new 'magit-branch-warning' face that we helped 4218 upstream define: <https://github.com/magit/magit/issues/4550>. It 4219 disambiguates warnings in Magit status buffers from the generic and 4220 often inappropriate for such a context 'font-lock-warning-face'. 4221 4222 ,* Simplified all the Apropos faces. They no longer look like buttons or 4223 links as that makes the presentation of 'M-x apropos' very busy. 4224 Instead, they now only have a foreground colour. 4225 4226 ,* Updated support for org-roam faces by removing old entries and 4227 covering new ones. 4228 4229 ,* Replaced old company-mode faces with their new aliases: 4230 4231 - company-scrollbar-bg => company-tooltip-scrollbar-thumb 4232 - company-scrollbar-fg => company-tooltip-scrollbar-track 4233 4234 ,* Made 'org-column-title' inherit from 'fixed-pitch' when the user 4235 option 'modus-themes-mixed-fonts' is non-nil. This is needed to line 4236 up columns correctly. Thanks to Björn Lindström for the contribution 4237 in merge request 52: 4238 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/52>. 4239 4240 ,* Forced the 'org-colview' faces to use the same height, even when 4241 headings are scaled (see 'modus-themes-headings'). This ensures that 4242 the columns are aligned properly and text fits on the same row. 4243 Thanks to Björn Lindström for the contribution in merge request 53: 4244 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/53>. 4245 4246 ,* Refrained from applying a bold weight to the Org date selection 4247 indicator in the calendar. The use of bold has the potential to create 4248 problems with the alignment of dates for certain typefaces that do not 4249 have a proper bold variant. Also, there is no need for added emphasis 4250 given that we already use a prominent background colour. 4251 4252 ,* Made 'M-x org-table-header-line-mode' or the third-party package 4253 'org-table-sticky-header' use colours that fit better with those of 4254 tables. 4255 4256 ,* Removed explicit styling of the 'magit-branch-current' face because 4257 its definition checks if the ':box' attribute can be set and if not, it 4258 uses ':inverse-video'. Useful for terminal emulators. 4259 4260 ,* Expanded support for the 'mode-line-active' face for Emacs29. The 4261 face upstream basically adds proportionately spaced fonts (the 4262 'variable-pitch' face) to the mode line. The themes can already use 4263 that if the user option 'modus-themes-variable-pitch-ui' is non-nil. 4264 Thanks to Manuel Uberti for the feedback in issue 257: 4265 <https://gitlab.com/protesilaos/modus-themes/-/issues/257>. 4266 4267 ,* Implemented some stylistic refinements for ERC and Rcirc to ensure 4268 theme-wide consistency (e.g. timestamps are a shade of cyan). 4269 4270 ,* Tweaked adoc-mode faces for stylistic theme-wide consistency. 4271 4272 ,* Refashioned all the git faces of Treemacs so that they are more 4273 consistent with other such contexts or uses. The new styles also 4274 conform with the 'modus-themes-deuteranopia' option. 4275 4276 4277 Miscellaneous 4278 ============= 4279 4280 ,* Ended the wanton use of internal functions in places that did not 4281 require them. Instead, the themes define faces that evaluate such 4282 functions once and pass their results to the relevant entries. Cases 4283 include: 4284 4285 - Symlink and/or broken link faces in contexts such as Dired, 4286 Eshell, Helm, Trashed. 4287 4288 - Tabbed interfaces (tab-bar, tab-line, centaur-tabs). 4289 4290 - Verbatim markup or that of inline code in Org, Markdown, Asciidoc, 4291 etc. 4292 4293 - The optional use of 'variable-pitch' for User Interface elements 4294 (see 'modus-themes-variable-pitch-ui'). 4295 4296 ,* Refined the dedicated diff background colours of modus-vivendi that 4297 are used when the user option 'modus-themes-deuteranopia' is non-nil. 4298 The changes improve the distinction between all red and yellow 4299 constructs in contexts where they appear together (e.g. smerge-mode). 4300 Basically, yellows will look more bright, while reds appear as 4301 brown. The corresponding blues are toned down a bit to be consistent 4302 with the other colours. Consequently, the standard shades of green 4303 for added lines (when 'modus-themes-deuteranopia' is nil) are 4304 recalibrated to combine well with all other values. 4305 4306 ,* Made several faces return an 'unspecified' value instead of nil for 4307 their unused attributes under certain circumstances. This is to guard 4308 against third-party code that unconditionally expects a non-nil value. 4309 4310 ,* Omitted {over,under}line attributes from the mode line when the 4311 'padded' property is added to the 'modus-themes-mode-line' user 4312 option. Those are not necessary in that context. Thanks to Illia 4313 Ostapyshyn for the contribution in merge request 54: 4314 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/54> 4315 4316 ,* Rewrote several internal functions in the interest of consistency and 4317 clarity. 4318 4319 ,* Deleted two user options that were long obsolete: (i) 4320 'modus-themes-org-habit' has been superseded by 4321 'modus-themes-org-agenda' since version 1.5.0 of the themes and (ii) 4322 'modus-themes-intense-hl-line' has been replaced by 4323 'modus-themes-hl-line' since version 1.3.0. 4324 4325 ,* Removed parentheses from headings in the manual as they are invalid 4326 characters for some version of Texinfo. See Emacs bug#52126: 4327 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52126>. 4328 4329 ,* Updated all doc strings so that quoted lists yield valid syntax in 4330 Help buffers; syntax that can be directly evaluated (otherwise Emacs 4331 prettifies straight quotes as curly ones, which break the code). 4332 Thanks to Christian Tietze for bringing this issue to my attention: 4333 <https://gitlab.com/protesilaos/modus-themes/-/issues/248#note_753169268>. 4334 4335 ,* Rewrote all sections of the manual to document the current state of 4336 the project as pertains to valid user options, explicitly supported 4337 face groups, and so on. 4338 #+end_src 4339 4340 * 1.7.0 4341 :PROPERTIES: 4342 :CUSTOM_ID: h:22de7065-f54c-4944-b47f-3cc8a30551c8 4343 :END: 4344 4345 #+begin_src text 4346 Modus themes version 1.7.0 4347 4348 By Protesilaos Stavrou <info@protesilaos.com> on 2021-11-18 4349 4350 The present entry records the changes made to the project since the 4351 release of version 1.6.0 on 2021-09-29. There have been more than 60 4352 commits since then. 4353 4354 Every modification pertaining to colour combinations referenced herein 4355 is implemented in accordance with the primary accessibility objective of 4356 the themes for a minimum contrast ratio of 7:1 between background and 4357 foreground values in their given combination (the WCAG AAA standard). 4358 Edits also account for colour-coding that is optimised for the needs of 4359 users with red-green colour deficiency (deuteranopia). 4360 4361 To access the URL of the manual visit this web page: 4362 <https://protesilaos.com/emacs/modus-themes>. Or read it from Emacs by 4363 evaluating this form: 4364 4365 (info "(modus-themes) Top") 4366 4367 The themes are built into Emacs version 28 (next stable release), and 4368 are available on GNU ELPA as well as other archives. This release is 4369 the first one that is included with Emacs 29, or else the 'master' 4370 branch in emacs.git. 4371 4372 4373 Customisation options 4374 ===================== 4375 4376 + The 'modus-themes-no-mixed-fonts' has been deprecated and replaced by 4377 the 'modus-themes-mixed-fonts'. This is a breaking change for users 4378 who want to use "mixed fonts": they must set the new variable to 4379 non-nil. 4380 4381 As the name implies, the new variable changes the meaning of the 4382 feature to make it opt-in by default. This is consistent with the 4383 principle of least surprise, as users may not know why some fonts look 4384 different than others in certain cases. 4385 4386 Thanks to Christian Tietze for clarifying the doc string of this new 4387 user option in merge request 51: 4388 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/51>. 4389 4390 For context, "mixed fonts" refers to a design where spacing-sensitive 4391 constructs, such as code blocks and Org tables, inherit from the 4392 'fixed-pitch' face to remain monospaced (and properly aligned) at all 4393 times. Depending on the user's configurations, the 'fixed-pitch' face 4394 may not use the typeface that the user expects. 4395 4396 The manual provides information on how to set the desired fonts by 4397 editing the 'default', 'fixed-pitch', and 'variable-pitch' faces. 4398 4399 + The new 'modus-themes-mode-line-padding' can be used to control the 4400 apparent padding of the mode line when the user option 4401 'modus-themes-mode-line' includes the 'padded' property. The padding 4402 must be a positive integer (otherwise the code would be needlessly 4403 complex to guard against values that make the mode line look awkward, 4404 like anything lower than -3 or maybe even -2). 4405 4406 Thanks to Guilherme Semente and Manuel Uberti for the feedback in 4407 issue 245: <https://gitlab.com/protesilaos/modus-themes/-/issues/245>. 4408 4409 Note that the out-of-the-box style of the themes has a padding of 1 4410 (technically a ':line-width' of 1 for the ':box' attribute), whereas 4411 the default style of Emacs has it at -1. This is a design choice to 4412 avoid an overlap between the outer boundaries of a font's glyphs and 4413 the borders of the mode line, when using certain common typefaces at 4414 various point sizes. Such an overlap can hinder readability. 4415 4416 The manual contains a new Do-It-Yourself (DIY) section with detailed 4417 code samples on how to apply a negative value. 4418 4419 + The new 'modus-themes-intense-markup' option can be set to non-nil to 4420 make constructs such as inline code and verbatim text more colourful. 4421 This has a general utility, though its consideration was prompted by a 4422 phenomenon reported by Stefan Kangas in issue 238 where the overlay of 4423 the 'hl-line-face' overrides the subtle background these constructs 4424 use and can thus make them virtually indistinguishable from ordinary 4425 text: <https://gitlab.com/protesilaos/modus-themes/-/issues/238>. 4426 4427 Such is the standard behaviour of 'hl-line-mode' and there is nothing 4428 a theme can (or rather "should") do about it. Thanks to Stefan Kangas 4429 for the feedback. 4430 4431 + The 'modus-themes-headings' option can now accept and apply an exact 4432 font weight such as 'semibold' or 'light'. (The list of available 4433 weights is the value of the 'modus-themes--heading-weights' internal 4434 variable.) This supersedes the now-deprecated 'no-bold' property: 4435 'no-bold' is henceforth understood as the presence of a 'regular' 4436 weight. 4437 4438 Recall that this user option is an alist and can be used to target 4439 heading levels individually, which further reinforces the utility of 4440 this new property. 4441 4442 Thanks to Christian Tietze for suggesting this idea in issue 248: 4443 <https://gitlab.com/protesilaos/modus-themes/-/issues/248>. And 4444 thanks to Daniel Mendler for refining its implementation in commit 4445 54bfd62, which was sent as a patch file (yes, we accept those and I 4446 actually prefer them over a web app's UI). 4447 4448 + The 'modus-themes-org-agenda' has seen improvements to its 'event' key 4449 (this is an alist that has multiple keys). It now accepts a 'varied' 4450 property which differentiates between (i) plain timestamp entries and 4451 (ii) entries that are generated from either the diary or a symbolic 4452 expression. The 'varied' property combines with the other available 4453 properties to particularise their effects. Consult the doc string or 4454 the manual for the technicalities. 4455 4456 Thanks to Gustavo Barros for the detailed commentary in issue 241: 4457 <https://gitlab.com/protesilaos/modus-themes/-/issues/241>. 4458 4459 + The 'modus-themes-lang-checkers' now accepts a 'faint' property. This 4460 has the effect of toning down the colours in use. By default, the 4461 only colour is that of the underline, though more can be added by 4462 combining the properties accepted by this user option. Consult its 4463 doc string or the manual for further details. 4464 4465 Thanks to Morgan Smith for suggesting the idea in issue 239: 4466 <https://gitlab.com/protesilaos/modus-themes/-/issues/239>. 4467 4468 4469 Add support for new packages or face groups 4470 =========================================== 4471 4472 + 'company-tooltip-deprecated' face. Thanks to Roman Rudakov for the 4473 feedback in issue 247: <https://gitlab.com/protesilaos/modus-themes/-/issues/247>. 4474 4475 + 'corfu-default' face. Thanks to Daniel Mendler (Corfu's developer) 4476 for the feedback in issue 254: 4477 <https://gitlab.com/protesilaos/modus-themes/-/issues/254>. 4478 4479 + 'image-dired' package (Emacs 29). Thanks to Stefan Kangas for making it 4480 happen in emacs.git and for the feedback in issue 250: 4481 <https://gitlab.com/protesilaos/modus-themes/-/issues/250>. 4482 4483 + 'nano-modeline' package. 4484 4485 + 'vertico-quick' package. Thanks to Nicolas De Jaeghere for the 4486 contribution in merge request 48: 4487 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/51>. 4488 4489 4490 Changes to existing faces or face groups 4491 ======================================== 4492 4493 + Added support for the new Org agenda faces that improve the 4494 contextuality of various views. We implemented those upstream for Org 4495 version 9.5 in close cooperation with Gustavo Barros. Thanks to 4496 Gustavo for the detailed feedback in issue 241: 4497 <https://gitlab.com/protesilaos/modus-themes/-/issues/241>. The 4498 thread about the patch upstream: 4499 <https://list.orgmode.org/87lf7q7gpq.fsf@protesilaos.com/> 4500 4501 + Refined Org agenda date faces in the interest of consistency and in 4502 accordance with the aforementioned change. Thanks again to Gustavo 4503 Barros for the discussion in issue 241. 4504 4505 + Applied the 'shadow' face more consistently across all contexts where 4506 only a subtle foreground value is expected. This design choice makes 4507 it possible for users to manually edit the foreground colour of 4508 'shadow' to something even more subtle than the 'fg-alt' palette 4509 variable we use, which maps to a gray colour (e.g. they could use 4510 "gray50"). 4511 4512 + Implemented a subtle background colour to the 'widget-inactive' face. 4513 This makes it easier to discern inactive buttons, checkboxes, and the 4514 like, in contexts such as the Customize User Interface. Thanks to 4515 Stefan Kangas for the feedback in issue 242: 4516 <https://gitlab.com/protesilaos/modus-themes/-/issues/242>. 4517 4518 + Tweaked 'file-name-shadow' to also use italics (inherit from the 4519 'italic' face) in order to be more easy to distinguish it from 4520 ordinary text in the minibuffer. 4521 4522 Recall that the manual documents the meaning of inheriting from the 4523 'bold' and 'italic' faces instead of hardcoding a bold weight and an 4524 italic slant, respectively. In short: users can change the weight to 4525 what they want (e.g. semibold) and/or use distinct font families. 4526 4527 + Amplified the style of Version Control (VC) warnings and errors to let 4528 them draw more attention to themselves (because these indicators need 4529 to be acted upon). 4530 4531 + Recoloured the 'custom-group-tag' face to make it fit better in its 4532 context and be consistent with the rest of the themes' established 4533 patterns. 4534 4535 + Made marks for selection in Dired, Ibuffer, and related, conform with 4536 the 'modus-themes-success-deuteranopia' option. This means that they 4537 use blue colours when the option is non-nil, instead of their default 4538 shades of green. 4539 4540 + Adjusted the box width of key bindings for Emacs 28 or higher. They 4541 should no longer cause any alignment issues. This style is now used 4542 throughout the themes, including in transient views (e.g. Magit) which 4543 were the exception before. Thanks to Manuel Uberti and Kevin Fleming 4544 for the feedback in issue 232: 4545 <https://gitlab.com/protesilaos/modus-themes/-/issues/232>. 4546 4547 4548 Miscellaneous 4549 ============= 4550 4551 + Wrote a brief description of every user option in the manual. Also 4552 covered its type, as in boolean, alist, et cetera. 4553 4554 + Corrected the mode line border width for one combination of properties 4555 in the 'modus-themes-mode-line' option. This should now have the same 4556 height as all others: 4557 4558 (setq modus-themes-mode-line '(accented borderless)) 4559 4560 + Ensured that mode line attributes would not be set to nil, but kept at 4561 an 'unspecified' value instead, where relevant. This avoids problems 4562 with [faulty] code that unconditionally depends on something that does 4563 not exist, as in the following while ':box' is nil: 4564 4565 (face-attribute 'mode-line :box) 4566 4567 + Expanded, reworded, or otherwise improved the manual, based on the 4568 aforementioned. 4569 4570 Thanks once again to everyone involved! 4571 #+end_src 4572 4573 * 1.6.0 4574 :PROPERTIES: 4575 :CUSTOM_ID: h:e4b9945c-1db8-4626-abc9-372469b19253 4576 :END: 4577 4578 #+begin_src text 4579 Modus themes version 1.6.0 4580 4581 By Protesilaos Stavrou <info@protesilaos.com> on 2021-09-29 4582 4583 This entry records the changes made to the project since the release of 4584 version 1.5.0 on 2021-07-15. There have been around 70 commits since 4585 then. 4586 4587 Every colour-related modification referenced herein is always 4588 implemented in accordance with the primary accessibility objective of 4589 the themes for a minimum contrast ratio of 7:1 between background and 4590 foreground values in their given combination (the WCAG AAA standard). 4591 Such edits also account for colour-coding that is optimised for the 4592 needs of users with red-green colour deficiency (deuteranopia or 4593 variants). 4594 4595 Here is the URL of the manual: <https://protesilaos.com/emacs/modus-themes>. 4596 Or read it from Emacs by evaluating this form: 4597 4598 (info "(modus-themes) Top") 4599 4600 The themes are built into Emacs version 28 (current development target), 4601 and are available on GNU ELPA as well as other archives. This release 4602 is the final one for the emacs-28 branch, as that gets cut as the next 4603 stable release of GNU Emacs. Future releases will target Emacs 29 once 4604 that becomes the new 'master' branch. 4605 4606 4607 Customisation options 4608 ===================== 4609 4610 [ Themes need to be reloaded for changes to take effect. ] 4611 4612 + Introduced the new 'modus-themes-tabs-accented' boolean option. When 4613 set to non-nil, it renders the background of all tab interfaces in a 4614 shade of blue. Those interfaces are tab-bar (built-in), tab-line 4615 (built-in), and Centaur tabs. 4616 4617 - The background "accented" colour is the same as the one used for 4618 mode lines when 'modus-themes-mode-line' is configured accordingly. 4619 4620 + Tweaked the 'modus-themes-mode-line' to accept a 'padded' symbol as 4621 part of the list of properties it can read. This will increase the 4622 spacing around the mode lines' text, making the line taller overall 4623 but also more spacious. 4624 4625 Thanks to Manuel Uberti for making the proposal and providing feedback 4626 in issue 228: <https://gitlab.com/protesilaos/modus-themes/-/issues/228>. 4627 4628 + Added the 'modus-themes-scale-small' which complements the existing 4629 scale values with one that is meant to be smaller than the base 4630 height. This option is reserved for special cases and is currently 4631 only used as an opt-in feature in the Org agenda. 4632 4633 + Expanded the 'modus-themes-org-agenda' with more parameters: 4634 4635 - The current date can now also be underlined. 4636 - Date headings can be scaled/enlarged in size. 4637 - Events, like those of the Diary or sexp entries, can be customised. 4638 4639 Consult the manual or the variable's doc string for the details. 4640 4641 + Removed the obsoleted aliases 'modus-themes-slanted-constructs' and 4642 'modus-themes-scale-5'. Those are superseded by the more 4643 appropriately named 'modus-themes-italic-constructs' and 4644 'modus-themes-scale-title'. 4645 4646 Thanks to Nicolas De Jaeghere for the patch in merge request 47: 4647 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/47>. 4648 4649 4650 Faces and face groups 4651 ===================== 4652 4653 + Make the 'prodigy' faces for red/green/yellow inherit from the faces 4654 'error'/'success'/'warning', respectively. This is done to (i) avoid 4655 duplication and (ii) ensure that the green/success colour coding is 4656 consistent with the goal of the themes to empower users with red-green 4657 colour deficiency. The boolean option that changes all such greens to 4658 shades of blue is 'modus-themes-success-deuteranopia'. 4659 4660 + Assigned the ':extend' attribute to the 'org-code' face. This is 4661 necessary when the Org source contains lines that start with a colon 4662 sign. Those are interpreted as code blocks. For example: 4663 4664 : #+BEGIN_SRC emacs-lisp 4665 : (defun in-interval (bounds el) 4666 : (and (>= el (car bounds)) (<= el (cadr bounds)))) 4667 : #+END_SRC 4668 4669 With the ':extend' in place, the background stretches to the edge of 4670 the window, thus giving those lines a uniform rectangular shape. For 4671 inline uses of 'org-code', the background should remain limited to the 4672 span of the text. 4673 4674 + Broadened support for 'marginalia' faces in two phases. 4675 4676 - The first pertained to the file permissions that are shown when 4677 completing against file paths. Their style is similar to what 4678 'dired+' or the 'direfl' packages provide, however we have taken 4679 care to optimise the interface for the purposes of completion 4680 UIs---where things can look like Dired, we make them alike, but 4681 where they must differ, we differentiate the designs accordingly. 4682 There can be no compromises or arbitrary constraints. 4683 4684 Also read: <https://github.com/minad/marginalia/pull/91>. 4685 4686 - The second batch covered all sorts of extra classes that provide 4687 granular control over the appearance of Marginalia instances. 4688 Refinements also had to be made to already-supported faces for the 4689 sake of achieving consistency across the various Marginalia 4690 interfaces. 4691 4692 Also read: <https://github.com/minad/marginalia/pull/92>. 4693 4694 + Refined 'diredfl' and 'dired+' faces. For the various "priv" faces, 4695 the intent is to increase the difference in hueness between adjacent 4696 file permissions (the changes are minor, but they do change the 4697 overall result). Numbers are toned down so that they do not clash 4698 with dates. The file suffix no longer uses cyan to stand out more in 4699 detailed views. 4700 4701 + Made 'icomplete-selected-match' (Emacs28) more legible by aligning its 4702 presentation with metaphors that are estaslished across the 4703 modus-themes. Thanks to Kévin Le Gouguec (peniblec) for noting the 4704 inconsistency with the new face upstream and for writing the patch for 4705 it in merge request 50: 4706 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/50>. 4707 Also thanks to Manuel Uberti for confirming that things would look 4708 consistent in the comments' section of that merge request. 4709 4710 + Fixed faulty inheritance for the 'web-mode-keyword-face'. It should 4711 now properly copy the attributes of 'font-lock-keyword-face'. 4712 4713 + Made inheritance of the new 'help-key-binding' (Emacs28 key) the 4714 default for all faces that need to style key bindings. 4715 4716 In Emacs 28 all key bindings are automatically displayed with the face 4717 'help-key-binding' which uses some new face attributes to draw a 4718 cleaner box around it. Given that the themes must work with earlier 4719 versions of Emacs, we cannot inherit it unconditionally so we added 4720 the relevant conditionality. It is nice to offer this feature to 4721 those who use the themes on Emacs 28. Older versions retain the 4722 previous style of a blue colour coupled with a bold weight. 4723 4724 The exception to this rule is the transient.el faces (this is the 4725 pop-up window used by Magit, among others---transient.el is now built 4726 into Emacs). The box effect creates unpredictable misalignments, so 4727 we default to the old key binding style for those. 4728 4729 Thanks to Manuel Uberti and Kevin Fleming for their feedback in issue 4730 232: <https://gitlab.com/protesilaos/modus-themes/-/issues/232>. 4731 4732 + Added support for the new 'notmuch-jump-key' face. I contributed this 4733 face in commits c37c9912, 5cc106b0 to the Notmuch git repo: 4734 <https://git.notmuchmail.org/git/notmuch>. 4735 4736 + Updated the 'bookmark-face' (Emacs28) as it has been changed upstream 4737 to be a fringe indicator instead of an in-buffer, line-wide background 4738 highlight. 4739 4740 + Aligned Ediff faces with other 'modus-themes-diffs' styles. Before we 4741 would differentiate a "focus state", though that is now considered 4742 surplus to requirements. The notion of a "focus state" only make 4743 sense in Magit which applies variegated colour-coding to diff hunks 4744 based on their state. Whereas non-active Ediff changes are grayed 4745 out, so there is no need for further colour-coding nuances. The most 4746 noticeable change is with: 4747 4748 (setq modus-themes-diffs 'bg-only) 4749 4750 As noted in the commit message of 64c74ae (from 2021-09-04): 4751 4752 If users think this change is for the worse, we can always define a 4753 helper function like this: 4754 4755 (defun modus-themes--ediff-style (bgonly default) 4756 "Diff style for Ediff. 4757 BGONLY and DEFAULT depend on the value of `modus-themes-diffs'. 4758 The former is more subtle." 4759 (if (eq modus-themes-diffs 'bg-only) 4760 (list bgonly) 4761 (list default))) 4762 4763 And apply it thus: 4764 4765 `(ediff-current-diff-A ((,class :inherit ,@(modus-themes--ediff-style 4766 'modus-themes-diff-removed 4767 'modus-themes-diff-focus-removed)))) 4768 4769 No feedback was received towards that end in about a month, so we 4770 consider the change to be acceptable, without prejudice to the 4771 possibility of future updates. 4772 4773 + Unified the styles of 'org-agenda-calendar-sexp', 'org-agenda-diary', 4774 and 'org-agenda-calendar-event'. This is not a user-facing change but 4775 an internal refactoring to avoid repetition. It also makes things 4776 easier for the implementation of the 'modus-themes-org-agenda' (as 4777 mentioned above). 4778 4779 + Ensured that the 'bookmark-menu-bookmark' face inherits from the 4780 'bold' face. By default it hardcodes the bold weight, whereas we 4781 instruct it to inherit the 'bold' face. A user can thus change the 4782 ':weight' of that face to whatever they want, like semibold, 4783 extrabold, etc. We do this throughout the themes for bold and 4784 italics---consider it a "hidden feature" of sorts. Check the manual 4785 for more on the matter: 4786 4787 (info "(modus-themes) Configure bold and italic faces (DIY)") 4788 4789 + Provided support for tab-bar groups (Emacs28). Specifically the faces 4790 'tab-bar-tab-group-current' and 'tab-bar-tab-group-inactive'. 4791 4792 Thanks to Adam Porter (alphapapa) for the feedback in issue 8 over at 4793 the Github mirror: <https://github.com/protesilaos/modus-themes/issues/8>. 4794 4795 + Decoupled the 'stripes' face from that of 'hl-line-face'. This is 4796 because the stripes are not meant to change depending on the value of 4797 the user option 'modus-themes-hl-line'. 4798 4799 + Revised the red shade of "flagged" entries in mu4e and notmuch. Those 4800 are now consistent with Gnus. The shade of red that was used before 4801 was closer to the orange side of the spectrum whereas the current has 4802 hints of blue (a cherry colour) and thus combines better with the cyan 4803 and blue that prevail in those interfaces. These are fine margins, 4804 though the effect is noticeable regardless. 4805 4806 + Configured the new 'ansi-color' faces (Emacs28) which are used by 4807 shells and terminals (among others). Thanks to Manuel Uberti for 4808 reporting the changes to upstream Emacs in issue 236: 4809 <https://gitlab.com/protesilaos/modus-themes/-/issues/236>. 4810 4811 + Expanded support for EMMS faces, pertaining to its browser views. 4812 Thanks to Feng Shu (tumashu) for bringing those to my attention in 4813 issue 11 over at the Github mirror: 4814 <https://github.com/protesilaos/modus-themes/issues/11>. 4815 4816 + Styled the new 'tab-line-tab-modified' face (Emacs28). It should now 4817 use a faint red colour to denote changes to the underlying file. 4818 Thanks to Adam Porter (alphapapa) for bringing it to my attention in 4819 issue 12 over at the Github mirror: 4820 <https://github.com/protesilaos/modus-themes/issues/12>. 4821 4822 + Configured the single face that the 'cursor-flash' package has to 4823 offer. Thanks to Manuel Uberti for the feedback in issue 231: 4824 <https://gitlab.com/protesilaos/modus-themes/-/issues/231>. 4825 4826 + Included 'elpher' in the list of supported packages by means of 4827 covering the heading faces it implements. 4828 4829 + Recalibrated certain dedicated colours for inactive tabs and tweaked 4830 tab faces to (i) marginally improve the default aesthetic and (ii) 4831 harmonise it with the style of 'modus-themes-tabs-accented'. 4832 4833 + Removed the foreground attribute from all markup faces that are meant 4834 to denote emphasis in italics. That is because such faces are 4835 typically composed with others, so we do not wish to inadvertently 4836 override any other colour that would otherwise have taken effect. 4837 4838 + Wrote the faces for upstream Org that improve the contextuality of 4839 various agenda views (included in version 9.5). This was done in 4840 close collaboration with Gustavo Barros who offered detailed feedback 4841 in issue 208 (which also led to the creation and eventual expansion of 4842 the 'modus-themes-org-agenda' user option): 4843 <https://gitlab.com/protesilaos/modus-themes/-/issues/208>. 4844 4845 Four new faces improve certain styles and offer more flexibility for 4846 some Org agenda views: 'org-agenda-date-weekend-today', 4847 'org-imminent-deadline', 'org-agenda-structure-secondary', 4848 'org-agenda-structure-filter'. They inherit from existing faces in 4849 order to remain backward-compatible. 4850 4851 Quoting from <https://list.orgmode.org/87lf7q7gpq.fsf@protesilaos.com/>: 4852 4853 + The 'org-imminent-deadline' is useful to disambiguate generic 4854 warnings from deadlines. For example, a warning could be 4855 rendered in a yellow colored text and have a bold weight, 4856 whereas a deadline might be red and styled with italics. 4857 4858 + The 'org-agenda-structure-filter' applies to all tag/term 4859 filters in agenda views that search for keywords or patterns. 4860 It is designed to inherit from 'org-agenda-structure' in 4861 addition to the 'org-warning' face that was present before (and 4862 removes the generic 'warning' face from one place). This offers 4863 the benefit of consistency, as, say, an increase in font height 4864 or a change in font family in 'org-agenda-structure' will 4865 propagate to the filter as well. The whole header line thus 4866 looks part of a singular design. 4867 4868 + The 'org-agenda-structure-secondary' complements the above for 4869 those same views where a description follows the header. For 4870 instance, the tags view provides information to "Press N r" to 4871 filter by a numbered tag. Themes/users may prefer to 4872 disambiguate this line from the header above it, such as by 4873 using a less intense color or by reducing its height relative to 4874 the 'org-agenda-structure'. 4875 4876 + The 'org-agenda-date-weekend-today' provides the option to 4877 differentiate the current date on a weekend from the current 4878 date on weekdays. 4879 4880 Other patches I have made to, inter alia, emacs.git and org.git with 4881 regard to faces are documented in previous change log entries. 4882 4883 4884 Documentation 4885 ============= 4886 4887 + Removed references to old versions of the themes from before their 4888 refactoring in version 1.0.0. Those old packages no longer exist. 4889 Users must install the 'modus-themes' and then load either of 4890 'modus-operandi' or 'modus-vivendi'. 4891 4892 + Included various extensions of the Vertico package in the list of 4893 indirectly supported packages. Those define faces which either 4894 inherit from basic ones that we already support or use colours that 4895 are consistent with our accessibility target. 4896 4897 + Referenced 'side-hustle', 'tide', 'bufler' as an indirectly supported 4898 packages for the same reasons. 4899 4900 + Simplified time-stamp local variables that are used in modus-themes.el 4901 to show the time the file was edited. We apply 'time-stamp-pattern' 4902 instead of setting multiple time-stamp variables. Thanks to Stephen 4903 Gildea for the patch, which was sent to me via email (yes, you can 4904 always do that). 4905 4906 + Updated the manual's "acknowledgements" section to name all new 4907 contributors to code/ideas/feedback. 4908 4909 + Furnished information on how to configure the 'highlight-parentheses' 4910 package and extend its faces for use with the themes. The entry 4911 provides a complete Elisp implementation. 4912 4913 + Improved the code samples for the prism.el setup that users may wish 4914 to set up by themselves. The new lists of colours work better when 4915 Prism's colouration is limited to a small set of hues. 4916 4917 + Deleted trailing whitespace in the manual which had adverse effects 4918 when trying to compile the modus-themes.org over at emacs.git. Thanks 4919 to Philip Kaludercic for the patch in merge request 49: 4920 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/49>. 4921 4922 Thanks again to everyone involved. Looking forward to see the Modus 4923 themes, version 1.6.0, as part of the next stable release of Emacs. 4924 #+end_src 4925 4926 * 1.5.0 4927 :PROPERTIES: 4928 :CUSTOM_ID: h:05fc633d-69d6-4b5e-aade-1f9e4ba30ed3 4929 :END: 4930 4931 #+begin_src text 4932 Modus themes version 1.5.0 4933 4934 By Protesilaos Stavrou <info@protesilaos.com> on 2021-07-15 4935 4936 This entry outlines the set of changes made to the project since the 4937 release of version 1.4.0 on 2021-05-25. There have been over 130 4938 commits since then. 4939 4940 Every colour-related modification referenced herein is always 4941 implemented in accordance with the primary accessibility objective of 4942 the themes for a minimum contrast ratio of 7:1 between background and 4943 foreground values in their given combination (the WCAG AAA standard). 4944 Such edits also account for colour-coding that is optimised for the 4945 needs of users with red-green colour deficiency (deuteranopia or 4946 variants). 4947 4948 Here is the URL of the manual: <https://protesilaos.com/emacs/modus-themes>. 4949 Or read it from Emacs by evaluating this form: 4950 4951 (info "(modus-themes) Top") 4952 4953 The themes are built into Emacs version 28 (current development target), 4954 and are available on GNU ELPA as well as other archives. 4955 4956 4957 Customisation options 4958 ===================== 4959 4960 Overview of new style of sets of properties 4961 ------------------------------------------- 4962 4963 Several variables now accept a list of symbols as a value. Those 4964 represent properties, which can be combined with each other to realise 4965 the possible styles. The idea was to simplify their specification in 4966 order to make them easier to both maintain and extend. Thanks to Philip 4967 Kaludercic for introducing this concept in issue 210: 4968 <https://gitlab.com/protesilaos/modus-themes/-/issues/210>. 4969 4970 The variables are: 4971 4972 + 'modus-themes-prompts' by Philip Kaludercic in merge request 43: 4973 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/43> 4974 4975 + 'modus-themes-mode-line' by Philip Kaludercic in merge request 40: 4976 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/40>. 4977 4978 + 'modus-themes-lang-checkers' by Philip Kaludercic in merge request 46: 4979 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/46> 4980 4981 + 'modus-themes-org-agenda' 4982 + 'modus-themes-links' 4983 + 'modus-themes-headings' 4984 + 'modus-themes-hl-line' 4985 + 'modus-themes-paren-match' 4986 + 'modus-themes-region' 4987 + 'modus-themes-syntax' 4988 4989 Take 'modus-themes-syntax' as an example. Up until version 1.4.0, it 4990 would only accept a symbol, signifying a predefined style. So we had 4991 the possible value 'faint' and another 'faint-yellow-comments'. To make 4992 a third variant of the "faint" aesthetic, such as by combining it with 4993 the "alt syntax" and/or "green strings", we would need to write new 4994 presets in the form of 'faint-green-strings', 'faint-alt-syntax', 4995 'faint-alt-syntax-green-strings', 'faint-green-strings-yellow-comments', 4996 'faint-alt-syntax-green-strings-yellow-comments'. That would have been 4997 inefficient, hence why it was not done. 4998 4999 With the new approach of defining a list of properties, those 5000 combinations are all possible. Such as: 5001 5002 (setq modus-themes-syntax '(faint alt-syntax)) 5003 5004 (setq modus-themes-syntax '(yellow-comments alt-syntax green-strings)) 5005 5006 The order in which the properties are set is not significant. 5007 5008 The doc string of each of the aforementioned variables, or the 5009 corresponding entry in the manual, provides guidance on how to configure 5010 things. The old forms will continue to work for the time being, though 5011 they are considered deprecated and will stop being supported at a future 5012 date. 5013 5014 5015 Changes in stylistic variants for variables with sets of properties 5016 ------------------------------------------------------------------- 5017 5018 + The meaning of the "alt syntax" style in 'modus-themes-syntax' has 5019 been redefined. In the past, it used to have green-coloured strings 5020 and doc strings. Those are now red. Some other changes have been 5021 implemented to make the overall looks more consistent. Users who 5022 liked the old style can retain it by passing this list of properties: 5023 5024 (alt-syntax green-strings) 5025 5026 New styles for the "faint" aesthetic are possible, here shown as lists 5027 of properties: 5028 5029 (faint green-strings) 5030 (faint alt-syntax) 5031 (faint alt-syntax green-strings) 5032 5033 To each of those the 'yellow-comments' property can be added as well. 5034 5035 Consult the doc string or the manual for the technicalities and code 5036 samples. 5037 5038 + The 'modus-themes-hl-line' no longer has styles that include only an 5039 underline. Those proved to be problematic under certain circumstances 5040 and were thus removed. 5041 5042 Minor changes have been implemented to make the following combination 5043 of properties more consistent, by colourising the underline: 5044 5045 (accented intense underline) 5046 5047 + The 'modus-themes-paren-match' now has styles that include an 5048 'underline' property. Those extend the old options, such as: 5049 5050 (bold intense underline) 5051 5052 + The 'modus-themes-headings' have an improved set of styles for the "no 5053 text color" aesthetic. Those involve the 'monochrome' property, which 5054 can now yield results that include a background (whereas before it was 5055 just colourless text for the headings, optionally without a bold 5056 weight). As this is an alist, here is an example (always check the 5057 docs for fully fledged code samples): 5058 5059 (setq modus-themes-headings 5060 '((1 . (background overline)) 5061 (2 . (overline background rainbow)) 5062 (t . (monochrome no-bold background)))) 5063 5064 To allow a heading level N to retain its original style, a 't' value 5065 can be passed. In the previous version of the themes, it was possible 5066 to use 'nil' for the same purpose, though that is no longer valid. In 5067 those cases, the fallback value of the alist will be used instead, 5068 such as what is noted above: 5069 5070 (t . (monochrome no-bold background)) 5071 5072 + The 'modus-themes-links' provide several new possible styles, due to 5073 an expanded set of properties that includes, among others, 'bold', 5074 'italic', and 'background'. The documentation covers the details. 5075 5076 + The 'modus-themes-lang-checkers' can now attain a style that uses a 5077 prominently coloured background in addition to what was available 5078 before as a subtle background and the other variants. 5079 5080 5081 New variables 5082 ------------- 5083 5084 + The 'modus-themes-org-agenda' provides the means to refashion the 5085 entirety of the Org agenda buffer. The value it accepts is an alist, 5086 with some keys expecting a symbol and others a list of properties. 5087 The minutia are covered in its doc string. A possible configuration 5088 can look like this: 5089 5090 (setq modus-themes-org-agenda 5091 '((header-block . (variable-pitch scale-title)) 5092 (header-date . (grayscale workaholic bold-today)) 5093 (scheduled . uniform) 5094 (habit . traffic-light))) 5095 5096 'modus-themes-org-agenda' supersedes the old variable that was specific 5097 to the Org habit graph: 'modus-themes-org-habit'. There now is a 5098 'habit' key which accepts the same values as before, plus a new style 5099 that is optimised for users with red-green colour deficiency: 5100 'traffic-light-deuteranopia'. Please consult the doc string of 5101 'modus-themes-org-agenda' or the relevant entry to the manual. 5102 5103 Thanks to Gustavo Barros for contributing to the creation of this 5104 variable as well as to all other changes in the relevant faces that 5105 were done in the interest of usability. A full report about 5106 'modus-themes-org-agenda' with screen shots is available here: 5107 <https://protesilaos.com/codelog/2021-06-02-modus-themes-org-agenda/>. 5108 5109 A patch has been sent to upstream Org, with its review pending, which 5110 improves upon some of the areas we had identified: 5111 <https://lists.gnu.org/archive/html/emacs-orgmode/2021-06/msg00092.html>. 5112 5113 + The 'modus-themes-inhibit-reload' controls a new behaviour of 5114 automatically reloading the active theme when an option is set via the 5115 Custom interfaces or with 'customize-set-variable'. To opt-in to this 5116 feature, set the variable to a 'nil' value. 5117 5118 Thanks to Philip Kaludercic for implementing this in merge request 40: 5119 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/40>. 5120 5121 In the development phase of this option, a bug was identified 5122 pertaining to recursion, as reported by Gustavo Barros in issue 213: 5123 <https://gitlab.com/protesilaos/modus-themes/-/issues/213>. Changes 5124 have been made to remove that possibility, as found in merge request 5125 45: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/45>. 5126 5127 A thread was started on the emacs-devel mailing list to inquire upon 5128 the technicalities of this option, but it did not gain any traction: 5129 <https://lists.gnu.org/archive/html/emacs-devel/2021-06/msg00828.html>. 5130 5131 As such, we have decided to take our chances by pressing on with this 5132 feature. Users who are interested in it are encouraged to give it a 5133 try and report any possible complications. Issue 213 remains open. 5134 5135 + The 'modus-themes-italic-constructs' is the new name of the variable 5136 'modus-themes-slanted-constructs'. The term "slant" was considered 5137 too vague or technical and some users could have missed the meaning of 5138 this option. 5139 5140 + The 'modus-themes-scale-5' is renamed to 'modus-themes-scale-title' to 5141 better convey its utility. 5142 5143 5144 Changes to the manual 5145 ===================== 5146 5147 + Rewrote or introduced the documentation for all the customisation 5148 options mentioned above. Also updated relevant code samples, such as 5149 in the manual's introduction to the customisation options. Evaluate 5150 this form for an annotated code overview: 5151 5152 (info "(modus-themes) Customization Options") 5153 5154 + Rephrased a reference to "gamma ray values" as "gamma values". Thanks 5155 to Anders Johansson for the contribution in merge request 42: 5156 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/42>. 5157 5158 + Removed the Org macro that would insert the build date in the manual's 5159 introduction. This was required to make the file reproducible, 5160 otherwise it would keep changing each time a new version of Emacs was 5161 built. Refer to Emacs bug#48661 by Glenn Morris: 5162 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=48661>. 5163 5164 + Included note on tweaking the key hints that the Avy package produces. 5165 This is in response to issue 215 by Rudolf Adamkovič: 5166 <https://gitlab.com/protesilaos/modus-themes/-/issues/215>. Thanks to 5167 Nicolas De Jaeghere for providing the text. 5168 5169 + Wrote a note on how to control the underlines that are generated in 5170 compilation-mode buffers and related. It is about configuring the 5171 variable 'compilation-message-face'. 5172 5173 + Documented how to configure the colours that are applied to the names 5174 of the days in the 'M-x calendar' interface. The relevant variable is 5175 'calendar-weekend-days'. 5176 5177 + Elaborated on a "do it yourself" (DIY) guide on how to benefit from 5178 the hidden feature of the themes about how they handle the bold weight 5179 and the italic slant. In short, we do not hardcode values and thus 5180 make it easy for users to specify the particularities of what it means 5181 for a face to have a 'bold' or 'italic' attribute. 5182 5183 5184 Faces and face groups 5185 ===================== 5186 5187 New entries 5188 ----------- 5189 5190 Newly supported packages: 5191 5192 + 'ledger-mode'. Thanks to Pengji Zhang for the feedback in issue 202: 5193 <https://gitlab.com/protesilaos/modus-themes/-/issues/202>. 5194 5195 + 'gotest'. Thanks to Jerry Zhang for the feedback in issue 226: 5196 <https://gitlab.com/protesilaos/modus-themes/-/issues/226>. 5197 5198 + 'css-mode' 5199 5200 New faces for already supported groups: 5201 5202 + 'shr-h1', 'shr-h2', 'shr-h3', 'shr-h4', 'shr-h5', 'shr-h6' of the 5203 shr.el library (simple HTML renderer, as experienced in, for example, 5204 EWW). Those are available for Emacs28, with a patch by me: 5205 <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=49433> 5206 5207 + 'apropos-button' as a generic face that fontifies faces in apropos 5208 buffers. Available for Emacs28, with a patch by me: 5209 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49162>. 5210 5211 + 'selectrum-mouse-highlight'. This makes the mouse hover effect for 5212 selectrum look the same as in most other contexts. Thanks to okamsn 5213 for the feedback in issue 203: 5214 <https://gitlab.com/protesilaos/modus-themes/-/issues/203>. 5215 5216 5217 Review of existing entries 5218 -------------------------- 5219 5220 + Added an ':extend' property to 'next-error' face. This face is used 5221 for pulse effects. It is good to have them extend to the edge of the 5222 window, so that they are easier to spot. Thanks to Gustavo Barros for 5223 the feedback in issue 200, which is about pulse.el: 5224 <https://gitlab.com/protesilaos/modus-themes/-/issues/200>. 5225 5226 + Tweaked the various Apropos faces. The idea was to remove the colour 5227 from the pseudo headings so that we would not get an exaggerated 5228 result of too much variety in the buffer (e.g. that of 'M-x apropos'). 5229 The individual buttons retain their style as links, meaning that they 5230 are governed by the variable 'modus-themes-links'. 5231 5232 + Revised 'whitespace-line' face to make it look like a warning, as it 5233 ought to be. Thanks to Pengji Zhang for the feedback in issue 204: 5234 <https://gitlab.com/protesilaos/modus-themes/-/issues/204>. 5235 5236 + Reworked the colour-coding of the Hydra and Transient packages. These 5237 are meant to tone down some excesses with the standard red and to 5238 adapt other colours to it. Thanks to Gustavo Barros for providing 5239 suggestions and helping me tweak those in issue 206: 5240 <https://gitlab.com/protesilaos/modus-themes/-/issues/206>. 5241 5242 + Recoloured 'transient-argument' to improve its uniqueness in its 5243 context and to better comply with the expectation of hydra-style 5244 colour coding, as noted right above. 5245 5246 + Made the 'org-agenda-done' face conform with the customisation option 5247 'modus-themes-success-deuteranopia'. This means that it will be 5248 coloured in blue instead of green when the option is set to a non-nil 5249 value. 5250 5251 + Grayed out the foreground of the Org block delimiter lines on the 5252 premise that any extra colouration was not needed, given the presence 5253 of a gray background and the overall markup of the block. 5254 5255 + Toned down the colouration of the 'org-code' face, so that it is 5256 consistent with 'org-verbatim' as well as the colours used in opening 5257 and closing lines of blocks. Thanks to Gustavo Barros for suggesting 5258 this change in issue 206, though it went through a couple of reviews: 5259 <https://gitlab.com/protesilaos/modus-themes/-/issues/206>. 5260 5261 + Simplified the inheritance of the 'fixed-pitch' face, which is used 5262 for internal purposes to ensure alignment of elements in buffers that 5263 must cope with mixed font configurations, such as an org-mode file 5264 with 'M-x variable-pitch-font' enabled. 5265 5266 [ Recall that the option 'modus-themes-no-mixed-fonts' can disable 5267 this feature. Also note that the 'mixed-fonts' package, or 5268 equivalent, is not needed while using the Modus themes (though there 5269 is nothing wrong with having them together). ] 5270 5271 + Reduced the overall intensity of 'org-mode-line-clock-overrun'. 5272 Thanks to Gustavo Barros for the feedback in issue 208: 5273 <https://gitlab.com/protesilaos/modus-themes/-/issues/208>. 5274 5275 + Simplified or otherwise tweaked several Org agenda faces to render 5276 possible the new 'modus-themes-org-agenda' variable, as documented 5277 above. Thanks to Gustavo Barros for the feedback in issue 208: 5278 <https://gitlab.com/protesilaos/modus-themes/-/issues/208>. 5279 5280 + Increased ever so slightly the foreground colour of the 'highlight' 5281 face. This can help improve the perception of highlights, such as 5282 upon hovering over a link with the mouse. Thanks to Rudolf Adamkovič 5283 for reporting the potential problem in issue 216: 5284 <https://gitlab.com/protesilaos/modus-themes/-/issues/216>. 5285 5286 + Prevented the override of the 'diff-context' face when users assign a 5287 'bg-only' value to the 'modus-themes-diffs' variable. This makes it 5288 consistent with the intent of this style, which is to work with a 5289 non-nil value for 'diff-font-lock-syntax' (basically to allow the 5290 usual colour highlights of the underlying code syntax in diff 5291 buffers). 5292 5293 + Ensured consistency of all prompt-related faces by introducing a new 5294 face, 'modus-themes-prompt', that is inherited by all others (all 5295 prompt styles are controlled by the variable 'modus-themes-prompts'). 5296 This was originally implemented with the 'comint-highlight-prompt' 5297 face, though that could potentially lead to undefined faces if the 5298 comint library was not loaded. Whereas the 'modus-themes-prompt' 5299 guarantees that we pass a known face at all times. Thanks to Philip 5300 Kaludercic for bringing this potential bug to my attention in a 5301 comment to merge request 43: 5302 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/43#note_615224855>. 5303 5304 + Removed the background colour from the 'widget-inactive' face. It 5305 would create problems in some cases, such as in Custom buffers for 5306 multiple choice options. 5307 5308 + Refined 'calendar-weekend-header' and 'calendar-weekday-header' to 5309 emulate the design of physical calendars and remain truthful to the 5310 expectations set by the default configuration of the calendar.el 5311 library. Weekends now use a faint red, while weekdays are rendered in 5312 the same subtle gray they had before. The underlying principle is to 5313 make weekends convey a subtle warning to the effect that "this is not 5314 a day for work" (notwithstanding precarious economic realities). As 5315 noted above, there is an entry in the manual on how to make all days 5316 look the same, be it gray or faint red. Evaluate this form: 5317 5318 (info "(modus-themes) Note on calendarel weekday and weekend colors") 5319 5320 5321 Request for feedback on a potential version 2.0.0 of the Modus themes 5322 ===================================================================== 5323 5324 While we maintain a cautious stance towards preserving the default 5325 styles, there are some cases where we might be forced to introduce 5326 backward-incompatible changes. 5327 5328 Three such cases that can benefit from user feedback are: 5329 5330 + Issue 196 on 'modus-themes-no-mixed-fonts' 5331 <https://gitlab.com/protesilaos/modus-themes/-/issues/196>. 5332 5333 + Issue 198 on 'modus-themes-hl-line' 5334 <https://gitlab.com/protesilaos/modus-themes/-/issues/198> 5335 5336 [ Note that 'modus-themes-hl-line now accepts a list of properties as 5337 described in the opening sections of this entry. ] 5338 5339 + Issue 218 on 'modus-themes-diffs' 5340 <https://gitlab.com/protesilaos/modus-themes/-/issues/218>. 5341 5342 5343 Miscellaneous 5344 ============= 5345 5346 + Recalibrated the value of the colour 'bg-hl-line-intense' in the 5347 palette 'modus-themes-vivendi-colors'. The change should be 5348 practically indecipherable, though it slightly improves things in 5349 certain contexts. 5350 5351 + Refined the intensity of the three main yellow colours in 5352 'modus-themes-vivendi-colors'. 5353 5354 + Introduced a new 'modus-themes-faces' group so that those are 5355 decoupled from the customisation options in the various Custom 5356 buffers. Thanks to Philip Kaludercic for the patch in merge request 5357 39: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/39>. 5358 5359 + Updated the manual's "Acknowledgements" section to include all new 5360 users who contributed to the project. 5361 5362 Thanks again to everyone involved! 5363 5364 5365 #+end_src 5366 5367 * 1.4.0 5368 :PROPERTIES: 5369 :CUSTOM_ID: h:4c643e3c-5284-4fab-97e8-217bc1c02f5d 5370 :END: 5371 5372 #+begin_src text 5373 Modus themes version 1.4.0 5374 5375 By Protesilaos Stavrou <info@protesilaos.com> on 2021-05-25 5376 5377 This entry records the changes made to the project since the release of 5378 version 1.3.0 on 2021-04-17. There have been around 100 commits in the 5379 meantime, as is the norm. 5380 5381 If you are coming from older versions, please consult the change log 5382 entry for version 1.0.0 with regard to the breaking changes that were 5383 introduced. 5384 5385 Every colour-related modification is always done in accordance with the 5386 overarching accessibility objective of the themes for a minimum contrast 5387 ratio of 7:1 between background and foreground values in their given 5388 combination (the WCAG AAA standard). 5389 5390 URL of the official manual: <https://protesilaos.com/emacs/modus-themes>. Or 5391 read it with Emacs' Info reader by evaluating this form: 5392 5393 (info "(modus-themes) Top") 5394 5395 Remember that the themes are built into Emacs version 28 (current 5396 development target), and are available on GNU ELPA, as well as other 5397 archives. 5398 5399 5400 Customisations variables 5401 ------------------------ 5402 5403 + Redefined the style of 'fg-only' that 'modus-themes-diffs' accepts, so 5404 that it no longer uses a red-green colour coding, but applies a 5405 red-blue distinction instead. The symbol 'fg-only' is a deprecated 5406 alias for the more descriptive 'fg-only-deuteranopia'. 5407 5408 This is done because green text on a light background is one of the 5409 worst combinations for the purposes of legibility, as it does not 5410 stand out in its context and thus forces undesirable compromises. 5411 Whereas red and blue work well in this case, while making the style 5412 accessible to users with red-green colour deficiency (deuteranopia). 5413 To avoid inconsistencies between Modus Operandi and Modus Vivendi, we 5414 replace green with blue in both themes. A full report is available in 5415 issue 183 which was created on April 21, 2021: 5416 <https://gitlab.com/protesilaos/modus-themes/-/issues/183>. 5417 5418 + Introduced the boolean 'modus-themes-success-deuteranopia' which 5419 replaces all instances of green with blue in contexts where a 5420 red-green colour coding is in effect (e.g. Org TODO vs DONE keywords, 5421 isearch current match...). 5422 5423 + Implemented 'modus-themes-mail-citations' to control the colouration 5424 of cited text in email-related buffers, such as Gnus or message.el. 5425 It accepts values nil, 'faint', and 'monochrome'. By default (the nil 5426 value) the text of citations cycles through blue, green, red, yellow 5427 depending on the level of depth. 5428 5429 + Expanded the set of options for 'modus-themes-mode-line' to encompass 5430 the values 'borderless-accented', 'borderless-accented-3d', and 5431 'borderless-accented-moody'. Those are variations of existing styles. 5432 The complete list: 5433 5434 - nil (default) 5435 - 3d 5436 - moody 5437 - borderless 5438 - borderless-3d 5439 - borderless-moody 5440 - accented 5441 - accented-3d 5442 - accented-moody 5443 - borderless-accented 5444 - borderless-accented-3d 5445 - borderless-accented-moody 5446 5447 + Renamed the non-nil values that 'modus-themes-org-blocks' accepts from 5448 'grayscale', 'rainbow' to 'gray-background' and 'tinted-background', 5449 respectively. The new symbols better describe their effect on Org 5450 source blocks, namely, that they affect the background of the block 5451 rather than the foreground. The old symbols will still work but are 5452 considered deprecated aliases of the newer ones. 5453 5454 + Altered the intensity of the 'modus-themes-hl-line' option 5455 'accented-background' to a more noticeable shade of cyan/teal. The 5456 old style was too subtle to have the desired effect. The value 5457 'underline-accented' is not affected by this change, as it still uses 5458 the same subtle background it did before in combination with a more 5459 pronounced underline colour. 5460 5461 + Deleted all deprecation warnings that concerned the transition from 5462 version 0.13.0 of the themes to 1.0.0. Those had been in effect for 5463 several months, spanning four tagged releases. 5464 5465 5466 Faces or face groups 5467 -------------------- 5468 5469 + Reconsidered the use of colour in all email-related citation faces to 5470 avoid exaggerations and reduce complexity. Colour values have been 5471 tweaked to tone down their overall intensity, while the number of 5472 colours has been reduced to four. Gnus and Mu4e have faces for more 5473 levels of citation depth, though those will simply repeat the 5474 four-colour cycle. 5475 5476 + Made the 'message-mml' face look consistent with the rest of the 5477 buffer while composing an email by changing its foreground colour from 5478 a yellow to a cyan variant. 5479 5480 + Refined several faces in the Notmuch group in the interest of harmony: 5481 5482 - Individual message headers in 'notmuch-show-mode' use bold text in 5483 addition to their existing subtle background to better stand out in 5484 their context. The face is 'notmuch-message-summary-face'. 5485 5486 - Tags are no longer set unconditionally to a bold typographic weight. 5487 They become such for unread threads in 'notmuch-search-mode' 5488 buffers, as well as for headers of 'notmuch-show-mode'. 5489 5490 - Removal and addition of tags is now denoted by a strike-through and 5491 an underline effect, respectively, whereas before they both used 5492 underlines with the only difference being their colour. 5493 5494 - The subject line in 'notmuch-search-mode' buffers uses the main 5495 foreground instead of a dimmed one. The field of matching authors 5496 has a tweaked foreground to keep the tabular view easy to read. 5497 5498 - All cryptography-related faces are simplified to not show a coloured 5499 background but only use a foreground colour instead. 5500 5501 + Removed direct support for 'counsel-notmuch' as it already inherits 5502 from the relevant notmuch faces. The package is thus considered 5503 indirectly supported. 5504 5505 + Refrained from setting a background to the 'csv-separator-face' as it 5506 would inevitably colourise the negative space in the tabular view 5507 created by 'csv-align-mode'. A red text colour is used instead, even 5508 though this is not common practice: it is easier to spot for small, 5509 single characters, such as a comma or a semicolon that is meant to 5510 have a special meaning. Thanks to Kevin Fleming for reporting the 5511 problem and for offering feedback on the choice of colour in issue 5512 194: <https://gitlab.com/protesilaos/modus-themes/-/issues/194>. 5513 5514 + Distinguished between ordinary links and widget buttons by removing 5515 the underline from the latter (the 'widget-button' face) and altering 5516 the shade of its foreground colour. Such widgets are used in Emacs' 5517 Custom interfaces and can also be found in the default Notmuch "hello" 5518 buffer that runs 'notmuch-hello-mode'. 5519 5520 + Tweaked the Ediff current faces to be consistent with 'diff-mode' and 5521 related. In practice, this only applies when 'modus-themes-diffs' is 5522 set to a value of 'fg-only-deuteranopia', as it adds a dim background 5523 to the current diff hunk. All other styles of 'modus-themes-diffs' 5524 look the same as before while using Ediff. 5525 5526 + Simplified the faces of 'corfu' to match the current state of the 5527 upstream project. Thanks to Daniel Mendler (its developer) for 5528 reporting this in issue 184: 5529 <https://gitlab.com/protesilaos/modus-themes/-/issues/184>. 5530 5531 + Refined all Eshell faces so that the output of 'ls' is consistent with 5532 the overall aesthetic of the themes. Also made 'eshell-prompt' 5533 inherit from 'comint-highlight-prompt' to look the same as other such 5534 prompts (all are configurable by 'modus-themes-prompts'). 5535 5536 + Revised 'eshell-prompt-extras' and 'eshell-git-prompt' to use colours 5537 and typographic weight that better match the style of the various 5538 configurations they offer. 5539 5540 + Simplified 'eshell-syntax-highlighting' to inherit from the standard 5541 Eshell faces, where appropriate. 5542 5543 + Adjusted the colour of 'centaur-tabs-active-bar-face' and removed the 5544 bespoke 'fg-tab-accent' colour from 'modus-themes-operandi-colors' and 5545 'modus-themes-vivendi-colors' that was only used by it (and which 5546 should have never been introduced to begin with). 5547 5548 + Updated the 'tab-bar-groups' faces to match changes upstream. Thanks 5549 to Fritz Grabo (its developer) for the patch in merge request 35: 5550 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/35>. 5551 5552 + Changed the Ibuffer title and group faces to better differentiate 5553 between group titles and special or non-file-visiting buffers. Thanks 5554 to Nicolas De Jaeghere for the patch in merge request 37: 5555 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/37>. 5556 5557 + Ensured that all faces that denote a "success" state, or which are 5558 expected to be coloured in green in a red-green binary, can use an 5559 appropriate blue colour (or colour combination that involves blue) 5560 instead when 'modus-themes-success-deuteranopia' is set to a non-nil 5561 value. 5562 5563 + Added support for the new 'bookmark-face' in Emacs version 28. This 5564 means that the built-in bookmark.el library is directly supported by 5565 the themes. This face can be disabled by setting 'bookmark-fontify' 5566 to nil. Thanks to Mark Barton for reporting the presence of this new 5567 face and for providing feedback on its style in issue 189: 5568 <https://gitlab.com/protesilaos/modus-themes/-/issues/189>. 5569 5570 + Aligned 'hes-mode' ('highlight-escape-sequences') with the standard 5571 font-lock faces for regexp grouping. This means that it conforms with 5572 changes to the 'modus-themes-syntax' variable. 5573 5574 + Reconfigured the 'org-quote' face to adapt its style depending on the 5575 value of 'modus-themes-org-blocks'. The default is a subtle blue/cold 5576 foreground colour against the main background. When a value of 5577 'gray-background' is assigned to 'modus-themes-org-blocks', the text's 5578 colour becomes that of the main foreground in order to maintain a good 5579 level of legibility. Thanks to Rudolf Adamkovič for the feedback in 5580 issue 190: <https://gitlab.com/protesilaos/modus-themes/-/issues/190>. 5581 5582 + Refashioned the 'show-paren-match-expression' face to make it apply a 5583 bespoke background colour and not override the expression's foreground 5584 colours. This face is used by 'show-paren-mode' when the 5585 customisation variable 'show-paren-style' is set to the 'expression' 5586 value. Thanks to Rudolf Adamkovič for the feedback in issue 191: 5587 <https://gitlab.com/protesilaos/modus-themes/-/issues/191>. 5588 5589 + Made headings level 8 use a fine shade of magenta by default instead 5590 of gray (notwithstanding user changes to 'modus-themes-headings'). 5591 This should have a negligible difference in Org or Outline buffers, 5592 but is more noticeable when editing Elisp in Emacs28 while also using 5593 'outline-minor-mode' and with 'outline-minor-mode-highlight' set to 5594 'override'. That is because several top-level forms use that heading 5595 level with those configurations. 5596 5597 5598 Documentation (the manual) 5599 -------------------------- 5600 5601 + Incorporated a sample configuration block with all customisation 5602 variables and with comment annotations of their available options, in 5603 an attempt to make it easier for users to discover what the themes 5604 provide. 5605 5606 + Replaced all instances of "modeline" with "mode line" for consistency 5607 with the Emacs style. Thanks to Rudolf Adamkovič for the patch that 5608 started this process in merge request 33: 5609 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/33>. 5610 5611 + Wrote note on setting mode line faces that indicate the state of 5612 'god-mode'. Thanks to Rudolf Adamkovič for the feedback in issue 187: 5613 <https://gitlab.com/protesilaos/modus-themes/-/issues/187>. Also 5614 thanks to Rudolf for updating the applicable hook in merge request 34: 5615 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/34>. 5616 5617 + Listed 'org-mode' variables that affect fontification in blocks: 5618 'org-src-fontify-natively', 'org-fontify-whole-block-delimiter-line', 5619 and 'org-fontify-quote-and-verse-blocks'. This complements the 5620 already documented variables 'org-fontify-whole-heading-line' and 5621 'org-fontify-done-headline' that pertain to headings. 5622 5623 + Included note on fontifying inline Latex expressions in Org buffers. 5624 Thanks to Rudolf Adamkovič for the feedback in issue 190: 5625 <https://gitlab.com/protesilaos/modus-themes/-/issues/190>. 5626 5627 + Elaborated on the use of 'face-remap-add-relative' by means of sample 5628 code that cycles through arbitrary colours for the 'region' face. 5629 This is filed under the "Do It Yourself" (DIY) section. 5630 5631 + Provided a DIY method for adapting the fontification of Org source 5632 block delimiter lines to the value of 'modus-themes-org-blocks'. 5633 5634 + Expanded the DIY entry on overriding the saturation of the active 5635 theme's colours with a method that combines the programmatic approach 5636 with manual overrides. The user can thus specify the colour values 5637 they want to override and let the rest be handled by Elisp. 5638 5639 + Introduced a section with answers to Frequently Asked Questions (FAQ) 5640 about the design of the themes as well as recommendations on how to 5641 ensure optimal reading conditions or start thinking about them. The 5642 questions are: 5643 5644 - Is the contrast ratio about adjacent colors? 5645 - What does it mean to avoid exaggerations? 5646 - Why are colors mostly variants of blue, magenta, cyan? 5647 - What is the best setup for legibility? 5648 5649 5650 Miscellaneous 5651 ------------- 5652 5653 + Removed superfluous code from internal functions and adapted their 5654 indentation to make them easier to read. 5655 5656 + Recalibrated some values in 'modus-themes-vivendi-colors' to ensure 5657 consistency in luminance with other colours that are used in their 5658 context. Those are subtle changes that can only be discerned in 5659 side-by-side comparisons of the before and after states. Thanks to 5660 André Alexandre Gomes for the feedback in issue 193: 5661 <https://gitlab.com/protesilaos/modus-themes/-/issues/193>. 5662 5663 + Changed the saturation and hueness of the bespoke 'fg-comment-yellow' 5664 in 'modus-themes-operandi-colors' and 'modus-themes-vivendi-colors' to 5665 better contrast with its context, while still keeping its luminance 5666 consistent with its role as a colour for comments in code. This is 5667 used when 'modus-themes-syntax' is configured appropriately (read its 5668 doc string or consult the manual). 5669 5670 + Attempted to add explicit support for the faces of the built-in 5671 pulse.el library, but ultimately opted against them as the doc string 5672 of 'pulse-highlight-face' advises against customising it, even though 5673 it is not clear from the source code in emacs.git what the problem 5674 could be. We shall reconsider this case for the next release cycle. 5675 Thanks to Gustavo Barros for the feedback on several aspects of this 5676 topic in issues 185 and 200: 5677 5678 - <https://gitlab.com/protesilaos/modus-themes/-/issues/185> 5679 - <https://gitlab.com/protesilaos/modus-themes/-/issues/200> 5680 5681 + Took the feedback of John Haman in issue 199 as a reminder to complete 5682 the set of possible values for the 'modus-themes-mode-line' variable: 5683 <https://gitlab.com/protesilaos/modus-themes/-/issues/199>. 5684 #+end_src 5685 5686 * 1.3.0 5687 :PROPERTIES: 5688 :CUSTOM_ID: h:5063c0c5-832e-4577-936e-d602b07d6d79 5689 :END: 5690 5691 #+begin_src text 5692 Modus themes version 1.3.0 5693 5694 By Protesilaos Stavrou <info@protesilaos.com> on 2021-04-17 5695 5696 This entry records the changes introduced to the project since the 5697 publication of version 1.2.0 (2021-03-04). There have been around 100 5698 commits in the meantime, as is the norm with all releases hitherto. 5699 5700 Every colour-related modification documented herein conforms with the 5701 overarching accessibility objective of the themes for a minimum contrast 5702 ratio of 7:1 between background and foreground values in their given 5703 combination (the WCAG AAA standard). 5704 5705 As the official manual is referenced several times throughout this log, 5706 make sure to store its URL: <https://protesilaos.com/emacs/modus-themes>. Or 5707 read it from Emacs' Info reader by evaluating this form: 5708 5709 (info "(modus-themes) Top") 5710 5711 If you are coming from older versions, please consult the change log 5712 entry for version 1.0.0 with regard to the breaking changes that were 5713 introduced. 5714 5715 Remember that the themes are built into Emacs28, and are available on 5716 GNU ELPA, as well as other archives. 5717 5718 5719 Customisation options 5720 --------------------- 5721 5722 + The old 'modus-themes-intense-hl-line' boolean variable has been 5723 replaced by 'modus-themes-hl-line', which provides several options for 5724 how to style the current line of 'hl-line-mode'. To retain the old 5725 effect, one must do this: 5726 5727 ;; Replacement for (setq modus-themes-intense-hl-line t) 5728 (setq modus-themes-hl-line 'intense-background) 5729 5730 The list of possible values: 5731 5732 1. nil (default) 5733 2. intense-background 5734 3. accented-background 5735 4. underline-neutral 5736 5. underline-accented 5737 6. underline-only-neutral 5738 7. underline-only-accented 5739 5740 The doc string of 'modus-themes-hl-line' as well as the manual 5741 describe the specifics. Thanks to Manuel Uberti for the feedback in 5742 commit b020592: 5743 <https://gitlab.com/protesilaos/modus-themes/-/commit/b020592e1a96d6e00d7d03faf9c293ec6081d49c>. 5744 5745 + The 'modus-themes-mode-line' variable now accepts three new "accented" 5746 styles that complement the existing set: 5747 5748 1. nil (default) 5749 2. 3d 5750 3. moody 5751 4. borderless 5752 5. borderless-3d 5753 6. borderless-moody 5754 7. accented 5755 8. accented-3d 5756 9. accented-moody 5757 5758 + The 'modus-themes-region' is extended with two new options of an 5759 "accent" background: 5760 5761 1. nil (default) 5762 2. no-extend 5763 3. bg-only 5764 4. bg-only-no-extend 5765 5. accent 5766 6. accent-no-extend 5767 5768 + The default value of 'modus-themes-headings' for per-level styles can 5769 now be set to nil. This fixes an inconsistency between the fallback 5770 value, which accepted nil, and the per-level styles which did not. 5771 Thanks to Mauro Aranda for reporting this in issue 163: 5772 <https://gitlab.com/protesilaos/modus-themes/-/issues/163>. 5773 5774 Please read the manual for the specifics of this variable, as it is an 5775 alist that accepts several possible combinations. 5776 5777 5778 Updates to the manual 5779 --------------------- 5780 5781 + Rewrote the sections that cover the aforementioned customisation 5782 options. 5783 5784 - For 'modus-themes-mode-line', we had to revise the recommendation 5785 for setting 'face-near-same-color-threshold' to 45000. That value 5786 is appropriate for the 'moody' and 'borderless-moody' options. 5787 Whereas for 'accented-moody' the number should be raised to 70000. 5788 Thanks to Nicolas De Jaeghere for providing this piece of 5789 information: 5790 <https://gitlab.com/protesilaos/modus-themes/-/commit/ab6ba698269f012ec880b690282264649bfb3b0d#note_551342198> 5791 5792 + Rephrased the GNU Free Documentation License quote to match the style 5793 of other manuals that are also built into Emacs. 5794 5795 + Documented 'org-mode' variables that affect the looks of various 5796 fontification styles. 5797 5798 + Simplified the 'kbd' macro that is declared in modus-themes.org to 5799 allow GNU ELPA's build system to parse the file for Emacs 26. 5800 5801 + Documented existing support for 'tab-bar-mode' and 'tab-line-mode'. 5802 5803 + Wrote a note on how to configure the 'dimmer.el' library by Neil 5804 Okamoto, in order to guarantee consistent results with the themes. 5805 The key is to use the RGB colour space instead of CIELAB. 5806 5807 + Included note on shr.el fonts and how those are used by EWW and 5808 Elfeed. 5809 5810 + Added a "Do-It-Yourself" (DIY) section on how to remap buffer-local 5811 faces. 5812 5813 + Detailed a DIY method to make the buffer-local backdrop of a pdf-tools 5814 page use a distinct colour than the default white for Modus Operandi. 5815 Extended the same principle to Modus Vivendi and described how to 5816 adapt to theme changes (such as via 'modus-themes-toggle'). Thanks to 5817 Utkarsh Singh for providing feedback on this topic in issue 175: 5818 <https://gitlab.com/protesilaos/modus-themes/-/issues/175>. 5819 5820 + Elaborated on DIY techniques to programmatically override the 5821 saturation of all colours specified by the active Modus theme. Thanks 5822 to user pRot0ta1p for the feedback in issue 166: 5823 <https://gitlab.com/protesilaos/modus-themes/-/issues/166>. 5824 5825 5826 Support for packages 5827 -------------------- 5828 5829 These are added to the already comprehensive list of explicitly 5830 supported packages: 5831 5832 + corfu 5833 + embark 5834 5835 + pandoc-mode. Thanks to Farasha Euker for the feedback in issue 171: 5836 <https://gitlab.com/protesilaos/modus-themes/-/issues/171>. 5837 5838 + tab-bar-groups 5839 + telega 5840 + vertico 5841 5842 Also added support for the 'help-key-binding' face which is part of 5843 Emacs 28. 5844 5845 5846 Changes to already supported faces or face groups 5847 ------------------------------------------------- 5848 5849 + Renamed all internal faces that the themes defined from 5850 "modus-theme-*" to "modus-themes-*". 5851 5852 + Refashioned all Ediff faces in the process of a major review of this 5853 tools' overall design. The manifold changes are: 5854 5855 - All inactive diffs respect the underlying fontification 5856 (e.g. programming syntax highlighting). Before they would override 5857 it with a gray foreground. 5858 5859 - All inactive diffs have been toned down, as their background is a 5860 finer shade of gray than the prominent one that was used before. 5861 5862 - There no longer is a visual distinction between even and odd 5863 inactive diffs (by means of different shades of gray). We are of 5864 the opinion that such subtleties, whose utility is marginal at best, 5865 have no place in themes that are designed for accessibility. 5866 5867 - All bespoke gray colour combinations that were only intended for 5868 those inactive diffs have thus been removed from each theme's 5869 palette. 5870 5871 - Active diffs follow the same style as diff-mode, to ensure 5872 theme-wide consistency (all diff styles are controlled by the 5873 variable 'modus-themes-diffs'). 5874 5875 This topic was discussed at length (with screenshots) in issue 169: 5876 <https://gitlab.com/protesilaos/modus-themes/-/issues/169>. Thanks to 5877 peniblec and Nicolas De Jaeghere for their feedback. 5878 5879 + Made 'smerge-markers' and 'vdiff-closed-fold-face' look like the 5880 headings in 'diff-mode' in the interest of consistency, especially 5881 while configuring the 'modus-themes-diffs' variable. 5882 5883 + Ensured consistency between all faces that pertain to key bindings in 5884 contexts where the hint to the key is active, in that pressing the key 5885 performs the action (e.g. Magit's transient buffers, which-key,...). 5886 The 'help-key-binding' for Emacs 28 is not included in this group, 5887 because it applies in cases where the keys are not active, such as in 5888 Help buffers. 5889 5890 + Refined 'epa-validity-disabled' and 'epa-validity-high' faces. The 5891 former no longer uses a background, as that was considered an 5892 exaggeration. While the latter is cast in a cyan hue instead of green 5893 for greater clarity (this relates to the general push to optimise for 5894 red-green colour deficiency, which means to only use green where it is 5895 absolutely necessary and, in such cases, to provide for a blue-ish 5896 alternative, as with the 'deuteranopia' value that can be assigned to 5897 'modus-themes-diffs'). 5898 5899 + Reworked 'ace-window', 'avy', and 'magit-blame' faces to ensure that 5900 their overlays do not inherit the face properties of underlying text, 5901 such as a different font family or height. Thanks to Nicolas De 5902 Jaeghere for the multiple merge requests and the concomitant feedback: 5903 5904 - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/27>. 5905 - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/29>. 5906 - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/30>. 5907 - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/31>. 5908 - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/32>. 5909 5910 Also thanks to Damien Cassou for reporting an intermediate problem 5911 with 'avy' in issue 177; a problem that was eventually addressed by 5912 Nicolas De Jaeghere in merge request 31 (cited above): 5913 <https://gitlab.com/protesilaos/modus-themes/-/issues/177>. 5914 5915 + Optimised the colour combinations used by 'avy' to improve the 5916 distinction between consecutive characters. 5917 5918 + Reduced the brightness of EWW certificate faces, as they would attract 5919 disproportionate attention to themselves. 5920 5921 + Reworked all EWW text field and button faces to look more like what 5922 they are supposed to. 5923 5924 + Removed the slant and distinct foreground from the 'org-quote' face, 5925 as they would interfere with emphasis within the quote block. Thanks 5926 to Farasha Euker for the feedback in issue 171: 5927 <https://gitlab.com/protesilaos/modus-themes/-/issues/171>. 5928 5929 + Reduced the intensity in colouration of 'org-code' and 'org-macro' in 5930 order to avoid exaggerations and prevent their compounding effect in 5931 technical documents that include a high concentration of those faces. 5932 They still retain their overall character and continue to look like 5933 variants of 'org-verbatim'. 5934 5935 + Extended support for Selectrum's new 'selectrum-quick-keys-highlight' 5936 and 'selectrum-quick-keys-match'. 5937 5938 + Adjusted a few bongo faces for improved consistency and a more 5939 pleasant result overall. Quote from commit 07224cda08: 5940 5941 Refine bongo faces for consistency 5942 5943 The previous design was meant to keep the track fields distinct 5944 from each other. However the use of yellow was not good 5945 aesthetically: it does not fit with the rest of the theme. 5946 5947 Upon further experimentation, I realised that the album field 5948 (yellow) is only present when the artist and title fields are also 5949 available: first is the title, then the artist, and finally the 5950 album. This is true even with 'bongo-join-inserted-tracks' set to 5951 a non-nil value. So changing the face from yellow to a neutral 5952 value is safe. 5953 5954 The other two faces are adapted to look better in the new context. 5955 5956 + Made more command prompt faces respond to changes in the variable 5957 'modus-themes-prompts'. This concerns faces from the groups cider, 5958 circe, erc, indium, rcirc. 5959 5960 + Refashioned typescript faces, making them more prominent by default, 5961 while also exposing them to the value of 'modus-themes-syntax'. 5962 5963 + Revised the style of 'info-colors-ref-item-command'. This makes 5964 commands look the same as functions, which is technically correct. It 5965 also predicates the exact style on the value of the variable 5966 'modus-themes-syntax'. 5967 5968 + Made all enh-ruby-mode faces adapt to 'modus-themes-syntax'. Same for 5969 julia. 5970 5971 + Reconfigured all ztree faces for stylistic consistency. The 5972 'ztreep-diff-model-add-face' now responds to the 'deuteranopia' value 5973 that can be passed to 'modus-themes-diffs'. 5974 5975 + Appended the ':extend t' attribute to 'gnus-summary-cancelled' and 5976 'gnus-summary-selected'. These are only noticeable on Emacs 28 5977 following commit 88409b21c2 in emacs.git. 5978 5979 + Tweaked all faces of 'highlight-changes-mode' to better deliver on the 5980 intent of that mode. 5981 5982 + Opted to unconditionally render all 'dired-async' faces in a bold 5983 typographic weight, instead of basing them on a non-nil value for 5984 'modus-themes-bold-constructs'. Also changed 'dired-async-message' to 5985 a blue foreground, which further improves the themes' performance for 5986 red-green colour deficiency. 5987 5988 + Adjusted the colours of some 'notmuch-crypto-*' faces to better convey 5989 their meaning. 5990 5991 + Removed remaining conditional logic for underline styles in some 5992 spell- and linter- related faces to ensure that all such cases are 5993 controlled by the variable 'modus-themes-lang-checkers' (building on 5994 work that had been done in the past). 5995 5996 + Stopped changing 'keycast-key' to match the modeline style, as that 5997 diluted the meaning of the variable 'modus-themes-mode-line'. 5998 5999 + Tweaked calendar and diary faces for stylistic effect, except for the 6000 'diary' face which has been converted from a green to a blue variant 6001 for the purposes of coping with cases of red-green colour deficiency. 6002 6003 6004 Miscellaneous 6005 ------------- 6006 6007 + Clarified the changes in the backward-incompatible transition from 6008 version 0.13.0 of the themes to >= 1.0.0. Thanks to Damien Cassou for 6009 reporting the absence of easy-to-find information in issue 174: 6010 <https://gitlab.com/protesilaos/modus-themes/-/issues/174>. 6011 6012 + There were three point releases after 1.2.0 which refined certain 6013 aspects of the themes' packaging so that they could work both as 6014 built-in themes for Emacs as well as in package format via the likes 6015 of GNU ELPA. Those issues were eventually resolved by Basil 6016 L. Contovounesios: 6017 6018 - Issue 162: <https://gitlab.com/protesilaos/modus-themes/-/issues/162>. 6019 - Emacs bug#45068: <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45068#218>. 6020 6021 + Rewrote the 'modus-themes-headings' variable's declaration to improve 6022 its presentation in Custom interfaces. Thanks to Mauro Aranda for 6023 submitting the patch for commit 1c60927ebd. 6024 6025 + Applied the ':format' keyword to all 'defcustom' forms, based on the 6026 aforementioned patch. This should make all options look better in the 6027 various Custom interfaces. Thanks to Mauro Aranda for the feedback in 6028 issue 163: <https://gitlab.com/protesilaos/modus-themes/-/issues/163>. 6029 6030 + Refined the colour values 'bg-alt' and 'bg-dim' in 'modus-vivendi' to 6031 improve their instantiation on Textual User Interfaces. In 6032 particular, recalibrated the blue channel of light so that when the 6033 TUI cannot render the colour directly, it defaults to a gray value 6034 instead of a dark blue. 6035 6036 + Added a "Last-Modified" meta header to modus-themes.el, with gets 6037 updated automatically and uses a timestamp. This helps users who 6038 track the themes' git repo directly. Thanks to Togan Muftuoglu for 6039 the feedback in issue 168: 6040 <https://gitlab.com/protesilaos/modus-themes/-/issues/168>. 6041 6042 + Expanded the palette of each theme with accent values that are 6043 reserved for use in the tab-bar. Those are used by the newly 6044 supported 'tab-bar-groups' package. 6045 6046 + Recalibrated a few colour combinations to improve their resulting 6047 legibility. The changes should not be noticeable to the untrained 6048 eye. Interested parties can consult commit 349ea4a943. 6049 6050 + Tweaked the hueness of the 'yellow-active' colour of 'modus-operandi'. 6051 6052 Thanks once again to everyone involved! 6053 #+end_src 6054 6055 * 1.2.0 6056 :PROPERTIES: 6057 :CUSTOM_ID: h:751083a7-3514-40f5-9928-17a11de5b439 6058 :END: 6059 6060 #+begin_src text 6061 Modus themes version 1.2.0 6062 6063 By Protesilaos Stavrou <info@protesilaos.com> on 2021-03-04 6064 6065 This entry records the changes introduced to the project since the 6066 publication of version 1.1.0 (2021-01-24). There have been close to 100 6067 commits in the meantime. 6068 6069 Every colour-related modification documented herein conforms with the 6070 overarching accessibility objective of the themes for a minimum contrast 6071 ratio of 7:1 between background and foreground values in their given 6072 combination (the WCAG AAA standard). 6073 6074 As the official manual is referenced several times throughout this log, 6075 make sure to store its URL: <https://protesilaos.com/emacs/modus-themes>. Or 6076 read it from Emacs' Info reader by evaluating this form: 6077 6078 (info "(modus-themes) Top") 6079 6080 If you are coming from older versions, please consult the change log 6081 entry for version 1.0.0 with regard to the breaking changes that were 6082 introduced. 6083 6084 6085 Prior notice: Upgrading the themes in Emacs28 and GNU ELPA 6086 ---------------------------------------------------------- 6087 6088 Emacs28, the current development target, now includes a 'require-theme' 6089 function. It is a prerequisite to upgrading the Modus themes to their 6090 current version. Prior to the definition of that function, the themes 6091 could not transition from their 0.13.0 version to >=1.0.0. Special 6092 thanks to Basil L. Contovounesios for making it happen, as well Mauro 6093 Aranda and Eli Zaretskii for their feedback and support. 6094 6095 Expect the Modus themes in upstream Emacs to be updated shortly after 6096 the publication of this document. 6097 6098 GNU ELPA currently ships version 0.12.0 of the two standalone packages 6099 'modus-operandi-theme' and 'modus-vivendi-theme'. This will change in 6100 the immediate future, as a new 'modus-themes' package will succeed them. 6101 That new package will be built directly from emacs.git, as it must now 6102 become a ':core' entity instead of being listed as an ':external' one. 6103 6104 Again, expect a patch to be applied to elpa.git shortly after this 6105 document goes live. 6106 6107 6108 Customisation options 6109 --------------------- 6110 6111 [ All variables and their values are documented in the themes' manual. 6112 The default value is always nil. ] 6113 6114 + The new boolean 'modus-themes-subtle-line-numbers' variable will make 6115 the effect of 'display-line-numbers-mode' more subtle when set to a 6116 non-nil value. It removes the underlying background of the unfocused 6117 lines while toning down their foreground. 6118 6119 + The 'modus-themes-diffs' variable now accepts a 'deuteranopia' value. 6120 This optimises for red-green colour deficiency in all modes that show 6121 diffs (diff-mode, ediff, Magit...). In practice, all instances of 6122 green are replaced with appropriate blue hues. For more on the 6123 matter, read the report which also includes pictures: 6124 <https://protesilaos.com/codelog/2021-02-25-modus-themes-diffs-deuteranopia/>. 6125 6126 + The 'modus-themes-syntax' variable now reads 'faint-yellow-comments' 6127 as a valid value. This has the same scope as the existing 'faint' 6128 value with the added effect of assigning a yellow tint to comments: it 6129 tones down the saturation of colours that apply to code syntax 6130 (standard font-lock faces and others inheriting from them). 6131 6132 + The 'modus-themes-links' variable is expanded to accept the new value 6133 of 'neutral-underline-only': it removes the foreground from the link 6134 and draws a neutral gray underline below it. 6135 6136 6137 Refinements to existing packages or face groups 6138 ----------------------------------------------- 6139 6140 + Refashioned all faces that pertain to emails, including Gnus, Mu4e, 6141 Notmuch, and the standard 'message.el' library. This concerns the 6142 colours that apply to the message header keys and their values, as 6143 well as quote levels. 6144 6145 - Introduced more contrasting hues for headings and made more 6146 considerate use of bold typography. The new colour combinations are 6147 better suited for the task of delivering a sense of structure; 6148 structure that is at once effective and subtle. 6149 6150 - Applied less intense colours throughout all quotation levels. 6151 6152 - Revised the sequencing of hues in quotation levels to allow distinct 6153 levels to stand out more without relying on excessive saturation. 6154 6155 - Aligned the styling of Notmuch header dates with their counterparts 6156 in other similar contexts, in pursuit of theme-wide consistency. 6157 6158 + Rewrote the faces of EBDB to achieve a better sense of structure. 6159 6160 + Refined the colour combinations of change-log and log-view buffers to 6161 make it easier to discern distinct elements. 6162 6163 + Tweaked the colours of certain Elfeed constructs to improve the 6164 overall presentation of its search buffers. 6165 6166 + Changed the colour combinations of 'M-x re-builder' to amplify the 6167 distinction between the matching regexp groups while still reducing 6168 their overall intensity. 6169 6170 + Reconfigured the 'diff-changed' face to always extend its background 6171 to the edge of the window. Such "changed" lines are visible in 6172 'diff-mode' buffers when the command 'diff-unified->context' is 6173 invoked. 6174 6175 + Tweaked the colour combinations of ancillary faces in diff buffers 6176 when the variable 'modus-themes-diffs' is set to the value 'fg-only'. 6177 In particular: 6178 6179 - Removed the subtle background from the diff hunk headings and changed 6180 their colour to ensure good visibility---guarantees a sense of 6181 structure. 6182 6183 - Made the context lines inherit the default foreground colour (pure 6184 black/white), so that it contrasts better with red, green, and 6185 yellow text. 6186 6187 - Applied an accented foreground to the diff header. This is to 6188 ensure that it is not mistaken for a diff hunk's context. 6189 6190 All these guarantee that the foreground-only highlights in line-wise 6191 differences draw more attention to themselves. 6192 6193 + Aligned all the standard hi-* faces with their default aesthetics. 6194 Those are used by commands such as 'highlight-symbol-at-point'. 6195 Thanks to Philip K. for the valuable feedback in issue 157: 6196 <https://gitlab.com/protesilaos/modus-themes/-/issues/157>. 6197 6198 + Removed obsolete Consult faces and added new ones, so as to remain in 6199 sync with the latest developments in that project. Thanks to Daniel 6200 Mendler (Consult's maintainer) for reporting the inconsistency in 6201 issue 155: <https://gitlab.com/protesilaos/modus-themes/-/issues/155>. 6202 6203 - 'consult-preview-line' now retains fontification on the current 6204 line, instead of applying its own foreground. 6205 6206 - 'consult-narrow-indicator' is refashioned to be colour-coded in a 6207 consistent way with 'consult-async-split', as both denote the 6208 delineation of a given scope. 6209 6210 - 'consult-imenu-prefix' contrasts better with text on its current 6211 line, while it adapts to possible customisations performed on the 6212 Consult front. 6213 6214 + Expanded the coverage of 'marginalia' faces to two include 6215 'marginalia-char' and 'marginalia-type'. This is done in the interest 6216 of internal consistency between the elements of this set, as their 6217 defaults were also accessible (they inherit from standard faces that 6218 we already support). 6219 6220 + Opted to render the Notmuch logo in a neutral gray backdrop. This was 6221 deemed necessary as the logo is an immutable image file that consists 6222 of black and white strokes. Black and white are the main background 6223 values of 'modus-vivendi' and 'modus-operandi' respectively, which 6224 could lead to confusion. The neutral gray ensures that the logo is 6225 visible at all times. Thanks to Utkarsh Singh for the feedback in 6226 issue 122: <https://gitlab.com/protesilaos/modus-themes/-/issues/122>. 6227 6228 + Refined the dedicated colour values used for diff hunk headings, as 6229 seen in diff-mode buffers or Magit. The new colours yield text that 6230 is easier to read by slightly toning down the combined intensity of 6231 background+foreground. 6232 6233 + Removed the subtle background of 'diff-header' and 'diff-file-header'. 6234 The header's foreground and textual representation suffice to render 6235 it distinct in its context. 6236 6237 + Tweaked 'org-agenda-structure' and 'org-scheduled' to enhance the 6238 usability of Org Agenda buffers. 6239 6240 - Made 'org-agenda-structure' use the largest possible height that we 6241 expose to users: 'modus-themes-scale-5'. 6242 6243 - Re-calibrated the hueness of 'org-scheduled' and amplified its 6244 saturation, in order to better convey the meaning of a scheduled 6245 task. 6246 6247 Thanks to Morgan Smith for the valuable feedback in issue 153: 6248 <https://gitlab.com/protesilaos/modus-themes/-/issues/153>. 6249 6250 + Tweaked the faces of the 'bongo' package to enhance the 6251 distinctiveness of the constructs they style. 6252 6253 + Adjusted the overall aesthetic of calendar faces in the interest of 6254 theme-wide consistency. 6255 6256 + Aligned the visual metaphors of 'org-code' with those of 'org-macro' 6257 and 'org-verbatim', by ensuring that a subtle background is present 6258 behind the affected text, while the foreground conforms with the norms 6259 of the 'modus-themes-no-mixed-fonts' customisation option. 6260 6261 + Made quoted text in Info buffers look the same as 'org-verbatim' and 6262 Markdown's inline code. 6263 6264 + Instructed the faces of 'info-colors' to inherit from appropriate 6265 font-lock faces. This guarantees that everything works as intended 6266 with the various values of 'modus-themes-syntax'. 6267 6268 + Refined the language tag of Markdown fenced blocks so that it does 6269 attract unwarranted attention while delivering on its intended 6270 purpose. 6271 6272 + Rendered explicit the slant of ace-window hints, guaranteeing that it 6273 does not inherit from the underlying text. Thanks to Nicolas De 6274 Jaeghere for the patch: 6275 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/27>. 6276 6277 [ Some more changes have been discussed, but those require tweaks to 6278 the upstream package. ] 6279 6280 + Ensured that the 'org-tree-slide-header-overlay-face' never draws an 6281 overline when the variable 'modus-themes-headings' includes a relevant 6282 setting for heading level 1. Such as with the following example (all 6283 customisation options are documented in the themes' manual): 6284 6285 (setq modus-themes-headings 6286 '((1 . section) 6287 ...)) 6288 6289 + Extended support for the new 'tab-line-tab-inactive-alternate' face as 6290 that occurs in Emacs28 (current development target). It comes into 6291 effect when the variable 'tab-line-tab-face-functions' includes a 6292 value of 'tab-line-tab-face-inactive-alternating'. 6293 6294 6295 Newly supported packages 6296 ------------------------ 6297 6298 + bbdb :: Thanks to Nicolas De Jaeghere in issue 128: 6299 <https://gitlab.com/protesilaos/modus-themes/-/issues/128>. 6300 6301 + mmm-mode :: Thanks to Davor Rotim for the feedback in issue 161: 6302 <https://gitlab.com/protesilaos/modus-themes/-/issues/161>. 6303 6304 + quick-peek :: Thanks to Burgess Chang for the feedback in issue 151: 6305 <https://gitlab.com/protesilaos/modus-themes/-/issues/151> 6306 6307 + selectrum-prescient :: This new package was brought to my attention by 6308 Manuel Uberti. The intent is to phase out the faces in Selectrum, 6309 namely 'selectrum-primary-highlight', 'selectrum-secondary-highlight', 6310 though those will still be supported by the Modus themes for the 6311 foreseeable future. 6312 6313 + shortdoc 6314 6315 + spray 6316 6317 + terraform-mode :: Thanks to Kevin Fleming for the feedback in issue 6318 159: <https://gitlab.com/protesilaos/modus-themes/-/issues/159>. 6319 6320 + vc-dir (Emacs28) 6321 6322 6323 Theme-related contributions to the wider community 6324 -------------------------------------------------- 6325 6326 + Contributed the faces for 'vc-dir' in Emacs28 and applied them to all 6327 VC backends: <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=46358> and 6328 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=46745>. 6329 6330 + Contributed a new face and some related tweaks to Emacs' 6331 'shortdoc.el': <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=46748>. 6332 6333 + Added faces to the 'tab-bar-echo-area.el' package: 6334 <https://github.com/fritzgrabo/tab-bar-echo-area/pull/2>. 6335 6336 + Reported issue that led to the review of the header face in 6337 'org-tree-slide': <https://github.com/takaxp/org-tree-slide/issues/38>. 6338 6339 + Helped refine the faces of the 'rlist.el' package: 6340 <https://gitlab.com/mmemmew/rlist/-/commit/386f506d0110bebedd3a48ff972adba96e2232eb>. 6341 6342 6343 Documentation updates 6344 --------------------- 6345 6346 + Wrote about the indirect support for the 'goggles' package. I had 6347 helped write its faces, as was documented in the changelog for version 6348 1.1.0 of the themes. Thanks to Manuel Uberti for bringing this to my 6349 attention in issue 158: 6350 <https://gitlab.com/protesilaos/modus-themes/-/issues/158>. 6351 6352 + Explained that any changes to 'custom-theme-load-path' and/or 6353 'custom-theme-directory' should be performed before the themes are 6354 loaded. Thanks to Adrian Manea for the feedback in issue 156: 6355 <https://gitlab.com/protesilaos/modus-themes/-/issues/156>. 6356 6357 + Included the symbol 'bg-only' in the 'modus-themes-diffs' section of 6358 the manual. Thanks to user "iSeeU" for reporting the omission: 6359 <https://gitlab.com/protesilaos/modus-themes/-/issues/154>. 6360 6361 + Expanded the manual's entry on the semantics of the optional heading 6362 scale used by the themes (the variables 'modus-themes-scale-[1-5]'). 6363 The values 1-4 apply to regular headings, with 4 being the largest on 6364 the scale. While 'modus-themes-scale-5' is reserved for special 6365 headers, such as Org '#+title:' or the Org Agenda's structure. Recall 6366 that those variables only come into effect if the boolean variable 6367 'modus-themes-scale-headings' is set to a non-nil value (it is nil by 6368 default). 6369 6370 + Made several changes to the 'modus-themes.org' file in an effort to 6371 improve the accuracy of the generated Texinfo markup. Thanks to Glenn 6372 Morris and Richard Stallman for their valuable feedback in 6373 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45143>. 6374 6375 + Recorded a note in the manual on the intended colouration of 6376 backgrounds applied by 'mmm-mode'. It explains what the constraints 6377 are from an accessibility standpoint and how users can configure 6378 things locally for more colourful, yet inaccessible, backgrounds. 6379 Thanks to Davor Rotim for the valuable feedback in issue 161: 6380 <https://gitlab.com/protesilaos/modus-themes/-/issues/161>. 6381 6382 + Refined the manual's note on prism.el, simplifying the code samples 6383 and clarifying the commentary. 6384 6385 + Wrote indices for concepts, variables, functions, which are rendered 6386 in the Info manual. 6387 6388 + Elaborated on the possibility---and relative merits---of implementing 6389 a theme-agnostic hook for advanced face configurations, as opposed to 6390 relying on 'modus-themes-after-load-theme-hook'. Thanks to Daniel 6391 Mendler for the valuable feedback in issue 131: 6392 <https://gitlab.com/protesilaos/modus-themes/-/issues/131>. 6393 6394 6395 Miscellaneous 6396 ------------- 6397 6398 + Rewrote the documentation string of the 'deftheme' declaration of 6399 'modus-operandi' and 'modus-vivendi'. 6400 6401 + Provided links to the Info nodes that discuss each of the 'defcustom' 6402 declarations. 6403 6404 + Wrote doc strings for every custom face that the themes define. 6405 #+end_src 6406 6407 6408 * 1.1.0 6409 :PROPERTIES: 6410 :CUSTOM_ID: h:bb0e16a9-8a8b-4b1b-9d62-b1715295247b 6411 :END: 6412 6413 #+begin_src text 6414 Modus themes version 1.1.0 6415 6416 By Protesilaos Stavrou <info@protesilaos.com> on 2021-01-24 6417 6418 This entry records the changes introduced to the project since the 6419 publication of version 1.0.0 (2020-12-05). There have been around 150 6420 commits in the meantime, qualifying this as one of the largest releases 6421 to date. 6422 6423 As always, every colour-related modification documented herein conforms 6424 with the overarching accessibility objective of the themes for a minimum 6425 contrast ratio of 7:1 between background and foreground values in their 6426 given combination (conformance with the WCAG AAA standard). 6427 6428 As the official manual is referenced several times, make sure to store 6429 its URL: <https://protesilaos.com/emacs/modus-themes>. 6430 6431 If you are coming from older versions, please consult the change log 6432 entry for version 1.0.0. 6433 6434 6435 Overview 6436 -------- 6437 6438 + We have brought back the options that were present in version 0.13.0 6439 or earlier which allowed users to override colors for either---or 6440 both---of Modus Operandi and Modus Vivendi. Compared to the old 6441 mechanism, the new one is more robust and should work regardless of 6442 whether users run byte compiled code or not. This is considered and 6443 advanced, "do-it-yourself" pathway to theme customisation. It is 6444 discussed at length in the manual. 6445 6446 + The new 'modus-themes-with-colors' macro makes it possible to read 6447 palette variables from the active theme and, thus, pass them to 6448 arbitrary functions or variables. Again, this is part of the advanced 6449 customisations that are covered in the manual. 6450 6451 + Several of the existing customisation options provide new stylistic 6452 variants, further expanding their utility. While there are some new 6453 customisations altogether. Combined with the above, we provide the 6454 infrastructure that allows the themes to adapt gracefully to a variety 6455 of circumstances and cover a broad range of demands. 6456 6457 + More packages are added to the already comprehensive list of supported 6458 face groups. 6459 6460 + Some of the supported faces have benefited from further, albeit 6461 subtle, refinements, demonstrating our commitment to consistency as 6462 well as our attention to detail. 6463 6464 + Two reports on such "further refinements" were published on the code 6465 log section of protesilaos.com: <https://protesilaos.com/codelog>. 6466 6467 + We have more people contributing to the project (and assigning 6468 copyright to the FSF---as the themes are part of Emacs) and newer 6469 users reporting issues. Also, there is anecdotal evidence from 6470 several sources on an increased interest to make new or existing faces 6471 accessible by default (such as by copying colour combinations from the 6472 themes). 6473 6474 6475 New customisation options 6476 ------------------------- 6477 6478 + The existing 'modus-themes-mode-line' variable now supports three new 6479 borderless styles: 'borderless', 'borderless-3d', 'borderless-moody'. 6480 6481 - The 'borderless' value uses the same colors as the default (nil 6482 value), but removes the border effect. This is done by making the 6483 box property use the same color as the background, effectively 6484 blending the two and creating some padding. 6485 6486 - The 'borderless-3d' and 'borderless-moody' approximate the '3d' and 6487 'moody' options respectively, while removing the borders. However, 6488 to ensure that the inactive modelines remain visible, they apply a 6489 slightly more prominent background to them than what their 6490 counterparts do (same inactive background as with the default). 6491 6492 The complete list of options: 6493 6494 1. nil (default) 6495 2. 3d 6496 3. moody 6497 4. borderless 6498 5. borderless-3d 6499 6. borderless-moody 6500 6501 + 'modus-themes-lang-checkers' provides several styles for spell 6502 checkers and code linters with regard to how they underline text. The 6503 default (nil) is to use a colour-coded wavy underline, without 6504 changing the foreground of the affected text. Other options include 6505 the ability to set a straight underline and to control the saturation 6506 of the foreground, while one also provides for a change in the 6507 background of the text in question. The valid symbols are as follows 6508 (read the manual for more on the matter): 6509 6510 1. nil (default) 6511 2. straight-underline 6512 3. subtle-foreground 6513 4. subtle-foreground-straight-underline 6514 5. intense-foreground 6515 6. intense-foreground-straight-underline 6516 7. colored-background 6517 6518 + The 'modus-themes-org-habit' lets users pick between three styles for 6519 the 'org-habit' table: (1) nil (the default), which uses a total of 6520 eight colours, (2) 'simplified' which reduces the effective colours to 6521 four, while applying less saturated hues, and (3) 'traffic-light' 6522 which bring the colour count to three, thus blending the "clear" and 6523 "ready" states for workflows where the distinction between is not 6524 useful. 6525 6526 Please read the manual for a more detailed description of those 6527 variants. 6528 6529 Thanks to Gustavo Barros for suggesting the idea, providing user 6530 feedback on stylistic choices, as well as sharing insights on the 6531 workflow that made the 'traffic-light' style possible: 6532 <https://gitlab.com/protesilaos/modus-themes/-/issues/135>. 6533 6534 + 'modus-themes-variable-pitch-ui' when set to a non-nil value applies a 6535 proportionately spaced typeface (controlled by the 'variable-pitch' 6536 face) to the User Interface, specifically the mode line, header line, 6537 and tab-{bar,line}. 6538 6539 + The existing 'modus-themes-links' variable now has a colourless 6540 stylistic alternative: 'underline-only'. The available styles: 6541 6542 1. nil (default) 6543 2. faint 6544 3. neutral-underline 6545 4. faint-neutral-underline 6546 5. no-underline 6547 6. underline-only 6548 6549 + The existing 'modus-themes-prompts' variable has two new grayscale 6550 styles: 'subtle-gray', 'intense-gray'. Furthermore, their old 6551 'subtle' and 'intense' values have more informative aliases in the 6552 form of 'subtle-accented' and 'intense-accented'. All available 6553 values: 6554 6555 1. nil (default) 6556 2. subtle-accented ('subtle' remains for backward-compatibility) 6557 3. intense-accented ('intense' remains for backward-compatibility) 6558 4. subtle-gray 6559 5. intense-gray 6560 6561 + The existing 'modus-themes-headings' variable now accepts two new 6562 styles: 'no-color', 'no-color-no-bold'. All stylistic variants: 6563 6564 1. nil (default fallback option---covers all heading levels) 6565 2. t (default style for a single heading, when the fallback differs) 6566 3. no-bold 6567 4. line 6568 5. line-no-bold 6569 6. rainbow 6570 7. rainbow-line 6571 8. rainbow-line-no-bold 6572 9. highlight 6573 10. highlight-no-bold 6574 11. rainbow-highlight 6575 12. rainbow-highlight-no-bold 6576 13. section 6577 14. section-no-bold 6578 15. rainbow-section 6579 16. rainbow-section-no-bold 6580 17. no-color 6581 18. no-color-no-bold 6582 6583 Please read the manual for instructions on how to apply those 6584 universally or on a per-level basis. 6585 6586 6587 Added support for packages 6588 -------------------------- 6589 6590 + cfrs (used by treemacs) 6591 + cperl-mode 6592 + diredc 6593 6594 + display-fill-column-indicator-mode. Thanks to Gustavo Barros for the 6595 feedback: <https://gitlab.com/protesilaos/modus-themes/-/issues/148>. 6596 6597 + evil-snipe. Thanks to Peter Wu for the feedback: 6598 <https://gitlab.com/protesilaos/modus-themes/-/issues/139>. 6599 6600 + isl (isearch-light). Thanks to Manuel Uberti for the feedback: 6601 <https://gitlab.com/protesilaos/modus-themes/-/issues/144>. 6602 6603 + marginalia 6604 + org-tree-slide 6605 + recursion-indicator 6606 6607 + solaire. Thanks to CsBigDataHub1 for the feedback: 6608 <https://gitlab.com/protesilaos/modus-themes/-/issues/137>. 6609 6610 6611 Refinements to already supported faces 6612 -------------------------------------- 6613 6614 + Reviewed the 'rainbow-delimiters' faces. Everything is documented in 6615 a separate report (with screenshots). The short version is that we 6616 pay close attention to detail and are willing to go to great lengths 6617 in pursuit of improving the overall user experience: 6618 <https://protesilaos.com/codelog/2020-12-27-modus-themes-review-rainbow-delimiters/>. 6619 6620 + Updated the dedicated colours for 'whitespace-mode'. The background 6621 should now be easier to discern. Also removed any remaining 6622 inconsistencies. Thanks to Toon Claes for the feedback: 6623 <https://gitlab.com/protesilaos/modus-themes/-/issues/149>. 6624 6625 + Refined the faces of regexp constructs for strings affected by certain 6626 values passed to the 'modus-themes-syntax' option. This is done to 6627 disambiguate the backslashes and grouping delimiters from the rest of 6628 the string. The relevant values for 'modus-themes-syntax' are: 6629 6630 - green-strings 6631 - yellow-comments-green-strings 6632 - alt-syntax 6633 - alt-syntax-yellow-comments 6634 6635 The default colour for strings is blue, while regexp faces are yellow 6636 and red, whereas in those variants the strings become green, hence the 6637 need to make regexp faces more distinct (blue and magenta contrast 6638 better with green and also between themselves, thus matching the 6639 alternative aesthetics). 6640 6641 + Reviewed dictionary.el faces (which ships with Emacs 28): 6642 6643 - Made 'dictionary-reference-face' look like all other links. 6644 6645 - Removed all properties from 'dictionary-word-definition-face': 6646 the default sets a font family, which can create inconsistencies. 6647 6648 - Converted 'dictionary-word-entry-face' into comment-like text. 6649 6650 + Refined and expanded the faces of Consult. 6651 6652 - Made its grep commands look the same as those of all other grep 6653 tools. 6654 6655 - Ensured that line number previews, such as for the 'consult-line' 6656 command use their own style of a subtle foreground instead of 6657 inheriting from the 'line-number' face. This is to avoid cases 6658 where previewed numbers and actual line numbers could be conflated 6659 for one another. 6660 6661 - Removed the foreground pertinent to 'consult-imenu-prefix', as its 6662 bold weight combined with the structure of Imenu indices was deemed 6663 sufficient to differentiate it from actual 'consult-imenu' targets. 6664 6665 + Eliminated exaggerations in the use of colour for various 'which-key' 6666 faces. 6667 6668 + Removed the needless background from the 'log-view-commit-body' face. 6669 This is a new face that ships with Emacs 28 (its inclusion upstream 6670 was documented in the last changelog entry). 6671 6672 + Applied a subtle background to the 'log-view-message' face, in the 6673 interest of improving the usability of its interface, in particular, 6674 to contribute to heightened situational awareness while invoking 6675 'log-view-toggle-entry-display' in buffers such as those produced by 6676 'vc-print-root-log'. 6677 6678 + Introduced a neutral background for all 'outline-minor-faces' instead 6679 of merely mirroring the style of 'outline-mode' headings. This is 6680 because it can sometimes be hard to tell whether 'outline-minor-mode' 6681 is active, provided certain fairly common configurations in the 6682 'modus-themes-headings' user option (refer to the manual for all 6683 customisation options). 6684 6685 + Tweaked 'diff-mode' headings. 6686 6687 - Adjusted the values of the dedicated colours for diff headings in 6688 order to amplify their relative contrast. 6689 6690 - Assigned a bold typographic weight to the 'diff-hunk-header' face so 6691 as to enforce a greater sense of structure. 6692 6693 - Instructed 'diff-function' to inherit 'modus-theme-diff-heading' in 6694 order to eliminate exaggerations in colouration. 6695 6696 + Removed unnecessary underline from 'selectrum-current-candidate'. 6697 Thanks to Daniel Mendler for the feedback: 6698 <https://gitlab.com/protesilaos/modus-themes/-/issues/132>. 6699 6700 + Made 'counsel-outline' inherit from the underlying Org faces. Also 6701 corrected the style of 'counsel-outline-default' to use the main 6702 foreground colour. Thanks to Gustavo Barros for the feedback: 6703 <https://gitlab.com/protesilaos/modus-themes/-/issues/134>. 6704 6705 + Prevented headings, ultimately governed by the 'modus-themes-headings' 6706 user option, from inheriting the 'default' face as that could lead to 6707 unintended consequences, such as by retaining a background colour when 6708 none was expected. 6709 6710 + Refashioned all faces that specified a foreground value of 'fg-alt' to 6711 inherit the 'shadow' face instead ('fg-alt' is the colour that is 6712 used, for example, in code comments by default). This makes it 6713 possible for users to enact change across the theme just by tweaking 6714 'shadow'. 6715 6716 + Fixed 'ruler-mode' text scaling adjustment, to make it cope well with 6717 'text-scale-adjust' and relevant commands. Also introduced minor 6718 stylistic changes to the remainder of the 'ruler-mode' faces. 6719 6720 + Eliminated the potentially problematic form of ':foreground nil' from 6721 the 'org-ellipsis' face. In such cases it is always better to either 6722 specify no foreground whatsoever, or declare an unspecified value. 6723 6724 6725 Patches from the community 6726 -------------------------- 6727 6728 Remember that the themes are part of Emacs and, thus, contributions that 6729 exceed a cumulative total of ~15 lines require the assignment of 6730 copyright to the Free Software Foundation. Please consult the themes' 6731 manual on the matter. 6732 6733 + Nicolas De Jaeghere added support for 'exwm-floating-border-color': 6734 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/15>. 6735 6736 + Anders Johansson added support for 'helm-fd-finish': 6737 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/16>. 6738 6739 + Carlo Zancanaro fixed misquoting of 'tuareg-font-lock-multistage-face': 6740 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/17>. 6741 6742 + Xinglu Chen expanded Notmuch support to all its remaining faces: 6743 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/18>. 6744 6745 + Kostadin Ninev added support for Dired+: 6746 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/19>. 6747 6748 + Nicolas De Jaeghere expanded the supported items of 'pdf-faces'. Also 6749 added an entry to the manual pertaining to link hints and the 6750 requisite setup: 6751 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/20>. 6752 6753 + Nicolas De Jaeghere wrote the new 'modus-themes-with-colors' macro, 6754 which is documented at length in the manual: 6755 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/21>. 6756 6757 + Nicolas De Jaeghere set up the infrastructure that grants users the 6758 ability to override palette colors; an option that was removed in the 6759 transition from version 0.13.0 to 1.0.0. The relevant variables are 6760 'modus-themes-colors-operandi', 'modus-themes-colors-vivendi' (again, 6761 consult the manual): 6762 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/23>. 6763 6764 + Nicolas De Jaeghere deleted the 'modus-themes-core.el' file and merged 6765 its contents into the main 'modus-themes.el' library: 6766 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/24> and 6767 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/25>. 6768 6769 + Nicolas De Jaeghere made the 'compilation-info' face consistent with 6770 other compilation faces in terms of their optional bold weight: 6771 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/26>. 6772 6773 Any remaining faults that may exist, despite our best intentions to 6774 remove them, are those of the maintainer and will be addressed as soon 6775 as they are identified. 6776 6777 FSF copyright status: 6778 6779 | Full name | Copyright | 6780 |---------------------+--------------| 6781 | Anders Johansson | covered | 6782 | Carlo Zancanaro | not required | 6783 | Kostadin Ninev | covered | 6784 | Nicolas De Jaeghere | covered | 6785 | Xinglu Chen | not required | 6786 6787 6788 Theme-related contributions to the wider community 6789 -------------------------------------------------- 6790 6791 + Helped address an incomplete colour value in 'org-transclusion-block': 6792 <https://github.com/nobiot/org-transclusion/issues/41>. 6793 6794 + Contributed to the formation of the zebra striping of 'embark': 6795 <https://github.com/oantolin/embark/commit/bb4ae2a666ab1f4a307edd71f77bcbb90fb25cef>. 6796 6797 + Reviewed the faces of 'goggles': 6798 <https://github.com/minad/goggles/commit/d6e584a2c9487d3df4aee818c43485e437cb87ef>. 6799 6800 + Helped raise awareness about refactoring 'org-tree-slide-header-overlay-face': 6801 <https://github.com/takaxp/org-tree-slide/issues/38>. 6802 6803 + Reported an issue for Moody that would affect the subset of Emacs 28 6804 users who enable the new 'mode-line-compact' option: 6805 <https://github.com/tarsius/moody/issues/28>. 6806 6807 + Did the same for Keycast: <https://github.com/tarsius/keycast/issues/13>. 6808 6809 + Defined the new 'perl-non-scalar-variable' in upstream Emacs: 6810 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45840>. 6811 6812 6813 Miscellaneous 6814 ------------- 6815 6816 + Created a new palette subset for "graph" colours, as none of the 6817 existing paradigms would suffice for cases where faithfulness to 6818 colour huenesss is important. Those are currently used by 6819 'modus-themes-org-habit'. 6820 6821 + Ensured that theme functions which need to produce an error message do 6822 so by calling 'error' instead of 'user-error'. 6823 6824 + Added a 'modus-themes-load-themes' function that users can add to 6825 their init files. 6826 6827 + Expanded the project's git repo README file with a sample 6828 'use-package' configuration. 6829 6830 + The previous two points followed from an inquiry into the subtleties 6831 between 'enable-theme' and 'load-theme'. Those are now documented at 6832 length in the manual. 6833 6834 + Added screenshots to the web page that holds the official manual. 6835 Thanks to Damien Cassou for the feedback: 6836 <https://gitlab.com/protesilaos/modus-themes/-/issues/147>. 6837 6838 + Swapped the values of 'cyan-faint' and 'cyan-alt-faint' for Modus 6839 Vivendi. 6840 6841 + Tweaked 'font-lock-doc-face' and 'font-lock-type-face' variations when 6842 "faint syntax" is in effect: (setq modus-themes-syntax 'faint). 6843 6844 + Refined 'font-lock-doc-face' for when modus-themes-syntax is given a 6845 value of either 'yellow-comments-green-strings' or 'green-strings'. 6846 The changes are minor when treated in isolation, though they have 6847 helped improve the overall consistency of the end result: the gestalt. 6848 6849 + Reviewed select "faint" colours for both Modus Operandi and Modus 6850 Vivendi. The technicalities are discussed in a complete report: 6851 <https://protesilaos.com/codelog/2021-01-11-modus-themes-review-select-faint-colours/>. 6852 6853 + Ensured that (setq modus-themes-syntax 'alt-syntax) and its "yellow 6854 comments" variant are more truthful to their intended style, by 6855 eliminating any exaggerations in the use of colour. 6856 6857 + Adjusted the saturation of the green-alt value of Modus Vivendi. 6858 6859 + Updated the manual to reflect all of the aforementioned. 6860 6861 Thanks once again to everyone who contributed patches or reported an 6862 issue. This has been yet another period of intense work; work which 6863 helps solidify the Modus themes as (i) uncompromisingly accessible in 6864 accordance with the highest legibility standard, (ii) highly 6865 customisable in true Emacs fashion, (iii) thoroughly comprehensive in 6866 terms of face coverage, and (iv) meticulously designed throughout. 6867 #+end_src 6868 6869 * 1.0.0 6870 :PROPERTIES: 6871 :CUSTOM_ID: h:94b5915e-1085-4859-ac9f-daf91e007741 6872 :END: 6873 6874 #+begin_src text 6875 Modus themes version 1.0.0 6876 6877 By Protesilaos Stavrou <info@protesilaos.com> on 2020-12-05 6878 6879 This entry documents the changes since version 0.13.0 (2020-10-08). 6880 They constitute a major release with backward-incompatible additions 6881 which are described below. 6882 6883 As always, every colour-related modification documented herein conforms 6884 with the overarching accessibility objective of the themes for a minimum 6885 contrast ratio of 7:1 between background and foreground values in their 6886 given combination (conformance with the WCAG AAA standard). 6887 6888 Expect to find examples of basic and advanced customisations in the 6889 comprehensive Info manual bundled with the themes, which is also 6890 available at: <https://protesilaos.com/emacs/modus-themes>. 6891 6892 6893 Overview of major changes 6894 ========================= 6895 6896 0. The option that was present in earlier releases to override the 6897 colour palette has been removed. It cannot work with byte 6898 compilation. We must not compromise on performance, especially in 6899 light of the fairly high line count of the themes (broad face 6900 coverage combined with a multitude of customisation options). 6901 6902 1. The code base has been refactored. The two themes, Modus Operandi 6903 (light) and Modus Vivendi (dark), derive from the same source. 6904 6905 2. The refactoring makes it possible to distribute the two themes as 6906 part of a single package. You can find 'modus-themes' on MELPA, with 6907 other archives and core Emacs following suit soon thereafter (the 6908 Modus themes are built into Emacs since their version 0.12.0). 6909 6910 3. The 'modus-operandi-theme' and 'modus-vivendi-theme' packages in 6911 MELPA and GNU ELPA are obsolete. MELPA has already deleted them and 6912 now only provides 'modus-themes', while GNU ELPA shall do so soon 6913 enough. 6914 6915 + Package providers of GNU/Linux distros, or other archives, are 6916 encouraged to update their sources so that they only deliver a 6917 single package that covers both themes. 6918 6919 4. To avoid surprises, the refactored code is in the 'main' branch which 6920 becomes the default henceforth. The 'master' branch, from where all 6921 prior releases were built, is thus deprecated. Existing installs of 6922 'modus-operandi-theme' and/or 'modus-vivendi-theme' must manually 6923 switch to the new package sources, which offer a certain guarantee 6924 that they are informed of the breaking changes documented herein. 6925 6926 + Users of 'straight.el' must make sure that they pull from the 6927 'main' branch. This may also be the case for other such tools, 6928 though I have not had the time to test them all. 6929 6930 5. The refactoring introduces a unified customisation framework. Now 6931 all user-facing variables are named 'modus-themes-*' instead of 6932 'modus-operandi-*' and 'modus-vivendi-*'. Users of both items can 6933 thus cut down on duplicate code or inelegant workarounds on their 6934 end. Example: 6935 6936 modus-operandi-bold-constructs 6937 | | | | | | | ====> modus-themes-bold-constructs 6938 modus-vivendi-bold-constructs 6939 6940 6. The themes now provide common user-facing functions. 6941 6942 + 'modus-themes-load-operandi' and 'modus-themes-load-vivendi' can be 6943 used in Lisp to load the theme they name, while disabling their 6944 counterpart and running 'modus-themes-after-load-theme-hook'. The 6945 hook can be used to override or further customise faces (examples 6946 are furnished in the manual). 6947 6948 + 'modus-themes-toggle' interactively switches between Modus Operandi 6949 and Modus Vivendi or opens a minibuffer prompt to select between 6950 the two if none of them is active. It ultimately calls the 6951 aforementioned functions to load the themes, so it also triggers 6952 the hook. Bind this command to a key of your convenience (the 6953 author uses F5). 6954 6955 + 'modus-themes-color' returns the colour value of a symbol in the 6956 alists that hold the themes' palettes. The alists are 6957 'modus-themes-colors-operandi' and 'modus-themes-colors-vivendi'. 6958 'modus-themes-color' always operates on the active theme, making it 6959 suitable for post-theme-load customisations (via the hook we 6960 covered earlier). Its usage is documented in the manual and is 6961 meant to be employed by those who are prepared to assume 6962 responsibility for face-related changes they introduce on their 6963 setup. 6964 6965 + 'modus-themes-color-alts' occupies the same niche as the one right 6966 above, with the exception that it takes two arguments. The first 6967 is the alist key to be used by 'modus-operandi' and the second is 6968 for 'modus-vivendi'. 6969 6970 + 'modus-themes-wcag-formula' implements the WCAG formula to measure 6971 a colour value's relative luminance. While 'modus-themes-contrast' 6972 applies the formula to derive the contrast ratio between two colour 6973 values in hexadecimal RGB notation. This can be used to verify the 6974 accessibility of colour combinations provided by the themes or new 6975 ones defined at the user level (the Modus themes conform with the 6976 WCAG AAA standard which means that this kind of contrast is 7:1 or 6977 higher for all applicable background+foreground combinations). 6978 6979 6980 Customisation options 6981 ===================== 6982 6983 This is the complete list with all the customisation options: 6984 6985 modus-themes-slanted-constructs (boolean) 6986 modus-themes-bold-constructs (boolean) 6987 modus-themes-variable-pitch-headings (boolean) 6988 modus-themes-no-mixed-fonts (boolean) 6989 modus-themes-headings (alist) 6990 modus-themes-scale-headings (boolean) 6991 modus-themes-fringes (choice) 6992 modus-themes-org-blocks (choice) 6993 modus-themes-prompts (choice) 6994 modus-themes-mode-line (choice) 6995 modus-themes-diffs (choice) 6996 modus-themes-syntax (choice) 6997 modus-themes-intense-hl-line (boolean) 6998 modus-themes-paren-match (choice) 6999 modus-themes-region (choice) 7000 modus-themes-links (choice) 7001 modus-themes-completions (choice) 7002 7003 Plus those which are contingent on 'modus-themes-scale-headings': 7004 7005 modus-themes-scale-1 7006 modus-themes-scale-2 7007 modus-themes-scale-3 7008 modus-themes-scale-4 7009 modus-themes-scale-5 7010 7011 Consult the manual for each of them and please verify that none of the 7012 older options remains in your init file. 7013 7014 7015 Customisation options that did not exist in earlier versions 7016 ------------------------------------------------------------ 7017 7018 New entries and their possible values: 7019 7020 1. modus-themes-syntax 7021 7022 ,* nil (default) 7023 ,* faint 7024 ,* yellow-comments 7025 ,* green-strings 7026 ,* yellow-comments-green-strings 7027 ,* alt-syntax 7028 ,* alt-syntax-yellow-comments 7029 7030 (supersedes options for "faint syntax" and "comments") 7031 7032 2. modus-themes-links 7033 7034 ,* nil (default) 7035 ,* faint 7036 ,* neutral-underline 7037 ,* faint-neutral-underline 7038 ,* no-underline 7039 7040 (supersedes options for "no underlines") 7041 7042 3. modus-themes-paren-match 7043 7044 ,* nil (default) 7045 ,* intense 7046 ,* subtle-bold 7047 ,* intense-bold 7048 7049 (supersedes options for "intense paren match") 7050 7051 4. modus-themes-region 7052 7053 ,* nil (default) 7054 ,* no-extend 7055 ,* bg-only 7056 ,* bg-only-no-extend 7057 7058 Furthermore, the 'modus-themes-diff' has a new option to choose from: 7059 the symbol 'bg-only'. It applies colour-coded backgrounds but does not 7060 override any syntax highlighting that may be present. This makes it 7061 suitable for use with a non-nil value for diff-font-lock-syntax (which 7062 is the default for diff-mode buffers in Emacs 27 or higher). 7063 7064 7065 Support for new faces or face groups 7066 ==================================== 7067 7068 + consult 7069 + macrostep 7070 + make-mode 7071 + pdf-tools 7072 + popup 7073 + shr 7074 + sieve-mode 7075 7076 (remember that the list of supported packages is already comprehensive) 7077 7078 Thanks to: 7079 7080 + Adam Spiers for bringing 'macrostep' to my attention. 7081 7082 + Madhavan Krishnan for submitting the code for pdf-tools: 7083 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/14>. 7084 7085 + Manuel Uberti for reporting the issue with popup.el: 7086 <https://gitlab.com/protesilaos/modus-themes/-/issues/107>. 7087 7088 + Again thanks to Manuel for consult: 7089 <https://gitlab.com/protesilaos/modus-themes/-/issues/123>. And to 7090 Daniel Mendler, its developer, for communicating with us on the status 7091 of the project. 7092 7093 + Togan Muftuoglu for reporting the issue with sieve-mode: 7094 <https://gitlab.com/protesilaos/modus-themes/-/issues/121>. 7095 7096 7097 Refinements to existing faces 7098 ============================= 7099 7100 + The diary and holiday marks in 'M-x calendar' are displayed using a 7101 slightly tinted background in order to improve their contrast. 7102 Holidays are also rendered in a bold font. Thanks to Nicolas De 7103 Jaeghere for reporting the issue and following it up with valuable 7104 feedback: <https://gitlab.com/protesilaos/modus-themes/-/issues/127>. 7105 7106 + Code blocks in 'markdown-mode' now have a subtle background that 7107 extends to the edge of the window. Thanks to Roman Rudakov for the 7108 suggestion and Hörmetjan Yiltiz for further testing: 7109 <https://gitlab.com/protesilaos/modus-themes/-/issues/115>. 7110 7111 + Inline code in 'markdown-mode' has a subtle background that covers the 7112 length of the construct. Refer to issue #115 as above. 7113 7114 + Ivy's main pattern-matching faces are slightly adjusted to work more 7115 effectively when users opt for "modus-themes-completions 'moderate" or 7116 "modus-themes-completions 'opinionated". 7117 7118 + Swiper's 'swiper-isearch' command defaults to a more colourful 7119 presentation that clearly disambiguates matching pattern groups 7120 between themselves as well as their own active and inactive states. 7121 Thanks to John Haman for reporting the problem: 7122 <https://gitlab.com/protesilaos/modus-themes/-/issues/125>. 7123 7124 + Swiper's remaining faces are tweaked to better convey the intent of 7125 this tool. 7126 7127 + The border of 'ivy-posframe' is more noticeable. Thanks to Pete 7128 Kazmier: <https://gitlab.com/protesilaos/modus-themes/-/issues/126>. 7129 7130 + The 'fringe' face no longer returns a nil background, which allows 7131 'dap-ui-controls-mode' to display things properly. Thanks to Simon 7132 Pugnet: <https://gitlab.com/protesilaos/modus-themes/-/issues/106>. 7133 7134 + Tags and priority cookies in Org mode no longer have a box property. 7135 This is because of changes in upstream Org that we helped solve and 7136 that are covered in the previous CHANGELOG entry (in short: Org 7137 heading constructs inherit the underlying heading's properties that 7138 are not part of their own specs, while they retain those that are 7139 explicitly defined for them---adaptive headings). Properly solves the 7140 following issues: 7141 7142 ,* <https://gitlab.com/protesilaos/modus-themes/-/issues/104>. Thanks 7143 to user "bepolymathe". 7144 7145 ,* <https://gitlab.com/protesilaos/modus-themes/-/issues/95>. Thanks 7146 to Roman Rudakov. 7147 7148 + The faces of 'M-x re-builder' are less intrusive. 7149 7150 + All the following now inherit from basic font-lock faces and thus 7151 benefit from options such as 'modus-themes-syntax': 7152 7153 ,* geiser 7154 ,* nxml-mode 7155 ,* tuareg 7156 ,* web-mode 7157 ,* xah-elisp-mode 7158 7159 + Diff headers have a subtle grey background that extends to the edge of 7160 the window. 7161 7162 + The faces of log-view and change-log use colour combinations that 7163 better differentiate the various objects on display. 7164 7165 + 'font-lock-type-face' uses a cyan hue instead of magenta. 7166 7167 + 'magit-header-line-key' uses a blue foreground colour instead of red. 7168 7169 + Doc strings in code syntax are rendered in a new dedicated colour. 7170 The change is fairly subtle and should practically go unnoticed. 7171 7172 + 'org-date' now respects the 'modus-themes-no-mixed-fonts' option. 7173 Thanks to user "fleimgruber" for reporting the issue: 7174 <https://gitlab.com/protesilaos/modus-themes/-/issues/124>. 7175 7176 + 'org-property-value' uses a slightly different shade of cyan. 7177 7178 + 'dim-autoload' will always look like a regular comment. 7179 7180 + The 'italic' face is inhereted by all relevant faces instead of 7181 hard-wiring a slant property. This offers the potential advantage of 7182 specifying a distinct family (or other properties) for constructs that 7183 are meant to be rendered in italics (the manual has an example in its 7184 DIY sections for this scenario though it uses the 'bold' face---just 7185 apply the same idea to the 'italic' face). 7186 7187 + 'dictionary-reference-face' inherits from 'button' (as with all 7188 links). 7189 7190 + Several comment-related faces beyond the basic ones work with 7191 'modus-themes-syntax' when that has an effect on the colour of 7192 comments. The faces are: 7193 7194 ,* git-commit-comment-file 7195 ,* git-commit-comment-heading 7196 ,* git-rebase-comment-hash 7197 ,* git-rebase-comment-heading 7198 7199 + 'transient-value' is more noticeable and fits better in its context. 7200 7201 + All remaining Org metadata-related faces are refined for consistency 7202 between them in an attempt to make them unobtrusive. More subtle 7203 colouration is applied. Affected faces: 7204 7205 ,* org-drawer 7206 ,* org-property-value 7207 ,* org-special-keyword 7208 7209 7210 Theme-related contributions to the wider community 7211 ================================================== 7212 7213 + Defined the 'log-view-commit-body' for Emacs 28.1: 7214 <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg00303.html> 7215 and 7216 <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg02196.html>. 7217 7218 + Specified the version of the 'diff-error' face for Emacs 28.1: 7219 <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg01328.html>. 7220 7221 + Added the 'org-dispatcher-highlight' face to upstream Org: 7222 <https://lists.gnu.org/archive/html/emacs-orgmode/2020-10/msg00158.html>. 7223 7224 ,* Report with screenshots: 7225 <https://protesilaos.com/codelog/2020-10-24-org-export-dispatcher-face/>. 7226 7227 + Helped fix face of Flymake's unknown backend in inactive modelines: 7228 <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg01119.html>. 7229 7230 + Solved bug#44198 about a user not knowning the themes are in Emacs: 7231 <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-10/msg02001.html>. 7232 7233 7234 Miscellaneous 7235 ============= 7236 7237 + The new default 'main' branch of the Modus themes' git repo is an idea 7238 that was presented by user "Emacs Contrib" in issue 112: 7239 <https://gitlab.com/protesilaos/modus-themes/-/issues/112>. Raising 7240 awareness about the negative impact of potentially, tacitly, or 7241 explicitly offensive language is a goal worth pursuing. Plus "main" 7242 is a more appropriate name for the primary branch of a project and we 7243 do not lose anything by introducing this change as part of version 7244 1.0.0, which anyhow requires manual interventions in user 7245 configurations. 7246 7247 + Thanks to Manuel Uberti, Jeremy Friesen, and Gitlab user "Eugene" for 7248 their feedback during the process that eventually led to the 7249 development of the 'modus-themes-syntax' customisation option: 7250 <https://gitlab.com/protesilaos/modus-themes/-/issues/105>. 7251 7252 + Thanks to André Alexandre Gomes for the feedback in issue 111, which 7253 led to the simplification of the manual's references to Guix: 7254 <https://gitlab.com/protesilaos/modus-themes/-/issues/111>. 7255 7256 + Thanks to Nicolas De Jaeghere for noting that BBDB is indirectly 7257 supported: <https://gitlab.com/protesilaos/modus-themes/-/issues/128>. 7258 7259 Between the refactoring of the code base and all other changes, this has 7260 been yet another period of hard work to deliver on the promise of themes 7261 that are (i) highly accessible and (ii) comprehensive in both their face 7262 coverage and customisation options, while always conforming with the 7263 highest accessibility standard for legible text. 7264 7265 Special thanks to the MELPA maintainers for all their contributions. 7266 MELPA is an integral part of the wider Emacs community. Thanks, in 7267 particular, to Chris Rayner who has reviewed all my pull requests 7268 hitherto, and to Jonas Bernoulli for checking the latest one (and its 7269 concomitant issue) that introduced the new 'modus-themes' package. 7270 7271 Thank you, the reader, for your attention and for understanding the 7272 longer term benefits of the refactoring, despite the short term friction 7273 it may have introduced. 7274 #+end_src 7275 7276 * 0.13.0 7277 :PROPERTIES: 7278 :CUSTOM_ID: h:b529ec46-2a9f-4844-9760-4708d2ca575b 7279 :END: 7280 7281 #+begin_src text 7282 Modus Operandi and Modus Vivendi version 0.13.0 7283 7284 By Protesilaos Stavrou <info@protesilaos.com> on 2020-10-08 7285 7286 This entry documents the changes since version 0.12.0 (2020-08-26). 7287 There have been around 150 commits in the meantime, making this the 7288 largest release to date (though sheer volume should not be conflated 7289 with quality, of which there is plenty). 7290 7291 As always, everything described herein conforms with the overarching 7292 accessibility objective of the themes for a minimum contrast ratio of 7293 7:1 between background and foreground values in their given combinations 7294 (conformance with the WCAG AAA standard). 7295 7296 Overview 7297 ======== 7298 7299 1. There is a new Info manual that documents the customisation options 7300 as well as every other piece of information pertinent to the themes. 7301 You will find it in the Info pages inside of Emacs. Or browse it 7302 online: <https://protesilaos.com/emacs/modus-themes>. 7303 7304 2. New customisation options grant users more power to further adapt the 7305 active theme to their preferences. 7306 7307 3. Extended coverage for even more faces and face groups, adding to the 7308 already comprehensive list of directly supported ones. 7309 7310 4. Lots of tweaks to improve the use of colour and avoid exaggerations 7311 (well, "exaggerations" is relative, since the prior state was already 7312 carefully designed). 7313 7314 5. A new page hosts all pictures that demo the themes across a wide 7315 range of scenaria: <https://protesilaos.com/emacs/modus-themes-pictures>. 7316 7317 6. Similarly, the change log also has its own dedicated web page: 7318 <https://protesilaos.com/emacs/modus-themes-changelog>. 7319 7320 7321 New customisation options 7322 ========================= 7323 7324 Note that all customisation options are documented at length in the new 7325 Info manual. What is offered here is not necessarily exhaustive. 7326 7327 7328 Diff styles 7329 ----------- 7330 7331 Symbol names ("choice" type): 7332 7333 + modus-operandi-theme-diffs 7334 + modus-vivendi-theme-diffs 7335 7336 Possible values: 7337 7338 1. nil (default) 7339 2. desaturated 7340 2. fg-only 7341 7342 DEPRECATED ("boolean" type): 7343 7344 + modus-operandi-theme-subtle-diffs 7345 + modus-vivendi-theme-subtle-diffs 7346 7347 This option supersedes older ones while retaining their functionality. 7348 7349 The default remains unaltered, meaning that the diffs will use fairly 7350 prominent colour-coded combinations for the various elements (e.g. green 7351 text on an unambiguously green backdrop). 7352 7353 A 'desatured' value will tone down the default aesthetic, giving a less 7354 vibrant feel. 7355 7356 While 'fg-only' removes almost all coloured backgrounds, opting to apply 7357 colour only to the relevant text (this was the case with the 7358 now-deprecated options). There are some exceptions, like word-wise or 7359 "refined" diffs, which still use coloured backgrounds to convey their 7360 meaning. 7361 7362 7363 Modeline styles 7364 --------------- 7365 7366 Symbol names ("choice" type): 7367 7368 + modus-operandi-theme-mode-line 7369 + modus-vivendi-theme-mode-line 7370 7371 Possible values: 7372 7373 1. nil (default) 7374 2. 3d 7375 3. moody 7376 7377 DEPRECATED ("boolean" type): 7378 7379 + modus-operandi-theme-3d-modeline 7380 + modus-vivendi-theme-3d-modeline 7381 7382 The default modeline continues to be a two-dimensional rectangle with a 7383 border around it. Active and inactive modelines use different colour 7384 combinations for their main background and foreground. 7385 7386 Option '3d' produces an effect similar to what you get in a generic 7387 Emacs session, where the active modeline has a pseudo three-dimensional 7388 effect applied to it. This option offers the same functionality as that 7389 of the deprecated variables. 7390 7391 Option 'moody' is designed specifically for use with the Moody library, 7392 though it can also be used without it. Instead of implementing a box 7393 effect, it applies an overline and underline instead, while also toning 7394 down the inactive modeline. 7395 7396 Thanks to Nicolas De Jaeghere for the feedback and code samples in issue 7397 80: <https://gitlab.com/protesilaos/modus-themes/-/issues/80> 7398 7399 7400 Headline styles 7401 --------------- 7402 7403 Symbol names ("alist" type): 7404 7405 + modus-operandi-theme-headings 7406 + modus-vivendi-theme-headings 7407 7408 DEPRECATED ("boolean" type): 7409 7410 + modus-operandi-theme-rainbow-headings 7411 + modus-operandi-theme-section-headings 7412 + modus-vivendi-theme-rainbow-headings 7413 + modus-vivendi-theme-section-headings 7414 7415 Possible values, which can be specified for each heading level (examples 7416 further below): 7417 7418 0. nil (default fallback option---covers all heading levels) 7419 1. t (default style for a single heading, when the fallback differs) 7420 2. no-bold 7421 3. line 7422 4. line-no-bold 7423 5. rainbow 7424 6. rainbow-line 7425 7. rainbow-line-no-bold 7426 8. highlight 7427 9. highlight-no-bold 7428 10. rainbow-highlight 7429 11. rainbow-highlight-no-bold 7430 12. section 7431 13. section-no-bold 7432 14. rainbow-section 7433 15. rainbow-section-no-bold 7434 7435 This supersedes and greatly expands upon what the deprecated variables 7436 once offered. It is now possible to (i) benefit from more stylistic 7437 choices, and (ii) apply them on a per-level basis. 7438 7439 As always, the defaults remain in tact: headings are just rendered in a 7440 bold weight and their colours are not too saturated to offer a plain 7441 text impression that relies on typography to convey its meaning. 7442 7443 The info manual explains the details. A few examples: 7444 7445 ;; Per-level styles (t means everything else) 7446 (setq modus-operandi-theme-headings 7447 '((1 . highlight) 7448 (2 . line) 7449 (t . rainbow-line-no-bold))) 7450 7451 ;; Uniform style for all levels 7452 (setq modus-operandi-theme-headings 7453 '((t . rainbow-line-no-bold))) 7454 7455 ;; Default style for level 1, while others differ 7456 (setq modus-operandi-theme-headings 7457 '((1 . t) 7458 (2 . line) 7459 (t . rainbow-line-no-bold))) 7460 7461 Thanks to Adam Spiers for the feedback in issue 81: 7462 <https://gitlab.com/protesilaos/modus-themes/-/issues/81>. Also thanks 7463 to Nicolas De Jaeghere for helping refine relevant stylistic choices: 7464 <https://gitlab.com/protesilaos/modus-themes/-/issues/90>. 7465 7466 7467 No link underlines 7468 ------------------ 7469 7470 Symbol names ("boolean" type): 7471 7472 + modus-operandi-theme-no-link-underline 7473 + modus-vivendi-theme-no-link-underline 7474 7475 Possible values: 7476 7477 1. nil (default) 7478 2. t 7479 7480 By default, the themes apply an underline effect to links, symbolic 7481 links, and buttons. Users can now disable this style by setting the new 7482 option to 't'. 7483 7484 Thanks to Utkarsh Singh for the feedback in issue 94: 7485 <https://gitlab.com/protesilaos/modus-themes/-/issues/94> 7486 7487 7488 No mixed fonts 7489 -------------- 7490 7491 Symbol names ("boolean" type): 7492 7493 + modus-operandi-theme-no-mixed-fonts 7494 + modus-vivendi-theme-no-mixed-fonts 7495 7496 Possible values: 7497 7498 1. nil (default) 7499 2. t 7500 7501 By default, the themes configure some spacing-sensitive faces, such as 7502 Org tables and code blocks, to always inherit from the 'fixed-pitch' 7503 face (documented in the manual). This is to ensure that those 7504 constructs remain monospaced when users opt for something like the 7505 built-in 'M-x variable-pitch-mode'. Otherwise the layout would break. 7506 7507 The obvious downside with this theme design is that users need to 7508 explicitly configure the font family of 'fixed-pitch' in order to apply 7509 their desired typeface (how to do this is also covered in the manual). 7510 That may be something they do not want to do. Hence this option to 7511 disable any kind of font mixing done by the active theme. Set it to 7512 't'. 7513 7514 7515 Support for new faces or face groups 7516 ==================================== 7517 7518 + awesome-tray 7519 + binder 7520 + cperl-mode 7521 + eldoc-highlight-function-argument 7522 + erc escaped colour sequences 7523 + eshell-syntax-highlighting 7524 + flycheck-color-mode-line 7525 + isearch regexp groups (Emacs version >= 28) 7526 + mpdel 7527 + objed 7528 + org 9.4 new faces: 'org-headline-todo' and 'org-table-header' 7529 + racket-mode 7530 + typescript-mode 7531 7532 Thanks to: 7533 7534 + Damien Cassou for reporting the issue with mpdel: 7535 <https://gitlab.com/protesilaos/modus-themes/-/issues/99> 7536 7537 + Dario Gjorgjevski for reporting the issue with erc: 7538 <https://gitlab.com/protesilaos/modus-themes/-/issues/92> 7539 7540 + Markus Beppler for contributing the patch for cperl-mode: 7541 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/11> 7542 7543 + User "Moesasji" for reporting the issue with objed: 7544 <https://gitlab.com/protesilaos/modus-themes/-/issues/79> 7545 7546 7547 Refinements to existing faces 7548 ============================= 7549 7550 + calfw applies colours and styles in a way that makes it consistent 7551 with the rest of the themes' metaphors. 7552 7553 + diredfl makes more considerate use of colour. We still apply colour 7554 everywhere (the whole point of this package) but make sure to avoid 7555 exaggerations. 7556 7557 + doom-modeline-battery-error face fits better with the rest of the 7558 design. 7559 7560 + elfeed search buffers use less intense colours, while still keeping 7561 all elements fairly distinct. The intent is to avoid a "rainbow 7562 effect" in such a dense interface. 7563 7564 + elfeed read and unread items are more distinct. 7565 7566 + git commit and vc log edit messages benefit from refined colour 7567 combinations for their various constructs. The commit's summary is 7568 now rendered in a bold weight, to better convey the idea that this is 7569 a quasi heading element. 7570 7571 + gnus heading colours are more consistent. All information remains 7572 clearly distinct, but we now avoid using colours that are on opposite 7573 sides of the colour spectrum. Basically to keep things distinct 7574 without going over the top. 7575 7576 + gnus read and unread items are easier to tell apart. Thanks to user 7577 "Nick" for reporting the issue: 7578 <https://gitlab.com/protesilaos/modus-themes/-/issues/97>. 7579 7580 + help-argument-name has a distinct foreground colour, so that it is 7581 easier to spot it in "*Help*" buffers. Its slant is also controlled 7582 by the active theme's customisation option for slanted constructs (nil 7583 by default---check the manual). 7584 7585 + helpful-heading now is consistent with other heading styles. Thanks 7586 to Nicolas De Jaeghere for reporting the issue: 7587 <https://gitlab.com/protesilaos/modus-themes/-/issues/90>. 7588 7589 + icomplete, ido, orderless are all tweaked to work better under various 7590 circumstances. 7591 7592 + info-menu-star uses a red colour to make it easier to select a menu 7593 entry by estimating its number. This face applies to every third 7594 element and is a nice little extra to have. 7595 7596 + info quoted strings are configured to always render in 'fixed-pitch', 7597 in line with the themes' design for mixed fonts (remember to check the 7598 relevant customisation option). 7599 7600 + line numbers work properly with 'text-scale-adjust'. Thanks to user 7601 "jixiuf" for reporting the issue: 7602 <https://gitlab.com/protesilaos/modus-themes/-/issues/98>. 7603 7604 + line-number-current-line no longer applies a bold weight to its text. 7605 This is to avoid a certain "jump effect" while moving between lines, 7606 where the affected numbers grow and shrink in weight as the line 7607 changes (once you see it, you will know what I mean). 7608 7609 + line-number-major-tick and line-number-minor-tick do use a bold weight 7610 because they are fixed on the scale. Their colours are also improved 7611 to better complement their intended role (these faces are for Emacs 27 7612 or higher). 7613 7614 + magit-diff-file-heading-selection, magit-diff-hunk-heading-selection 7615 use more appropriate colour combinations. 7616 7617 + markdown blockquotes and org quote blocks use a different foreground, 7618 which is colder than the previous one. Just to make sure that they 7619 are not mistaken for inline code. 7620 7621 + message headers use less exaggerated colour combinations. The 7622 differences are fairly minor. 7623 7624 + message-mml no longer uses a green foreground, as that could 7625 potentially cause confusion with quoted text in some cases. A unique, 7626 albeit less saturated, foreground is used instead. 7627 7628 + message-separator uses a more neutral colour combination, while 7629 retaining its overall uniqueness within its context (i.e. mail 7630 composition). 7631 7632 + modeline colours are refined to improve the contrast between active 7633 and inactive states. 7634 7635 + mu4e-replied-face has a new colour that accounts for colour distance 7636 relative to its context. Thanks to Shreyas Ragavan for reporting the 7637 issue: <https://gitlab.com/protesilaos/modus-themes/-/issues/69>. 7638 7639 + org agenda date and structure no longer behave like headings in other 7640 Org buffers. Instead, they have their own styles to better perform 7641 their intended function and to avoid exaggerations. 7642 7643 + org agenda dimmed to-do items (which have blocked sub-items) are no 7644 longer assigned a subtle grey background colour. They are instead 7645 rendered with a bold weight and a subtle grey foreground to minimise 7646 distractions. Thanks to Roman Rudakov for reporting this in issue 7647 101: <https://gitlab.com/protesilaos/modus-themes/-/issues/101>. 7648 7649 + org agenda clocked items are configured to extend their background to 7650 the edge of the window. Otherwise they are cut off at the last text 7651 character, which creates inconsistencies while using tags: a tag is 7652 placed to the right so the background extends further than without 7653 them. Based again on the feedback of Roman Rudakov in issue 101: 7654 <https://gitlab.com/protesilaos/modus-themes/-/issues/101>. 7655 7656 + org agenda current time no longer uses a background. A bold weight 7657 and a blue foreground are applied instead. The intent is to keep 7658 things clean. This is also covered by Roman Rudakov's feedback in 7659 issue 101: <https://gitlab.com/protesilaos/modus-themes/-/issues/101>. 7660 7661 + org-checkbox-statistics-done, org-checkbox-statistics-todo inherit 7662 from org-done and org-todo respectively, instead of defining their own 7663 properties. 7664 7665 + org drawers and their data now use 'fixed-pitch' in the interest of 7666 consistency with other metadata-like faces. Thanks (yet again!) to 7667 Nicolas De Jaeghere for reporting the issue: 7668 <https://gitlab.com/protesilaos/modus-themes/-/issues/91>. 7669 7670 + org-footnote underlines will now always use the same colour, instead 7671 of applying the one of other coloured constructs (e.g. when the 7672 footnote is inline and part of the text is rendered as verbatim). 7673 7674 + org-meta-line is less prominent and, thus, more consistent with other 7675 metadata-related constructs. 7676 7677 + org-roam faces are updated to match the current state of the upstream 7678 project. The main colour of org-roam links is now different than that 7679 of standard links in an attempt to differentiate between the two (due 7680 to their unique semantics). If this is not desired, you can evaluate 7681 the following: 7682 7683 (setq org-roam-link-use-custom-faces nil) 7684 7685 + org-todo, org-done, as well as relevant faces such as priorities and 7686 statistics are reviewed to work better with all heading combinations. 7687 Though please read the next section about "adaptive headings", as such 7688 workarounds will no longer be necessary for future stable releases of 7689 Org. 7690 7691 + selectrum uses different styles than before to account for its unique 7692 property of overlaying matching characters on top of the current 7693 line's background. We want to avoid scenaria where matches are 7694 difficult to discern and the current line is not clear. 7695 7696 + vc modeline states benefit from improved colour choices. Just minor 7697 adjustments to account for the review of the base modeline colours. 7698 7699 + vterm base colours now are variants of gray to ensure that some tools, 7700 such as zsh suggestions work properly. Thanks to user "jixiuf" for 7701 reporting this issue and suggesting a possible solution: 7702 <https://gitlab.com/protesilaos/modus-themes/-/issues/93>. 7703 7704 Contributions to the wider community 7705 ==================================== 7706 7707 Sometimes the themes reveal bugs in other packages. It is of paramount 7708 importance that we report those to the upstream developers, try to help 7709 them reproduce the issue, and, where possible, support them in tracing 7710 the problem's root cause. 7711 7712 Four such cases during this release: 7713 7714 1. Adaptive Org headings. Solved upstream and documented on my website: 7715 <https://protesilaos.com/codelog/2020-09-24-org-headings-adapt/>. 7716 Reported and discussed on the themes' issue tracker: 7717 <https://gitlab.com/protesilaos/modus-themes/-/issues/37>. 7718 7719 2. Alignment of Org tags with proportional fonts. Ongoing thread: 7720 <https://lists.gnu.org/archive/html/emacs-orgmode/2020-09/msg00415.html>. 7721 Reported and discussed on the themes' issue tracker: 7722 <https://gitlab.com/protesilaos/modus-themes/-/issues/85>. 7723 7724 3. Org priority cookie has extra space. Ongoing thread: 7725 <https://lists.gnu.org/archive/html/emacs-orgmode/2020-09/msg00696.html>. 7726 Reported and discussed on the themes' issue tracker, with feedback 7727 from Roman Rudakov: 7728 <https://gitlab.com/protesilaos/modus-themes/-/issues/95>. 7729 7730 4. Company overlay pop-up misaligns items. Reported upstream and 7731 acknowledged as a known issue that occurs in certain cases: 7732 <https://github.com/company-mode/company-mode/issues/1010>. 7733 Discussion on the themes' issue tracker, with feedback from Iris 7734 Garcia: <https://gitlab.com/protesilaos/modus-themes/-/issues/96>. 7735 7736 7737 Miscellaneous 7738 ============= 7739 7740 + Belatedly (by about 2 weeks) pushed tag for version 0.12.0. Thanks to 7741 Alex Griffin for bringing this to my attention: 7742 <https://gitlab.com/protesilaos/modus-themes/-/issues/89> 7743 7744 + Fixed a bug with how some older customisation options were declared as 7745 obsolete. Thanks to Tassilo Horn for noticing and reporting the 7746 problem: <https://gitlab.com/protesilaos/modus-themes/-/issues/88>. 7747 7748 + Fixed a misplaced optional prefix argument in the manual for how to 7749 switch themes using a custom function. Thanks to Manuel Uberti for 7750 catching this omission of mine and reporting it: 7751 <https://gitlab.com/protesilaos/modus-themes/-/issues/84>. 7752 7753 + Silenced the Elisp package linter for a spurious error on a single 7754 eldoc face. Thanks to Steve Purcell for the guidance: 7755 <https://github.com/purcell/package-lint/issues/187>. 7756 7757 + Defined two new dedicated background colours for exceptional cases. 7758 These are intended for internal use in very special circumstances. 7759 7760 + Reword GuixSD to "Guix System" in the list of package formats 7761 currently available. 7762 7763 + Reviewed the main blue colours for both themes. While the changes are 7764 practically impossible to discern upon first sight, the process was 7765 far from straightforward. A complete report documents the minutia: 7766 <https://protesilaos.com/codelog/2020-09-14-modus-themes-review-blues/>. 7767 7768 + Reviewed the "active" palette subset, typically used in the modelines. 7769 No report was necessary for those, as the changes were fairly simple. 7770 7771 + Reviewed the "intense" background colour that comes into effect when 7772 users opt for the customisation option for intense paren-match styles 7773 (check the manual). Both the hue and the saturation have been changed 7774 to better conform with the intended function of this particular entry. 7775 7776 + Reviewed the fringe-specific accented backgrounds. Commit 7316e3320 7777 contains tables that compare the relative luminance of old and new 7778 values. 7779 7780 + Improved the advice for setting fonts using 'set-face-attribute'. The 7781 information is in the manual and is also available as a blog entry: 7782 <https://protesilaos.com/codelog/2020-09-05-emacs-note-mixed-font-heights/>. 7783 7784 + Rewrote an expression as "(or x y)" instead of "(if x x y)" in one 7785 place. Just goes to show that tweaking the code is also part of the 7786 deal. 7787 7788 + Abstracted and simplified heading level properties by using bespoke 7789 theme faces. Makes it easier to keep things consistent across the 7790 various face groups. 7791 7792 + Same principle as above for diff-related styles. 7793 7794 + Users who prefer to do things their own way or who just wish to 7795 contribute code to the Modus themes may wish to read my "Notes for 7796 aspiring Emacs theme developers": 7797 <https://protesilaos.com/codelog/2020-08-28-notes-emacs-theme-devs/>. 7798 7799 This has been yet another period of intense work: reviewing faces and 7800 applying colours is never easy, adding new customisation options is 7801 always tricky, and documenting everything takes a lot of time (unless 7802 you do all of those on a whimsy, which hopefully is not the case here). 7803 7804 Thanks again to everyone who helped improve the themes! 7805 #+end_src 7806 7807 * 0.12.0 7808 :PROPERTIES: 7809 :CUSTOM_ID: h:9d9394c1-84b6-4c23-8936-fe4f2f43301d 7810 :END: 7811 7812 #+begin_src text 7813 Modus Operandi and Modus Vivendi version 0.12.0 7814 7815 By Protesilaos Stavrou <info@protesilaos.com> on 2020-08-26 7816 7817 This entry documents the set of changes since version 0.11.0 7818 (2020-07-31). There have been around 70 commits in the meatime, though 7819 the sheer number may obfuscate the fact that a lot of work has gone into 7820 this release. 7821 7822 As always, every change described here conforms with the accessibility 7823 objective of the themes for a minimum 7:1 contrast ratio between 7824 background and foreground values in their given combinations 7825 (conformance with the WCAG AAA standard). 7826 7827 New customisation options 7828 ========================= 7829 7830 1 Completion Frameworks 7831 ----------------------- 7832 7833 The star of the show has to be the new option that refashions the 7834 aesthetics of completion UIs: Helm, Icomplete, Ido, Ivy, Sallet, 7835 Selectrum. The 'modus-operandi-theme-completions' and 7836 'modus-vivendi-theme-completions' accept the following symbols: 7837 7838 + nil (default) 7839 + moderate 7840 + opinionated 7841 7842 Nil means that the overall presentation of the UI follows the patterns 7843 established by its own source code. For example, Ivy uses four distinct 7844 background and foreground combinations of accented colours to highlight 7845 the matching groups. A grey background is added to denote the implicit 7846 match between those groups. So we choose to respect this metaphor, 7847 while applying colours that conform with the accessibility goal of our 7848 project. Whereas Icomplete or Ido use subtle styles to present their 7849 results. Again, we remain faithful to their presentation. 7850 7851 With 'moderate', we apply nuanced background and foreground combinations 7852 of accented colour values. This will slightly tone down Helm, Ivy, 7853 Sallet, Selectrum, while it will slightly adjust the looks of Icomplete 7854 and Ido. 7855 7856 Whereas 'opinionated' has a more pronounced effect on the overall 7857 aesthetics of the UI. For the likes of Icomplete and Ido which are 7858 subtle by default, this option will use intense combinations of 7859 background and foreground colours. They are the diametric opposite of 7860 the nil value. Whereas Helm, Ivy, Sallet, Selectrum, will use even more 7861 subtle colours. Again, they are farther away than their default looks. 7862 7863 These new options supersede the now-deprecated and more limited in scope 7864 variables of prior releases: 7865 7866 + modus-operandi-theme-intense-standard-completions 7867 + modus-vivendi-theme-intense-standard-completions 7868 7869 Thanks to the following people for their valuable feedback in issue 75: 7870 https://gitlab.com/protesilaos/modus-themes/-/issues/75 7871 7872 + Anders Johansson 7873 + Manuel Uberti 7874 + Shreyas Ragavan 7875 7876 2 Prompts 7877 --------- 7878 7879 The 'modus-operandi-theme-prompts' and modus-vivendi-theme-prompts' will 7880 change the overall looks of minibuffer and shell prompts ('M-x shell' as 7881 well as 'M-x eshell'). Their possible values are: 7882 7883 + nil (default) 7884 + subtle 7885 + intense 7886 7887 Nil will only use a coloured foreground for the prompts' text. Simple 7888 and effective. 7889 7890 With 'subtle', the default foreground value is retained but is now 7891 complemented by an appropriately tinted background. The effect is more 7892 noticeable than the default, though not by much. 7893 7894 While 'intense' applies a coloured background and foreground combination 7895 that should clearly stand out from the rest of the context. 7896 7897 Thanks to Manuel Uberti for sharing feedback in issue 74: 7898 https://gitlab.com/protesilaos/modus-themes/-/issues/74 7899 7900 3 Fringe visibility 7901 ------------------- 7902 7903 A new pair of symbols supersedes older variables: 7904 7905 + modus-operandi-theme-visible-fringes ==> modus-operandi-theme-fringes 7906 + modus-vivendi-theme-visible-fringes ==> modus-vivendi-theme-fringes 7907 7908 While the deprecated options were booleans, the current ones offer a 7909 choice between the following: 7910 7911 + nil (default) 7912 + subtle 7913 + intense 7914 7915 Nil means that the fringes have no distinct background of their own. 7916 They still exist per the settings of 'fringe-mode', but can only be 7917 discerned by tracking the negative space between the frame's or window's 7918 edge and the buffer's effective boundaries. 7919 7920 The 'subtle' value will apply a greyscale background that is fairly 7921 close to the default main background (pure white/black). The fringes 7922 are now visible. 7923 7924 As its name implies, 'intense' has a more pronounced effect than the 7925 other values. It also uses a greyscale background. 7926 7927 Review of already supported faces and colours 7928 ============================================= 7929 7930 1 Magit blame styles 7931 -------------------- 7932 7933 The headers that Magit's blame interface produces were difficult to tell 7934 apart from their context. A set of carefully selected colours now makes 7935 sure that they are always distinct. Some subtle background values are 7936 used, in addition to other typographic elements. 7937 7938 Thanks to Damien Cassou for reporting this problem and for providing 7939 valuable feedback that informed the final design. Refer to issue 71: 7940 https://gitlab.com/protesilaos/modus-themes/-/issues/71 7941 7942 2 Paren match colours 7943 --------------------- 7944 7945 The face that highlights the matching delimiter when 'show-paren-mode' 7946 (or equivalent) is enabled uses two dedicated colours, whose names are: 7947 'bg-paren-match' and 'bg-paren-match-intense'. Those have been reviewed 7948 to make them more obvious in various contexts and to improve their 7949 overall consistency. 7950 7951 A report with relative contrast ratios is available on my website: 7952 https://protesilaos.com/codelog/2020-08-09-modus-themes-paren-match/ 7953 7954 I benefited from valuable feedback from Shreyas Ragavan in issue 70: 7955 https://gitlab.com/protesilaos/modus-themes/-/issues/70 7956 7957 3 Mu4e faces 7958 ------------ 7959 7960 Some faces were tweaked to make it easier to distinguish replied, 7961 forwarded, and draft messages from other headers. The changes are 7962 fairly small in scope, but the effect should be that of an overall 7963 improvement. 7964 7965 Thanks to Shreyas Ragavan for noticing these inconsistencies and for 7966 their continued participation in addressing them. See issue 69: 7967 https://gitlab.com/protesilaos/modus-themes/-/issues/69 7968 7969 4 Notmuch message headings 7970 -------------------------- 7971 7972 A couple of inconsistencies with how notmuch would style email addresses 7973 and folded messages were addressed. The generic 'italic' face was also 7974 tweaked in the process, removing the foreground it would falsely define. 7975 7976 Thanks to Damien Cassou for bringing these to my attention in issue 72: 7977 https://gitlab.com/protesilaos/modus-themes/-/issues/72 7978 7979 5 hl-todo 7980 --------- 7981 7982 Let the special keywords of 'hl-todo-mode' use an optional slant, just 7983 like code comments do. This is to ensure that they feel part of their 7984 context. 7985 7986 6 Magit general interface 7987 ------------------------- 7988 7989 Several faces were reviewed in the interest of colour harmony and to 7990 address potential inconsistencies or exaggerations. The most noticeable 7991 change pertains to the log views, as we now use fewer accent values, 7992 reducing whatever unnecessary "rainbow effect" may have existed. 7993 7994 7 VC commit logs 7995 ---------------- 7996 7997 The presentation of 'vc-print-log' and 'vc-print-root-log' has been 7998 reviewed to reduce the stark contrast between the colours it once used. 7999 While the elements remain distinct, the differences between them are 8000 more subtle, which is preferable when viewing long lists of 8001 similar-looking patterns. 8002 8003 8 Powerline 8004 ----------- 8005 8006 The active and inactive minibuffers now use appropriate accented 8007 backgrounds or foregrounds for some of their elements. This makes them 8008 better for their intended function. 8009 8010 Thanks to Shreyas Ragavan and tycho garen for their feedback in issue 8011 73, which was actually about adding support for Spaceline. It uses 8012 Powerline as its dependency, so we eventually had to accommodate both of 8013 them: https://gitlab.com/protesilaos/modus-themes/-/issues/73 8014 8015 Shreyas also helped by adding a short note in the README which informs 8016 users of those two packages on how to tweak things when conducting tests 8017 or changing themes. See merge requests 9 and 10: 8018 8019 + https://gitlab.com/protesilaos/modus-themes/-/merge_requests/9 8020 + https://gitlab.com/protesilaos/modus-themes/-/merge_requests/10 8021 8022 9 Latex sectioning 8023 ------------------ 8024 8025 The themes will no longer affect the height of the Latex sectioning 8026 faces. This is because there already exists a variable that scales them 8027 accordingly. 8028 8029 Thanks to Anders Johansson for providing insights in issue 77: 8030 https://gitlab.com/protesilaos/modus-themes/-/issues/77 8031 8032 10 Transient pop-up menu 8033 ------------------------ 8034 8035 Extended support for its new colour-coded faces that follow in the 8036 footsteps of the 'hydra' package for visual semantics. 8037 8038 11 Miscellaneous 8039 ---------------- 8040 8041 The following faces were refined: 8042 8043 + 'org-formula' inherits from 'fixed-pitch' to ensure that it does not 8044 break table layouts when the user opts for a mixed-font setup (such as 8045 with 'M-x variable-pitch-mode'). 8046 8047 + 'bongo-elapsed-track-part' uses a more appropriate accented 8048 background. 8049 8050 + 'symbol-overlay-default-face' is less intense than before. This is in 8051 response to feedback I received from Manuel Uberti as an aside in 8052 issue 75: https://gitlab.com/protesilaos/modus-themes/-/issues/75 8053 8054 + 'rectangle-preview' uses a slightly accented background, which 8055 distinguishes it from the highlighted region. This is to denote a 8056 different state where the user is typing in some text. 8057 8058 + 'diff-hl-change' now uses the more appropriate yellow colour instead 8059 of blue. Yellow denotes "mixed changes" and, therefore, stands 8060 between "removed" (red) and "added" (green). As it so happens, yellow 8061 is a colour that derives by mixing red with green. 8062 8063 New packages 8064 ============ 8065 8066 The following are now explicitly supported by the themes: 8067 8068 + org-table-sticky-header 8069 + pkgbuild-mode 8070 + semantic 8071 + spaceline 8072 8073 More faces or face groups that are defined: 8074 8075 + git-rebase (magit) 8076 + doom-modeline-debug-visual 8077 + file-name-shadow 8078 + the faces used by Emacs 27's 'display-line-numbers-major-tick' and 8079 'display-line-numbers-minor-tick' 8080 + table-cell 8081 8082 Final notes 8083 =========== 8084 8085 There now exists an HTML version of the README, which will hopefully 8086 make things easier for users: https://protesilaos.com/emacs/modus-themes/ 8087 8088 Other changes are not user-facing. For example, using 'pcase' instead 8089 of 'cond' to make relevant expressions more succinct. Or defining a 8090 coloured underline in a more straightforward way. No need to document 8091 them at length. 8092 8093 While this release introduces customisation options, it feels as though 8094 the themes are approaching a stable state. We know what works, we have 8095 a comprehensive colour palette that can meet our evolving needs, and we 8096 have already achieved broad package/face coverage. All while conforming 8097 with the overarching objective of this project for a minimum 7:1 8098 contrast ratio between background and foreground values in any given 8099 combination we specify. 8100 8101 I wish to thank everyone who has helped me by testing things and sharing 8102 their thoughts. The people already mentioned herein: 8103 8104 - Anders Johansson (https://gitlab.com/andersjohansson) 8105 - Damien Cassou (https://gitlab.com/DamienCassou) 8106 - Manuel Uberti (https://gitlab.com/muberti) 8107 - Shreyas Ragavan (https://gitlab.com/shrysr) 8108 - tycho garen (https://gitlab.com/tychoish) 8109 #+end_src 8110 8111 * 0.11.0 8112 :PROPERTIES: 8113 :CUSTOM_ID: h:7a453154-3486-45a8-9249-9183ad49ff42 8114 :END: 8115 8116 #+begin_src text 8117 Modus Operandi and Modus Vivendi version 0.11.0 8118 8119 By Protesilaos Stavrou <info@protesilaos.com> on 2020-07-31 8120 8121 This entry records the changes since version 0.10.0 (2020-06-24). The 8122 present release covers close to 100 commits, some of which introduce 8123 far-reaching changes. It is not just the quantity that matters. 8124 Sometimes even a minor tweak requires lots of testing and forethought. 8125 This release represents another month of intense work and attention to 8126 detail. 8127 8128 Palette review of "nuanced" colours 8129 =================================== 8130 8131 The themes contain a subset of palette variables that have a two-fold 8132 utility: 8133 8134 1. Provide a subtle coloured background that can be combined with all 8135 foreground colours that are intended for text/code highlighting. 8136 8137 2. Produce variegated text in cases where complementary information 8138 needs to be displayed alongside some more prominent construct 8139 (e.g. Org table formulas). 8140 8141 In early July 2020, these colours went through a comprehensive review to 8142 improve their intended use. The complete report is available on my 8143 website: 8144 <https://protesilaos.com/codelog/2020-07-08-modus-themes-nuanced-colours/> 8145 8146 This formed the preparatory work that enabled several of the changes 8147 documented herein, most noticeable among which is the "Org blocks" 8148 customisation option. 8149 8150 Customisation options 8151 ===================== 8152 8153 Org blocks 8154 ---------- 8155 8156 1. The symbols 'modus-operandi-theme-distinct-org-blocks' and 8157 'modus-vivendi-theme-distinct-org-blocks' are DEPRECATED. They are 8158 now REPLACED by the general-purpose 'modus-operandi-theme-org-blocks' 8159 and 'modus-vivendi-theme-org-blocks' respectively. 8160 8161 2. The aforementioned new symbols allow users to configure different 8162 styles for Org blocks. 8163 8164 + Option 'greyscale' (which you must quote like this: 'greyscale) 8165 will apply a subtle grey background to the contents of the block, 8166 while it will extend its beginning and end lines to ensure that the 8167 area is distinct from the rest of the buffer. This is the style 8168 you would normally get with the old customisation options. 8169 8170 + Option 'rainbow' (again, must be quoted) will instead apply a 8171 colour-coded subtle background in the main area of the block. The 8172 exact colour depends on the programming language being used. You 8173 would need to check the source code for how these are currently 8174 mapped (search for "org-src-block-faces"). The basic idea is to 8175 have different colours that make it easier for mixing the 8176 input/output of multiple programming languages. Users who engage 8177 in literate programming may find this particularly useful. Because 8178 the block is already quite apparent, the beginning and end lines 8179 are not extended to the edge of the window, to avoid exaggerations 8180 that could create distractions. 8181 8182 Variable pitch headings (proportionately-spaced headings) 8183 --------------------------------------------------------- 8184 8185 The symbols 'modus-operandi-theme-proportional-fonts' and 8186 'modus-vivendi-theme-proportional-fonts' are DEPRECATED. They are now 8187 REPLACED by the more appropriately-named 8188 'modus-operandi-theme-variable-pitch-headings' and 8189 'modus-vivendi-theme-variable-pitch-headings' respectively. 8190 8191 The intended effect is exactly the same as before, namely, to let 8192 headings in Org and relevant modes use a proportionately-spaced font 8193 regardless of what the default is (typically a monospaced typeface). 8194 8195 Remember that to configure the exact font family for the generic 8196 'variable-pitch' face, you can use something like this: 8197 8198 (set-face-attribute 'variable-pitch nil :family "FiraGO") 8199 8200 Check the README for further details on setting and mixing fonts. 8201 8202 Faint syntax for programming 8203 ---------------------------- 8204 8205 Users can now enable 'modus-operandi-theme-faint-syntax' or 8206 'modus-vivendi-theme-faint-syntax'. The intended effect is to tone down 8207 all syntax highlighting in programming modes, while always respecting 8208 the overarching objective of these themes for a minimum contrast ratio 8209 of 7:1 (highest accessibility standard for colour contrast---WCAG AAA). 8210 8211 The default is to use more saturated colours. 8212 8213 Intense hl-line 8214 --------------- 8215 8216 Toggling on 'modus-operandi-theme-intense-hl-line' or 8217 'modus-vivendi-theme-intense-hl-line' will apply a more pronounced grey 8218 to the background of faces that highlight the current line. This 8219 affects tools such as the built-in 'hl-line-mode', which is in turn 8220 enabled automatically by lots of other packages, like 'elfeed' and 8221 'mu4e'. 8222 8223 The default is to use a subtle grey. 8224 8225 Intense paren-match 8226 ------------------- 8227 8228 Same principle as above. 'modus-operandi-theme-intense-paren-match' and 8229 'modus-vivendi-theme-intense-paren-match' will make the matching 8230 parentheses more intense than the default subtle warm background. This 8231 concerns modes such as that of the 'smartparens' package as well as the 8232 built-in 'show-paren-mode'. 8233 8234 Refactored the use of bold 8235 ========================== 8236 8237 A major review of the themes now makes it possible to specify the exact 8238 weight of what a "bold" typeface is. This is only meaningful for cases 8239 where a font family has variants such as "semibold". 8240 8241 Evaluate this, replacing "semibold" with the one your typeface supports: 8242 8243 (set-face-attribute 'bold nil :weight 'semibold) 8244 8245 The default is to use a standard bold weight. 8246 8247 Packages and face groups 8248 ======================== 8249 8250 Refine already-supported faces 8251 ------------------------------ 8252 8253 + The following packages now use more appropriate colour combinations: 8254 8255 - diary 8256 - annotate 8257 - transient (magit pop-up menu, though also used elsewhere) 8258 - fountain 8259 - calendar 8260 - mu4e 8261 - markdown-mode 8262 - outline-minor-faces 8263 8264 + Other changes: 8265 8266 - org-agenda has undergone a thoroughgoing review to improve the 8267 semantics of colour for scheduled tasks, deadlines, modeline 8268 filters, current date etc. 8269 8270 - org and outline-mode headings have been refined to look better with 8271 the "rainbow headings" option that was introduced in an earlier 8272 release (check the README). 8273 8274 - org-quote now works properly with the "Org blocks" option mentioned 8275 above. 8276 8277 - org-checkbox-statistics uses the same foreground colour as org-todo, 8278 for the sake of consistency. 8279 8280 - org-date now always inherits from 'fixed-pitch', to ensure proper 8281 alignment of elements when a mixed fonts setup is used (tools for 8282 achieving this effect are documented at length in the README). The 8283 relevant patch was contributed by Matthew Stevenson. 8284 8285 - org-meta-line no longer looks like a comment, which helps denote its 8286 special utility (e.g. when evaluating a table's formula). 8287 8288 - org-warning now uses a variant of red for its text, which works 8289 better in the contexts this face is used (e.g. the agenda or the 8290 export dispatcher). 8291 8292 - We now apply a slightly more accented colour combination for 8293 'secondary-selection', which is chiefly used by Org and Calendar in 8294 various contexts. 8295 8296 - Gnus group level faces make more considerate use of colour to better 8297 denote their significance. 8298 8299 - Cited text in message buffers has a better sequence of colours. 8300 8301 - Two new Helm faces are supported. 8302 8303 - Let 'keycast' use a different border colour when the "3D modeline" 8304 option is enabled (refer to the README for that option). 8305 8306 - Extend 'hl-todo-keyword-faces' with the "bug" keyword. 8307 8308 - More intense colour for 'diff-hl-reverted-hunk-highlight'. 8309 8310 - Tone down the focused modeline's border colour. 8311 8312 - Define new bespoke faces that the themes use internally. 8313 8314 - Use more appropriate colours for 'header-line-highlight'. 8315 8316 - Apply greyscale line highlight for flycheck current line in the 8317 diagnostics buffer, instead of the warmer colour combination it had 8318 before. 8319 8320 - Tweak text colour difference between MU4E read and unread messages. 8321 8322 Added support for new packages 8323 ------------------------------ 8324 8325 + bongo 8326 + boon 8327 + dictionary 8328 + eshell-fringe-status 8329 + eshell-git-prompt 8330 + eshell-prompt-extras 8331 + highlight-tail 8332 + hl-defined 8333 + notmuch 8334 + tty-menu 8335 8336 Miscellaneous 8337 ============= 8338 8339 + Expand the README with new documentation and clarify parts of the 8340 existing one. 8341 8342 + Update the Wiki page with screenshots and their descriptions (this in 8343 itself is a day's worth of work): 8344 https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots 8345 8346 + Make the source code of each theme work better with the built-in 8347 'outline-minor-mode'. Check my video if you need a demo on how I use 8348 this in tandem with 'imenu': 8349 https://protesilaos.com/codelog/2020-07-20-emacs-outline-imenu/ 8350 8351 Thanks to, in no particular order: 8352 8353 + Shreyas Ragavan (https://gitlab.com/shrysr) for introducing me to the 8354 idea that derived the "rainbow" Org blocks and for providing valuable 8355 feedback in several issues. 8356 8357 + Matthew Stevenson (https://gitlab.com/matth0204) for contributing the 8358 aforementioned patch for the 'org-date' face. 8359 8360 + Manuel Uberti (https://gitlab.com/muberti) for offering valuable 8361 feedback in a number of issues (and special thanks for doing this for 8362 several months now). 8363 8364 + Dinko (https://gitlab.com/dinkonin) for noticing a not-so-obvious bug 8365 in the initial implementation of the "rainbow Org blocks" option. 8366 8367 + okamsn (https://gitlab.com/okamsn) for providing the necessary 8368 feedback that allowed me to refactor the use of "bold", mentioned 8369 above. 8370 8371 Refer to the issue tracker (or commit log) for further details: 8372 https://gitlab.com/protesilaos/modus-themes/-/issues 8373 #+end_src 8374 8375 * 0.10.0 8376 :PROPERTIES: 8377 :CUSTOM_ID: h:de114a53-7cbd-49aa-bf24-d1f1f0bf342e 8378 :END: 8379 8380 #+begin_src text 8381 Modus Operandi and Modus Vivendi version 0.10.0 8382 8383 By Protesilaos Stavrou <info@protesilaos.com> on 2020-06-24 8384 8385 This entry records the changes since version 0.9.0 (2020-06-03). The 8386 present release is focused on stability and internal improvements. 8387 8388 Fixes and adjustments 8389 --------------------- 8390 8391 Basil L. Contovounesios, aka @basil-conto, (and also a contributor to 8392 core Emacs) sent several patches that do the following: 8393 8394 + Fix top-level parentheses so that the results of 8395 'custom-theme-set-faces' and 'custom-theme-set-variables' are not 8396 passed as arguments to the first 'custom-theme-set-faces'. 8397 8398 + Fix the docstrings of the custom 'modus-theme-*' faces. 8399 8400 + Simplify the syntax of properties assigned to each face. 8401 8402 + Improve the way styles are inherited by Dired and Ibuffer. 8403 8404 Basil also pointed out an inconsistency with regard to an unwanted 8405 underline effect for the 'doom-modeline-urgent' face in Modus Vivendi. 8406 It was promptly removed. 8407 8408 From my part, I fixed issues 46 and 51 that concerned the way the 8409 compiler would evaluate each theme's palette. The palette is now 8410 defined as a constant. Further information: 8411 8412 - https://gitlab.com/protesilaos/modus-themes/-/issues/46 8413 - https://gitlab.com/protesilaos/modus-themes/-/issues/51 8414 8415 8416 Improvements to existing faces 8417 ------------------------------ 8418 8419 André Alexandre Gomes (@aadcg) provided valuable feedback and 8420 suggestions in issue 50 on the redesign of several 'org-mode' faces. 8421 8422 The thread is long and contains lots of screenshots: 8423 https://gitlab.com/protesilaos/modus-themes/-/issues/50 8424 8425 The changes in outline: 8426 8427 + Org checkboxes have a subtle background which gives them a more 8428 pronounced appearance while retaining their overall simplicity. 8429 8430 + Org dates use a more saturated variant of cyan than they did before. 8431 It helps distinguish them from their context. Especially true for 8432 dates inside of tables. 8433 8434 + Org agenda dates have also undergone a slight review to match the 8435 above. 8436 8437 + Org time grid now uses a more appropriate foreground colour, which has 8438 been designed specifically for unfocused context. 8439 8440 + Org todo keywords use a more semantically-correct variant of red, 8441 rather than the purple one they had before. 8442 8443 + Org statistics' cookies for pending tasks use a red variant as well 8444 rather than the previous yellow one, in the interest of consistency 8445 and to avoid exaggerations. 8446 8447 8448 Other internal refinements 8449 -------------------------- 8450 8451 + Subtle review of the Modus Vivendi palette. In short, it addresses: 8452 8453 - Imbalanced levels of luminance and inconsistent differences in hue 8454 between them and their neighbouring colours (e.g. the greens between 8455 them, and the greens next to the yellows in the context of syntax 8456 highlighting). The result was that they would create an undesirable 8457 emphatic 'pop out' effect when placed close to more moderate 8458 colours. 8459 8460 - Differences in luminance and hue could lead to scenaria where two 8461 colours could be conflated with each other or otherwise fail to 8462 perform their intended function. 8463 8464 - The complete report is on my website: 8465 https://protesilaos.com/codelog/2020-06-13-modus-vivendi-palette-review/ 8466 8467 + Major review of the 'diredfl' faces, in the interest of improved 8468 readability and harmony between the various colours. This benefits 8469 from the palette changes in Modus Vivendi, but also from a similar 8470 review to Modus Operandi that was documented in version 0.9.0. 8471 8472 + Refactor the names of dedicates colours for "marking" purposes. These 8473 are used in Dired, Ibuffer, Proced, etc. Then apply them consistently 8474 throughout each theme. 8475 8476 + Make sure that 'stripes' uses the same colours as 'hl-line-mode'. 8477 8478 + Let symlinks use a more appropriate colour in Dired and Trashed. 8479 8480 + Refine the use of colour in 'magit-tag', 'eshell-prompt', 8481 'message-header-name', 'log-edit-header', 'change-log-function', 8482 'message-mml', 'message-header-name', 'message-separator'. These are 8483 subtle (i.e. difficult) tweaks that improve the overall presentation 8484 in context. 8485 8486 + Make diff indicators not use an unnecessary background when the 8487 user-facing option for "subtle diffs" is enabled (check the README for 8488 the exact name of this option). This ensures consistency between the 8489 indicators and the actual scope of the diffs. 8490 8491 + Add support for the 'minibuffer-line' package and extend existing 8492 support of the faces used in the built-in Emacs info pages. 8493 8494 My thanks to Basil and André for their contributions! 8495 #+end_src 8496 8497 * 0.9.0 8498 :PROPERTIES: 8499 :CUSTOM_ID: h:96ccc8b9-2d5e-4857-bf25-4e094e17bfed 8500 :END: 8501 8502 #+begin_src text 8503 Modus Operandi and Modus Vivendi version 0.9.0 8504 8505 By Protesilaos Stavrou <info@protesilaos.com> on 2020-06-03 8506 8507 This entry records the changes since version 0.8.0 (2020-04-28). The 8508 present release contains about 50 commits, covering a month of active 8509 development. 8510 8511 All changes are aligned with the primary objective of this project, 8512 which is conformance with the WCAG AAA accessibility standard for colour 8513 contrast. This translates to a minimum contrast ratio of 7:1 between a 8514 given combination of foreground and background colours. The highest 8515 standard of its kind. 8516 8517 All customisation options that are booleans are off ('nil') by default. 8518 The project's policy is to offer such features on an "opt-in" basis, 8519 while always respecting the principle of least surprise. 8520 8521 Refer to the README for further information on the exact names of 8522 symbols and the like. 8523 8524 New customisation options 8525 ------------------------- 8526 8527 + It is now possible to make the faces of Icomplete, Ido, and a few 8528 other related tools such as 'orderless', use coloured backgrounds to 8529 style their feedback. This is the aesthetic already in effect for 8530 Ivy, Helm, and Selectrum. The default is more subtle, in that it uses 8531 just an accented foreground value without any added background. 8532 8533 + Advanced users can now override both the exact values of colour 8534 variables, as well as the mapping of properties/variables to faces. 8535 In practice this means that it is possible to completely change parts 8536 of the theme (or the entirety of it for that matter). It also means 8537 that users can simply access the theme's palette for the sake of 8538 correctly passing the appropriate value to some bespoke face of 8539 theirs. 8540 8541 + An extra increment for scaled headings is now available. This should 8542 hold the highest value on the scale. Such variables only take effect 8543 when the user opts for the "scaled headings" option. 8544 8545 Overview of changes 8546 ------------------- 8547 8548 + A set of internal reforms were carried through in order to allow the 8549 colour palette to be accessed from user configuration files. This 8550 required a lot of debugging work to make sure the themes compile 8551 properly and performance is not affected. 8552 8553 - The original idea for this redesign was suggested by Len Trigg in 8554 issue 39: https://gitlab.com/protesilaos/modus-themes/-/issues/39. 8555 Len also provided a real-world implementation of this new option, 8556 which is included in the project's README. 8557 8558 - André Alexandre Gomes helped figure out the problems caused by the 8559 initial design of this feature. In particular, André identified a 8560 performance penalty as well as errors pertaining to byte 8561 compilation. Everything was eventually resolved. For more see 8562 issue 44: https://gitlab.com/protesilaos/modus-themes/-/issues/44. 8563 8564 + Several org-mode faces were reviewed in order to cope well with mixed 8565 font settings. This is about use-cases where the main typeface is 8566 proportionately-spaced, either by default or by some minor mode like 8567 the built-in 'variable-pitch-mode'. The intent of configuring those 8568 faces is to make them always inherit a fixed-pitch (monospace) font 8569 family, in the interest of preserving the alignment of elements. The 8570 idea, suggested code, as well as user feedback were offered by Ben in 8571 issue 40: https://gitlab.com/protesilaos/modus-themes/-/issues/40. 8572 8573 + Mixed font settings may have some side-effects depending on user 8574 configurations. This is unavoidable as we cannot control how users 8575 define their fonts. Mark Barton reported one such case, while he was 8576 able to fix it by making use of the suggested typeface definitions. 8577 See issue 42: https://gitlab.com/protesilaos/modus-themes/-/issues/42. 8578 8579 + The faces for the 'tab-bar-mode' and 'tab-line-mode' that ship with 8580 Emacs 27 were written anew. Same for those of 'centaur-tabs'. The 8581 ideas for the redesign as well as the overall aesthetic are Ben's, per 8582 issue 41: https://gitlab.com/protesilaos/modus-themes/-/issues/41. 8583 8584 + An edge case with Helm's interpretation of colour values for its 8585 ripgrep interface was reported by Manuel Uberti in issue 49: 8586 https://gitlab.com/protesilaos/modus-themes/-/issues/49. It 8587 essentially had to do with the syntax for the regexp engine as read by 8588 the underlying 'rg' executable. Collaboration on that front 8589 eventually led to fixes in Helm itself, committed by its maintainer. 8590 Note that the README for the Modus themes already contains information 8591 on how Helm applies a face to the matches of grep or grep-like 8592 commands. Issue 49 confirmed what was already known in that regard 8593 (i.e. that the "--color=never" command-line option is required to use 8594 the Helm face, else a colour value from the ANSI colour vector is 8595 used---both are supported by the themes). 8596 8597 + The faces for Flycheck, Flymake, and Flyspell that would apply an 8598 underline effect were completely rewritten to account for relevant 8599 differences between GUI and TUI Emacs. 8600 8601 - For GUI Emacs, all affected faces will now just use a colour-coded 8602 wavy underline. Empowered by the introduction of dedicated 8603 linter-related colours in prior commits (for version 0.8.0), we no 8604 longer have to change the foreground value of the offending text in 8605 addition to applying the underline effect. Whereas before the text 8606 would also get repainted, which was too intrusive in most 8607 circumstances. 8608 8609 - If support for wavy underlines is not available, we assume the 8610 presence of a TUI, which generally is relatively more limited in its 8611 ability to reproduce colours with precision (meaning that the 8612 dedicated linter colour could be distorted, potentially producing 8613 inaccessible combinations). So for those cases we apply a straight 8614 underline combined with a colour-coded foreground for the affected 8615 text. This makes it more intense compared to the GUI equivalent, 8616 but is the necessary course of action to overcome the constraints 8617 imposed by the underlying terminal. 8618 8619 + The palette of Modus Operandi underwent lots of subtle changes to make 8620 the background value of hl-line-mode more visible while retaining the 8621 overall style and character of the theme. In principle, you should 8622 not be able to tell the difference, unless presented with a careful 8623 side-by-side comparison. This is the comprehensive report, including 8624 a reproducible org-mode document with all the relevant contrast ratios: 8625 https://protesilaos.com/codelog/2020-05-10-modus-operandi-palette-review/. 8626 8627 + Fixed `org-hide' to actually "hide" by using the appropriate colour 8628 value. 8629 8630 + Several other face groups received minor tweaks. 8631 8632 + The README was improved to better present the available customisation 8633 options and to cover other topics of interest. 8634 8635 + Updated the screen shots and their description in the relevant Wiki 8636 page: https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots. 8637 8638 Added support for 8639 ----------------- 8640 8641 + circe 8642 + el-search 8643 + eros 8644 + golden-ratio-scroll-screen 8645 + highlight-indentation 8646 + hyperlist 8647 + indium 8648 + journalctl-mode 8649 + minimap 8650 + nxml-mode 8651 + vdiff 8652 + yasnippet 8653 #+end_src 8654 8655 * 0.8.0 8656 :PROPERTIES: 8657 :CUSTOM_ID: h:afa34aec-7079-4c45-8e16-ab4e7cc8cd6a 8658 :END: 8659 8660 #+begin_src text 8661 Modus Operandi and Modus Vivendi version 0.8.0 8662 8663 By Protesilaos Stavrou <info@protesilaos.com> on 2020-04-28 8664 8665 This entry records the changes since version 0.7.0 (2020-03-30). The 8666 present release contains a little more than a hundred commits, covering 8667 one month of intense work. 8668 8669 All changes are aligned with the primary objective of this project, 8670 which is conformance with the WCAG AAA accessibility standard for colour 8671 contrast. This translates to a minimum contrast ratio of 7:1 between a 8672 given combination of foreground and background colours. 8673 8674 All customisation options mentioned herein are off ('nil') by default. 8675 The project's policy is to offer such features on an "opt-in" basis, 8676 while always respecting the principle of least surprise. 8677 8678 Refer to the README for further information. 8679 8680 8681 Four new customisation options 8682 ------------------------------ 8683 8684 The options in outline, with their detailed description below: 8685 8686 + Rainbow headings 8687 + Section headings 8688 + 3D modeline 8689 + Subtle diffs 8690 8691 1. "Rainbow headings" will apply more vivid colours to headings in 8692 'org-mode' and 'outline-mode'. The gradation is similar to that of a 8693 rainbow's colour spectrum. 8694 8695 The default is to use colour values that are closer to the grey 8696 scale. 8697 8698 2. "Section headings" also apply to 'org-mode' and 'outline-mode'. They 8699 will draw an overline over each heading and use a nuanced background 8700 colour that is appropriate for each level. For Org, this option has 8701 some additional effects, where it will render keywords and priority 8702 cookies in a box and add to them a subtle background. This is to 8703 make sure that everything feels consistent (to the extent possible). 8704 8705 The default is to not use overlines, backgrounds, boxes in any of the 8706 relevant faces. This is consistent with the standard austere 8707 colouration of headings: to not deviate too much from a "plain text" 8708 aesthetic. 8709 8710 NOTE: "rainbow headings" and "section headings" can work on their own or 8711 be combined together. 8712 8713 3. "3D modeline" will use a faux unpressed button style for the current 8714 window's modeline (like the standard looks of 'emacs -Q'). The 8715 colours used for the active and inactive modelines are tweaked 8716 accordingly to maximise the effect while retaining the visual 8717 distinction between them. 8718 8719 The default is to draw the modelines in a two-dimensional style, with 8720 the active one having a more noticeable border around it. 8721 8722 4. "Subtle diffs" will use colour-coded text for line-wise differences 8723 without applying any appropriately-coded background value or, where 8724 necessary, by using only a subtle greyscale background. This affects 8725 'diff-mode', 'magit', 'ediff', and 'smerge-mode'. For Magit an extra 8726 set of tweaks is implemented to account for the differentiation 8727 between the focused and unfocused diff hunks. 8728 8729 Due to their unique requirements, word-wise or refined changes are 8730 always drawn with a colour-coded background, though it is less 8731 intense when this option is enabled. 8732 8733 The default is to use a colour-coded background and foreground 8734 combination (e.g. light green text on a dark green backdrop) and to 8735 make appropriate adjustments for refined diffs and modes of 8736 interaction such as Magit's focused/unfocused diff states. 8737 8738 8739 Other major refinements 8740 ----------------------- 8741 8742 + Thoroughly revise the colours of 'ediff' and 'smerge-mode', so that 8743 they are aligned with those of 'diff-mode' and 'magit'. This is in 8744 addition to the "subtle diffs" options mentioned in the previous 8745 section. 8746 8747 + Review the faces used by Flycheck and Flymake. A wavy/curly underline 8748 is now used in all terminals that support it. The underlined text is 8749 drawn with a more nuanced foreground than before. The previous design 8750 was exaggerating an already clear effect and could make things more 8751 difficult under certain circumstances. 8752 8753 + All language checkers, including the aforementioned linter front-ends, 8754 now benefit from a new set of colours that are designed specifically 8755 for this particular purpose. Makes the affected faces feel more 8756 different than their context. 8757 8758 + Use dedicated colours for escape sequences, regular expression 8759 constructs, and quoted characters. The goal is to better 8760 differentiate them from their surroundings. 8761 8762 + Tweak the colours of 'hydra' to improve the distinction between its 8763 various types of behaviour. 8764 8765 + Reduce the overall luminance of the background colours used in the 8766 fringes by the likes of 'flycheck', 'flymake', 'diff-hl', etc. They 8767 should now not stand out more than they should, while retaining their 8768 intended role. 8769 8770 + Implement more saturated colours in Elfeed. The previous choices 8771 could make it harder to differentiate the various parts of the 8772 presentation. 8773 8774 + Make better use of the customisation options for bold and slanted 8775 constructs where that is allowed. If a face is not tied to the 8776 semantics of these styles then it is drawn without them, unless the 8777 user specifically opts for the relevant customisation options. 8778 8779 8780 Added support for packages (A-Z) 8781 -------------------------------- 8782 8783 + ag 8784 + color-rg 8785 + ctrlf 8786 + debbugs 8787 + eglot 8788 + forge 8789 + helpful 8790 + highlight-symbol 8791 + ibuffer 8792 + icomplete 8793 + iflipb 8794 + magit-imerge 8795 + man 8796 + orderless 8797 + page-break-lines 8798 + parrot 8799 + phi-grep 8800 + phi-search 8801 + pomidor 8802 + rcirc 8803 + spell-fu 8804 + switch-window 8805 + swoop 8806 + tab-bar-mode 8807 + tab-line-mode 8808 + trashed 8809 + tomatinho 8810 + tuareg 8811 + vimish-fold 8812 + visible-mark 8813 + vterm 8814 + wcheck-mode 8815 + winum 8816 + woman 8817 8818 8819 Miscellaneous changes and concluding remarks 8820 -------------------------------------------- 8821 8822 + Rewrote large parts of the README to make the customisation options 8823 easier to discover and understand. 8824 8825 + Updated the screen shots and their description in the relevant Wiki 8826 page: https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots 8827 #+end_src 8828 8829 * 0.7.0 8830 :PROPERTIES: 8831 :CUSTOM_ID: h:353114b7-6980-4622-8057-b8cbb8361a8a 8832 :END: 8833 8834 #+begin_src text 8835 Modus Operandi and Modus Vivendi version 0.7.0 8836 8837 By Protesilaos Stavrou <info@protesilaos.com> on 2020-03-30 8838 8839 This entry documents the changes since version 0.6.0 (2020-03-01). The 8840 present release is the largest to date containing 110 commits. 8841 8842 All changes conform with the primary objective of this project, which is 8843 conformance with the WCAG AAA accessibility standard for colour 8844 contrast. This represents a minimum contrast ratio of 7:1 between a 8845 given combination of foreground and background colours. 8846 8847 All customisation options mentioned herein are off ('nil') by default. 8848 The project's policy is to offer such features on an "opt-in" basis. 8849 Refer to the README or each theme's source code for the names of these 8850 user-facing symbols. 8851 8852 Major refinements to existing face groups 8853 ----------------------------------------- 8854 8855 + The headline feature of this release is a refined set of colours for 8856 visualising version-control-system differences ("diffs"). The new 8857 colours are less intense than before and are designed to better convey 8858 the meaning of the constructs they apply to. Affected face groups are 8859 those of 'magit' and 'diff-mode'. A future release will assess how 8860 similar packages, such as 'ediff', can benefit from this work. 8861 8862 + The other major set of changes concerns the colours that apply to 8863 fringes (see 'fringe-mode'). A new customisation option allows for a 8864 distinct background for the fringes (courtesy of Anders Johansson in 8865 commit 80fb704). The default uses the same colours as the main 8866 buffer's background. Building on this effort, fringe indicators, such 8867 as those of 'flycheck' now benefit from an entirely new set of 8868 background+foreground colour combinations that are designed 8869 specifically for the fringes. 8870 8871 + A new customisation option allows users to render 'org-mode' source 8872 blocks in a distinct background colour. The default is to use the 8873 same background as the rest of the buffer. When this option is 8874 enabled, the background colour for the beginning and end line of such 8875 blocks is extended to the end of the window (using the ':extend t' 8876 attribute for >= Emacs 27). Older Emacs versions already extend to 8877 the end of the window. 8878 8879 + The colour combination that shows the matching parentheses or 8880 delimiters has been reviewed. The commit is fairly small and the 8881 changes are immediately noticeable only to the most discerning of 8882 eyes. Still, the considerations informing the review imposed a 8883 rigorous method. Rather than summarise the findings, interested 8884 readers are advised to refer to commit af3a327: it offers a 8885 comprehensive analysis on the matter. 8886 8887 Added support for packages (A-Z) 8888 -------------------------------- 8889 8890 + auctex/tex 8891 + bm 8892 + buffer-expose 8893 + centaur-tabs 8894 + cider (tentative, feedback is much appreciated) 8895 + csv-mode 8896 + dynamic-ruler 8897 + ebdb 8898 + elfeed-score 8899 + flyspell-correct 8900 + fold-this 8901 + freeze-it 8902 + frog-menu 8903 + git-walktree 8904 + helm-switch-shell 8905 + highlight-defined 8906 + highlight-escape-sequences (hes-mode) 8907 + highlight-numbers 8908 + highlight-thing 8909 + hl-todo 8910 + ioccur 8911 + julia 8912 + kaocha-runner 8913 + markup-faces (adoc-mode) 8914 + multiple-cursors 8915 + num3-mode 8916 + org-roam 8917 + org-superstar 8918 + org-treescope 8919 + outline-minor-mode 8920 + paradox 8921 + rainbow-identifiers 8922 + rg 8923 + ripgrep 8924 + sallet (tentative, feedback is much appreciated) 8925 + selectrum 8926 + sesman 8927 + side-notes 8928 + skewer-mode 8929 + stripes 8930 + symbol-overlay 8931 + syslog-mode 8932 + vc-annotate (C-x v g) 8933 + volatile-highlights 8934 + web-mode 8935 + yaml-mode 8936 8937 Note about VC-annotate 8938 ---------------------- 8939 8940 Quoting from the relevant note in the project's README: 8941 8942 Due to the unique way `vc-annotate' (`C-x v g') applies colours, 8943 support for its background mode (`vc-annotate-background-mode') is 8944 disabled at the theme level. 8945 8946 Normally, such a drastic measure should not belong in a theme: 8947 assuming the user's preferences is bad practice. However, it has 8948 been deemed necessary in the interest of preserving colour contrast 8949 accessibility while still supporting a useful built-in tool. 8950 8951 If there actually is a way to avoid such a course of action, without 8952 prejudice to the accessibility standard of this project, then please 8953 report as much (or contribute as per the information in the 8954 Contributing section). 8955 8956 8957 Overview of refinements to already supported packages 8958 ----------------------------------------------------- 8959 8960 In this section the notion of "dedicated colours" pertains to colour 8961 values that are reserved for special faces. They are never used for 8962 syntax highlighting or other common scenaria. 8963 8964 + Define new background colours for fringe indicators (as noted in the 8965 first section). Apply them to 'bm', 'diff-hl', 'git-gutter', 8966 'flycheck' fringe indicators. All such indicators are now made more 8967 visible and work better with the new customisation option for 8968 rendering the fringes in a distinct background. 8969 8970 + Define dedicated colours for tab-like interfaces. Currently these 8971 apply only to 'centaur-tabs'. The intention is to eventually 8972 implement them to the tab modes that ship with Emacs 27, as well as 8973 any other package that offers such functionality. 8974 8975 + Define dedicated colours for actions that "mark" items. Use them in 8976 'dired', 'proced', 'gnus'. An accented background is combined with an 8977 accented foreground. The intention is to make the underlying 8978 construct distinct even under circumstances where the mark's 8979 background changes, such as when it intersects with 'hl-line-mode' or 8980 'stripes': the accented foreground will still be recognisable as a 8981 colour that differs from the main foreground. The use of a bold font 8982 weight further reinforces the intended action. 8983 8984 + Refine 'dired' faces to account for the new "mark" styles. 8985 Directories are no longer rendered in a bold weight. 8986 8987 + Tweak the colours used in the built-in 'diary' and 'calendar' for 8988 better usability. 8989 8990 + Tweak 'deadgrep' colours for consistency with packages that offer 8991 similar functionality. 8992 8993 + Tweak 'compilation-line-number' in the interest of consistency with 8994 similar interfaces. 8995 8996 + Use a more appropriate colour for 'trailing-whitespace'. It now is a 8997 colour value that was designed specifically as a background. 8998 8999 + Expand 'fountain-mode' support by covering its new heading faces. The 9000 headings will be presented in larger font sizes, or using proportional 9001 fonts, should the user enable the relevant theme customisation options 9002 (see README or source code). 9003 9004 + Remove bold weight from matching parentheses in 'show-paren-mode' and 9005 'smartparens'. The temporarily applied bold weight can cause 9006 misalignments while using certain fonts. Also apply the new colours 9007 for matching delimiters, as documented in the first section. 9008 9009 + Refine 'outline-mode' colours to be consistent with those of Org's 9010 headings. 9011 9012 + Several usability and colour refinements for 'helm' and related 9013 packages in that milieu. 9014 9015 + Remove box property from emphasis markers in the mode line. It 9016 created inconsistencies with other faces. 9017 9018 + Refine the colours used in Magit logs, `change-log', `log-view'. They 9019 are meant to be more distinct from their context, without drawing too 9020 much attention to themselves. 9021 9022 + Minor internal fixes for indentation and the like. 9023 9024 Miscellaneous changes and concluding remarks 9025 -------------------------------------------- 9026 9027 + Add section in the README which documents a legal requirement for all 9028 potential non-trivial code contributions: the need to assign copyright 9029 to the Free Software Foundation. The Modus Themes are now distributed 9030 via the official GNU ELPA repository and copyright over them is 9031 assigned to the FSF. 9032 9033 + Add CHANGELOG file which consolidates all tagged release notes such as 9034 this one. 9035 9036 + Add new screen shots to the relevant Wiki page, together with detailed 9037 descriptions on what is being demonstrated: 9038 https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots 9039 9040 Special thanks to Manuel Uberti for reporting several issues and 9041 offering feedback where appropriate. I was able to add support for lots 9042 of new packages. While a few among the already supported face groups 9043 underwent tweaks and refinements. The 'helm' ecosystem benefited the 9044 most. 9045 9046 Thanks to Anders Johansson for the patch that introduced the 9047 fringes-related customisation option. It inspired me to reconsider the 9048 use of this particular area of the interface, which eventually led to 9049 the barrage of commits that refashioned the fringe indicators. A major 9050 win overall. 9051 9052 Thanks to Jonathan Otsuka for fixing an error of mine on the naming of 9053 some symbols. My apologies for missing it: I will be more careful from 9054 now on. 9055 9056 Note: both patches were small, requiring no copyright assignment. 9057 Larger contributions are always welcome, though make sure you read the 9058 section in the README with regard to assigning copyright to the Free 9059 Software Foundation. 9060 #+end_src 9061 9062 * 0.6.0 9063 :PROPERTIES: 9064 :CUSTOM_ID: h:c8c33ff2-6f75-4642-a27e-ee6e8abc493e 9065 :END: 9066 9067 #+begin_src text 9068 This release contains lots of refinements and additions. 9069 9070 Let me start with an administrative point: I have completed the process 9071 of assigning my copy rights to the Free Software Foundation. This 9072 covers every contribution I make to GNU Emacs. In practice, it means 9073 that the Modus themes can now be included in the official ELPA archive 9074 and theoretically be shipped with Emacs itself. The ELPA inclusion is 9075 ongoing. Once it is completed, I will update the docs accordingly. 9076 9077 The administrative change has no effect on the way this project is 9078 handled. I still am the developer/maintainer and will continue to 9079 improve things further. If you still have questions, feel free to 9080 contact me: https://protesilaos.com/contact 9081 9082 Moving on to the changes since version 0.5.0 (2020-01-26). 9083 9084 Added support for: 9085 9086 + alert 9087 + apropos (built-in) 9088 + dap-mode 9089 + deft 9090 + dim-autoload 9091 + dired-git 9092 + enhanced-ruby-mode 9093 + gbd-mi.el (built-in library) 9094 + helm-ls-git 9095 + helm-xref 9096 + imenu-list 9097 + jira (org-jira) 9098 + js2-mode 9099 + jupyter 9100 + org-pomodoro 9101 + origami 9102 + rmail (built-in) 9103 + vc-print-log (built-in) 9104 + window-divider-mode (built-in) 9105 + xref (built-in) 9106 9107 Refinements to existing faces: 9108 9109 + A new subset of "nuanced" accent colours has been introduced. These 9110 are named {red,green,yellow,blue,magenta,cyan}-nuanced. Their purpose 9111 is to be used in contexts where lots of structured information is 9112 presented to the user, but each component does not need to draw too much 9113 attention to itself (e.g. Org's metadata). As always, their contrast 9114 ratio is designed to always be >= 7:1 relative to the backgrounds they 9115 may be combined with. 9116 9117 + Greatly improve the support for Gnus, even though most changes are 9118 subtle and are made in the interest of consistency. The group levels 9119 now make use of the "nuanced" palette where appropriate (to denote 9120 levels of lower importance). 9121 9122 + Several refinements for Org, including the use of "nuanced" colours 9123 for various metadata tags. The agenda headers will now be scaled 9124 appropriately and use a variable-pitch font if the user sets the 9125 relevant customisation values of the theme they are using (check the 9126 documentation in each theme file or the repo's README). 9127 9128 + Lots of refinements for Helm. Some of these were introduced to align 9129 the overall aesthetic with equivalent metaphors in Ivy. Others are 9130 meant to improve the styles of the headers and make various constructs 9131 consistent with their variants in the Helm ecosystem but also with their 9132 non-Helm counterparts (such as xref file names with and without Helm, 9133 but also with Helm's grep). 9134 9135 + Improve the colours of buttons in contexts such as M-x customize. 9136 This is especially noticeable in modus-vivendi-theme (the dark theme) 9137 where the buttons are a darker shade of grey rather than the original 9138 lighter one. 9139 9140 + Keycast now uses styles that are more consistent with the overall 9141 aesthetic of the Modus themes. This means that the mode line indicators 9142 are blue-ish (blue is generally used for highlights in the mode line, 9143 but also when hovering over an item with the mouse pointer). The pseudo 9144 button effect (colours + 3d) has been removed in favour of a flat look, 9145 in line with the flatness of the mode line itself. Whereas before the 9146 keycast faces where designed to be consistent with the package's 9147 defaults. 9148 9149 There were also a few minor refinements for: 9150 9151 + calendar and diary 9152 + icomplete 9153 + mm-uu-extract 9154 + nobreak-hyphen and nobreak-space 9155 + org-habit 9156 + tooltip-mode 9157 9158 Finally, the Commentary section of each theme has been greatly expanded. 9159 It now includes the user-facing customisation options and the complete 9160 list of supported packages. 9161 #+end_src 9162 9163 * 0.5.0 9164 :PROPERTIES: 9165 :CUSTOM_ID: h:dffc2bd4-6597-4be4-88f6-b349be7ebc6e 9166 :END: 9167 9168 #+begin_src text 9169 This release contains support for several new packages and lots of 9170 refinements for existing ones. A lot of work went into making the 9171 themes more robust by reviewing the inheritance of styles from one 9172 face group to another (in general, the ':inherit' property should not 9173 be used frivolously). Several subtle changes were made to the colour 9174 palette of both themes to ensure consistency, enable more possible 9175 combinations, and avoid potential ambiguity under certain potential 9176 circumstances. 9177 9178 Overall, this release gives me confidence that the themes have reached 9179 a fairly stable state. What follows is an overview of the changes 9180 since version 0.4.0 (2020-01-02). 9181 9182 Added support for: 9183 9184 + equake 9185 + flymake 9186 + focus 9187 + fountain (fountain-mode) 9188 + git-lens 9189 + git-timemachine 9190 + hi-fill-column 9191 + highlight-blocks 9192 + info-colors 9193 + lsp-mode 9194 + lsp-ui 9195 + proced (built-in) 9196 + regexp-builder (built-in) 9197 + suggest 9198 9199 Refinements: 9200 9201 + The header line uses its own dedicated colours. Several changes 9202 were made in 'eww', 'info', 'elfeed', 'magit', 'flycheck' to make 9203 sure that any accent value that appears there conforms with the 9204 overarching accessibility objective of the Modus themes (contrast 9205 ratio of >= 7:1, else WCAG AAA). 9206 + 'ivy' no longer uses a box style for the current line, as that was 9207 not always reliable. Appropriate colours are used instead. 9208 + 'org-mode' blocks use a foreground value that distinguishes their 9209 opening and closing tags from source code comments. 9210 + The 'org-ellipsis' face was configured to always inherit the looks 9211 of its respective heading or element, rather than have its own 9212 excessive styling. 9213 + 'paren-match' has colours that are designed specifically for it. 9214 This is done to retain their utility while making sure they are not 9215 mistaken for some other type of feedback. 9216 + 'magit' has explicit styles for the mode line process indicators, 9217 instead of inheriting from another face. The intention is to use 9218 foreground values that are designed specifically for use on the mode 9219 line (the minimum contrast ratio requirement). 9220 + 'erc' faces have been thoroughly reviewed in the interest of better 9221 usability. Its mode line indicators now use appropriate colours. 9222 + The faces of the 'messages' library have been thoroughly reviewed. 9223 This affects various email interfaces, but also 'elfeed' entry 9224 metadata headings. 9225 + 'whitespace-mode' no longer has a newline character that stands out. 9226 That kind of emphasis was not necessary, given that the symbol used 9227 is a dollar sign, which is already far more visible than a mid dot. 9228 + 'font-lock' (generic syntax highlighting) has better colour 9229 combinations for regexp grouping constructs. 9230 + 'rainbow-delimiters' was given its missing base error face. 9231 + 'git-commit' comment action uses a slightly different foreground 9232 value than before to better match its context. 9233 + 'isearch' and 'query-replace' use colours that properly denote each 9234 action's utility. 9235 + 'visual-regexp' has been reviewed to make the matching groups more 9236 distinct from each other. 9237 + 'occur' and any other buffer that relies on the 'match' face can now 9238 benefit from the new colour combinations, in that its results cannot 9239 be confused for the active 'isearch' or 'query-replace' or even 9240 their lazily highlighted results (or, indeed, of any other search 9241 tool). 9242 + 'company' uses faces for its search feedback that are consistent 9243 with other search metaphors. 9244 + Emacs 27's new ':extend' property is only implemented where 9245 necessary (note that the latest release is version 26.3). 9246 #+end_src 9247 9248 * 0.4.0 9249 :PROPERTIES: 9250 :CUSTOM_ID: h:1597e301-f9df-4aac-8ec5-b8ecf34f2930 9251 :END: 9252 9253 #+begin_src text 9254 This is an overview of the changes since version 0.3.0 (2019-12-25). 9255 9256 Add support for: 9257 9258 + ert 9259 + flycheck-indicator 9260 + mentor 9261 + mu4e-conversation 9262 + powerline-evil 9263 + telephone-line 9264 + vc (built-in version control) 9265 9266 Refinements to already-supported packages: 9267 9268 + company-mode (several refinements) 9269 + doom-modeline (major review) 9270 + helm (several tweaks) 9271 + hl-line-mode (use unique background) 9272 + ivy (improve matching line) 9273 + line-number-mode (minor tweaks) 9274 + markdown-mode (comprehensive expansion) 9275 + mode-line (more appropriate styles for the highlight) 9276 + powerline (minor tweaks) 9277 + region (use unique background) 9278 + swiper (improve matching line in main window) 9279 + whitespace-mode (several refinements) 9280 + mu4e (tweak mu4e-modeline-face for consistency) 9281 9282 Miscellaneous: 9283 9284 + Fix actual and potential problems with cursor faces that would 9285 distort the use of appropriate background and foreground colours. 9286 The documentation stipulates that the `cursor' face cannot be 9287 inherited by other faces, due to its peculiar nature of only 9288 recognising the background colour. 9289 + Add support for more bold constructs in code. As with all such 9290 options, it is disabled by default, expecting the user to 9291 explicitly opt in. 9292 + Declare additional custom faces. Only meant for internal use. 9293 + Subtle refinements to "active" colour values in both Modus 9294 Operandi and Modus Vivendi. These mostly concern the mode line 9295 (with a few special exceptions), where emphasis has been placed on 9296 the need to provide greater contrast between accent values that 9297 can be used there. 9298 + Minor documentation refinements. 9299 #+end_src 9300 9301 * 0.3.0 9302 :PROPERTIES: 9303 :CUSTOM_ID: h:cb0ca8dc-3960-4490-b3c4-27d10cf6ed44 9304 :END: 9305 9306 #+begin_src text 9307 Overview of changes since 0.2.0 (2019-12-18): 9308 9309 + Add support for the following packages: 9310 9311 + apt-sources-list 9312 + calfw 9313 + counsel-css 9314 + counsel-notmuch 9315 + counsel-org-capture-string 9316 + cov 9317 + disk-usage 9318 + evil-visual-mark-mode 9319 + geiser 9320 + keycast 9321 + org-journal 9322 + org-noter 9323 + paren-face 9324 + powerline 9325 + vc 9326 + xah-elisp-mode 9327 9328 + Explicitly style the following packages (these were already covered, 9329 in terms of the colours they used, but are now targeted directly): 9330 9331 + calendar 9332 + counsel 9333 + cursor 9334 + package (M-x list-packages) 9335 9336 + Minor tweaks to face groups: 9337 9338 + dired 9339 + compile 9340 9341 + Fixes and refinements: 9342 9343 + Documentation strings will now inherit the option for slanted 9344 constructs (off by default -- see the README about all the user 9345 options). 9346 + Comment delimiters have the same styles as the body of the comment 9347 to avoid inconsistencies when the option for slanted constructs is 9348 enabled. 9349 + The line number that is displayed in the compile log is now 9350 correctly styled. 9351 + Removed duplicate entries for ivy-remote and added ivy-separator. 9352 + Ensure that the minibuffer prompt is always above the minimum 9353 contrast ratio of 7:1, by using a more appropriate shade of cyan. 9354 + Properly reference a couple of variables in Modus Vivendi. 9355 9356 + Internal adjustments: 9357 9358 + Decouple the core dired faces from those of external packages. 9359 + Same for org and org-recur. 9360 9361 + Minor documentation updates. 9362 #+end_src 9363 9364 * 0.2.0 9365 :PROPERTIES: 9366 :CUSTOM_ID: h:c9746d04-adf4-41b1-9b7c-6caaf17f8816 9367 :END: 9368 9369 #+begin_src text 9370 Overview of changes since 0.1.0 (2019-12-09): 9371 9372 + Comprehensive review of `org-mode' faces. The use of colour should 9373 now be more consistent with the semantics of each element. These should 9374 also respond better to a variety of combinations, such as when the user 9375 has `hl-line-mode' enabled. The agenda view is the greatest beneficiary 9376 of this review. 9377 9378 + Make `mu4e' mode line faces consistent with other elements that may be 9379 placed on the mode line. 9380 9381 + Make `gnus' header name/subject more distinct. 9382 9383 + Several minor refinements to `ivy' and its extensions. 9384 9385 + General usability refinements to `ace-window'. 9386 9387 + Minor review of `elfeed' styles, in the interest of improving the 9388 contrast between the elements. 9389 9390 + Add support for: 9391 + `persp-mode' (fork of the already supported `perspective') 9392 + `dashboard' 9393 + `evil-mode' 9394 + `evil-goggles' 9395 + `ruler-mode' 9396 #+end_src 9397 9398 * 0.1.0 9399 :PROPERTIES: 9400 :CUSTOM_ID: h:e14e612e-6951-4812-bc88-62c498bd5644 9401 :END: 9402 9403 #+begin_src text 9404 First stable release of Modus Operandi and Modus Vivendi. 9405 #+end_src