CHANGELOG.org (412576B)
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.4.0 19 :PROPERTIES: 20 :CUSTOM_ID: h:4025f2f4-8524-49d9-9ee5-627361ff9875 21 :END: 22 23 Before I cover the changes, a brief note about the canonical source of 24 the ~modus-themes~ source code and corresponding documentation. 25 26 The ~modus-themes~ are built into Emacs, as of version 28, but they 27 are not developed in =emacs.git=: I maintain my own Git repository 28 (<https://github.com/protesilaos/modus-themes>) and sync with 29 =emacs.git= whenever I publish a new version, such as this one. This 30 means that my code is often ahead of the one in the Emacs tree 31 (including the =master= branch). Similarly, the official manual, which 32 is hosted on my website (<https://protesilaos.com/emacs/modus-themes>), 33 covers topics not found in the corresponding =gnu.org= web pages. 34 35 In the opening section of the manual I include references to the 36 canonical sources, but I still get comments about GNU web pages that I 37 do not control. Please check those links before reporting issues that 38 I can do nothing about. 39 40 ** No more SourceHut 41 :PROPERTIES: 42 :CUSTOM_ID: h:56191859-93e5-444a-9356-f393343619a5 43 :END: 44 45 Development continues on GitHub with GitLab as a mirror. I explained 46 my reasons here: <https://protesilaos.com/codelog/2024-01-27-sourcehut-no-more/>. 47 48 This is a change that affects all my Emacs packages. 49 50 ** Code blocks now have a background by default 51 :PROPERTIES: 52 :CUSTOM_ID: h:6b40d5f3-ae0a-4ec5-ab23-20ec64e37773 53 :END: 54 55 The user option ~modus-themes-org-blocks~ is obsolete. All code blocks 56 now have a subtle grey background out-of-the-box. The block delimiter 57 lines, such as the =#+begin_src= in Org mode, use the same background 58 as the block's contents. This produces a style that (i) is easy to 59 notice and (ii) employs minimal colouration. Furthermore, we no longer 60 have any discrepancy between Org and similar modes like Markdown. 61 62 Every theme has relevant semantic palette mappings to affect the 63 underlying faces: 64 65 - =bg-prose-block-delimiter= 66 - =fg-prose-block-delimiter= 67 - =bg-prose-block-contents= 68 69 The old =prose-block= is now renamed to =fg-prose-block-delimiter=. 70 Please update any such references in your configuration file. 71 72 Users can customise those either for all themes via the user option 73 ~modus-themes-common-palette-overrides~ or on a per-theme basis with 74 something like ~modus-operandi-palette-overrides~. The manual includes 75 ready-to-use code samples that showcases the numerous permutations made 76 possible by these new mappings: <https://protesilaos.com/emacs/modus-themes#h:f44cc6e3-b0f1-4a5e-8a90-9e48fa557b50>. 77 78 The old option to affect the user option ~org-src-block-faces~ as to 79 have a different background for each specified programming language is 80 no longer available. The previous design was inflexible, as I was 81 hardcoding values for a few languages. Whereas it is better to empower 82 the user with the choice of =language->colour= association. The manual 83 shows how to do this: 84 <https://protesilaos.com/emacs/modus-themes#h:8c842804-43b7-4287-b4e9-8c07d04d1f89>. 85 86 ** More semantic mappings more inline code in prose-centric modes 87 :PROPERTIES: 88 :CUSTOM_ID: h:1d6ae039-cc19-479f-b16f-839481f3080a 89 :END: 90 91 For Org, Markdown, and related we have semantic palette mappings that 92 target inline code constructs. For example, in Org we can have text 93 inside of tilde signs to mark it up as code. In prior versions, the 94 mappings were limited to just a foreground, but now they cover 95 background values as well. By default, these background do not have a 96 colour associated with them, meaning that the out-of-the-box aesthetic 97 is the same as before. Users simply have more power at their disposal 98 to tweak the theme to their liking. 99 100 Here are the names of those mappings: 101 102 - =bg-prose-code= 103 - =fg-prose-code= 104 - =bg-prose-macro= 105 - =fg-prose-macro= 106 - =bg-prose-verbatim= 107 - =fg-prose-verbatim= 108 109 The old =prose-code=, =prose-macro=, and =prose-verbatim= are named 110 =fg-prose-code=, =fg-prose-macro=, =fg-prose-verbatim=. Please 111 update any such references in your configuration file. 112 113 The manual shows lots of examples on how to benefit from these 114 optional backgrounds: <https://protesilaos.com/emacs/modus-themes#h:bb5b396f-5532-4d52-ab13-149ca24854f1>. 115 116 ** No colour-coding for =transient.el= buffers. 117 :PROPERTIES: 118 :CUSTOM_ID: h:0b134a92-9554-4578-a963-ef782f224b28 119 :END: 120 121 In a recent version of =transient.el=, there is a new user option that 122 applies colour-coding to keys (e.g. we see those while using ~magit~): 123 ~transient-semantic-coloring~. This option is enabled by default, 124 changing the previous style that was used as a reference for all my 125 designs. 126 127 The idea with such colour coding is to indicate when a key continues 128 to display the transient, exits with a given action, and the like. For 129 our purposes this interface cannot work: 130 131 - We need some place to teach users what each colour means, as there 132 are no indicators of any sort to help them (whereas, say, in diff 133 buffers we have the plus and minus signs). 134 135 - Not all hues are suitable for highlighting a single character. In 136 light themes, for example, green and yellow colours are awkward 137 choices for the requirements of this interface where the key must be 138 clearly visible. But when we introduce multiple colours, each with 139 their own meaning, we will not be able to avoid those hues. 140 141 - The style of key bindings is not limited to =transient.el=. We find 142 them when we invoke =M-x=, do =M-x describe-bindings=, while using 143 the ~which-key~ package, and many more. If we are to change how 144 =transient.el= shows key bindings, then we have to retain the same 145 visual cues for other contexts. Otherwise, everything is inconsistent. 146 147 - All themes must use the same colours to preserve the colour coding, 148 thus removing an important aspect of their presentation. 149 150 - This whole paradigm does not work for themes that are optimised for 151 users with colour deficiency, due to the reduced number of suitable 152 hues. With deuteranopia, for example, we can only rely on yellow and 153 blue: since yellow is not optimal for single key highlights against 154 a light backdrop, blue is the only hue that works in such a context. 155 156 The ~modus-themes~ will never support ~transient-semantic-coloring~. 157 All relevant faces use the style of standard key bindings. 158 159 Themes can enforce user option values, but I have decided to change 160 the faces instead to better communicate my intent. If a user wants 161 semantic colouring, they can change the faces to whatever they like. 162 163 I understand this is a radical measure, though it is the best I can do 164 given the circumstances. If =transient.el= where to have accompanying 165 characters that better denote what each key does (e.g. the plus sign 166 is for keys that continue the transient), then I am happy to apply 167 appropriate colours to those and reconsider the aforementioned. 168 169 ** Semantic mappings for active arguments and values 170 :PROPERTIES: 171 :CUSTOM_ID: h:909053eb-0378-41f5-b32a-741fa53ba4a3 172 :END: 173 174 In various interfaces such as of ~eldoc-mode~ and =transient.el= there 175 are highlights for the current argument or argument value. These now 176 have corresponding semantic palette mappings and are thus styled 177 uniformly (and can be overridden accordingly). The mappings are: 178 179 - =bg-active-argument= 180 - =fg-active-argument= 181 - =bg-active-value= 182 - =fg-active-value= 183 184 ** A semantic mapping for formulas in tables 185 :PROPERTIES: 186 :CUSTOM_ID: h:306889ed-64c8-414c-a744-14ea1e6b3e6d 187 :END: 188 189 The =prose-table-formula= applies to inline formula expressions in 190 plain text tables. Org mode uses those, as does the minor mode ~orgtbl-mode~. 191 The inline formula is meant to stand out from the rest of the table, 192 without exaggerations. 193 194 ** Matching parentheses have semantic mappings for their foreground too 195 :PROPERTIES: 196 :CUSTOM_ID: h:4055d50e-0153-4576-bba5-fcdcdf039b10 197 :END: 198 199 By default, Emacs will highlight the matching (opening or closing) 200 delimiter when the cursor is next to it. This is useful in Lisp 201 programming modes, for example, as we can quickly get a sense of where 202 an expression starts and ends. 203 204 The themes now provide mappings for the foreground of those 205 delimiters. This means that users can either change the combination of 206 background and foreground or opt to only display a foreground value 207 for a more minimal look. 208 209 As always, the manual shows concrete examples: 210 <https://protesilaos.com/emacs/modus-themes#h:259cf8f5-48ec-4b13-8a69-5d6387094468>. 211 212 ** Search highlights have their own semantic mappings 213 :PROPERTIES: 214 :CUSTOM_ID: h:df3879a4-e11d-47f0-9330-a2d51e999941 215 :END: 216 217 This makes it easier to differentiate their style on a per-theme 218 basis, which I do for all the Modus themes. It also gives users the 219 option to override the colours. The mappings: 220 221 - =bg-search-current= 222 - =bg-search-lazy= 223 - =bg-search-replace= 224 - =bg-search-rx-group-0= 225 - =bg-search-rx-group-1= 226 - =bg-search-rx-group-2= 227 - =bg-search-rx-group-3= 228 229 ** Stylistic tweaks to ~modus-operandi-tinted~ 230 :PROPERTIES: 231 :CUSTOM_ID: h:8885de5e-be29-45cc-a2e5-2dcb0866273d 232 :END: 233 234 The ~modus-operandi-theme~ uses a light ochre background, which gives 235 a warmer feel than the pure white background of ~modus-operandi~. To 236 better contribute to this warmth, I made some tweaks to common 237 elements: 238 239 1. The cursor has a red hue as before, but the value is a bit more 240 intense now. This makes it easier to spot in contexts where text is 241 already "warm", like close to an Org =TODO= keyword or in 242 programming mode comments. 243 244 2. All key bindings have a red hue instead of blue. We can notice the 245 effect in Help mode buffers that mention where a command is bound, 246 while using ~which-key-mode~, in =transient.el= buffers, in 247 minibuffer completion annotations, and more. 248 249 These are in addition to many nuances already built into ~modus-operandi-tinted~. 250 251 I hope that existing users will appreciate these tweaks. We anyway 252 have the option to override any entry in the palette, though I suggest 253 you give these a chance before enacting any changes. 254 255 ** Stylistic tweaks to ~modus-vivendi-tinted~ 256 :PROPERTIES: 257 :CUSTOM_ID: h:dc23c419-d87a-4973-9175-961af9e3051d 258 :END: 259 260 Same principle here as with the above set of changes. Namely: 261 262 1. The cursor uses a more intense magenta background to be easier to 263 spot. 264 265 2. Key bindings are purple instead of blue to better complement the 266 aesthetics of this theme. 267 268 3. The background highlight applied to matching parentheses (per 269 ~show-paren-mode~) is grey-cyan instead of cyan. 270 271 Again, we can override everything but please try those for a little 272 while. 273 274 ** The ~olivetti-fringe~ is visible when needed 275 :PROPERTIES: 276 :CUSTOM_ID: h:3c2d3f21-7686-4376-a3ec-82240b283eec 277 :END: 278 279 This is subject to the user option ~olivetty-style~, which can be set 280 to the value of =fancy= to produce a page-like effect. 281 282 Thanks to Dhavan Vaidya and Gautier Ponsinet for bringing this matter 283 to my attention on the now-discontinued mailing list: 284 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm2a5qzpi3y.fsf%40muon.local.mail-host-address-is-not-set%3E> 285 286 ** A more subtle style for the ~consult-preview-insertion~ face 287 :PROPERTIES: 288 :CUSTOM_ID: h:8c6717d2-0488-4590-8083-52e081adf6f5 289 :END: 290 291 The default value of that face inherits from the ~region~ face. This 292 is fine in some cases, though not when the user calls 293 ~consult-outline~ in a buffer with hidden text (e.g. Org folded 294 headings). There the background is applied to the entire heading's 295 surface area, which is too distracting while cycling through 296 completion candidates and inspecting the preview. 297 298 ** Simpler ~imenu-list~ with four colours 299 :PROPERTIES: 300 :CUSTOM_ID: h:af7ec9f7-e7aa-4a05-a5a2-184d0d7143c6 301 :END: 302 303 The ~imenu-list~ defines two sets of faces which apply to same heading 304 levels but differ on whether the heading has subheadings or not. 305 Before, we would colourise those differently, which could be 306 confusing. Now they look the same, which is fine because the interface 307 has additional markup to show when subheadings are present. 308 309 Thanks to ltmsyvag for pointing this out in issue 95: 310 <https://github.com/protesilaos/modus-themes/issues/95>. 311 312 ** Implicit buttons in Gnus are no longer underlined 313 :PROPERTIES: 314 :CUSTOM_ID: h:6b0cc04f-1a9b-436c-b11f-5446ea55b010 315 :END: 316 317 Gnus buttonises text that it considers actionable. The exact 318 functionality depends on the context, but it basically does stuff like 319 add a quick way to write a new message to a given email address. These 320 buttons can be mistaken for links, so I am removing their underline to 321 avoid any possible confusion. 322 323 ** The ~message-separator~ face is less intense 324 :PROPERTIES: 325 :CUSTOM_ID: h:a049f538-2805-4379-8542-43dc6f990a2b 326 :END: 327 328 In message/email composition buffers, there is a line that 329 distinguishes headers from the body of the message. By default, it 330 reads =--text follows this line--= and will now have a subtle grey 331 background. The idea is to not stress the distinction between headers 332 and body, as this line's verbosity is already enough to call attention 333 to it when we add a subtle background. 334 335 ** Recalibrated all "nuanced" background values 336 :PROPERTIES: 337 :CUSTOM_ID: h:ecb9c704-7615-4e42-8438-13e96c10588e 338 :END: 339 340 Each theme has a subset of slightly accented background named 341 =bg-{red,green,blue,yellow,magenta,cyan}-nuanced=. These have slightly 342 different values to be more consistent in terms of their intensity. 343 344 ** The ~debbugs~ package is now supported 345 :PROPERTIES: 346 :CUSTOM_ID: h:67161fd3-f615-4856-b5df-99f5c0f2e5ee 347 :END: 348 349 Thanks to Gautier Ponsinet for sending me the relevant patch to my 350 personal email. I made further stylistic changes on top. 351 352 ** The ~ztree~ package is covered as well 353 :PROPERTIES: 354 :CUSTOM_ID: h:c82277b9-abb9-4d1e-9912-14caf66af8d2 355 :END: 356 357 It produces a diff between two directories and thus needs appropriate 358 colours. 359 360 ** Added support for ~xterm-color~ and ~rustic-mode~ 361 :PROPERTIES: 362 :CUSTOM_ID: h:c262fdbe-49a5-480b-b0d1-6592f6e29879 363 :END: 364 365 These are basically reusing styles we already support for other 366 terminal emulators. Thanks to Tony Zorman for the contribution, which 367 was done in pull request 99: <https://github.com/protesilaos/modus-themes/pull/99>. 368 369 ** Org checkboxes are monospaced when ~modus-themes-mixed-fonts~ is non-nil 370 :PROPERTIES: 371 :CUSTOM_ID: h:69dbe924-58b3-43e9-801c-35cf9ac8fffb 372 :END: 373 374 The user option ~modus-themes-mixed-fonts~ makes specing-sensitive 375 elements use a monospaced font (specifically, the font family of the 376 ~fixed-pitch~ face). This lets the user set a more prose-friendly 377 style without visually breaking snippets that rely on fixed width 378 spacing. A prose-friendly style is done by making the default font a 379 proportionately spaced one, or by enabling ~variable-pitch-mode~ in 380 the current buffer. 381 382 For this case, we now cover Org checkboxes as well to avoid 383 misalignments in checklists. 384 385 Thanks to Gautier Ponsinet for discussing this with me via email and 386 sending the relevant patch. 387 388 ** More code samples in the manual 389 :PROPERTIES: 390 :CUSTOM_ID: h:2ccb1b44-a36e-4ea1-9f24-9d080cdec02d 391 :END: 392 393 The manual documents everything about the customisation options 394 provided by the themes, as well as relevant do-it-yourself code 395 samples. I now include more examples and better explain how to hook 396 those either to the ~enable-theme-functions~ or the 397 ~modus-themes-after-load-theme-hook~. If something is not clear or not 398 covered at all, please let me know and I will help you do what you 399 want. 400 401 ** Miscellaneous 402 :PROPERTIES: 403 :CUSTOM_ID: h:2e5f0804-236d-49b5-9b2f-ecb4794b244b 404 :END: 405 406 - All =cl-= snippets are removed from the source code. We did not 407 really need them and I rewrote the code accordingly. This is not a 408 value judgement against Common Lisp patterns in Emacs Lisp (I do not 409 mind them): it is just a matter of removing a dependency for things 410 that can easily be done differently. 411 412 - The ~keycast-key~ inherits the ~bold~ face if the user option 413 ~modus-themes-bold-constructs~ is set to a non-nil value. 414 415 - The ~read-multiple-choice-face~ now has a cooler hue than the one it 416 had before. This way it is not mistaken for a warning. 417 418 - The ~appt-notification~ face uses a foreground value that is better 419 suited for the modeline, where this indicator appears. 420 421 - The ~header-line-highlight~ draws a box around it. This makes the 422 mouse hover effect easier to spot. 423 424 - The ~shr-mark~ face is now covered as well. It uses an appropriate 425 background colour. 426 427 - The ~mct-highlight-candidate~ face is covered and has an appropriate 428 style for the minibuffer completions. 429 430 - The ~completions-highlight~ face (Emacs 29) is also supported to 431 ensure stylistic consistency between the minibuffer interfaces 432 covered by the themes. 433 434 - Flagged and deleted messages in ~mu4e~ and ~notmuch~ use different 435 hues to not conflate the two. 436 437 - Fixed the spelling of "colour" to "color" in the manual because core 438 Emacs uses the latter... 439 440 * 4.3.0 441 :PROPERTIES: 442 :CUSTOM_ID: h:4783bc29-3055-426d-9acb-51e4d0741871 443 :END: 444 445 ** All themes except the tritanopia ones have a new hover colour 446 :PROPERTIES: 447 :CUSTOM_ID: h:b92b176e-3e9a-420d-bbbe-3c3e38b47027 448 :END: 449 450 The previous colour was not sufficiently distinct from what each theme 451 defines for the =bg-completion= palette entry (preview a palette with 452 =M-x modus-themes-preview-colors= or =M-x modus-themes-preview-colors-current=). 453 This would make it hard to spot the difference while, for example, 454 using ~vertico-mode~ in tandem with ~vertico-mouse-mode~. 455 456 Same principle for the difference between the mouse hover and lazy 457 isearch highlights (e.g. in Dired or Occur buffers). 458 459 Changing the hue here follows the same principle that underpinned the 460 redesign of the grey backgrounds for version 4 of the project: 461 depending on hardware capabilities, colour reproduction may not be 462 optimal, so we need to be more considerate with the choice of colour 463 values, erring on the side of caution. 464 465 The ~modus-operandi-tritanopia~ and ~modus-vivendi-tritanopia~ themes 466 are not affected by this initiative, as they already used highly distinct hues. 467 468 Thanks to Daniel Mendler for bringing this matter to my attention and 469 for testing the proposed alternatives. This was done via a private 470 channel and the information is shared with permission. Daniel is the 471 developer of ~vertico~, among many other excellent packages: 472 <https://github.com/minad> 473 474 ** Japanese holidays have the expected style 475 :PROPERTIES: 476 :CUSTOM_ID: h:2de9cef6-c6f1-4c2e-97ce-46d8a7306bae 477 :END: 478 479 Japanese calendars style Saturdays uniquely and the Modus themes now 480 do the same for those who use the ~japanese-holidays~ package. 481 Saturdays show up in a blue colour (which changes to cyan for the 482 ~modus-operandi-tritanopia~, ~modus-vivendi-tritanopia~ themes). 483 484 Each theme's palette has a new semantic colour mapping called 485 =date-holiday-other=, just in case we ever encounter another scenario 486 like this one (users can override any entry in the palette---consult 487 the manual for the technicalities). 488 489 Thanks to Olaf Meeuwissen for bringing this package to my attention 490 and showing me how traditional Japanese calendars style Saturdays. 491 This was done in issue 311 on the GitLab mirror: 492 <https://gitlab.com/protesilaos/modus-themes/-/issues/311>. 493 494 ** Each theme has semantic colour mappings for terminal emulators 495 :PROPERTIES: 496 :CUSTOM_ID: h:f3ae786a-9e01-4363-ae98-898f2ad34f7b 497 :END: 498 499 These are used by ~ansi-term~, ~vterm~, and the like. The idea is to 500 empower users to differentiate background and foreground values, 501 should they ever encounter a need to do so (when in doubt, do 502 nothing). 503 504 By convention, terminal emulators use the same value for both 505 background and foreground, although this is not optimal with high 506 contrast themes because what works as a foreground does not 507 necessarily look nice as a background. 508 509 The default values of the new mappings retain the prior state, just to 510 not break existing configurations. Consider this a tacit user option 511 for those who really need it. 512 513 Thanks to Tony Zorman for reporting the problem that provided the 514 impetus for this change: 515 <https://lists.sr.ht/~protesilaos/modus-themes/%3C87fs4wforf.fsf%40hyperspace%3E>. 516 517 ** All theme definitions conform with the latest standard for metadata 518 :PROPERTIES: 519 :CUSTOM_ID: h:2af0114f-b96a-4e89-ad2f-850d53538efa 520 :END: 521 522 Themes are expected to declare their background type and affinity, 523 such that the built-in command ~theme-choose-variant~ can do what it 524 describes (switch between related themes). I was already doing this, 525 though I had to make some adjustments. This is in response to Emacs 526 bug#65468: <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=65468>. 527 Thanks to Mauro Aranda for bringing the matter to my attention. 528 529 ** Proper colours for the inline preview of the ~corfu~ top candidate 530 :PROPERTIES: 531 :CUSTOM_ID: h:89d40a68-7573-4994-9ecc-fea40c823472 532 :END: 533 534 The ~corfu-candidate-overlay~ package is used in tandem with the 535 ~corfu~ package to create an inline preview of the first matching 536 candidate. Thanks to Nicolas Semrau for bringing this matter to my 537 attention in issue 89 on the GitHub mirror: 538 <https://github.com/protesilaos/modus-themes/issues/89>. 539 540 ** Context indicators for the mode-line or header-line (breadcrumb.el) 541 :PROPERTIES: 542 :CUSTOM_ID: h:dc391e85-650f-444e-b909-849d659921fb 543 :END: 544 545 I added support for the new ~breadcrumb~ package by João Távora. It 546 displays information about where we are in the given file, such as 547 under which Org heading or inside which function. The indicator can 548 be shown on the mode-line or the header-line. Either way, it will now 549 be legible and consistent with its surroundings. 550 551 ** The new family of nerd-icons is covered by the themes 552 :PROPERTIES: 553 :CUSTOM_ID: h:0409d429-5307-43d6-9bf4-fabc958c2540 554 :END: 555 556 This is a new set of packages: ~nerd-icons~, ~nerd-icons-completion, 557 ~nerd-icons-dired~, ~nerd-icons-ibuffer~. A popular package that uses 558 the Nerd icons is ~doom-modeline~, which the themes support as well. 559 560 ** All icons look as intended again 561 :PROPERTIES: 562 :CUSTOM_ID: h:a01075c6-b931-4b35-bdbd-2d1223101560 563 :END: 564 565 Some faces from the ~all-the-icons~ package were not configured 566 because I accidentally changed their name from something like 567 ~all-the-icons-red-alt~ to ~all-the-icons-red-warmer~. I did that 568 while renaming the colours defined in each theme's palette, to make 569 them more meaningful ("warmer red" can hint at something whereas "alt 570 red" is more abstract). 571 572 ** Corrected the documentation about custom Org faces 573 :PROPERTIES: 574 :CUSTOM_ID: h:5c254346-370e-4510-bcc7-70a1cca2c5a0 575 :END: 576 577 The Modus themes manual shows how to configure arbitrary TODO keywords 578 to inherit the style of an arbitrary face (get the list of faces 579 present in your Emacs with =M-x list-faces-display=). The previous 580 value I used was faulty. It now is as intended. Thanks to 581 soaringbird for reporting the issue on the mailing list: 582 <https://lists.sr.ht/~protesilaos/modus-themes/%3CNXPVkVk--3-9%40tuta.io%3E>. 583 584 ** The colours used by =avy= are better for users with tritanopia 585 :PROPERTIES: 586 :CUSTOM_ID: h:3605693e-bd6d-40a0-a1d4-199684c89081 587 :END: 588 589 I changed the sequence of colours displayed by commands such as 590 ~avy-goto-char-timer~ such that each individual background does not 591 blend with the ones adjacent to it, while respecting the overall needs 592 of a tritanopia-friendly design. I also tweaked the colour values to 593 achieve the desired result. The backgrounds remain distinct from 594 their context but now also work harmoniously together. 595 596 ** The =bg-dim= palette entry is marginally brighter in all Modus operandi variants 597 :PROPERTIES: 598 :CUSTOM_ID: h:8a3cb4f1-e7f8-48f1-832c-27e64b126b2d 599 :END: 600 601 After extensive testing and side-by-side comparisons, I have concluded 602 that the marginal increase in brightness improves the affected 603 interfaces. 604 605 The =bg-dim= background is used, among others, in the header-line, the 606 popup of the ~company~ and ~corfu~ packages, as well as the Org source 607 blocks (when the user option ~modus-themes-org-blocks~ is configured 608 appropriately). 609 610 ** The "intense" palette override preset has new colours for tables and prose metadata 611 :PROPERTIES: 612 :CUSTOM_ID: h:3a990310-337c-457f-8f40-1af6d1b557f6 613 :END: 614 615 This concerns the ~modus-themes-preset-overrides-intense~ (refer to 616 its documentation on how to use it). The primary target of these 617 changes is Org mode and the overall effect is subtle. The previous 618 colours did not combine nicely with all structural elements. For 619 example, Org clocktables would obscure timestamps by being the same 620 colour as them, while the table formula would not stand out. These 621 styles did not fit into the concept of "intense" colours. 622 623 ** The "warmer" palette override preset has more legible strings 624 :PROPERTIES: 625 :CUSTOM_ID: h:64cbd701-1344-48cc-8bcf-fc9712438013 626 :END: 627 628 The ~modus-themes-preset-overrides-warmer~ uses a more prominent warm 629 green value for strings in programming modes. The effect is subtle, 630 though it fits in better with the overall aesthetic of these palette 631 overrides. 632 633 ** Org document keywords like =#+author= are optionally monospaced 634 :PROPERTIES: 635 :CUSTOM_ID: h:096b75ec-802c-43e4-81ed-6db92b45654c 636 :END: 637 638 When the user option ~modus-themes-mixed-fonts~ is non-nil, all Org 639 document keywords will be rendered with the ~fixed-pitch~ face. This 640 ensures consistency between keywords such as =#+author= and "meta 641 lines" like =#+texinfo=. Thanks to user fluentpwn for the change: it 642 is one line and thus the author does not need to assign copyright to 643 the Free Software Foundation. 644 645 ** Git commit summary lines have a more precise style 646 :PROPERTIES: 647 :CUSTOM_ID: h:2aecd902-3a0b-4544-98f4-dbb42cbad672 648 :END: 649 650 This concerns the first line in a Git commit message, as seen while 651 working with the ~magit~ package. Same principle for the ~log-edit~ 652 buffer used by the built-in VC framework. Before, I was hardcoding a 653 blue colour value, whereas now I apply the ~success~ face. The 654 ~success~ face is designed to contrast with the ~warning~ face that is 655 used to show overlong summaries. Furthermore, the added indirection 656 makes it possible to particularise the colour value, which I do for 657 the tritanopia themes that cannot use blue. 658 659 ** Miscellaneous 660 :PROPERTIES: 661 :CUSTOM_ID: h:7391fd7d-6e70-4419-a8d6-f34d9ae075b1 662 :END: 663 664 - Removed explicit support for the built-in ~css-mode~. Its default 665 faces are decent. They inherit from standard font-lock faces that 666 the themes already cover. 667 668 - Recalibrated wordwise ("refined") diffs for deuteranopia. The 669 ~modus-operandi-deuteranopia~ and ~modus-vivendi-deuteranopia~ have 670 a little bit more intense colour values applied to wordwise, else 671 "refined", diffs. These concern removed lines. The effect is 672 visible while using ~magit~ or the built-in ~diff-mode~. 673 674 - Backported emacs.git commit =4cf33b6bd02b868ebbf112da7926d7c3c64517ce=. 675 It removed the space from the front matter of the =modus-themes.org= 676 file (i.e. the manual) because the Org export did not produce the 677 right results, per Emacs bug#64548. Thanks to Stephen Berman for 678 reporting the issue and making the requisite change. 679 680 - Added support for the ~erts-mode~. Thanks to Kevin Fleming for 681 informing me about this built-in mode. This was done in issue 85 on 682 the GitHub mirror: <https://github.com/protesilaos/modus-themes/issues/85>. 683 684 - Fixed a typo in the ~modus-themes-preset-overrides-intense~ doc 685 string. Thanks to Nicolas Semrau for bringing this matter to my 686 attention. It was done in issue 90 on the GitHub mirror: 687 <https://github.com/protesilaos/modus-themes/issues/90>. 688 689 - Made all commands that prompt for a theme (~modus-themes-select~, 690 ~modus-themes-preview-colors~) apply the =theme= category to the 691 available candidates. This allows the user to target said category 692 to affect the relevant functions. For example, to set completion 693 styles with ~completion-category-overrides~ or to define a custom 694 annotation function with the ~marginalia~ package. 695 696 - Added support for new ~appt-notification~ face (Emacs 30). Change 697 upstream by me. 698 699 * 4.2.0 700 :PROPERTIES: 701 :CUSTOM_ID: h:29370d83-23c4-415b-afbf-ad85d4296c86 702 :END: 703 704 ** I won a Google award for the Modus themes 705 :PROPERTIES: 706 :CUSTOM_ID: h:1ffc8660-511d-4fa8-aff4-11da8246a186 707 :END: 708 709 Report here: <https://protesilaos.com/codelog/2023-05-25-emacs-google-award/>. 710 711 This is not a "change" per se, but it is worth documenting here. It 712 shows how important accessibility can be in empowering people to use 713 their computer and, in our case, to exercise their software freedoms. 714 715 The Modus themes tend to one aspect of accessibility. They do not 716 exhaust the topic, though they should at least raise awareness about 717 the significance of tending to the usability needs of everyone. The 718 effort I put into documenting the themes (and my other packages) 719 should be understood in this light as a means of helping people enjoy 720 their software freedom by learning how to use and extend the program 721 in question. 722 723 ** New tritanopia-optimised themes 724 :PROPERTIES: 725 :CUSTOM_ID: h:b92706b0-9d53-4015-8916-9db3c0c87068 726 :END: 727 728 I have created a pair of light and dark themes that are intended for 729 people with blue-yellow colour deficiency (tritanopia). These are 730 ~modus-operandi-tritanopia~ (light) and ~modus-vivendi-tritanopia~ 731 (dark). Screenshots of all the Modus themes are available on my 732 website: <https://protesilaos.com/emacs/modus-themes-pictures>. 733 734 The entire collection is now described in the manual as follows: 735 736 #+begin_quote 737 The Modus themes consist of eight themes, divided into four subgroups. 738 739 - Main themes :: ~modus-operandi~ is the project's main light theme, 740 while ~modus-vivendi~ is its dark counterpart. These two themes are 741 part of the project since its inception. They are designed to cover 742 a broad range of needs and are, in the opinion of the author, the 743 reference for what a highly legible "default" theme should look 744 like. 745 746 - Tinted themes :: ~modus-operandi-tinted~ and ~modus-vivendi-tinted~ 747 are variants of the two main themes. They slightly tone down the 748 intensity of the background and provide a bit more color variety. 749 ~modus-operandi-tinted~ has a set of base tones that are shades of 750 light ochre (earthly colors), while ~modus-vivendi-tinted~ gives a 751 night sky impression. 752 753 - Deuteranopia themes :: ~modus-operandi-deuteranopia~ and its 754 companion ~modus-vivendi-deuteranopia~ are optimized for users with 755 red-green color deficiency. This means that they do not use red and 756 green hues for color-coding purposes, such as for diff removed and 757 added lines. Instead, they implement colors that are discernible by 758 users with deueteranopia or deuteranomaly (mostly yellow and blue 759 hues). 760 761 - Tritanopia themes :: ~modus-operandi-tritanopia~ and its counterpart 762 ~modus-vivendi-tritanopia~ are optimized for users with blue-yellow 763 color deficiency. The idea is the same as with the deuteranopia 764 variants: color coding relies only on hues that are accessible to 765 people with tritanopia or tritanomaly, namely, shades of red and 766 cyan. 767 #+end_quote 768 769 ** Recalibrated the "graph" colours in all themes 770 :PROPERTIES: 771 :CUSTOM_ID: h:60bb2797-2db6-4d47-9d27-7d1f32291707 772 :END: 773 774 The new palette subset improves the contrast of all the relevant 775 colours when presented side-by-side. These are most notably used by 776 the ~org-habit~ consistency graph, which is displayed in the Org 777 agenda. The deuteranopia and tritanopia themes have their own bespoke 778 colours for this purpose, due to their specific requirements for 779 colour coding (e.g. they cannot use green). 780 781 ** Faces or face groups 782 :PROPERTIES: 783 :CUSTOM_ID: h:4b68159e-d998-4781-b202-74a3dcc8ae8e 784 :END: 785 786 - Introduced a subtle 3D effect for clickable buttons, replacing the 787 previous 2D design. I realised the flat style creates ambiguity 788 between the button and the text fields. This happens, for example, 789 with =M-x customize-variable= for ~org-capture-templates~ which has 790 lots of button and text field combinations. The added sense of 791 depth helps with the usability of these buttons because it makes 792 them unambiguous. Personally, I prefer the 2D approach, but here we 793 have a trade-off between usability and aesthetics. According to 794 what I state in the manual: 795 796 #+begin_quote 797 If there arises an inescapable trade-off between usability and 798 stylistic considerations, we will always opt for the former. 799 #+end_quote 800 801 - Refashioned the ~whitespace-mode~ to be much more subtle and added 802 the concomitant semantic colour mappings. 803 804 The previous style involved the use of a dim grey background for 805 each invisible character. While this is was good to spot invisible 806 characters quickly, it was a major hindrance for users who want to 807 run ~whitespace-mode~ at all times (e.g. for the Python programming 808 language which is space-sensitive). 809 810 We thus remove the backgrounds by default but provide the option to 811 reinstate them via palette overrides (as documented at length in the 812 manual). To this end, we have two new semantic colour mappings for 813 ordinary space, its invisible characters, as well as space errors. 814 815 Thanks to Christian Tietze and Oliver Epper for their feedback in 816 issue 80 on the GitHub mirror: 817 <https://github.com/protesilaos/modus-themes/issues/80>. 818 819 - Applied a more subtle background for faces ~menu-bar-mode~, 820 ~tool-bar-mode~, ~scroll-bar-mode~. They do not need to stand out 821 so much because the toolkit already takes care of that. Also, we do 822 not want to dillute the semantic value of either ~bg-tab-bar~ or 823 ~fringe~ palette colour mappings that I was wrongly using before in 824 this context. Note that those faces may not apply, depending on the 825 underlying tool kit. For example, I encounter them with the Lucid 826 build of Emacs, though not with the GTK one. 827 828 - Fix the critical typo of 'widget-buton', which prevented the actual 829 ~widget-button~ face from being affected by the themes. Thanks to 830 Steve Downey for pointing it out in issue 73 on the GitHub mirror: 831 <https://github.com/protesilaos/modus-themes/issues/73>. 832 833 - Added support for the ~disk-usage~ package. It is made to look like 834 Dired, to the extent possible. Thanks to Nacho Barrientos for the 835 patch: <https://lists.sr.ht/~protesilaos/modus-themes/patches/39822>. 836 The change is small and does not require copyright assignment to the 837 Free Software Foundation. 838 839 - Made the ~eglot-diagnostic-tag-unnecessary-face~ look like a 840 warning. By default it inherits the ~shadow~ face, which makes it 841 counter-intuitive as it dims the text instead of bringing it to our 842 attention. The intent of ~eglot-diagnostic-tag-unnecessary-face~ is 843 to highlight unused symbols, so this is better presented as a 844 warning. 845 846 Thanks to Augusto Stoffel for bringing this matter to my attention. 847 This was done via a private channel and the information is shared 848 with permission. 849 850 - Changed the ~smerge-markers~ to inherit from ~diff-header~ instead 851 of ~diff-heading~. Thanks to Steve Downey for the contribution. 852 This was done in pull request 74 on the GitHub mirror: 853 <https://github.com/protesilaos/modus-themes/pull/74>. The change 854 is small and does not require copyright assignment to the Free 855 Software Foundation. 856 857 - Added support for the ~jinx~ package. This was originally done by 858 Tomasz Hołubowicz in pull request 71 on the GitHub mirror: 859 <https://github.com/protesilaos/modus-themes/pull/71>. The change 860 is small and does not require copyright assignment to the Free 861 Software Foundation. I then modified it to make the underlines look 862 like warnings instead of errors. This is because of how the package 863 works: it automatically highlights misspellings in the visible 864 portion of the buffer. There are cases where this results in a very 865 intense presentation, which can be distracting. We want to reduce 866 the overall intensity and not draw too much attention to those 867 highlights. 868 869 - Extended coverage of Org to the new ~org-agenda-calendar-daterange~ 870 face (part of Org version 9.7). Thanks to Gautier Ponsinet for the 871 patch, which I received via a private channel. The change is small 872 and does not require copyright assignment to the Free Software 873 Foundation. In addition to this, I introduced a new semantic colour 874 mapping in the themes' palette called ~date-range~. This can be 875 used with the palette overrides, which are documented at length in 876 the manual (there are lots of copy-pastable examples as well). 877 878 - Supported all of the new faces of the built-in ~proced~ package. 879 These are part of Emacs 29 and make the ~proced~ buffers more 880 colourful, subject to the user option ~proced-enable-color-flag~. 881 As always, the themes strive to avoid exaggerations, meaning that I 882 apply colour with restraint: not all faces need to stand out. 883 884 - Included the ~rst-mode~ in the list of explicitly supported 885 packages, making its heading look like those of Org, Markdown, etc. 886 Thanks to David Edmondson for the patch: 887 <https://lists.sr.ht/~protesilaos/modus-themes/patches/40625>. I 888 believe David has already assigned copyright to the Free Software 889 Foundation, though this patch is small anyway. 890 891 - Covered all the new faces of the built-in ~flymake~ package. These 892 concern the inline feedback messages (Emacs 30) as well as those 893 that appear in the echo area (Emacs 29). The former are subject to 894 the user option ~flymake-show-diagnostics-at-end-of-line~. 895 896 - Reduced the intensity of the ~which-key~ prefix descriptions. Those 897 are the keymaps that displayed by ~which-key~ to hint that typing 898 the given key will open a new ~which-key~ page with more keys. 899 900 - Configured new ~vundo-saved~ and ~vundo-last-saved~ faces of the 901 ~vundo~ package. They are designed to be easy to read, without 902 going over-the-top. Thanks to Nicolas Semrau for bringing this 903 matter to my attention in issue 79 on the GitHub mirror: 904 <https://github.com/protesilaos/modus-themes/issues/79>. 905 906 - Removed the deprecated ~consult-preview-cursor~ face and made the 907 requisite adjustments to the ~consult~ faces. This was done in 908 commit =267b0c9= of the Consult Git repository. Discussed here: 909 <https://github.com/minad/consult/issues/764#issuecomment-1537491625>. 910 911 - Instructed the ~shr-selected-link~ face of the built-in ~shr~ 912 package to use a "mark selection" style instead of the semantically 913 incorrect "intense red" it had before. This change is helpful for 914 those who override the palette of their Modus theme of choice, while 915 it also allows us to have varied colours depending on the 916 requirements of each theme (e.g. deuteranopia/tritanopia compared to 917 the defaults). 918 919 - Did the same as above, mutatis mutandis, for the faces 920 ~transient-disabled-suffix~, ~web-mode-error-face~, 921 ~erc-dangerous-host-face~, ~aw-minibuffer-leading-char-face~, 922 ~binder-sidebar-highlight~, ~binder-sidebar-missing~, 923 ~image-dired-thumb-flagged~, ~image-dired-thumb-mark~, 924 ~info-menu-star~, ~rainbow-delimiters-mismatched-face~, 925 ~evil-ex-substitute-matches~, ~iedit-occurrence~, 926 ~iedit-read-only-occurrence~, ~pgtk-im-0~, ~dired-narrow-blink~. 927 928 - Enhanced the ~image-dired~ mark faces with a box border, as the use 929 of a background alone can be obscured by the underlying image 930 thumbnail, depending on its figures/colours. 931 932 - Removed the backgrounds from the ~powerline-evil~ faces and 933 simplified their overral presentation in the interest of 934 maintainability. The old styles were hard to predict and test. 935 There could easily be conflicts, such as if the user would override 936 the colours of the mode line. 937 938 - Ensured that ~diary~ and ~holiday~ colours are distinct and legible, 939 without being too intense. 940 941 ** Changes to the manual or other documentation 942 :PROPERTIES: 943 :CUSTOM_ID: h:d3c12dd0-4231-420b-a212-b6bd571c5c34 944 :END: 945 946 - Updated the doc string of the primary customisation group defined by 947 the themes to reflect the support for the case of tritanopia. 948 949 - Included links to the web page of the manual and the one with the 950 sample pictures in the customisation groups. Those links appear in 951 the various Custom UI buffers. 952 953 - Introduced an annotation function for all commands that involve 954 minibuffer completion. The annotations display the one-line 955 description of each theme, making it easier for a user to pick their 956 preferred choice (e.g. when using the ~modus-themes-select~ 957 command). 958 959 - Defined semantic colour mappings for "marks". These are used by 960 ~dired~, ~trashed~, ~proced~, and others. These is no change to the 961 default appearance of what users are already familiar with, though 962 it is now possible to override those styles. 963 964 - Complemented the subset of semantic colour mappings for 965 errors/warnings with "prominent" variants. Those employ a 966 background and foreground combination. They are used in all sorts 967 of contexts, such as for fringe errors (~flymake~, ~flycheck~, ...), 968 ~query-replace~, ~isearch-fail~, and others. 969 970 - Wrote sample code on how to add "padding" to the Emacs frame and the 971 space between the Emacs windows. This makes for a presentation that 972 some users find easier to work with. 973 974 - Corrected the sample code for ~git-gutter~ to use the appropriate 975 symbols from the theme palette. Thanks to Christian Tietze for the 976 patch: <https://lists.sr.ht/~protesilaos/modus-themes/patches/40354>. 977 The change is small and does not require copyright assignment to the 978 Free Software Foundation. 979 980 - Removed ~moody~ from the list of packages explicitly supported by 981 the themes. We stopped supporting it since version 4 that removed 982 the relevant user option for the mode line. The idea is that the 983 mode line is better handled by the user without interference from 984 the theme, due to the number of options available (and how brittle 985 those can be when interacting with unpredictable face definitions). 986 Thanks to Nicolas De Jaeghere for reminding me to remove ~moody~ 987 from the manual: 988 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cypi9jzyclqxy.fsf%40gmail.com%3E#%3C87jzybdgg1.fsf@dejaeghe.re%3E>. 989 990 ** Miscellaneous 991 :PROPERTIES: 992 :CUSTOM_ID: h:7240990a-2b4d-442c-a15c-84c8d8b26622 993 :END: 994 995 - Added two new preset palette overrides to make the overall 996 presentation "warmer" or "cooler". Those are called 997 ~modus-themes-preset-overrides-warmer~ and 998 ~modus-themes-preset-overrides-cooler~, respectively. The manual 999 explains how those presets can be used. I suggest the user does not 1000 add such overrides if they intend to load any of the deuteranopia or 1001 tritanopia themes, due to the specific requirements of their design. 1002 1003 - Refined the deuteranopia yellows for warnings, errors, and comments. 1004 These otherwise slight adjustments make it considerably easier to 1005 tell apart distinct elements that may be positioned close together. 1006 1007 - Tweaked the deuteranopia semantic colour mappings for emails. The 1008 subject line use a more appropriate colour value, while level 3 1009 quotes stand out a bit more than they did before, without being 1010 needlessly intense. 1011 1012 - Arranged for the ~modus-themes-load-theme~ function return the value 1013 of the =THEME= argument it accepts. The intent is to allow other 1014 functions that call this one to capture the return value for their 1015 purposes (such as with a ~let~ binding). Thank to Oliver Epper for 1016 the feedback in issue 78 on the GitHub mirror: 1017 <https://github.com/protesilaos/modus-themes/issues/78>. 1018 1019 * 4.1.0 1020 :PROPERTIES: 1021 :CUSTOM_ID: h:d028f117-8a74-4c0c-b838-9f6bf2b43c19 1022 :END: 1023 1024 ** Recursive semantic colour mapping 1025 :PROPERTIES: 1026 :CUSTOM_ID: h:262e2f5f-4db0-4549-a5ba-4e57cd2edc6a 1027 :END: 1028 1029 Version 4 of the Modus themes changed how all colour-related 1030 customisations are done. Instead of multiple user options with 1031 hard-coded stylistic presets, users have access to a comprehensive 1032 system of "named colours" and "semantic colour mappings". The former 1033 is an association between a name, like =blue-warmer=, and a colour 1034 value such as =#3548cf=. While semantic colour mappings are 1035 associations between syntactic/interface constructs and named colours, 1036 such as what value level 2 headings have. 1037 1038 When overriding the palette users can now define semantic colour 1039 mappings whose value is another such mapping. This recursion 1040 simplifies how multiple overrides are defined. 1041 1042 The manual offers extensive guidance on the topic of palette 1043 overrides. There are many sections that include code samples that are 1044 ready for use. 1045 1046 The addition of recursive semantic colour mappings solves a problem 1047 reported by Imran Khan on the mailing list where they were trying to 1048 do what made sense (recursion) but the old code did not permit as 1049 much: 1050 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cb7ca4702162fd575593f8ded28d9a888.contact%40imrankhan.live%3E>. 1051 1052 I was aware of that constraint from before the release of version 1053 4.0.0 but was hesitant to implement recursion prior to getting some 1054 feedback on the new palette overriding feature. 1055 1056 Also thanks to Christian Tietze for participating in that discussion 1057 on the mailing list. 1058 1059 ** Extract an arbitrary colour from a given theme's palette 1060 :PROPERTIES: 1061 :CUSTOM_ID: h:6ba1437f-e55f-4c3a-9c03-b0035293b4a2 1062 :END: 1063 1064 I formalised the function ~modus-themes-get-color-value~ and 1065 documented it at length. It accepts a =COLOR= argument, which 1066 represents an entry in the palette (named colour or semantic colour 1067 value), as well as optional =OVERRIDES= and =THEME= arguments. When 1068 =OVERRIDES= is non-nil, ~modus-themes-get-color-value~ will read from 1069 the overrides, otherwise it will only consult the default palette 1070 value. The =THEME= argument specifies which theme's palette to use. 1071 In the absence of =THEME=, the current one is used. 1072 1073 I already had the "get colour" functionality internally, but was 1074 inspired to make it public after checking Sacha Chua's blog post 1075 "Making highlight-sexp follow modus-themes-toggle": 1076 <https://sachachua.com/blog/2023/01/making-highlight-sexp-follow-modus-themes-toggle/>. 1077 Sacha was using a private function from the themes, which would have 1078 been problematic if I would ever move things around. 1079 1080 Remember to read the documentation of ~modus-themes-list-colors~. 1081 That command shows a preview of the named colours. When called with a 1082 prefix argument (=C-u= by default), it shows a preview of the semantic 1083 colour mappings. 1084 1085 ** Option to disable other themes while loading Modus 1086 :PROPERTIES: 1087 :CUSTOM_ID: h:5af072da-38f6-44d0-9342-e799f0196006 1088 :END: 1089 1090 In the past, we used to disable all other themes while loading a Modus 1091 theme. I revised this for version 4 because I learnt that some users 1092 use "themes" as bundles of arbitrary configurations. 1093 1094 With the addition of the ~modus-themes-disable-other-themes~ user 1095 option, which is non-nil by default, I am restoring the old behaviour: 1096 when loading a Modus theme all other themes are disabled. 1097 1098 This happens when the theme is loaded with the commands 1099 ~modus-themes-toggle~ and ~modus-themes-select~, or via Lisp with the 1100 function ~modus-themes-load-theme~. 1101 1102 Users who need to run multiple themes can set this option to a nil 1103 value. (Personally, I use minor modes for such stylistic bundles and 1104 never have to worry about ~(mapc #'disable-theme custom-enabled-themes)~.) 1105 1106 Thanks to Tony Zorman for the feedback on the mailing list, which led 1107 me to the introduction of this user option: 1108 <https://lists.sr.ht/~protesilaos/modus-themes/%3C874jtew0gp.fsf%40hyperspace%3E#%3C87bkne84d2.fsf@hyperspace%3E>. 1109 1110 ** Renamed the named colours for bg-{added,changed,removed}-intense 1111 :PROPERTIES: 1112 :CUSTOM_ID: h:d43ef5cb-10dd-4c33-9429-2289a5fb2506 1113 :END: 1114 1115 They are now called ~bg-added-fringe~, ~bg-changed-fringe~, 1116 ~bg-removed-fringe~. Please update any palette overrides to reflect 1117 this renaming. 1118 1119 ** Documented how to override diffs for more optional combinations 1120 :PROPERTIES: 1121 :CUSTOM_ID: h:220d4361-7245-4632-998e-c0e2ee3b5f7d 1122 :END: 1123 1124 The manual includes details (with copy-pastable code) on how to 1125 achieve foreground-only diffs and/or how to have red+blue diffs 1126 instead of the default red+green or the deuteranopia yellow+blue. 1127 1128 Thanks to Andrew Tropin for requesting this feature. We used to 1129 provide this style in earlier versions of the themes, but now it is 1130 much more flexible. Andrew's request was done via a private channel 1131 and the information is shared with permission. 1132 1133 [ Since we are here, also thanks to Andrew for keeping the Guix 1134 package of the Modus themes up to date. ] 1135 1136 ** Stylistic changes 1137 :PROPERTIES: 1138 :CUSTOM_ID: h:fdcff629-22c1-4203-9104-4f732c59f731 1139 :END: 1140 1141 - Guaranteed consistency between all of the line-related faces of the 1142 ~consult~ package. We use the ~shadow~ face in all interfaces where 1143 line numbers are contextual information (Occur, Grep,...). With 1144 Consult, this was not the case for commands like ~consult-line~. 1145 1146 Thanks to Daniel Mendler (also known as @minad) for bringing this 1147 matter to my attention: 1148 <https://lists.sr.ht/~protesilaos/ef-themes/%3Cb03413a6-cb77-615d-145d-db4eb710bfca%40daniel-mendler.de%3E>. 1149 1150 - Refined all diff colours for fringes and reduced the saturation for 1151 added lines in ~modus-operandi-deuteranopia~, ~modus-vivendi-deuteranopia-theme~. 1152 Thanks to Andrew Tropin for showing me some usability issues with 1153 the previous styles. This was done via a private channel and the 1154 information is shared with permission. 1155 1156 - Instructed the ~dashboard~ icons to retain their underlying colour. 1157 The default value of the ~dashboard-items-face~ made all icons use 1158 the same colour, detracting from their distinctiveness. Thanks to 1159 Thanos Apollo for bringing this matter to my attention. It was done 1160 via a private channel and the information is shared with permission. 1161 1162 - Amplified the intensity of the =#+begin_src= text when the user 1163 option opts for ~(setq modus-themes-org-blocks 'gray-background)~. 1164 The text is now easier to discern. That user option makes the 1165 inside of the block have a gray background and the begin/end lines 1166 to have a more intense gray, giving off a "blocky" impression. 1167 1168 - Made the ~compilation-warning~ face also inherit the 1169 ~modus-themes-bold~ face. This means that it responds to the value 1170 of the user option ~modus-themes-bold-constructs~, the same way the 1171 other compilation-related mode line faces do. Thanks to Manuel 1172 Giraud for informing me about the inconsistency in 1173 ~compilation-warning~. This was done via a private channel and the 1174 information is shared with permission. 1175 1176 - Calibrated the hueness of the "nuanced" backgrounds in the 1177 ~modus-operandi-tinted~ and ~modus-vivendi-tinted~ themes. These 1178 tweaks are necessary to retain thematic consistency. 1179 1180 - Reset ~mu4e-header-highlight-face~ to its intended style. I made a 1181 mistake before: I did not want the ~highlight~ face to be used in 1182 this case as it is too intense. Sorry! 1183 1184 - Toned down the highlight line of the ~ctrlf~ and ~swiper~ packages. 1185 I mistakenly used the ~highlight~ before, which is too intense for 1186 the purposes of an ancillary background colour. 1187 1188 - Applied "nuanced" backgrounds to the tinted Org blocks. This fixes 1189 an error of mine where I amplified the background colouration of Org 1190 blocks. This concerns the case where the user option 1191 ~modus-themes-org-blocks~ has a =tinted-background= value. Thanks 1192 to Mark Bestley for informing me about this in issue 60 on the 1193 GitHub mirror: 1194 <https://github.com/protesilaos/modus-themes/issues/60#issuecomment-1374530488>. 1195 1196 - Removed the hardcoding of the ~italic~ style in three faces, opting 1197 instead to make them subject to the user option ~modus-themes-italic-constructs~. 1198 The faces are ~marginalia-documentation~, ~markup-attribute-face~, 1199 and ~org-agenda-calendar-sexp~. 1200 1201 - Tweaked the Org agenda deadline and today schedule to use a bold 1202 weight only when the user option ~modus-themes-bold-constructs~ is 1203 set to a non-nil value. Thanks to Marko Kocic for reporting an 1204 issue that brought this matter to my attention: 1205 1206 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C35588839.256749.1673272214728%40office.mailbox.org%3E> 1207 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C874jszvk5g.fsf%40protesilaos.com%3E> 1208 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C87ilhfu101.fsf%40protesilaos.com%3E> 1209 1210 - Enforced the main foreground colour in the faces =highlight= and 1211 =secondary-selection=. This should have always been there to avoid 1212 awkward colour combinations. I realised it was missing after 1213 corresponding with Edgar Vincent on a relevant topic: 1214 <https://lists.sr.ht/~protesilaos/modus-themes/%3C878ri95h1q.fsf%40posteo.net%3E#%3C87ilhc7usc.fsf@posteo.net%3E>. 1215 1216 - Made the ~eglot-mode-line~ face conditionally bold, by subjecting it 1217 to the user option ~modus-themes-bold-constructs~. 1218 1219 - Ensure that the background of the ~company~ package's popup is the 1220 same as that of the ~corfu~ package. This is a subtle neutral 1221 value. 1222 1223 - Fixed the hue of the ~org-habit~ "ready" faces. It should be green 1224 and I made a mistake here. The ~modus-operandi-deuteranopia~ and 1225 ~modus-vivendi-deuteranopia~ themes do change the underlying hues 1226 though, as green is not suitable for them. 1227 1228 - Simplified the ~keycast~ faces so that (i) they do not use a =:box= 1229 attribute that can look awkward in some cases and (ii) the name of 1230 the given command is not colourised to avoid exaggerations with the 1231 use of colour. 1232 1233 - Made the ~powerline-active1~ face inherit from ~mode-line~ instead 1234 of ~mode-line-active~. The latter only exists in newer versions of 1235 Emacs and we do not want to make the themes break in older versions. 1236 Thanks to TitusMu for identifying this and reporting it in issue 64 on 1237 the GitHub mirror: <https://github.com/protesilaos/modus-themes/issues/64>. 1238 1239 - Decoupled all ~ediff~ faces from their ~diff-mode~ counterparts. 1240 Ediff does not depend on ~diff-mode~, so we want to make each set of 1241 faces stand on its own. Thanks to Bernd Rellermeyer for pointing 1242 out this implicit dependency in issue 68 on the GitHub mirror: 1243 <https://github.com/protesilaos/modus-themes/issues/68>. 1244 1245 ** Miscellaneous 1246 :PROPERTIES: 1247 :CUSTOM_ID: h:14d1f1b0-00e0-4275-a06c-9e34daf6411a 1248 :END: 1249 1250 - Improved the clarity and robustness of the code that does the work 1251 of ~modus-themes-list-colors~. 1252 1253 - Refined the colour value of the =blue-warmer= named colour for all 1254 the light themes. It is a tiny bit darker than before. 1255 1256 - Introduced a ~t~ fallback value for the user option 1257 ~modus-themes-completions~. It makes it easier to apply the same 1258 styles for the selection line and matching characters. 1259 1260 - Documented how to not extend the active region background. 1261 1262 - Explained how to make tabs more or less colourful by using palette 1263 overrides. 1264 1265 - Removed obsolete and redundant statements from the documentation the 1266 user option ~modus-themes-completions~. There was (i) an outdated 1267 reference to the =background= value, which is no longer supported, 1268 and (ii) a statement about the standard Completions' buffer that was 1269 not useful. Thanks to Rudolf Adamkovič for informing me about this: 1270 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm2tu1211qz.fsf%40me.com%3E>. 1271 1272 - Rephrase the statement ="*Completions* buffer"= in the documentation 1273 in the interest of clarity. Thanks to Rudolf Adamkovič for the 1274 suggestion: 1275 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm2tu1211qz.fsf%40me.com%3E#%3Cm2eds43htz.fsf@me.com%3E>. 1276 1277 - Updated the sample configuration of the themes with ~use-package~ in 1278 the interest of simplicity. Thanks to Sergey Nichiporchik for the 1279 contribution. Sergey's contribution is within the ~15 line limit 1280 and thus does not require copyright assignment to the Free Software 1281 Foundation. 1282 1283 This was done in merge request 59 on the GitLab mirror: 1284 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/59>. 1285 1286 The prepatory discussion took place in issue 310 on the same mirror: 1287 <https://gitlab.com/protesilaos/modus-themes/-/issues/310>. 1288 1289 Weeks later I further simplified the relevant samples for the sake 1290 of uniformity with the generic package setup. Thanks to Zoltan 1291 Kiraly for informing me about the fact that the ~:bind~ keyword 1292 delays the load of the package until the given command is invoked: 1293 <https://github.com/protesilaos/modus-themes/pull/67>. 1294 1295 Streamlining the configuration makes it easier for me to propose one 1296 set of basic configurations without the need to know what a 1297 configuration macro is doing behind the scenes. 1298 1299 - Fixed an example colour in the documentation. Thanks to Russell Sim 1300 for spotting the error of me using =bg-blue= instead of 1301 =bg-blue-intense=: 1302 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cyger0wa9gsn.fsf%40simopolis.xyz%3E>. 1303 1304 - Defined the missing =modus-themes-nuanced-{red,green,yellow,blue,magenta,cyan}= faces. 1305 Those are used internally to avoid repetition, though users can also 1306 rely on them for their personal configurations (same for all other 1307 Modus faces). 1308 1309 - Improved the documentation on how to have a borderless mode line 1310 style by using the palette overrides. 1311 1312 - Updated the manual's entry on the ~pdf-tools~ backdrop to make it 1313 use the new conventions that have been in place since version 4 of 1314 the themes. Thanks to Utkarsh Singh for the patches: 1315 <https://lists.sr.ht/~protesilaos/modus-themes/patches/37902>. 1316 1317 - Add an explicit notice that the version of the themes that is built 1318 into Emacs must use the ~require-theme~ function instead of the 1319 familiar ~require~. Built-in themes are not considered "code", due 1320 to old conventions, and are not part of the ~load-path~ that 1321 ~require~ reads from. This is not up to the theme to decide. 1322 Interested users must simply know about this important technicality. 1323 Thanks to Koen van Greevenbroek for reporting the problem that 1324 helped me identify this issue: 1325 <https://lists.sr.ht/~protesilaos/modus-themes/%3C31038fd76868fa3d07c9a429dfed8fd6ac374bb8.camel%40posteo.net%3E>. 1326 1327 - Clarified the wording of the ~modus-themes-with-colors~ setup for 1328 custom faces. It explains when this macro should be called. Thanks 1329 to user bangedorrunt for the feedback in issue 59 on the GitHub 1330 mirror: <https://github.com/protesilaos/modus-themes/issues/59>. 1331 1332 * 4.0.0 1333 :PROPERTIES: 1334 :CUSTOM_ID: h:cd353ccc-daf5-4ee5-885a-b3f21be92b66 1335 :END: 1336 1337 This is the biggest release in the history of the project. 1338 Previously, a new version would consist of about 100 commits to the 1339 Git repository. This one includes 400+ of them in the span of one 1340 month. The out-of-the-box looks of the themes are largely the same as 1341 before, though I have made a lot of internal changes that affect how 1342 the themes are instantiated and customised. 1343 1344 As part of this development cycle, I produced publications informing 1345 users of the upcoming changes, while demonstrating the new feature of 1346 overriding the colour palette and its semantic mappings. 1347 1348 - 2022-12-03 Emacs: breaking changes coming to 'modus-themes' version 4 :: <https://protesilaos.com/codelog/2022-12-03-modus-themes-v4-development/> 1349 - 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/> 1350 - 2022-12-17 Emacs: modus-themes version 4 demo [video] :: <https://protesilaos.com/codelog/2022-12-17-modus-themes-v4-demo/> 1351 - 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/> 1352 1353 I did this in the hope of preparing users for the refactored Modus 1354 themes, though I understand that not everyone has had the chance to 1355 consult those entries. The general idea is that *old custom code will 1356 not work* and most user options are either removed or confined to a 1357 more precise scope. 1358 1359 Custom code will not work because the named colours of the palettes 1360 have changed. Many user options are made redundant by the new 1361 overrides' system. Specifically, if an option pertains to 1362 colouration, it is now done via overrides instead of the old method of 1363 me hardcoding styles (e.g. for stuff like "rainbow" headings). 1364 1365 More details below. This is a long entry. Please take your time to 1366 study it before upgrading to the new version of the themes. 1367 1368 ** There now are six Modus themes for more legibility needs 1369 :PROPERTIES: 1370 :CUSTOM_ID: h:f305dd08-a713-4369-a16d-af9403ab6c22 1371 :END: 1372 1373 Quoting from the manual's "Overview" section: 1374 1375 #+begin_quote 1376 The Modus themes consist of six themes, divided into three subgroups. 1377 1378 - Main themes :: ~modus-operandi~ is the project's main light theme, 1379 while ~modus-vivendi~ is its dark counterpart. These two themes are 1380 part of the project since its inception. They are designed to cover 1381 a broad range of needs and are, in the opinion of the author, the 1382 reference for what a highly legible "default" theme should look 1383 like. 1384 1385 - Tinted themes :: ~modus-operandi-tinted~ and ~modus-vivendi-tinted~ 1386 are variants of the two main themes. They slightly tone down the 1387 intensity of the background and provide a bit more color variety. 1388 ~modus-operandi-tinted~ has a set of base tones that are shades of 1389 light ochre (earthly colors), while ~modus-vivendi-tinted~ gives a 1390 night sky impression. 1391 1392 - Deuteranopia themes :: ~modus-operandi-deuteranopia~ and its 1393 companion ~modus-vivendi-deuteranopia~ are optimized for users with 1394 red-green color deficiency. This means that they do not use red and 1395 green hues for color-coding purposes, such as for diff removed and 1396 added lines. Instead, they implement colors that are discernible by 1397 users with deueteranopia or deuteranomaly (mostly yellow and blue 1398 hues). 1399 #+end_quote 1400 1401 All six themes will be included in Emacs 30 (~modus-operandi~ and 1402 ~modus-vivendi~ are in Emacs since August 2020). I asked about it on 1403 the emacs-devel mailing list and received the approval of Eli 1404 Zaretskii, one of the Emacs maintainers. The full thread: 1405 <https://lists.gnu.org/archive/html/emacs-devel/2022-12/msg00834.html>. 1406 1407 *** New command to select one of the Modus themes 1408 :PROPERTIES: 1409 :CUSTOM_ID: h:e4f011c4-46d3-4e4f-ad3e-9a609ef8bd5e 1410 :END: 1411 1412 The ~modus-themes-select~ command uses minibuffer completion to load 1413 one of the six themes in the collection. Loading a Modus theme 1414 disables all other Modus themes. 1415 1416 NOTE that Emacs can load multiple themes, which typically produces 1417 undesirable results and undoes the work of the designer. Use the 1418 ~disable-theme~ command if you are trying other themes beside the 1419 Modus collection. 1420 1421 *** New user option to specify themes to toggle 1422 :PROPERTIES: 1423 :CUSTOM_ID: h:c4efdaca-505b-4724-81b4-4a5340cbcaba 1424 :END: 1425 1426 The ~modus-themes-to-toggle~ is a variable that affects the command 1427 ~modus-themes-toggle~. By default, the toggling happens between the 1428 ~modus-operandi~ and ~modus-vivendi~ themes, as was always the case. 1429 Though with the addition of new themes, it is possible to change this 1430 to something like: 1431 1432 #+begin_src emacs-lisp 1433 (setq modus-themes-to-toggle '(modus-operandi-deuteranopia modus-vivendi-deuteranopia)) 1434 #+end_src 1435 1436 If ~modus-themes-to-toggle~ does not specify two Modus themes, the 1437 ~modus-themes-toggle~ command will prompt with completion for a theme 1438 among the collection (this is practically the same as the aforementioned 1439 ~modus-themes-select~ command). 1440 1441 ** Colour palettes and their overrides are much more powerful 1442 :PROPERTIES: 1443 :CUSTOM_ID: h:c20673d3-d992-4827-bd24-80329962dc8e 1444 :END: 1445 1446 In previous versions, there were options to override colour values. 1447 Those were difficult to use as they (i) required expertise on picking 1448 the correct values and (ii) it was not clear which colour was used 1449 where. 1450 1451 The new version broadens the colour palette to include *named colours* 1452 and *semantic colour mappings*. Named colours are associations 1453 between a symbol and a colour value, such as =(blue-warmer "#354fcf")=. 1454 While semantic colour mappings apply those named colours to specific 1455 constructs such as =(heading-2 yellow-faint)= for all level 2 headings. 1456 1457 What this means is that overrides can now be targeted at semantic 1458 mappings as well to refashion practically every aspect of the themes. 1459 The manual provides lots of examples that can be copied and used 1460 directly. For example, it is possible to change the sequence of 1461 colours in headings so that, say, there is a colour-coding that 1462 denotes depth. Links to relevant entries are included in this 1463 document. 1464 1465 The ~modus-themes-common-palette-overrides~ user option contains 1466 entries that are shared between all the themes. While there also 1467 exist theme-specific options such as ~modus-operandi-palette-overrides~. 1468 1469 For technical insight into the palette overrides, consult the manual: 1470 <https://protesilaos.com/emacs/modus-themes#h:34c7a691-19bb-4037-8d2f-67a07edab150>. 1471 1472 For practical examples check "Stylistic variants using palette 1473 overrides" and its subsections: 1474 <https://protesilaos.com/emacs/modus-themes#h:df1199d8-eaba-47db-805d-6b568a577bf3>. 1475 1476 ** Preset overrides for faint or intense colouration 1477 :PROPERTIES: 1478 :CUSTOM_ID: h:5ba76bb2-9ca8-4202-aca3-31aaca239d94 1479 :END: 1480 1481 The palette overrides are comprehensive and can be tweaked in a 1482 detailed way. Still, users may prefer to use the presets for a 1483 "faint" or "intense" style. These presets showcase the new feature by 1484 styling elements that were previously not subject to configuration. 1485 They also provide the convenience of a common set of stylistic 1486 patterns. 1487 1488 Read the "Palette override presets" section in the manual for how to 1489 use and/or extend those: 1490 <https://protesilaos.com/emacs/modus-themes#h:b0bc811c-227e-42ec-bf67-15e1f41eb7bc>. 1491 1492 ** Named colours are more meaningful 1493 :PROPERTIES: 1494 :CUSTOM_ID: h:94e59644-8ef8-4a46-9666-a241ba04b21a 1495 :END: 1496 1497 In the past, the variants of the main accent colours were named like: 1498 1499 - =red= 1500 - =red-alt= 1501 - =red-alt-other= 1502 1503 The improved naming scheme changes those to: 1504 1505 - =red= 1506 - =red-warmer= 1507 - =red-cooler= 1508 1509 Semantically, the "warmer" variants have more yellow or red while the 1510 "cooler" ones have greater contribution of cyan or blue. As such, the 1511 user can expect =green-warmer= to be an olive green and =green-cooler= 1512 to be that of the pine (though olive trees can have blue-green 1513 colouration and pine trees can be "warmer", but I digress). 1514 1515 Named colours can be previewed with the commands 1516 ~modus-themes-list-colors~ (alias ~modus-themes-preview-colors~) and 1517 ~modus-themes-list-colors-current~ (alias 1518 ~modus-themes-preview-colors-current~). 1519 1520 Those commands accept a =C-u= prefix argument, in which case they show 1521 the semantic colour mappings. 1522 1523 ** Rationalisation of the colour palette 1524 :PROPERTIES: 1525 :CUSTOM_ID: h:cb378214-54a1-4b5b-a801-aa206b94ae38 1526 :END: 1527 1528 In previous versions, there were a lot of named colours that were 1529 added ad-hoc, such as =fg-special-cold= and =bg-special-calm-faint=. 1530 There was no clear design pattern behind them, nor was it obvious 1531 where those colours should be used. Furthermore, there were colours 1532 that were reserved for the various permutations of user options. 1533 1534 This was too complex for users who wanted/needed to refashion aspects 1535 of the themes. It was also difficult to maintain. 1536 1537 The new palettes are more streamlined and their application is more 1538 predictable. This only matters to users who tweak the themes: it 1539 makes their life easier, although it does render inapplicable any 1540 previous custom code. 1541 1542 ** Deprecation of user options 1543 :PROPERTIES: 1544 :CUSTOM_ID: h:fcaa0f80-7e78-44b1-ab04-90acb0046139 1545 :END: 1546 1547 The following subsections explain the topics in further detail. The 1548 general idea for this change is that palette overrides provide a more 1549 powerful, more flexible, and less complex alternative. The code base 1550 is considerably smaller. 1551 1552 With overrides, I can now provide support to cases such as: 1553 1554 - Users who need different sets of greys as their monitor has 1555 inadequate colour reproduction (this is much more common than you 1556 think). 1557 - Users who want to make individual elements stand out, such as to 1558 turn the delimiters of Org source blocks (the =#+begin_src= and 1559 =#+end_src= lines) into, say, a shade of red. 1560 - Users who want to tone down the =TODO= and =DONE= keywords while 1561 making headings more colourful. Or the inverse, or any combination 1562 in-between the extremes. 1563 - Users who want Org property drawers to be more colourful but inline 1564 code to be faint. 1565 1566 You get the idea... All these and many more are now possible. 1567 Whereas in the past I would either have to tell people that it is not 1568 possible or hardcode a stylistic alternative via user options, thus 1569 further complicating the code base. 1570 1571 Catering to all those use-cases is important due to the maximalist 1572 scope of the Modus themes: I cannot tell people to use another theme, 1573 because here is where they come for their legibility needs. This is 1574 consistent with my experience that accessibility is not a 1575 one-size-fits-all and that the most accessible design is that which is 1576 flexible, ceteris paribus. 1577 1578 *** ~modus-themes-intense-mouseovers~ 1579 :PROPERTIES: 1580 :CUSTOM_ID: h:7f4a658a-613b-4ab9-bc05-d9aa6179830b 1581 :END: 1582 1583 This user option would amplify the background colour of mouse hover 1584 effects (technically, the ~highlight~ and ~mode-line-highlight~ 1585 faces). It always used a blue colour. 1586 1587 The same effect can now be achieved via overrides, except it is now 1588 possible to use any background colour or level of intensity that is 1589 provided by the themes' palette. The manual provides concrete 1590 examples: <https://protesilaos.com/emacs/modus-themes#h:b5cab69d-d7cb-451c-8ff9-1f545ceb6caf>. 1591 1592 *** ~modus-themes-org-agenda~ 1593 :PROPERTIES: 1594 :CUSTOM_ID: h:778abb81-4bcb-4a5c-85eb-eec9f417a443 1595 :END: 1596 1597 This was a complex user option that was hard to test, document, and 1598 maintain. Most aspects of the Org agenda can be affected via 1599 overrides, as demonstrated in the manual: 1600 <https://protesilaos.com/emacs/modus-themes#h:a5af0452-a50f-481d-bf60-d8143f98105f>. 1601 1602 *** ~modus-themes-fringes~ 1603 :PROPERTIES: 1604 :CUSTOM_ID: h:b1ee38d7-45a0-474b-8c97-774f61462cc6 1605 :END: 1606 1607 This user option provided two shades of grey and the option for an 1608 invisible background for the Emacs fringe. The same and better can be 1609 done via overrides, as shown in the manual: 1610 <https://protesilaos.com/emacs/modus-themes#h:c312dcac-36b6-4a1f-b1f5-ab1c9abe27b0>. 1611 1612 *** ~modus-themes-lang-checkers~ 1613 :PROPERTIES: 1614 :CUSTOM_ID: h:ad06917b-a078-48c8-97e8-1182e085a15c 1615 :END: 1616 1617 This was another complex user option that offered several stylistic 1618 variants of dubious value. The main problem it had is that linter 1619 highlights are often applied automatically, so any super intense style 1620 becomes unusable. Same when a file has lots of warnings/errors. 1621 1622 The semantic colour mappings I provide for this case are limited to 1623 underlines, which I think is the most usable/legible design. The 1624 manual provides concrete examples on how to tweak those: 1625 <https://protesilaos.com/emacs/modus-themes#h:03dbd5af-6bae-475e-85a2-cec189f69598>. 1626 1627 *** ~modus-themes-mode-line~ 1628 :PROPERTIES: 1629 :CUSTOM_ID: h:1b82b764-97f5-406a-8440-bae415c7d294 1630 :END: 1631 1632 Yet another very complex user option that I removed in the interest of 1633 maintainability. All its stylistic permutations (and more) for 1634 colours are possible via overrides: 1635 1636 - Make the mode line borderless :: <https://protesilaos.com/emacs/modus-themes#h:80ddba52-e188-411f-8cc0-480ebd75befe> 1637 - Make the active mode line colorful :: <https://protesilaos.com/emacs/modus-themes#h:e8d781be-eefc-4a81-ac4e-5ed156190df7> 1638 1639 It is also possible to add padding to the mode line, though I explain 1640 why this was always a dirty hack: 1641 <https://protesilaos.com/emacs/modus-themes#h:5a0c58cc-f97f-429c-be08-927b9fbb0a9c>. 1642 1643 *** ~modus-themes-diffs~ 1644 :PROPERTIES: 1645 :CUSTOM_ID: h:dd2879a4-37c1-4ded-bc7e-24a217248961 1646 :END: 1647 1648 I have redesigned all diff-related colours to improve their usability. 1649 They are less intense than before, but still stand out clearly. I am 1650 purposefully not documenting how to use overrides here as I want users 1651 to give this redesign a try. We can always document and refine things 1652 at a later point. 1653 1654 *** ~modus-themes-subtle-line-numbers~ 1655 :PROPERTIES: 1656 :CUSTOM_ID: h:bcce1b94-a223-4324-b0a6-940e389819a8 1657 :END: 1658 1659 This was a simple, but ultimately very limited option. We can do much 1660 better with overrides because we can tweak every aspect of this 1661 interface without making the code more complex. The manual shows how 1662 to do it in style: 1663 <https://protesilaos.com/emacs/modus-themes#h:b6466f51-cb58-4007-9ebe-53a27af655c7>. 1664 1665 *** ~modus-themes-markup~ 1666 :PROPERTIES: 1667 :CUSTOM_ID: h:5eedfd24-9480-4b76-8b64-e625d3220a8d 1668 :END: 1669 1670 This was a poorly named user option that only affected inline code 1671 elements in prose. The new semantic colour mappings provide more 1672 points of entry and thus make it easier to tweak things to one's 1673 liking (including tables, property drawers, source block delimiters 1674 (the =#+begin_src= and =#+end_src= lines)), and more. The manual 1675 shows how: 1676 <https://protesilaos.com/emacs/modus-themes#h:bb5b396f-5532-4d52-ab13-149ca24854f1>. 1677 1678 *** ~modus-themes-paren-match~ 1679 :PROPERTIES: 1680 :CUSTOM_ID: h:8dbe54c3-5bfc-424c-8952-f68015f6c6c4 1681 :END: 1682 1683 The colouration of matching parentheses of the ~show-paren-mode~ can 1684 still be affected via overrides: 1685 <https://protesilaos.com/emacs/modus-themes#h:259cf8f5-48ec-4b13-8a69-5d6387094468>. 1686 1687 *** ~modus-themes-syntax~ 1688 :PROPERTIES: 1689 :CUSTOM_ID: h:22910131-87bf-4c03-bbf4-aac3010b570a 1690 :END: 1691 1692 This was a user option that controlled the colouration of programming 1693 modes. We can reproduce it with overrides, except we now also have 1694 the freedom to adapt things further: 1695 1696 - Make comments yellow and strings green :: <https://protesilaos.com/emacs/modus-themes#h:26f53daa-0065-48dc-88ab-6a718d16cd95> 1697 - Make code syntax use the old alt-syntax style :: <https://protesilaos.com/emacs/modus-themes#h:c8767172-bf11-4c96-81dc-e736c464fc9c> 1698 - Make use of alternative styles for code syntax :: <https://protesilaos.com/emacs/modus-themes#h:943063da-7b27-4ba4-9afe-f8fe77652fd1> 1699 1700 *** ~modus-themes-links~ 1701 :PROPERTIES: 1702 :CUSTOM_ID: h:68d41ee9-d277-45f9-a6cd-543dac9282c8 1703 :END: 1704 1705 The colouration of links can now be affected via palette overrides, as 1706 documented in the manual: 1707 <https://protesilaos.com/emacs/modus-themes#h:6c1d1dea-5cbf-4d92-b7bb-570a7a23ffe9>. 1708 1709 *** ~modus-themes-region~ 1710 :PROPERTIES: 1711 :CUSTOM_ID: h:b97b78df-9ed9-4173-8de2-303851231e06 1712 :END: 1713 1714 Overrides can be used to affect the region's colouration and/or to 1715 prevent the active region highlight from changing the underlying text 1716 colour. As always, the manual covers the details: 1717 <https://protesilaos.com/emacs/modus-themes#h:c8605d37-66e1-42aa-986e-d7514c3af6fe>. 1718 1719 *** ~modus-themes-deuteranopia~ 1720 :PROPERTIES: 1721 :CUSTOM_ID: h:e5fee2a1-2ace-4b4b-9aea-554d2b4a7c2d 1722 :END: 1723 1724 Instead of this rather limited option, users are advised to use the 1725 new bespoke themes: ~modus-operandi-deuteranopia~ and 1726 ~modus-vivendi-deuteranopia~. They are designed to cater to the needs 1727 of people with red-green colour deficiency. 1728 1729 *** ~modus-themes-mail-citations~ 1730 :PROPERTIES: 1731 :CUSTOM_ID: h:bb8a81c5-d0c1-4150-bf7a-254d1684d95e 1732 :END: 1733 1734 All parts of an email composition buffer (per the standard 1735 =message.el= library) are configurable via palette overrides. Not 1736 just citation lines, but also message headers. The manual shows 1737 several stylistic alternatives: 1738 <https://protesilaos.com/emacs/modus-themes#h:7da7a4ad-5d3a-4f11-9796-5a1abed0f0c4>. 1739 1740 Note that apart from this change, I also redesigned several faces that 1741 affect emails. This was done in the interest of consistency and to 1742 avoid some exaggerations. 1743 1744 *** ~modus-themes-tabs-accented~ 1745 :PROPERTIES: 1746 :CUSTOM_ID: h:1574b5bc-d615-4053-9bbf-79396745519b 1747 :END: 1748 1749 I do not provide documentation on how to reproduce this style because 1750 I think it was not widely used. It is possible to do it with 1751 overrides. If anyone needs it, they are invited to contact me about 1752 it. 1753 1754 *** ~modus-themes-box-buttons~ 1755 :PROPERTIES: 1756 :CUSTOM_ID: h:19c81a75-a65e-49cb-83e5-c44167821865 1757 :END: 1758 1759 All "graphical" buttons use a proportionately spaced font 1760 (~variable-pitch~) by default as it helps with legibility. The 1761 colours of those buttons can be changed by overriding the relevant 1762 entries: 1763 <https://protesilaos.com/emacs/modus-themes#h:4f6b6ca3-f5bb-4830-8312-baa232305360>. 1764 1765 [ Use my ~fontaine~ package to affect fonts via faces and to apply 1766 presets for various contexts. ] 1767 1768 ** Changes to remaining user options 1769 :PROPERTIES: 1770 :CUSTOM_ID: h:c93db0f4-1032-411a-881e-0c5fd23480cf 1771 :END: 1772 1773 *** The ~modus-themes-headings~ also affects the Org agenda 1774 :PROPERTIES: 1775 :CUSTOM_ID: h:c2f088b6-dc84-4285-9ece-c877be6b274f 1776 :END: 1777 1778 This user option applies to heading level 0 through 8 and also to the 1779 agenda date and structure constructs. Here is a complete example: 1780 1781 #+begin_src emacs-lisp 1782 (setq modus-themes-headings ; read the manual's entry of the doc string 1783 '((0 . (variable-pitch light 1.9)) 1784 (1 . (variable-pitch light 1.8)) 1785 (2 . (variable-pitch regular 1.7)) 1786 (3 . (variable-pitch regular 1.6)) 1787 (4 . (variable-pitch regular 1.5)) 1788 (5 . (variable-pitch 1.4)) ; absence of weight means `bold' 1789 (6 . (variable-pitch 1.3)) 1790 (7 . (variable-pitch 1.2)) 1791 (agenda-date . (semilight 1.5)) 1792 (agenda-structure . (variable-pitch light 1.9)) 1793 (t . (variable-pitch 1.1)))) 1794 #+end_src 1795 1796 *** The ~modus-themes-headings~ no longer affects colours 1797 :PROPERTIES: 1798 :CUSTOM_ID: h:bb0bac60-ad22-4699-9579-881431972294 1799 :END: 1800 1801 All colour-related changes can be done via palette overrides. This 1802 gives the user maximum flexibility on the choice of applied colours 1803 (e.g. to have alternating contrasting foregrounds or shades of the 1804 same hue). The manual shows several examples: 1805 <https://protesilaos.com/emacs/modus-themes#h:11297984-85ea-4678-abe9-a73aeab4676a>. 1806 1807 *** The ~modus-themes-completions~ is simpler 1808 :PROPERTIES: 1809 :CUSTOM_ID: h:0b29c525-7def-4149-a26b-70ca5e021a27 1810 :END: 1811 1812 It no longer covers =popup= entries as distinct from =selection=. 1813 This is because I revised all the applicable colours and faces to 1814 consolidate styles. 1815 1816 The =matches= and =selection= keys now read the same list of values. 1817 1818 All changes to colours are done through palette overrides, as 1819 demonstrated in the manual (again, far more flexible): 1820 <https://protesilaos.com/emacs/modus-themes#h:d959f789-0517-4636-8780-18123f936f91>. 1821 1822 *** The ~modus-themes-prompts~ is simpler 1823 :PROPERTIES: 1824 :CUSTOM_ID: h:7e5b9fea-b696-4e8a-bebe-a7fbb0eb460a 1825 :END: 1826 1827 This user option now only affects the typographic features of prompts. 1828 It can read any font weight, as explained in its documentation. 1829 Colours are influenced by semantic colour mappings in the palette and 1830 can be overridden accordingly. The manual shows several styles: 1831 <https://protesilaos.com/emacs/modus-themes#h:bd75b43a-0bf1-45e7-b8b4-20944ca8b7f8>. 1832 1833 *** Auto-reload theme when configuring via Custom 1834 :PROPERTIES: 1835 :CUSTOM_ID: h:b26a2a1f-ee1e-4001-a3d0-4d4d7cb4fd5f 1836 :END: 1837 1838 The user option ~modus-themes-custom-auto-reload~ supersedes the old 1839 ~modus-themes-inhibit-reload~. It is now set to a non-~nil~ value by 1840 default. 1841 1842 We do this as a convenience for users who tweak theme settings via the 1843 Custom UI and who do not know that all modifications to user options 1844 require a theme re-load for changes to take effect. Read more in the 1845 manual: 1846 <https://protesilaos.com/emacs/modus-themes#h:9001527a-4e2c-43e0-98e8-3ef72d770639>. 1847 1848 ** Deprecation of public functions 1849 :PROPERTIES: 1850 :CUSTOM_ID: h:8167bf46-7a43-4b46-b2ed-a66e5d73bb96 1851 :END: 1852 1853 The ~modus-themes-color~ and ~modus-themes-color-alts~ are deprecated. 1854 Users are invited to concentrate on the ~modus-themes-with-colors~ 1855 macro. The manual provides several examples on that front. 1856 1857 The ~modus-themes-load-themes~ is no longer necessary due to the 1858 refactoring of the code base. 1859 1860 The ~modus-themes-load-operandi~ and ~modus-themes-load-vivendi~ are 1861 superseded by the general ~modus-themes-load-theme~. It accepts the 1862 symbol of a Modus theme as its argument. 1863 1864 The command ~modus-themes-report-bug~ is no more. Just send an email 1865 to the mailing list or to me privately. Find the information with 1866 =M-x describe-package= and then specify =modus-themes=. 1867 Alternatively, check my website: <https://protesilaos.com/contact>. 1868 1869 ** Removed support for some packages 1870 :PROPERTIES: 1871 :CUSTOM_ID: h:34ffc5ed-574d-44f1-8a27-c2e6bb8c69e0 1872 :END: 1873 1874 These are the most notable packages that are no longer supported: 1875 1876 - ~dired+~ 1877 - ~lsp-mode~ 1878 - ~helm~ 1879 - ~treemacs~ 1880 1881 The reason is that they are very hard to use for me as an outsider. 1882 They provide lots of features, which means that I cannot easily 1883 identify faces in their context unless I become an expert in the 1884 relevant functionality. 1885 1886 Other removed packages: 1887 1888 - ~artbollocks-mode~. Use ~writegood-mode~. 1889 - ~apropos~. Its default faces are fine. 1890 - ~awesome-tray~. 1891 - ~bbdb~ and ~ebdb~. They are hard to set up, but their faces are 1892 usable. 1893 - ~calfw~. Hard to set up and also seems to no longer be maintained. 1894 - ~easy-jekyll~ 1895 - ~dir-treeview~ 1896 - ~eros~ 1897 - ~eshell-git-prompt~ 1898 - ~eshell-prompt-extras~ 1899 - ~eshell-syntax-highlighting~ 1900 - ~evil-goggles~ 1901 - ~evil-snipe~ 1902 - ~evil-visual-mark-mode~ 1903 - ~fountain-mode~. I need someone who uses it to help me test it. 1904 - ~macrostep~ 1905 - ~mentor~ 1906 - ~mini-modeline~ 1907 - ~mmm-mode~. I need someone who uses it to help me test it. 1908 - ~org-table-sticky-header~. 1909 - ~phi-grep~ 1910 - ~pomidor~ 1911 - ~rainbow-blocks~. Use Adam Porter's (aka alphapapa) =prism.el=. 1912 - ~semantic~ 1913 - ~smartparens~ 1914 - ~spaceline~ 1915 - ~sx~ 1916 - ~telephone-line~ 1917 - ~tomatinho~ 1918 - ~winum~ 1919 - ~xterm-color~. 1920 1921 ** Thanks for their feedback on the development of version 4 1922 :PROPERTIES: 1923 :CUSTOM_ID: h:bdaa3eaf-67e8-4de8-b8d5-7b11fa28dbcd 1924 :END: 1925 1926 In alphabetical order: 1927 1928 - Aleksei Pirogov :: Noticed that there were no semantic colour 1929 mappings for the ~rainbow-delimiters~ (and related), thus reminding 1930 me to make the requisite arrangements. Aleksei also spotted a 1931 regression during the development of the "faint" overrides' preset. 1932 These were done on the GitHub mirror: 1933 1934 - <https://github.com/protesilaos/modus-themes/issues/54> 1935 - <https://github.com/protesilaos/modus-themes/issues/55> 1936 1937 - Anders Johansson :: Pointed out some irregularities with the use of 1938 ~make-obsolete~ in the =version-4= development branch. I should be 1939 using ~make-obsolete-variable~ in some cases: 1940 <https://lists.sr.ht/~protesilaos/modus-themes/%3CCAKJdtO-dzvR%3D2BaSd5qPzwDE%3D%2BaJSR6js7ii1O6KD7oFOB7gDw%40mail.gmail.com%3E> 1941 1942 - Charlotte Van Petegem :: Reminded me to document how to reproduce 1943 the old "alt-syntax" style by using palette overrides: 1944 <https://lists.sr.ht/~protesilaos/modus-themes/%3C877cy917jw.fsf%40vanpetegem.me%3E> 1945 1946 - Christian Tietze :: Spotted a bug in how shared palette overrides 1947 would not be read in certain scenaria. Also suggested tweaks to the 1948 documentation, which reminded me of tasks that still had to be done: 1949 1950 - <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm1cz81rq9m.fsf%40christiantietze.de%3E> 1951 - <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm1fscxrr0s.fsf%40christiantietze.de%3E> 1952 - <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm1ilhtrs09.fsf%40christiantietze.de%3E> 1953 1954 - Daniel Mendler (aka @minad on GitHub) :: Contacted me to comment on 1955 the general redesign. From the discussion I learnt that preset 1956 overrides would be useful. This information is shared with 1957 permission, as it was done via a private channel. 1958 1959 - James Ferguson :: Commented on the colours of the tab-bar and thus 1960 inspired me to define relevant semantic colour mappings: 1961 <https://lists.sr.ht/~protesilaos/modus-themes/%3CCAMtGdSnrKDGdagT7vGC9DnBZnOvkbM%3D4Nxwn3ts2tdO8YmUnxw%40mail.gmail.com%3E> 1962 1963 - Philip Kaludercic :: Opined that the ~modus-themes-inhibit-reload~ 1964 should not be deprecated in the interest of usability. As noted 1965 above, its functionality is preserved and now enabled by default in 1966 ~modus-themes-custom-auto-reload~. Through the discussion we also 1967 arrived at the concept of shared palette overrides instead of only 1968 having theme-specific ones: 1969 1970 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C87h6y3gyxx.fsf%40posteo.net%3E> 1971 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C87wn6qgjkx.fsf%40posteo.net%3E> 1972 1973 - Tony Zorman :: Noted that there was no clear upgrade path to 1974 version 4. This helped me explain some of the technicalities of 1975 packaging and of the themes' redesign, but also to update the 1976 manual: 1977 <https://lists.sr.ht/~protesilaos/modus-themes/%3C874jtew0gp.fsf%40hyperspace%3E>. 1978 1979 - a1ks :: Reported a bug caused by the typo of an extra backtick. 1980 This was done on the GitHub mirror: 1981 <https://github.com/protesilaos/modus-themes/issues/53>. 1982 1983 - soaringbind :: Identified some omissions in the code where I forgot 1984 to update certain Avy and Org faces. This continued in a second 1985 thread about the use of some obsolete faces: 1986 1987 - <https://lists.sr.ht/~protesilaos/modus-themes/%3CNKXY2k1--3-9%40tuta.io%3E> 1988 - <https://lists.sr.ht/~protesilaos/modus-themes/%3CNKd3jM_--3-9%40tuta.io%3E> 1989 1990 - tumashu :: Experimented with the overrides and thus helped me 1991 identify an area where the documentation could be improved. This 1992 was done on the GitHub mirror: 1993 1994 - <https://github.com/protesilaos/modus-themes/issues/56> 1995 - <https://github.com/protesilaos/modus-themes/issues/57> 1996 1997 - wakamenod :: Encountered a bug that was caused by a mistake of mine 1998 that affected how themes are instantiated. This was done on the 1999 GitHub mirror: <https://github.com/protesilaos/modus-themes/issues/50>. 2000 2001 ** The largest release to date 2002 :PROPERTIES: 2003 :CUSTOM_ID: h:54a6bcd1-6ba0-42ed-8fdd-b83ee3efee73 2004 :END: 2005 2006 There are many more changes that I did not describe. This already 2007 lengthy document is me covering just the headline features. The gist 2008 is that I spent the last month refactoring and testing the themes to 2009 ensure they can cope with the needs of users for years to come. 2010 2011 I understand that the palette overrides are a new way of doing things 2012 and that some users may be inconvenienced over the short-term as they 2013 update their configurations. I strongly believe that this system is 2014 better and the Modus themes can now cover all the legibility needs of 2015 users, while also catering to their aesthetic preferences. 2016 2017 + Package name (GNU ELPA): ~modus-themes~ 2018 + Official manual: <https://protesilaos.com/emacs/modus-themes> 2019 + Change log: <https://protesilaos.com/emacs/modus-themes-changelog> 2020 + Colour palette: <https://protesilaos.com/emacs/modus-themes-colors> 2021 + Sample pictures: <https://protesilaos.com/emacs/modus-themes-pictures> 2022 + Git repo on SourceHut: <https://git.sr.ht/~protesilaos/modus-themes> 2023 - Mirrors: 2024 + GitHub: <https://github.com/protesilaos/modus-themes> 2025 + GitLab: <https://gitlab.com/protesilaos/modus-themes> 2026 + Mailing list: <https://lists.sr.ht/~protesilaos/modus-themes> 2027 + Backronym: My Old Display Unexpectedly Sharpened ... themes 2028 2029 * 3.0.0 2030 :PROPERTIES: 2031 :CUSTOM_ID: h:6829db8d-52c5-43a8-a026-f213dcfaced9 2032 :END: 2033 2034 #+begin_src text 2035 Modus themes version 3.0.0 2036 2037 By Protesilaos Stavrou <info@protesilaos.com> on 2022-10-28 2038 2039 2040 The version that will ship with Emacs 29 2041 ======================================== 2042 2043 The 'modus-operandi' and 'modus-vivendi' themes (package name is 2044 'modus-themes') have been a part of Emacs since August 2020. Emacs 28 2045 ships with version 1.6.0 of the themes. Emacs 29 will include version 2046 3.0.0. 2047 2048 There is no clean upgrade path from the old version of the themes to 2049 the current one. Users are advised to review their configurations and 2050 consult with the detailed manual of the themes. 2051 2052 I am available to answer any questions, either via my personal email 2053 or on the official sources of the themes. Find the full list here: 2054 <https://protesilaos.com/emacs>. 2055 2056 2057 Minor breaking changes 2058 ====================== 2059 2060 I have changed the default value of the following user options: 2061 2062 1. 'modus-themes-hl-line' 2063 2. 'modus-themes-completions' 2064 3. 'modus-themes-fringes' 2065 2066 In the case of the first two, the background of the highlighted line 2067 is made to look a bit more intense. 2068 2069 For the fringes, this tweak makes them visible, using a subtle grey 2070 colour. By default, "fringe" is an 8-pixel-wide area to the left and 2071 right side of an Emacs window. 2072 2073 The intent of these changes is to make the out-of-the-box experience 2074 consistent with the accessibility considerations of the Modus themes. 2075 Specifically because some users may not realise that the themes are 2076 highly customisable. 2077 2078 To revert to the old defaults, users must include this (or equivalent) 2079 in their init file: 2080 2081 (setq modus-themes-completions nil 2082 modus-themes-hl-line nil 2083 modus-themes-fringes nil) 2084 2085 As always, changes to theme user options take effect upon a reload of 2086 the theme. 2087 2088 This was announced on my website: 2089 <https://protesilaos.com/codelog/2022-10-23-breaking-modus-themes-3-0-0-notice/>. 2090 2091 2092 Support for new faces or changes to existing ones 2093 ================================================= 2094 2095 ,* Refined the 'telega' faces for inline code and preformatted 2096 elements. The faces are 'telega-entity-type-code' and 2097 'telega-entity-type-pre', respectively. This change makes them 2098 subject to the style specified in the user option 2099 'modus-themes-markup'. 2100 2101 Thanks to Pablo Stafforini for showing me screenshots of how they 2102 look, as I am not a telega/telegram user and cannot do this myself. 2103 Done as part of issue 170 on the GitLab mirror: 2104 <https://gitlab.com/protesilaos/modus-themes/-/issues/170#note_1143975582>. 2105 2106 ,* Removed all attributes from the 'textsec-suspicious' face. By 2107 default, it applies a background, but does not affect the 2108 foreground. The result is thus inaccessible in many cases 2109 (e.g. blue links against a red background). There is no need for 2110 such a background though, as the warnings are accompanied by the 2111 relevant emoji: ⚠️. 2112 2113 To support this face, we need it to affect the foreground as well. 2114 2115 ,* Deleted some 'consult' "preview" faces in the interest of 2116 consistency. This is to match the current style of the project: 2117 <https://github.com/minad/consult/commit/1343e39fefcf8a28a7a415aa4b0a8ff7094370bf>. 2118 2119 ,* Expanded support of the built-in 'diff-mode' faces to include the 2120 'diff-changed-unspecified'. It is made to look the same as 2121 'diff-changed', i.e. yellow-tinted. There is a good chance that a 2122 user will never see this face in action (I only encountered it 2123 once). 2124 2125 ,* Reworked all the 'highlight-regexp' faces (like 'hi-yellow') to use 2126 bespoke colour values. 2127 2128 These faces need to have a background that is consistent with their 2129 semantics. Furthermore, they need to use the 'inverse-video' 2130 attribute which, in turn, affects the combinations of colour we can 2131 apply. Our accented backgrounds are designed to contrast well with 2132 our nominal main foreground values, whereas this case demands 2133 coloured backgrounds that contrast nicely with what would normally 2134 be the main background colour. As such, we cannot apply our 2135 ordinary entries from each theme's palette. It would be inefficient 2136 to expand the palette of each theme just for this edge case. 2137 2138 Thanks to Kevin Kainan Li for the feedback on the mailing list, where 2139 they informed me that the previous design was too dark/mute (and I 2140 agreed with that assessment) and provided feedback on my samples: 2141 <https://lists.sr.ht/~protesilaos/modus-themes/%3CCAMTq2Vp3Nnzv-i9wJdq4-OJ4X_QfWXySpUtAieBy0dgKLEOSBg%40mail.gmail.com%3E>. 2142 2143 ,* Recoloured the 'modus-themes-completion-match-1' to use a shade of 2144 blue instead of cyan. This contributes to the distinctiveness of 2145 those matches relative to 'modus-themes-completion-match-0' and the 2146 other groups. These faces are used in completion User Interfaces, 2147 such as 'vertico', 'corfu', 'orderless'. They are subject to the 2148 user option 'modus-themes-completions'. 2149 2150 ,* Added support for the 'olivetti-fringe' face. Its background is the 2151 same as the main background, meaning that the fringes are invisible 2152 when 'olivetti-mode' is enabled. Thanks to Matthias Fuchs for 2153 producing a report that helped me track this problem. It was done 2154 in issue 46 on the GitHub mirror: 2155 <https://github.com/protesilaos/modus-themes/issues/46>. 2156 2157 2158 Miscellaneous 2159 ============= 2160 2161 ,* Added the new Emacs 29 theme properties to 'modus-operandi' and 2162 'modus-vivendi'. These make the themes work with the new built-in 2163 command 'toggle-theme'. Thanks to Philip Kaludercic for the patch 2164 and for the work on this in emacs.git: 2165 <https://lists.gnu.org/archive/html/bug-gnu-emacs/2022-10/msg00886.html>. 2166 2167 ,* Refrained from deprecating the 'modus-themes-toggle' command in 2168 favour of the new generic 'toggle-theme'. 2169 2170 The 'toggle-theme' is not functionally equivalent to the command 2171 'modus-themes-toggle' due to the optional arguments it accepts. 2172 With 'toggle-theme' we are prompted to confirm loading the theme, 2173 due to how unsafe themes can be... Further, we are asked to add the 2174 loaded theme to the list of "safe" themes. This only applies to the 2175 packaged version of the 'modus-themes', not the items that are built 2176 into Emacs. 2177 2178 These prompts are consistent with how 'load-theme' works, but not 2179 with what the user of 'modus-themes-toggle' has come to expect. 2180 2181 Users who do not like to maintain a 'custom-file' (like me) are thus 2182 penalised each time they invoke the command. 2183 2184 The 'modus-themes-toggle' will only be deprecated if there is, say, 2185 a user option in Emacs that disables those prompts each time a theme 2186 is loaded. Basically, we need an arrangement that just toggles 2187 themes without questions. 2188 2189 Thanks to Rudolf Adamkovič for suggesting the idea and to Philip 2190 Kaludercic for the 'toggle-theme' (and related functionality): 2191 <https://lists.sr.ht/~protesilaos/modus-themes/%3C877d116lh4.fsf%40posteo.net%3E#%3Cm2lepgrd8l.fsf@me.com%3E>. 2192 2193 ,* Corrected the one-line description of the 'modus-vivendi' theme, 2194 which was describing itself as a "light" theme. 2195 2196 ,* Ensured that the manual and all doc strings in the code use American 2197 English, per the convention of emacs.git (my CHANGELOG still uses 2198 what I prefer). Thanks to Stefan Kangas for contributing to this 2199 effort with a patch that properly renders 'non-nil' in the texinfo 2200 output as 'non-@code{nil}'. 2201 2202 ,* Made other minor tweaks and refinements. 2203 #+end_src 2204 2205 * 2.7.0 2206 :PROPERTIES: 2207 :CUSTOM_ID: h:4d86106c-1df5-4f5f-bc6c-f14f5d13403b 2208 :END: 2209 2210 #+begin_src text 2211 Modus themes version 2.7.0 2212 2213 By Protesilaos Stavrou <info@protesilaos.com> on 2022-10-01 2214 2215 2216 Support for packages or faces 2217 ============================= 2218 2219 ,* Reinstated support for 'centaur-tabs'. I had removed it in commit 2220 2235ce5 (done on 2022-08-02) for version 2.5.0 of the modus-themes. 2221 At the time I wrote: 2222 2223 centaur-tabs has a bug where it cannot read the value of a face if it 2224 uses the standard ':inherit' attribute. I have sent a patch to fix it, 2225 but have received no response since February: 2226 <https://github.com/ema2159/centaur-tabs/pull/179>. 2227 2228 Relevant reports: 2229 2230 - <https://github.com/protesilaos/modus-themes/issues/30> 2231 - <https://gitlab.com/protesilaos/modus-themes/-/issues/288> 2232 - <https://github.com/protesilaos/modus-themes/issues/15> 2233 2234 I am happy to reinstate support for centaur-tabs as soon as the package 2235 gets the maintenance it needs. 2236 2237 My patch/pull-request is now merged and the package is actively 2238 maintained once again. Hence the decision to bring back support for 2239 it, as promised. 2240 2241 ,* Applied styles for the 'icon-button' face of Emacs 29. 2242 2243 2244 ,* Styled the 'log-edit-headers-separator' face of Emacs 29 (it was 2245 introduced upstream by a patch of mine). 2246 2247 ,* Made the 'gnus-summary-low-unread' face inherit from the 'italic' 2248 face like the rest of that subgroup of faces. This helps 2249 differentiate it from the 'gnus-summary-high-unread' face. Thanks 2250 to Mark Simpson for pointing out the possibility of conflating those 2251 two faces: <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm2r0zszc2z.fsf@gmail.com%3E>. 2252 2253 ,* Covered the 'read-multiple-choice-face' by adding a noticeable 2254 background colour to it. The default attributes it has, which look 2255 like other key bindings (bold and blue) plus an underline are 2256 technically okay, though the context of this face is in the echo 2257 area which is one line tall. Moreover, the highlighted keys are 2258 inlined with other text. These make it difficult to spot the 2259 highlights without some extra spacing. I use the addition of a 2260 background in Org's export dispatcher interface which also has some 2261 unique requirements (the 'org-dispatcher-highlight' face). The 2262 principle is to have theme-wide consistency (e.g. "all key bindings 2263 must look the same") EXCEPT when the specifics require a different 2264 set of styles in the interest of usability. 2265 2266 ,* Extended the coverage of the 'auctex' package's faces to include the 2267 'font-latex-underline-face'. Thanks to Luis Miguel Castañeda for 2268 reporting a typo I made which caused an error: 2269 <https://lists.sr.ht/~protesilaos/modus-themes/%3C7h7d2oudpb.fsf@imaginarymagnitude.net%3E> 2270 2271 ,* Added support for 'crontab-mode'. Thanks to Antonio Ruiz for the 2272 patch: <https://lists.sr.ht/~protesilaos/modus-themes/patches/35080>. It 2273 is below the ~15 line threshold and thus requires no copyright 2274 assignment to the Free Software Foundation. 2275 2276 ,* Extended support for the 'company' package's 'company-scrollbar-bg' 2277 and 'company-scrollbar-fg' faces. 2278 2279 ,* Added support for the 'spell-fu' package. Thanks to Antonio Ruiz 2280 for the patch: <https://lists.sr.ht/~protesilaos/modus-themes/%3C87fshnq7uv.fsf%40purelymail.com%3E>. 2281 Same as further above for Antonio's copyright status. 2282 2283 ,* Moved the 'selectrum-prescient' faces to the 'prescient' group, to 2284 be consistent with changes in the respective upstream packages. 2285 Thanks to okamsn for the contribution, which was done in pull 2286 request 41 on the GitHub mirror: <https://github.com/protesilaos/modus-themes/pull/41>. 2287 The user okamsn has assigned copyright assignment to the Free 2288 Software Foundation, although this patch is within the allowed 2289 limits. 2290 2291 2292 Change to 'fill-column-indicator' 2293 ================================= 2294 2295 Made the 'fill-column-indicator' face more noticeable. It is what the 2296 'display-fill-column-indicator-mode' uses to draw a line on where the 2297 'fill-column' is. 2298 2299 This change is in response to private messages I received as well as 2300 this, at parts impolite and toxic, thread that I refrained from 2301 participating in: 2302 <https://lists.gnu.org/archive/html/help-gnu-emacs/2022-08/msg00255.html>. 2303 2304 [ I do not follow that mailing list, by the way. All my projects have 2305 multiple communication channels and I always reply in a timely 2306 fashion. Social media, fora about Emacs, generic mailing lists, 2307 etc. are not among those channels. 2308 <https://protesilaos.com/codelog/2022-07-24-report-issues-official-channels/>. ] 2309 2310 The core idea is that the previous design was (1) considered 2311 "invisible" and (2) it prevented the customisation of the user option 2312 'display-fill-column-indicator-character'. 2313 2314 I am addressing point 1, but point 2 puts us in an awkward spot as we 2315 would then not be allowed to use a background and a height value. Not 2316 doing so produces a dashed line by default, with the dashes further 2317 apart the greater the line-spacing is (especially in, say, Org 2318 headings that can have a greater height than paragraph text). It 2319 looks broken and I keep getting requests to fix what is not the 2320 themes' fault. So no, the themes will remain opinionated in this 2321 regard by ignoring 'display-fill-column-indicator-character' through 2322 the styling they apply to make the line contiguous. 2323 2324 For context, also read Emacs bug#57424 and please don't take my words 2325 in a private message out of context. If I need to state my opinion in 2326 a public setting, I know how to do it. 2327 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=57424>. 2328 2329 2330 Refinement to modus-vivendi 'bg-diff-focus-removed' colour 2331 ========================================================== 2332 2333 Made the default removed diff background slightly more luminant. The 2334 colour is seen in diff-mode, ediff, and the Magit focused diff hunk. 2335 2336 When the user option 'modus-themes-diffs' is set to either 'bg-only' or 2337 'desaturated', this colour is used to highlight word-wise ("refined") 2338 changes. The increased luminance lets it stand out more compared to the 2339 more subtle backdrop. 2340 2341 Thanks to Kévin Le Gouguec for bringing this issue to my attention and 2342 for discussing it with me: 2343 <https://lists.sr.ht/~protesilaos/modus-themes/%3C87bks4i9tg.fsf@gmail.com%3E> 2344 2345 2346 Note about 'goto-address-mode' 2347 ============================== 2348 2349 Quote from the manual: 2350 2351 The built-in 'goto-address-mode' uses heuristics to identify URLs and 2352 email addresses in the current buffer. It then applies a face to them 2353 to change their style. Some packages, such as 'notmuch', use this 2354 minor-mode automatically. 2355 2356 The faces are not declared with 'defface', meaning that it is better 2357 that the theme does not modify them. The user is thus encouraged to 2358 consider including (or equivalent) this in their setup: 2359 2360 (setq goto-address-url-face 'link 2361 goto-address-url-mouse-face 'highlight 2362 goto-address-mail-face 'link 2363 goto-address-mail-mouse-face 'highlight) 2364 2365 My personal preference is to set 'goto-address-mail-face' to nil, as 2366 it otherwise adds too much visual noise to the buffer (email addresses 2367 stand out more, due to the use of the uncommon '@' character but also 2368 because they are often enclosed in angled brackets). 2369 2370 2371 Changes to the manual 2372 ===================== 2373 2374 ,* Fixed a few typos and ensured that spelling using American English 2375 as that is what emacs.git requires. 2376 2377 ,* Added the missing ':config' keywords from the example configuration 2378 of the 'circadian' package. Thanks to Koen van Greevenbroek for the 2379 patch: <https://lists.sr.ht/~protesilaos/modus-themes/%3C8735cb6zm3.fsf%40posteo.net%3E>. 2380 #+end_src 2381 2382 * 2.6.0 2383 :PROPERTIES: 2384 :CUSTOM_ID: h:fc108f65-3e0b-4e28-8030-86c797cb2b25 2385 :END: 2386 2387 #+begin_src text 2388 Modus themes version 2.6.0 2389 2390 By Protesilaos Stavrou <info@protesilaos.com> on 2022-08-19 2391 2392 2393 Changes to supported faces or face groups 2394 ========================================= 2395 2396 ,* Made the 'font-lock-warning-face' adapt to comments. This changes the 2397 face from a yellow to a red hue when the user adds a value to 2398 'modus-themes-syntax' which includes 'yellow-comments' property. 2399 Before, this face was indistinguishable from yellow comments due to a 2400 regression in version 2.5.0 of the themes. Thanks to Augusto Stoffel 2401 and Manuel Uberti for their feedback on the mailing list: 2402 <https://lists.sr.ht/~protesilaos/modus-themes/%3C87r11k1c22.fsf%40gmail.com%3E>. 2403 2404 ,* Applied a consistent foreground color (a not-so-intense yellow hue) to 2405 the 'org-checkbox' and 'markdown-gfm-checkbox-face'. The change comes 2406 from the discussion on the mailing list where it became apparent that 2407 a bit of colour is needed for such constructs: 2408 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm2fsi9cja4.fsf%40me.com%3E>. 2409 2410 Thanks to Rudolf Adamkovič, Christian Tietze, and Karthik Chikmagalur 2411 for their participation. 2412 2413 ,* Added support for the 'mu4e-related-face'. Thanks to Simon Pugnet for 2414 the feedback on the mailing list: 2415 <https://lists.sr.ht/~protesilaos/modus-themes/%3C87edxhvqwp.fsf@polaris64.net%3E>. 2416 2417 ,* Included support for the 'consult-preview-insertion' face. There are 2418 two reasons for adding this: 2419 2420 1. It decouples it from the 'region' face, which means that the user 2421 option 'modus-themes-region' no longer has an unintended effect on 2422 it. 2423 2424 2. It makes it look consistent with the 'rectangle-preview' face (see 2425 it in action with C-x SPC, move point down a few lines, type C-t 2426 and then insert some text). I feel these sort of previews need to 2427 look the same, though I don't have a strong attachment to the style 2428 now in use. 2429 2430 2431 Removed support for the 'solaire' package 2432 ========================================= 2433 2434 The 'solaire-mode' package dims the background of what it considers 2435 ancillary "UI" buffers, such as the minibuffer and Dired buffers. The 2436 Modus themes used to support Solaire on the premise that the user was 2437 (i) opting in to it, (ii) understood why certain buffers were more gray, 2438 and (iii) knew what other adjustments had to be made to prevent broken 2439 visuals (e.g. the default style of the 'modus-themes-completions' uses a 2440 subtle gray background for the selection, which with Solaire becomes 2441 practically invisible). 2442 2443 However, the assumption that users opt in to this feature does not 2444 always hold true. There are cases where it is enabled by default such 2445 as in the popular Doom Emacs configuration. Thus, the unsuspecting user 2446 who loads 'modus-operandi' or 'modus-vivendi' without the requisite 2447 customizations is getting a sub-par experience; an experience that we 2448 did not intend and cannot genuinely fix. 2449 2450 [ Relevant reading about "The case of git-gutter, the modus-themes, and 2451 Doom Emacs": 2452 <https://protesilaos.com/codelog/2022-08-04-doom-git-gutter-modus-themes/> ] 2453 2454 Because the Modus themes are meant to work everywhere, we cannot make an 2455 exception for Doom Emacs and/or Solaire users. Furthermore, we shall 2456 not introduce hacks, such as by adding a check in all relevant faces to 2457 be adjusted based on Solaire or whatever other package. Hacks of this 2458 sort are unsustainable and penalize the entire userbase. Besides, the 2459 themes are built into Emacs and we must keep their standard high. 2460 2461 The fundamental constraint with Solaire is that Emacs does not have a 2462 real distinction between "content" and "UI" buffers. For themes to work 2463 with Solaire, they need to be designed around that package. Such is an 2464 arrangement that compromises on our accessibility standards and/or 2465 hinders our efforts to provide the best possible experience while using 2466 the Modus themes. 2467 2468 As such, 'solaire-mode' is not---and will not be---supported by the 2469 Modus themes (or any other of my themes, for that matter). Users who 2470 want it must style the faces manually. Below is some sample code, based 2471 on what we cover at length in the manual: 2472 2473 (defun my-modus-themes-custom-faces () 2474 (modus-themes-with-colors 2475 (custom-set-faces 2476 `(solaire-default-face ((,class :inherit default :background ,bg-alt :foreground ,fg-dim))) 2477 `(solaire-line-number-face ((,class :inherit solaire-default-face :foreground ,fg-unfocused))) 2478 `(solaire-hl-line-face ((,class :background ,bg-active))) 2479 `(solaire-org-hide-face ((,class :background ,bg-alt :foreground ,bg-alt)))))) 2480 2481 (add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces) 2482 2483 2484 Changes to the manual 2485 ===================== 2486 2487 ,* Added a missing parenthesis to a sample code block. Thanks to Paul 2488 David for the contribution in pull request 39 on the GitHub mirror: 2489 <https://github.com/protesilaos/modus-themes/pull/39>. 2490 2491 ,* Clarified the wording of individual statements pertaining to the need 2492 of reloading a theme for changes to user options to become effective. 2493 #+end_src 2494 2495 * 2.5.0 2496 :PROPERTIES: 2497 :CUSTOM_ID: h:32438044-6eee-4909-8e5a-860ce1457049 2498 :END: 2499 2500 #+begin_src text 2501 Modus themes version 2.5.0 2502 2503 By Protesilaos Stavrou <info@protesilaos.com> on 2022-08-03 2504 2505 This entry documents the changes made to the project since the 2506 publication of version 2.4.0 on 2022-06-01. It spans more than 60 2507 commits to an already stable project. 2508 2509 The 'modus-operandi' and 'modus-vivendi' themes are built into Emacs-28 2510 (latest stable release) or later, and are available on GNU ELPA as well 2511 as other archives. Emacs-28 ships version 1.6.0, while the current 2512 'master' branch (i.e. Emacs-29) and, by extension, GNU ELPA include the 2513 latest tagged release. The packaged version is available as 2514 'modus-themes'. 2515 2516 Read the manual inside Emacs by evaluating: 2517 2518 (info "(modus-themes) Top") 2519 2520 Or visit: <https://protesilaos.com/emacs/modus-themes> (the website only 2521 documents the latest version). 2522 2523 2524 Enhancement to the user option 'modus-themes-headings' 2525 ====================================================== 2526 2527 The user option 'modus-themes-headings' now reads a level 0 heading in 2528 addition to numbers 1--8. Heading 0 accepts the same list of properties 2529 as all other levels (please consult the doc string of the user option or 2530 the corresponding entry in the manual). Currently only the value of the 2531 Org #+title is affected (face is 'org-document-title'), but we may cover 2532 more faces if needed. 2533 2534 Sample configuration: 2535 2536 ;; The `modus-themes-headings' is an alist with lots of possible 2537 ;; combinations, including per-heading-level tweaks: read the 2538 ;; manual or its doc string. 2539 (setq modus-themes-headings 2540 '((0 . (variable-pitch light (height 2.2))) 2541 (1 . (rainbow variable-pitch light (height 1.6))) 2542 (2 . (rainbow variable-pitch light (height 1.4))) 2543 (3 . (rainbow variable-pitch regular (height 1.3))) 2544 (4 . (rainbow regular (height 1.2))) 2545 (5 . (rainbow (height 1.1))) 2546 (t . (variable-pitch extrabold))) 2547 2548 Given this change, I am also tweaking the default foreground value of 2549 the 'org-document-title'. It is a bit more saturated than before, but 2550 remains close to the spirit of the previous one. 2551 2552 Thanks to Rudolf Adamkovič for proposing the idea on the mailing list: 2553 <https://lists.sr.ht/~protesilaos/modus-themes/%3Cm2y1x5tewl.fsf@me.com%3E>. 2554 2555 2556 Stylistic tweak to the user option 'modus-themes-syntax' 2557 ======================================================== 2558 2559 Prevented the 'alt-syntax' property from desaturating the effect of the 2560 'yellow-comments' property when the two would be combined. Such as: 2561 2562 (setq modus-themes-syntax '(alt-syntax yellow-comments)) 2563 2564 The previous design was incorrect because it was always using the faint 2565 variant of the yellow comments, as if the user had specified: 2566 2567 (setq modus-themes-syntax '(alt-syntax faint yellow-comments)) 2568 2569 [ Read the doc string of 'modus-themes-syntax' or the manual for an 2570 explanation of all properties and their combinations. ] 2571 2572 2573 Review of the Isearch (and related) colours 2574 =========================================== 2575 2576 Emacs' standard search has a face for the currently matched query and 2577 all its inactive matches. The faces are 'isearch' and 'lazy-highlight', 2578 respectively. Before, we were using a green background by default for 2579 the 'isearch' face and a cyan background for the 'lazy-highlight'. This 2580 was a choice that was made in the early days of the project when the 2581 palette was not yet fully realised. 2582 2583 Green and cyan do not always contrast well side-by-side (subject to 2584 hardware capabilities and environmental lighting), so the 'isearch' face 2585 also had an added bold weight. This was not my preference, but it was 2586 necessary under the circumstances. The previous combinations were also 2587 not ideal when the user option 'modus-themes-deuteranopia' was set to a 2588 non-nil value: the blue background which was used instead of the green 2589 one could be conflated with the subtle teal of the 'lazy-highlight' 2590 under certain circumstances, such as poor colour reproduction at the 2591 monitor level or in terminal emulators with limited colour support. 2592 2593 The new colours (intense yellow for active matches and subtle cyan for 2594 lazy ones) are complementary, meaning that they are naturally easy to 2595 tell apart. 2596 2597 [ Read "Colour theory and techniques used in the Modus themes": 2598 <https://protesilaos.com/codelog/2022-04-21-modus-themes-colour-theory/> ] 2599 2600 These specific hues are also well-suited for users with red-green colour 2601 deficiency: yellow stays as-is, while the cyan colour becomes a bit more 2602 grey though remains distinct. As such, we do not need to run the helper 2603 function 'modus-themes--deuteran' to set the style based on the value of 2604 'modus-themes-deuteranopia'. 2605 2606 The new colours do not clash with the style of the relevant 'match' face 2607 (used by 'M-x occur', 'M-x grep', and related), nor with the various 2608 permutations of the 'region' face (subject to the user option 2609 'modus-themes-region'). 2610 2611 Finally, the bold weight has been removed from the 'isearch' face. It 2612 was always a kludge. Also, it would make paragraphs rendered in the 2613 'variable-pitch' face (or proportional fonts in general) jump around as 2614 the user would move between the matches, because bold letters occupy 2615 more space than their regular weight counterparts so they affect the 2616 length of the line. This problem was reported by Augusto Stoffel on the 2617 mailing list: <https://lists.sr.ht/~protesilaos/modus-themes/%3C87sfnbswe9.fsf@gmail.com%3E>. 2618 2619 2620 Rewrote parts of the colour preview commands 2621 ============================================ 2622 2623 The 'modus-themes-list-colors', 'modus-themes-list-colors-current' are 2624 commands that produce a buffer which shows previews of every entry in 2625 the palette. Their code has been simplified and they now produce a 2626 warning when the display terminal has limited colour support. 2627 Furthermore, they read any overrides as specified in the user options 2628 'modus-themes-operandi-color-overrides', 'modus-themes-vivendi-color-overrides'. 2629 2630 2631 The "summertime" re-spin of colour overrides 2632 ============================================ 2633 2634 The manual now includes a complete hand-crafted example of a pair of 2635 themes that override the default palette. This is done as a technology 2636 demonstration. It is not considered an "official" extension of the 2637 Modus themes and will never be part of the code base as it does not 2638 conform with our lofty accessibility standards. However, I took great 2639 care in picking the colour overrides in the hope that users will (i) 2640 have a usable theme, should they opt for it, and (ii) they recognise the 2641 potential of our colour-overriding feature. 2642 2643 Screenshots and related information: 2644 <https://protesilaos.com/codelog/2022-07-26-modus-themes-color-override-demo/>. 2645 2646 Thanks to user “Summer Emacs” for (i) suggesting the name “summertime”, 2647 (ii) testing variants of this in her setup, and (iii) sending me 2648 feedback on possible tweaks and refinements. All errors are my own. 2649 2650 The idea for this project came from an exchange where Summer discovered 2651 an old theme of mine (from my pre-Emacs days) and asked if I had 2652 anything like it for Emacs. Voilà! 2653 2654 [ This information is shared with permission. ] 2655 2656 As for whether I have more plans... "Perhaps!" ;) 2657 2658 2659 Removed support for certain packages or face groups 2660 =================================================== 2661 2662 I periodically install and use the packages we support to see if they 2663 have any updates we need to cover but also to confirm that they work. 2664 Usually, the user does not learn about this work, as I don't need to 2665 make any changes or will make some minor tweaks. When I think that the 2666 package is not in a good shape, I remove it from the list of explicitly 2667 supported packages, meaning that the modus-themes no longer cover the 2668 faces it defines. The removal of any package is done on a case-by-case 2669 basis. If you disagree with this decision, please inform me about and I 2670 shall reconsider. 2671 2672 ,* centaur-tabs :: Those of you who have been reading these release notes 2673 are aware of a bug in centaur-tabs which basically prevents us from 2674 using the standard ':inherit' attribute to style the centaur-tabs 2675 faces. I have sent a patch to fix it, but have received no response 2676 since February: <https://github.com/ema2159/centaur-tabs/pull/179>. 2677 To me, this gives the package the "unmaintained" status, though I am 2678 happy to revert the change as soon as it gets the maintenance it 2679 needs. 2680 2681 Relevant reports (and I got many others in my private inbox): 2682 2683 - <https://github.com/protesilaos/modus-themes/issues/30> 2684 - <https://gitlab.com/protesilaos/modus-themes/-/issues/288> 2685 - <https://github.com/protesilaos/modus-themes/issues/15> 2686 2687 ,* cursor-flash :: its default face should be visible enough. 2688 2689 ,* dynamic-ruler :: The package does not build on my Emacs 29. Also, its 2690 default faces are usable even without our recolouring. 2691 2692 ,* emacs-dashboard :: Its default faces inherit from basic faces that we 2693 already support. 2694 2695 ,* frog-menu :: I have not seen this package being used anywhere. I 2696 suspect it is because it has not found a niche between transient, 2697 hydra, and embark. 2698 2699 ,* mct :: A few months ago I announced that its development is 2700 discontinued. Either use vertico or switch to what Emacs provides as 2701 a built-in option: <https://protesilaos.com/codelog/2022-04-14-emacs-discontinue-mct/>. 2702 2703 ,* org-treescope :: The package points to a GitHub repo, which is 2704 archived. The current source is on GitLab, but the package is not 2705 updated accordingly. This makes me believe it is not actively 2706 maintained and am thus removing it from the list. 2707 2708 ,* paradox :: When I tried paradox, it took over my C-c g binding which I 2709 have for Magit. As an Emacs user, I consider this an unacceptable 2710 transgression. Looking at paradox's git repo, the project is not 2711 maintained. If things change, I am happy to reinstate support for it. 2712 2713 ,* vc-annotate (built-in) :: It has not been working properly for a long 2714 time now. Colours are unset and are not re-applied when switching 2715 between the 'modus-operandi' and 'modus-vivendi' themes. 2716 2717 Furthermore, the way 'vc-annotate-color-map' intersects with 2718 'vc-annotate-background-mode' puts us in an awkward spot: when the 2719 mode is non-nil, the mapped values are used as backgrounds WITHOUT 2720 giving us the chance to make the appropriate adjustments to the 2721 foreground (so we end up with inaccessible colour combinations). This 2722 means that we must fix a problem which is not ours by overriding the 2723 user option of the background altogether. A theme outright disabling 2724 user options is bad form. 2725 2726 Even documenting a user-level set of configurations will not suffice, 2727 as the results are unreliable. I tried the code which I copy further 2728 below to test annotation with/without background, plus the change in 2729 values when switching between modus-operandi and modus-vivendi. 2730 Again, colours are not updated properly (I know the buffer of 'M-x 2731 vc-annotate' needs to be generated again), as 'modus-operandi' may 2732 retain the values set by 'modus-vivendi' or vice-versa. 2733 2734 Ultimately, I feel 'vc-annotate' needs to be refactored to use 2735 ordinary faces in ordinary ways. Or, at least, not try to outsmart 2736 the user/theme about the choice of colours. 2737 2738 Thanks to Philip Kaludercic for starting the thread about the 2739 'vc-annotate-background-mode' which reminded me about this problem: 2740 <https://lists.sr.ht/~protesilaos/modus-themes/%3C875ylfxkgi.fsf@posteo.net%3E>. 2741 2742 The code I alluded to: 2743 2744 (setq vc-annotate-background-mode nil) 2745 2746 (defun my-modus-themes-vc-annotate () 2747 ;; Actual values are for demo purposes 2748 (modus-themes-with-colors 2749 (if vc-annotate-background-mode 2750 (setq vc-annotate-background bg-alt 2751 vc-annotate-color-map 2752 `((20 . ,red-intense-bg) 2753 (40 . ,red-subtle-bg) 2754 (60 . ,red-refine-bg) 2755 (80 . ,yellow-intense-bg) 2756 (100 . ,yellow-subtle-bg) 2757 (120 . ,yellow-refine-bg) 2758 (140 . ,magenta-intense-bg) 2759 (160 . ,magenta-subtle-bg) 2760 (180 . ,magenta-refine-bg) 2761 (200 . ,cyan-intense-bg) 2762 (220 . ,cyan-subtle-bg) 2763 (240 . ,cyan-refine-bg) 2764 (260 . ,green-intense-bg) 2765 (280 . ,green-subtle-bg) 2766 (300 . ,green-refine-bg) 2767 (320 . ,blue-intense-bg) 2768 (340 . ,blue-subtle-bg) 2769 (360 . ,blue-refine-bg))) 2770 (setq vc-annotate-background nil 2771 vc-annotate-color-map 2772 `((20 . ,red) 2773 (40 . ,magenta) 2774 (60 . ,magenta-alt) 2775 (80 . ,red-alt) 2776 (100 . ,yellow) 2777 (120 . ,yellow-alt) 2778 (140 . ,fg-special-warm) 2779 (160 . ,fg-special-mild) 2780 (180 . ,green) 2781 (200 . ,green-alt) 2782 (220 . ,cyan-alt-other) 2783 (240 . ,cyan-alt) 2784 (260 . ,cyan) 2785 (280 . ,fg-special-cold) 2786 (300 . ,blue) 2787 (320 . ,blue-alt) 2788 (340 . ,blue-alt-other) 2789 (360 . ,magenta-alt-other)))))) 2790 2791 (add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-vc-annotate) 2792 2793 2794 Revised supported faces or face groups 2795 ====================================== 2796 2797 ,* Enhanced the default background colour of the current date in the Org 2798 agenda. This is a subtle change, all things considered, which makes 2799 it easier to discern where the highlight is while it remains close to 2800 the spirit of the previous design. The idea is to not add too much 2801 saturation here, because the buffer is already "busy" with lots of 2802 highlights. Thanks to Daniel Mendler for the feedback on the mailing 2803 list: <https://lists.sr.ht/~protesilaos/modus-themes/%3C3d8b1096-a7db-1e08-fefe-d39bed4a7ea3@daniel-mendler.de%3E>. 2804 2805 ,* Restyled the 'M-x man' and 'M-x woman' faces to have a bit more 2806 saturation. A while ago I desaturated the 'Man-overstrike' and 2807 'woman-bold' faces on the premise that the added bold weight would be 2808 sufficient. However, the bold weight may sometimes not draw the 2809 desired attention, such as at small point sizes or with certain font 2810 configurations. As such, the added intensity in colour is necessary. 2811 2812 ,* Changed the Selectrum quick key faces ('selectrum-quick-keys-match' 2813 and 'selectrum-quick-keys-highlight') to have the same style as Avy, 2814 Vertico's own "quick keys", and related. For a technical analysis, 2815 read "Modus themes: case study on Avy faces and colour combinations": 2816 <https://protesilaos.com/codelog/2022-04-20-modus-themes-case-study-avy/>. 2817 2818 ,* Made internal adjustments so that 'M-x list-packages' inherits from 2819 the standard 'success', 'warning', and 'error' faces instead of adding 2820 its own face attributes. In practice, the user will notice a change 2821 for new packages in the listing if 'modus-themes-deuteranopia' is 2822 non-nil. 2823 2824 ,* Introduced the same inheritance rules as above for the 'syslog' 2825 package (mutatis mutandis). 2826 2827 ,* Increased the saturation of the 'package-status-available' face, which 2828 is shown in the 'M-x list-packages' buffer. The overall effect is 2829 subtle, though sufficiently noticeable. 2830 2831 ,* Revised the faces of the 'deft' package to make it look consistent 2832 with the rest of the theme's relevant interfaces (to the extent 2833 possible as Deft uses a non-standard presentation). 2834 2835 ,* Aligned the 'speedbar-highlight-face' with the user option 2836 'modus-themes-intense-mouseovers'. 2837 2838 ,* Refined the 'highlight-thing' face (see package of the same name). 2839 This makes it stand out more and it also aligns it with the standard 2840 'match' face, which is pertinent here. 2841 2842 ,* Amplified the saturation of the 'dired-git-info' face. Makes it 2843 easier to differentiate the Git commit text from the Dired listing, 2844 without drawing too much attention to itself. 2845 2846 ,* Adjusted the hue of the 'easy-jekyll-help-face' from teal to blue. 2847 This makes it look more like the standard 'help-key-binding' face, 2848 although 'easy-jekyll' does not align with upstream Emacs in this 2849 regard. 2850 2851 ,* Intensified the background of 'rectangle-preview' to work even in 2852 cases where a grey background is already on display. This face is 2853 used for the 'string-rectangle' command (e.g. C-x SPC to draw a 2854 rectangle and C-t to insert text in its stead---works as a simple 2855 "multiple cursors" on a straight line). 2856 2857 2858 Support for new faces or face groups 2859 ==================================== 2860 2861 ,* chart (built-in) 2862 ,* denote 2863 ,* edmacro-label (Emacs 29) 2864 ,* info+ 2865 ,* leerzeichen 2866 2867 A comment on 'info+'. As is the case with PACKAGE+ packages from the 2868 Emacs Wiki, info+ defines lots of faces that hardcode colour values 2869 instead of inheriting from basic faces. It does so for no good reason 2870 and the results will likely not look decent in any theme. Furthermore, 2871 these faces colourise too much even when the colour values can be 2872 appropriately combined (ceteris paribus), making the buffer harder to 2873 read. 2874 2875 The support I add for info+ is consistent with the design principles of 2876 the modus-themes, one of which is to avoid exaggerations as those 2877 indirectly affect legibility. As such, some of the changes I introduce 2878 here outright remove colouration, while others align the various 2879 constructs with the overall aesthetic of the themes. 2880 2881 Note that, by default, info+ adds clickable buttons to glossary terms. 2882 This produces awkward combinations such as by buttonising the "string" 2883 component inside of what actually is a function's argument. So you 2884 have, say, FORMAT-[STRING] where "[]" represents the button: the FORMAT 2885 gets one face and the [STRING] another, even though they are part of a 2886 single argument. To me this looks broken and is counter-productive, 2887 though it is not up to the theme to decide how packages fontify the 2888 various constructs. At any rate, button styles at the theme level are 2889 controlled by the user option 'modus-themes-box-buttons'. 2890 2891 Thanks to Jonas Collberg for the feedback in issue 33 over at the GitHub 2892 mirror: <https://github.com/protesilaos/modus-themes/issues/33>. 2893 2894 2895 Miscellaneous 2896 ============= 2897 2898 ,* Named the mailing list address as the =Maintainer:= of Denote. 2899 Together with the other package headers, they help the user find our 2900 primary sources and/or communication channels. This change conforms 2901 with work being done upstream in package.el by Philip Kaludercic. I 2902 was informed about it here: 2903 <https://lists.sr.ht/~protesilaos/general-issues/%3C875ykl84yi.fsf%40posteo.net%3E>. 2904 2905 ,* Addressed byte compilation warnings in doc strings pertaining to the 2906 use of literal quotes. Thanks to Matt Armstrong and Rudolf Adamkovič 2907 for the feedback on the mailing list: 2908 <https://lists.sr.ht/~protesilaos/modus-themes/%3C87bktlvgyy.fsf@rfc20.org%3E>. 2909 2910 ,* Fixed the ':link' value in the declaration of the user options 2911 'modus-themes-operandi-color-overrides', 'modus-themes-vivendi-color-overrides'. 2912 It once again directs to the correct heading in the manual. 2913 2914 ,* Documented all the aforementioned, where necessary. 2915 2916 ,* Mentioned my 'fontaine' and 'lin' packages in the relevant sections of 2917 the manual. The former helps set fonts and switch between font 2918 presents. The latter is a stylistic variant of hl-line (its 2919 documentation explains its raison d'être). 2920 #+end_src 2921 2922 * 2.4.0 2923 :PROPERTIES: 2924 :CUSTOM_ID: h:ee0dcce9-3481-4533-8ded-a9a1f5269a41 2925 :END: 2926 2927 #+begin_src text 2928 Modus themes version 2.4.0 2929 2930 By Protesilaos Stavrou <info@protesilaos.com> on 2022-06-01 2931 2932 This entry documents the changes made to the project since the 2933 publication of version 2.3.0 on 2022-04-01. It spans more than 60 2934 commits to an already stable project. 2935 2936 The 'modus-operandi' and 'modus-vivendi' themes are built into Emacs-28 2937 (next stable release) or later, and are available on GNU ELPA as well as 2938 other archives. Emacs-28 ships version 1.6.0, while the current 2939 'master' branch (i.e. Emacs-29) and, by extension, GNU ELPA include the 2940 latest tagged release. The packaged version is available as 2941 'modus-themes'. 2942 2943 Read the manual inside Emacs by evaluating: 2944 2945 (info "(modus-themes) Top") 2946 2947 Or visit: <https://protesilaos.com/emacs/modus-themes>. 2948 2949 2950 Migration to SourceHut 2951 ====================== 2952 2953 The sources of the project are as follows: 2954 2955 - Git repo on SourceHut: <https://git.sr.ht/~protesilaos/modus-themes> 2956 - Mirrors: 2957 - GitHub: <https://github.com/protesilaos/modus-themes> 2958 - GitLab: <https://gitlab.com/protesilaos/modus-themes> 2959 - Mailing list: <https://lists.sr.ht/~protesilaos/modus-themes> 2960 2961 - Official manual: <https://protesilaos.com/emacs/modus-themes> 2962 - Change log: <https://protesilaos.com/emacs/modus-themes-changelog> 2963 - Colour palette: <https://protesilaos.com/emacs/modus-themes-colors> 2964 - Sample pictures: <https://protesilaos.com/emacs/modus-themes-pictures> 2965 2966 It is still possible to open issues on either of the mirrors and I will 2967 handle them in a timely fashion, though I encourage you to at least try 2968 the mailing list workflow---it is ordinary email (just remember to 2969 "reply to all"). 2970 2971 Further reading that is relevant to SourceHut: 2972 2973 - Moving all my Emacs projects to SourceHut: 2974 <https://protesilaos.com/codelog/2022-04-07-all-emacs-projects-sourcehut/> 2975 2976 - Primer on formatting Git patches with Emacs (Magit): 2977 <https://protesilaos.com/codelog/2022-04-09-simple-guide-git-patches-emacs/> 2978 2979 2980 Problems with byte compilation on Emacs 29 2981 ========================================== 2982 2983 For some time between mid-April to mid-May, users of Emacs 29 could not 2984 byte compile the Modus themes. This has now been fixed in emacs.git, 2985 per bug#55414: <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=55414>. 2986 Thanks to everyone involved (A-Z): Alan Mackenzie, Eli Zaretskii, Lars 2987 Ingebrigtsen, Mattias Engdegård, Stefan Monnier. 2988 2989 2990 Messages about invalid face attributes while using the centaur-tabs 2991 =================================================================== 2992 2993 I mentioned this issue in the previous change log as well: upstream does 2994 not allow us to use indirection in faces (the ':inherit' attribute). 2995 This is not our bug. It is standard behaviour for themes to use 2996 inheritance. 2997 2998 I have an open pull request on the matter (since 2022-02-24): 2999 <https://github.com/ema2159/centaur-tabs/pull/179>. 3000 3001 Relevant reports: 3002 3003 - <https://github.com/protesilaos/modus-themes/issues/30> 3004 - <https://gitlab.com/protesilaos/modus-themes/-/issues/288> 3005 - <https://github.com/protesilaos/modus-themes/issues/15> 3006 3007 3008 Support for new faces or face groups 3009 ==================================== 3010 3011 Directly supported 3012 ------------------ 3013 3014 These are packages whose faces we override to make them work with the 3015 themes. 3016 3017 - 'calibredb'. I have tried to limit the wanton use of colour in the 3018 relevant buffers and also align the package with the overall style of 3019 the themes. The currently selected line is affected by the user 3020 option 'modus-themes-hl-line'. 3021 3022 Thanks to Ivan Popovych for the feedback on the official mailing list: 3023 <https://lists.sr.ht/~protesilaos/modus-themes/%3C87zgkgroi7.fsf%40gmail.com%3E>. 3024 3025 Ivan also introduced some new faces to 'calibredb', which I helped 3026 test. See: <https://github.com/chenyanming/calibredb.el/pull/60>. 3027 3028 - 'ein' (Emacs IPython Notebook). We support its code blocks with the 3029 appropriate colouration, while avoiding exaggerations. Thanks to 3030 Maxime Tréca for the feedback in issue 31 over at the GitHub mirror: 3031 <https://github.com/protesilaos/modus-themes/issues/31>. 3032 3033 - 'tree-sitter'. My intent was to reduce the overall colouration 3034 produced by the default 'tree-sitter' faces. These tweaks give us 3035 good results, though there still are some cases where 'tree-sitter' 3036 exaggerates the styles it uses, such as by combining types with 3037 constants to produce ad-hoc (anonymous) faces. We cannot do anything 3038 about anonymous faces at the theme level. As such, we may get an 3039 additional bold weight (when 'modus-themes-bold-constructs' is 3040 non-nil) when we would rather not have it and/or a different colour 3041 than the one desired. 3042 3043 Thanks to Przemysław Kryger for the feedback in issue 303 over at the 3044 GitLab mirror: <https://gitlab.com/protesilaos/modus-themes/-/issues/303>. 3045 3046 If you are involved in the 'tree-sitter' project, please eliminate all 3047 anonymous faces and replace them with symbols (i.e. defface) that are 3048 editable by the user/theme. You are welcome to contact me if you need 3049 help/ideas. 3050 3051 - 'vundo' 3052 3053 3054 Indirectly supported 3055 -------------------- 3056 3057 These are packages that either (i) inherit from base faces we already 3058 support, or (ii) use colours from the Modus themes' palette. A list of 3059 them is available in the manual. 3060 3061 - egerrit. an in-development package by Niklas Eklund which provides an 3062 Emacs interface to Gerrit: <https://git.sr.ht/~niklaseklund/egerrit>. 3063 3064 3065 Changes to supported face 3066 ========================= 3067 3068 - Reworked the internal functions that handle the styling of diffs to 3069 allow the user option 'modus-themes-deuteranopia' to combine with the 3070 styles of the 'modus-themes-diffs' option. 3071 3072 Before, when 'modus-themes-deuteranopia' was non-nil it would affect 3073 diffs by forcibly applying the default style of 'modus-themes-diffs' 3074 (fairly prominent background colours) with the primary difference of 3075 replacing greens with blues. 3076 3077 Now all combinations work as expected. For example: 3078 3079 (setq modus-themes-deuteranopia t 3080 modus-themes-diffs 'desaturated) ; nil, 'desaturated, 'bg-only 3081 3082 Thanks to Kevin Le Gouguec for the feedback on the mailing list: 3083 <https://lists.sr.ht/~protesilaos/modus-themes/%3C878rqt4jhm.fsf@gmail.com%3E> 3084 3085 - Conducted a major (and highly demanding) review of the colours used by 3086 Avy in the interest of optimising the contrast between its constructs. 3087 Read the analysis: <https://protesilaos.com/codelog/2022-04-20-modus-themes-case-study-avy/>. 3088 3089 Thanks to Daniel Mendler and Damien Cassou for their feedback on the 3090 mailing list: 3091 3092 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C83f18e2e-d726-0248-72f5-95e896cbcf4c%40daniel-mendler.de%3E> 3093 - <https://lists.sr.ht/~protesilaos/modus-themes/%3C87czhgt5nm.fsf%40cassou.me%3E> 3094 3095 - Updated the 'vertico-quick' faces to be consistent with Avy. 3096 3097 - Made the 'line-number' face conform with the user option 3098 'modus-themes-mixed-fonts'. This means that if the user option is 3099 non-nil, line numbers of 'display-line-numbers-mode' will use a 3100 monospaced typeface at all times (inheriting the 'fixed-pitch' face, 3101 as explained in the themes' manual). Otherwise they use whatever font 3102 the 'default' face has. This makes it better when the user enables 3103 'variable-pitch-mode' but still wants spacing-sensitive constructs to 3104 remain monospaced. 3105 3106 Thanks to Christopher League for the feedback in issue 302 over at the 3107 GitLab mirror: <https://gitlab.com/protesilaos/modus-themes/-/issues/302>. 3108 3109 - Aligned the regexp construct faces with the meaning of the user option 3110 'modus-themes-bold-constructs'. They will use a bold weight only when 3111 the user option is non-nil. This design is consistent with all other 3112 aspects of syntax highlighting. These specific faces were 3113 unconditionally bold due to a mistake of mine. 3114 3115 Remember to check the manual on what "a bold weight" means, as we make 3116 everything easy to customise (e.g. if you prefer a semibold weight): 3117 <https://protesilaos.com/emacs/modus-themes#h:2793a224-2109-4f61-a106-721c57c01375>. 3118 3119 - Removed the typographic emphasis from the 'file-name-shadow' face by 3120 no longer inheriting the 'italic' face. Thanks to Nicolas De Jaeghere 3121 for the patch. 3122 3123 [ Nicolas has assigned copyright to the Free Software Foundation. ] 3124 3125 - Stopped using the 'inverse-video' face attribute in 'powerline'. We 3126 now apply the colours directly. The reason is that 'inverse-video' 3127 makes it tricky to override the face as it swaps the foreground with 3128 the background. That behaviour is only needed in special cases: 3129 'powerline' is not one of them. 3130 3131 Thanks to Thibaut Verron for the feedback in issue 305 over at the 3132 GitLab mirror: <https://gitlab.com/protesilaos/modus-themes/-/issues/305>. 3133 3134 - Ensured that git commit/rebase comments (as seen in the workflow of 3135 the 'magit' package) inherit from appropriate font-lock faces. This 3136 makes it possible to customise 'font-lock-comment-face' and have the 3137 changes apply to those elements as well. Such a customisation can, 3138 for example, involve the change of the font family or the addition of 3139 a background colour. We want the whole comment block, including those 3140 special keywords from Git, to look consistent. This change also makes 3141 git-{commit,rebase}-comment-heading attain the foreground colour of 3142 comments, instead of the default one (black or white), making it look 3143 part of the comment block. 3144 3145 - Tweaked the 'fountain' package comments to be the same as all others. 3146 This avoids inconsistencies, such as when the user opts for something 3147 like the following: 3148 3149 (setq modus-themes-syntax '(yellow-comments)) 3150 3151 - Disabled padding in the 'keycast' package, meaning that the box around 3152 the key indicator always has the same height, even if the user opts 3153 for a padding value in 'modus-themes-mode-line' (read the manual or 3154 its doc string for how to assign a padding). 3155 3156 This is in response to a change upstream that introduces the 3157 'keycast-tab-bar-mode', which re-uses the faces that were originally 3158 intended for the mode line in the tab-bar. Ideally, upstream will 3159 provide distinct faces for each context so that we can have padding in 3160 the mode line but not the tab-bar. However, I have not had the 3161 opportunity to suggest such a change and/or prepare the relevant patch 3162 (it is not straightforward). 3163 3164 - Refined some colour combinations for the "alternative syntax" style 3165 that is available when the user option 'modus-themes-syntax' includes 3166 the 'alt-syntax' property. These tweaks pertain to changes in hue 3167 that improve the appearance of certain faces in their context. 3168 3169 - Enabled conditional use of 'fixed-pitch' for key bindings. This 3170 happens when the user option 'modus-themes-mixed-fonts' is non-nil 3171 (all spacing-sensitive elements become monospaced even if the user 3172 opts for a default font that is proportionately spaced or activates 3173 the 'variable-pitch-mode'). Thanks to Manuel Giraud for the patch. 3174 3175 [ Manuel has assigned copyright to the Free Software Foundation. ] 3176 3177 - Covered the face rotation option of 'highlight-changes-mode'. It is 3178 done with the 'highlight-changes-rotate-faces' command when 3179 'highlight-changes-mode' is enabled (the mode is built into Emacs). 3180 3181 Thanks to Philip Kaludercic for the feedback on the mailing list: 3182 https://lists.sr.ht/~protesilaos/modus-themes/<878rs14il4.fsf@posteo.net> 3183 3184 3185 Updates to the manual 3186 ===================== 3187 3188 - Acknowledged Andrew Tropin as one of the contributors to the Guix 3189 package of the Modus themes. The latest patch to that end: 3190 <https://issues.guix.gnu.org/55268>. 3191 3192 - Rewrote the note on 'fill-column-indicator' to show how the user can 3193 use a thicker line than the one we style by default. 3194 3195 - Wrote a note in manual about 'php-mode' multiline comments which use 3196 the 'font-lock-doc-face' instead of 'font-lock-comment-face'. Sample 3197 code is provided to ensure consistency between all types of comments. 3198 3199 - Added note about custom 'hl-todo' colours, specifically the user 3200 option 'hl-todo-keyword-faces' (which the themes customise as an 3201 exception to the rule, otherwise the default colours would not always 3202 be accessible). 3203 3204 This is in relation to the mailing list thread on the matter with 3205 feedback from Vincent Foley and Christian Tietze: 3206 <https://lists.sr.ht/~protesilaos/modus-themes/%3C871qwh1r88.fsf%40era.co%3E>. 3207 3208 - Elaborated on the style of 'git-gutter' faces in Doom Emacs, which are 3209 not as the Modus themes intend. Basically, the problem is that Doom 3210 changes the way that package draws its bitmaps: the faces we configure 3211 no longer appear as intended and sensitive colouration is lost. 3212 3213 Thanks to Gonçalo Marrafa for reporting the issue, testing the code we 3214 recommend on Doom Emacs, and suggesting the inclusion of the reference 3215 to the 'after!' call (a macro that Doom defines). 3216 3217 3218 Miscellaneous 3219 ============= 3220 3221 - Dedicated the colours of the Modus themes---just the colours---to the 3222 public domain. The Emacs package as a whole is still distributed 3223 under the terms of the GNU General Public License. The announcement: 3224 <https://protesilaos.com/codelog/2022-05-10-modus-themes-palette-cc0/> 3225 3226 - Stopped using a timestamp in the modus-themes.el file. It could lead 3227 to situations where there was a mismatch between the latest change and 3228 the recorded time. It also introduced a barrier to entry for 3229 contributors, as they need to set up 'time-stamp.el'. 3230 3231 - Removed the unnecessary 'require' call to the 'seq' library and made 3232 the necessary changes. Thanks to Daniel Mendler for the patch. 3233 3234 [ Daniel has assigned copyright to the Free Software Foundation. ] 3235 3236 - Applied the correct order of inheritance for all markup faces. This 3237 fixes a problem where not all typographic attributes where applied to 3238 the faces when 'modus-themes-mixed-fonts' was non-nil and the value of 3239 'modus-themes-markup' included '(bold italic)'. 3240 3241 - Tweaked how 'org-date' conditionally uses 'fixed-pitch'. Basically, 3242 we remove an internal stylistic inconsistency. There is no 3243 user-facing change. Thanks to Manuel Giraud for the patch. 3244 3245 - Implemented the command 'modus-themes-report-bug'. It might help 3246 users find the email address of the mailing list and get started with 3247 the email-centric workflow of SourceHut. Note this is but a first 3248 step in that direction. If you think it can be improved, please 3249 report as much (or send a patch). 3250 3251 - Included the command 'modus-themes-version', which prints in the echo 3252 area the current version of the package. With an optional prefix 3253 argument, it inserts the string at point. 3254 3255 The version either is the last tagged release, such as '2.4.0', or an 3256 in-development version like '2.5.0-dev'. As we use semantic 3257 versioning, tags of the '2.4.1' sort are not considered: those would 3258 count as part of '2.5.0-dev'. 3259 #+end_src 3260 3261 * 2.3.0 3262 :PROPERTIES: 3263 :CUSTOM_ID: h:f95fb7e2-fcc8-43f6-bde5-27fe51b1bdd5 3264 :END: 3265 3266 #+begin_src text 3267 Modus themes version 2.3.0 3268 3269 By Protesilaos Stavrou <info@protesilaos.com> on 2022-04-01 3270 3271 This entry documents the changes made to the project since the 3272 publication of version 2.2.0 on 2022-02-23. It spans more than 70 3273 commits. 3274 3275 To access the URL of the manual visit: 3276 <https://protesilaos.com/emacs/modus-themes>. Or read it in the Emacs 3277 Info reader by evaluating: 3278 3279 (info "(modus-themes) Top") 3280 3281 The 'modus-operandi' and 'modus-vivendi' themes are built into Emacs-28 3282 (next stable release) or later, and are available on GNU ELPA as well as 3283 other archives. Emacs-28 ships version 1.6.0, while the current 3284 'master' branch (i.e. Emacs-29) and, by extension, GNU ELPA include the 3285 latest tagged release. 3286 3287 3288 Customisation options 3289 ===================== 3290 3291 ,* The 'modus-themes-completions' now accepts a 'text-also' property for 3292 the 'selection' key. This has the effect of colourising the current 3293 line's text. Whereas the default does not change the text colour, 3294 re-using whatever underlying colours are available. Consult the doc 3295 string of this user option, as it provides for fine-grained control of 3296 how completion UIs may look. Thanks to Morgan Willcock whose feedback 3297 in issue 278 inspired me to add the 'text-also' property: 3298 <https://gitlab.com/protesilaos/modus-themes/-/issues/278>. 3299 3300 ,* The 'modus-themes-box-buttons' now accepts an 'all-buttons' property. 3301 It applies whatever other style is used for the boxed buttons to the 3302 generic 'widget.el'. By default, the faces of 'widget.el' do not look 3303 like graphical buttons: they have a bold weight and a foreground 3304 colour instead. Examples where those are used are the Notmuch "hello" 3305 buffer and the main view of the 'elfeed-summary' package. Thanks to 3306 Daniel Mendler, Rudolf Adamkovič, and Tony Zorman for their feedback 3307 in issue 296: <https://gitlab.com/protesilaos/modus-themes/-/issues/296>. 3308 3309 ,* The 'modus-themes-intense-mouseovers' is a boolean user option which 3310 makes mouse hover effects more intense when set to a non-nil value. 3311 By default, mouseovers use a cyan background value. This changes it 3312 to a more prominent blue. Thanks to John Haman for the feedback in 3313 issue 290: <https://gitlab.com/protesilaos/modus-themes/-/issues/290>. 3314 3315 ,* The user options 'modus-themes-box-buttons', 'modus-themes-mode-line', 3316 'modus-themes-org-agenda', and 'modus-themes-headings' can now read a 3317 number value as a cons cell. The old method of a plain number 3318 continues to work. This makes it possible to be more descriptive on 3319 what a given value signifies. Each doc string describes the 3320 technicalities. Here are samples that yield identical results: 3321 3322 (setq modus-themes-mode-line '(accented 0.9 borderless 2)) 3323 (setq modus-themes-mode-line '(accented (heigh 0.9) borderless (padding 2))) 3324 3325 Thanks to Daniel Mendler for proposing this idea in issue 282: 3326 <https://gitlab.com/protesilaos/modus-themes/-/issues/282#note_842257619> 3327 3328 3329 Attempted bug fix for byte compiled files 3330 ========================================= 3331 3332 Quoting from the git log: 3333 3334 commit f067d2ef39c22174b95584f2cba7942aaf03bcca 3335 Author: Protesilaos Stavrou <info@protesilaos.com> 3336 Date: Thu Mar 3 06:52:31 2022 +0200 3337 3338 Reify themes with eval-and-compile 3339 3340 This is an attempt to fix a bug that has existed since version 1.2.0 of 3341 the themes or even earlier. 3342 3343 The bug is about a mismatch between compiled code and runtime 3344 dependencies. The runtime expects the current version while the 3345 compiled code only furnishes an outdated one, thus resulting in an 3346 error. This only happens when: 3347 3348 1. Private functions change to accept more/fewer arguments. 3349 2. Variables change their acceptable value (e.g. from symbol to list). 3350 3. The user is installing the package via the package.el mechanism which 3351 takes care of byte compilation (though anything that mimics 3352 package.el should exhibit the same behaviour). 3353 3354 My understanding is that the cause was the limited scope of the 3355 'eval-and-compile' we had before: it would run the 'require' also at 3356 compile time, whereas the 'modus-themes-theme' macro, which reifies the 3357 actual theme, would only be evaluated at runtime. Hence the mismatch as 3358 'require' would read the already installed byte code while the macro 3359 would expect newer forms. 3360 3361 Wrapping everything in the 'eval-and-compile' should address this 3362 problem. Hopefully it will not engender new ones... 3363 3364 ,* * * 3365 3366 The latest reports about this bug: 3367 3368 ,* GitLab issue 287 with Mark Bestley and Daniel Mendler: 3369 <https://gitlab.com/protesilaos/modus-themes/-/issues/287>. 3370 3371 ,* GitHub issue 22 with Rytis Paškauskas: 3372 <https://github.com/protesilaos/modus-themes/issues/22>. 3373 3374 doc/modus-themes.info | 30 +++++++++++++++--------------- 3375 doc/modus-themes.org | 15 ++++++++------- 3376 modus-operandi-theme.el | 10 +++++----- 3377 modus-vivendi-theme.el | 10 +++++----- 3378 4 files changed, 33 insertions(+), 32 deletions(-) 3379 3380 After nearly one month, no problem has been observed as a result of this 3381 change. 3382 3383 3384 Newly supported packages 3385 ======================== 3386 3387 These are added to the already comprehensive coverage we guarantee. 3388 3389 Directly supported: 3390 3391 ,* devdocs. Thanks to Augusto Stoffel, its developer, for the feedback 3392 which was sent via email. 3393 3394 ,* mini-modeline. Thanks to Julio C. Villasante for the feedback in 3395 issue 24 over at the GitHub mirror: 3396 <https://github.com/protesilaos/modus-themes/issues/24>. 3397 3398 Indirectly supported (they use faces that we already cover): 3399 3400 ,* elfeed-summary 3401 ,* undo-hl 3402 3403 3404 Changes to supported faces or packages 3405 ====================================== 3406 3407 ,* Improved the colours used by 'avy' to always guarantee constrast in 3408 hueness between side-by-side characters with a variety of user 3409 settings. I tried various styles, such as: 3410 3411 (setq avy-style 'pre) 3412 (setq avy-style 'at-full) 3413 3414 For the sake of completeness, I also ran tests by modifying the 3415 'avy-lead-faces' (which is a 'defconst', not a 'defcustom'): 3416 3417 (setq avy-lead-faces 3418 '(avy-lead-face 3419 avy-lead-face-0 3420 avy-lead-face-2 3421 avy-lead-face 3422 avy-lead-face-0 3423 avy-lead-face-2)) 3424 3425 (setq avy-lead-faces 3426 '(avy-lead-face 3427 avy-lead-face-1 3428 avy-lead-face-1 3429 avy-lead-face-1 3430 avy-lead-face-1)) 3431 3432 (setq avy-lead-faces 3433 '(avy-lead-face 3434 avy-lead-face-2 3435 avy-lead-face-2 3436 avy-lead-face-2 3437 avy-lead-face-2)) 3438 3439 ,* Updated the 'vertico-quick' faces to keep them aligned with the new 3440 Avy styles. Thanks to Daniel Mendler (Vertico's developer) for the 3441 reminder: 3442 <https://gitlab.com/protesilaos/modus-themes/-/commit/404a9658196debdde95a51148fc62c5b2faccfb9#note_856454659>. 3443 3444 ,* Applied warmer though still not saturated colours for Org clocking 3445 overlays. The previous style could be mistaken for a mouse highlight 3446 or the highlighted line if 'modus-themes-hl-line' included the 3447 properties 'intense' and 'accented'. Thanks to Rudolf Adamkovič for 3448 the feedback in issue 293: 3449 <https://gitlab.com/protesilaos/modus-themes/-/issues/293>. 3450 3451 ,* Broadened coverage of the built-in 'shr.el' library to include the new 3452 'shr-code' face (Emacs 29). 3453 3454 ,* Expanded support for the 'embark' package by covering its new 3455 'embark-collect-marked' face. Thanks to Daniel Mendler for the 3456 feedback in issue 299: 3457 <https://gitlab.com/protesilaos/modus-themes/-/issues/299>. 3458 3459 ,* Made the 'fill-column-indicator' a contiguous line. It was a dashed 3460 line before, per the Emacs defaults, which led to awkward results 3461 depending on the font family and value of 'line-spacing'. Thanks to 3462 Daniel Mendler for the feedback in issue 297: 3463 <https://gitlab.com/protesilaos/modus-themes/-/issues/297>. 3464 3465 ,* Added explicit support for the built-in 'separator-line' face in order 3466 to refine its presentation. This is present in 'M-x shortdoc' buffers 3467 (Emacs 28). Thanks to Daniel Mendler for the feedback in issue 297: 3468 <https://gitlab.com/protesilaos/modus-themes/-/issues/297>. 3469 3470 ,* Applied explicit styling to the generic 'underline' face in order to 3471 ensure its consistent colouration. The problem before was that an 3472 underline that spanned text with distinct colours would inherit the 3473 colour of the affected character. A uniform presentation makes 3474 everything easier to read. 3475 3476 ,* The 'ement.el' Matrix client now uses a subtle background for username 3477 mentions and/or quoted text. This is consistent with how other Matrix 3478 clients style such constructs. Thanks to Adam Porter (aka 3479 "alphapapa"), the developer of ement.el, for explaining the 3480 technicalities and providing the relevant feedback in issue 25 over at 3481 the GitHub mirror: <https://github.com/protesilaos/modus-themes/issues/25>. 3482 3483 ,* Enforced consistency between 'icomplete' and 'ido'. The first match 3484 was coloured differently in 'ido-mode' by mistake. Thanks to Morgan 3485 Willcock for the feedback in issue 278: 3486 <https://gitlab.com/protesilaos/modus-themes/-/issues/278>. 3487 3488 ,* Used the main foreground for Company's tooltip. This is how it should 3489 have been. Corfu is designed that way as well. Thanks to user okamsn 3490 for the feedback in issue 278: 3491 <https://gitlab.com/protesilaos/modus-themes/-/issues/278>. 3492 3493 ,* Corrected an omission whereby the AUCTeX verbatim face was not 3494 consistent with other such faces. Now it too is governed by the user 3495 option 'modus-themes-markup'. 3496 3497 ,* Fixed the 'centaur-tabs' invalid background message. Thanks to 3498 Lennart C. Karssen for reporting the bug in issue 288: 3499 <https://gitlab.com/protesilaos/modus-themes/-/issues/288>. Note, 3500 however, that the problem is due to some decisions made upstream. My 3501 patch has not been merged yet (open since 2022-02-24): 3502 <https://github.com/ema2159/centaur-tabs/pull/179>. Given this 3503 opportunity, always anticipate that faces may ':inherit' from others 3504 and thus functions like 'face-background' might return an undesirable 3505 nil value if used without a fallback. 3506 3507 3508 Miscellaneous 3509 ============= 3510 3511 ,* Made the 'modus-themes--current-theme' return the first Modus theme 3512 instead of the 'car' of 'custom-enabled-themes'. This makes the 3513 themes work at all times even when the user has multiple of them 3514 enabled. Thanks to Pierre Téchoueyres for the patch, which was sent 3515 via email with regard to Emacs bug#54598: 3516 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=54598>. 3517 3518 ,* Implemented compile-time requirement for built-in libraries to be sure 3519 that the themes work in all cases. Thanks to Antonio Hernández Blas 3520 for reporting in issue 292 the bug with the old design that assumed 3521 the 'cl-lib' and 'subr-x' as already loaded: 3522 <https://gitlab.com/protesilaos/modus-themes/-/issues/292>. 3523 3524 ,* Wrote in the manual how to achieve a monochrome style (with 3525 permutations) for code syntax highlighting. Thanks to Augusto Stoffel 3526 for sharing the idea via an email exchange (this information is 3527 divulged with permission). 3528 3529 ,* Clarified some statements in the manual's section about the nuances in 3530 "enabling" and "loading" a theme. 3531 3532 ,* Documented how the applicable palette affects the outer boundaries of 3533 the colour range that terminal emulators set when Emacs is ran without 3534 a GUI. Here "the palette" refers to the relevant 16 ANSI escape 3535 sequences (terminal colours 0 through 15). For the sake of 3536 convenience, the node includes ready-to-use palettes for XTerm, which 3537 can be adapted to other terminal emulators. This entry complements an 3538 existing one on improving the colour accuracy in terminal emulators. 3539 3540 ,* Used American English constructions in a few places such as "color" 3541 instead of "colour" as that is what core Emacs expects (and the themes 3542 are part of emacs.git). 3543 3544 ,* Updated the description of the themes to be more user-friendly. 3545 Instead of "Highly accessible themes (WCAG AAA)" we now have "Elegant, 3546 highly legible and customizable themes". Nothing changes in terms of 3547 substance. Thanks to Jorge Morais for the feedback. 3548 3549 ,* Clarified that the version of the themes which is built into Emacs 3550 does not use 'require'. It is in response to this thread: 3551 <https://lists.gnu.org/archive/html/help-gnu-emacs/2022-03/msg00049.html>. 3552 Thanks to Philip Kaludercic for bringing the issue to my attention. 3553 3554 ,* Improved the code samples that show how to set up the package. 3555 3556 ,* Wrote the correct symbols for some obsoletion forms. 3557 3558 Thanks once again to everyone involved! 3559 #+end_src 3560 3561 * 2.2.0 3562 :PROPERTIES: 3563 :CUSTOM_ID: h:251849ee-3328-48c7-af5f-d1d6daca3a97 3564 :END: 3565 3566 #+begin_src text 3567 Modus themes version 2.2.0 3568 3569 By Protesilaos Stavrou <info@protesilaos.com> on 2022-02-23 3570 3571 The present entry records the changes made to the project since the 3572 publication of version 2.1.0 on 2022-02-17. This spans about 10 commits 3573 (though one of them is massive). Normally the release cycle occurs over 3574 periods of 4-5 weeks. This is a necessary exception. 3575 3576 To access the URL of the manual visit this web page: 3577 <https://protesilaos.com/emacs/modus-themes>. Or read it in the Emacs 3578 Info reader by evaluating this form: 3579 3580 (info "(modus-themes) Top") 3581 3582 The 'modus-operandi' and 'modus-vivendi' themes are built into Emacs-28 3583 (next stable release) or later, and are available on GNU ELPA as well as 3584 other archives. Emacs-28 ships version 1.6.0, while the current 3585 'master' branch (i.e. Emacs-29) and, by extension, GNU ELPA include the 3586 latest tagged release. 3587 3588 3589 Initialisation of user options 3590 ============================== 3591 3592 Removed a superfluous default value that hampered the initialisation of 3593 defcustom forms in the M-x customize interface. Things would still 3594 work, but the interface was not looking right while editing the relevant 3595 variables. Thanks to Gustavo Barros for reporting the bug in issue 267: 3596 <https://gitlab.com/protesilaos/modus-themes/-/issues/267>. 3597 3598 3599 Refactor 'modus-themes-completions' 3600 =================================== 3601 3602 Implemented thoroughgoing reforms across all completion User Interfaces 3603 (UIs) in order to make them more flexible/powerful and harmonise their 3604 looks. 3605 3606 'modus-themes-completions' now accepts an alist instead of a symbol. 3607 Each cons cell is in the form of '(key . list-of-properties)'. The doc 3608 string describes all the details. 3609 3610 In terms of out-of-the-box appearences, all completion UIs have a subtle 3611 aesthetic. This was always the case for the likes of Vertico, Icomplete 3612 (Fido), and related, though it constitutes a marked departure from what 3613 Ivy and Helm used to look like. Users of the latter two can still get 3614 the more colourful or intense style with something like this: 3615 3616 (setq modus-themes-completions '((matches . (background intense)) 3617 (selection . (accented intense)) 3618 (popup . (accented intense)))) 3619 3620 Or simply: 3621 3622 (setq modus-themes-completions '((t background intense accented))) 3623 3624 The documentation explains all those associations in-depth. There also 3625 are other styles on offer (and combinations thereof). 3626 3627 Furthermore, the new 'modus-themes-completions' encompasses more UIs 3628 than its predecessor, including Company and Corfu. 3629 3630 In the interest of theme-wide consistency, all applicable faces have 3631 been reviewed. 3632 3633 Finally, note that the previous tagged release also made changes on this 3634 front, but it did not disrupt the status quo that was in place from 3635 before the release of version 1.0.0 of the themes (more than a year 3636 ago). In other words, it tried to make unnecessary compromises within 3637 the confines of an outdated design that did not fit in with the rest of 3638 the code base. The new 'modus-themes-completions' might require manual 3639 intervention from users who want to customise things to their liking, 3640 though I feel this change is to our long-term benefit. 3641 3642 Thanks to Daniel Mendler and Rudolf Adamkovič for their feedback in 3643 issue 278: <https://gitlab.com/protesilaos/modus-themes/-/issues/278>. 3644 And thanks to Kenta Usami for recommending the use of a warning in issue 3645 286: <https://gitlab.com/protesilaos/modus-themes/-/issues/286>. 3646 3647 3648 Miscellaneous changes 3649 ===================== 3650 3651 + Removed the pseudo-button effect from the 'org-checkbox' face. It was 3652 not up-to-date with the current style of the rest of the themes, 3653 including the Org constructs for source block delimiters, the TODO 3654 keywords, the priority cookies (e.g. '[#A]'), and others. 3655 3656 + Introduced a section in the manual which provides an alternative to 3657 the standard 'modus-themes-toggle' that leverages 'enable-theme' 3658 instead of 'load-theme' under the hood. These technicalities are all 3659 explained in the manual. 3660 3661 + Provided an alternative greyscale palette subset for 'modus-operandi' 3662 in the manual's section about overriding colours. 3663 3664 + Added support for the built-in 'custom-variable-obsolete' face. 3665 3666 + Fixed typo in the 'modus-themes-box-buttons' variable. Thanks to 3667 Illia Ostapyshyn for the patch in merge request 58: 3668 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/58>. 3669 #+end_src 3670 3671 * 2.1.0 3672 :PROPERTIES: 3673 :CUSTOM_ID: h:15098250-7b41-404b-86e1-9a99984976b9 3674 :END: 3675 3676 #+begin_src text 3677 Modus themes version 2.1.0 3678 3679 By Protesilaos Stavrou <info@protesilaos.com> on 2022-02-17 3680 3681 The present entry records the changes made to the project since the 3682 publication of version 2.0.0 on 2021-12-24. There have been more than 3683 110 commits in the meantime (and this log is close to 5000 words). 3684 3685 All modifications of colour combinations mentioned herein are made in 3686 accordance with the primary accessibility objective of the themes for a 3687 minimum contrast ratio of 7:1 between background and foreground values 3688 in their given combination (the WCAG AAA standard for relative colour 3689 luminance). Edits also account for colour-coding that is optimised for 3690 the needs of users with red-green colour deficiency (deuteranopia). 3691 3692 To access the URL of the manual visit this web page: 3693 <https://protesilaos.com/emacs/modus-themes>. Or read it in the Emacs 3694 Info reader by evaluating this form: 3695 3696 (info "(modus-themes) Top") 3697 3698 The 'modus-operandi' and 'modus-vivendi' themes are built into Emacs-28 3699 (next stable release) or later, and are available on GNU ELPA as well as 3700 other archives. Emacs-28 ships version 1.6.0, while the current 3701 'master' branch (i.e. Emacs-29) and, by extension, GNU ELPA include the 3702 latest tagged release. 3703 3704 3705 Commands 3706 ======== 3707 3708 The following produce a buffer that previews the colour palette of the 3709 given theme ('modus-operandi' or 'modus-vivendi'). 3710 3711 ,* 'modus-themes-list-colors' prompts for a theme before producing the 3712 preview. 3713 3714 ,* 'modus-themes-list-colors-current' uses the current Modus theme. 3715 3716 These commands are useful to anyone who wants to reference a named 3717 colour from the themes or copy a colour value, such as for the purposes 3718 of user-level customisation (as documented at length in the manual 3719 across several use-cases and with the inclusion of custom code). 3720 3721 The commands are not bound to any key. 3722 3723 3724 Customisation options 3725 ===================== 3726 3727 ,* Implemented the 'modus-themes-markup' variable, which supersedes the 3728 now-deprecated 'modus-themes-intense-markup'. The new user option 3729 accepts a list of properties (symbols). It affects constructs such as 3730 Org's =verbatim=, ~code~, and macro (with three pairs of braces). By 3731 default, when this user option is either nil or an empty list, the 3732 affected constructs only have a foreground colour (e.g. Org verbatim 3733 is magenta). Properties that change this style are: 3734 3735 1. 'italic' for an added slant to the text. 3736 2. 'bold' for a heavier weight. 3737 3. 'background' to add a background colour. 3738 4. 'intense' to amplify the colouration (especially of 'background'). 3739 3740 As with all user options which accept a list of properties, the order 3741 of the symbols is no significant. In user configurations it may look 3742 like this: 3743 3744 (setq modus-themes-markup '(background intense bold)) 3745 3746 [ Read the manual for bold and italic fonts. We do not hardcode a 3747 :weight or :slant, instead giving the user the option to set their 3748 own values. The defaults are what you would normally expect from 3749 "bold" and "italic". ] 3750 3751 Thanks to Rudolf Adamkovič for reporting some problems with the old 3752 design in issue 274: 3753 <https://gitlab.com/protesilaos/modus-themes/-/issues/274>. 3754 3755 ,* Added the 'modus-themes-box-buttons' which affects all pseudo 3756 graphical buttons, such as those found in Custom UI buffers or EWW web 3757 pages which include search forms and the like. The variable accepts a 3758 list of properties as its value. By default (nil or empty list), 3759 buttons have a grey background and the familiar 3D effect. Valid 3760 properties are: 3761 3762 1. 'flat' to remove the 3D effect. 3763 2. 'accented' to shift the colouration away from grey. 3764 3. 'faint' to reduce the overall colouration (e.g. grey becomes white). 3765 4. 'variable-pitch' to apply a proportionately spaced font. 3766 5. 'underline' to draw a line instead of applying a 3D or flat box 3767 (particularly useful for those who use Emacs in a terminal emulator). 3768 6. The symbol of a font weight, such as 'bold', 'semibold', 'light' or 3769 any one among those included in the 'modus-themes-weights' constant 3770 (the underlying font family has to support the given weight). 3771 7. A number, expressed as a floating point (e.g. 0.9), which adjusts 3772 the height of the button’s text to that many times the base font 3773 size. The default height is the same as 1.0, though it need not be 3774 explicitly stated. 3775 3776 The order in which those symbols appear in the list is not 3777 significant. If 'underline' and 'flat' are both specified, the former 3778 takes precedence. In user init files the form may look like this: 3779 3780 (setq modus-themes-box-buttons '(variable-pitch flat semilight 0.9)) 3781 3782 Thanks to Daniel Mendler for suggesting this user option and providing 3783 the relevant feedback in issue 282: 3784 <https://gitlab.com/protesilaos/modus-themes/-/issues/282>. 3785 3786 ,* Expanded the 'modus-themes-mail-citations' with an 'intense' variant. 3787 For example: 3788 3789 (setq modus-themes-mail-citations 'intense) 3790 3791 The default is a moderately coloured style. Other variants include 3792 'faint' for subtle colouration and 'monochrome' for an all-grey look. 3793 3794 ,* Reviewed the 'modus-themes-completion' option and harmonised all the 3795 face specifications it governs. The variable now accepts a fourth 3796 stylistic variant in 'super-opinionated': it is like the 'opinionated' 3797 one though some details are even more pronounced. Other noteworthy 3798 items: 3799 3800 [ Remember to read the doc string of 'modus-themes-completions', which 3801 explains the grouping of the completion UIs. ] 3802 3803 - The (setq modus-themes-completions 'moderate) style is more-or-less 3804 the same across all completion UIs. The highlight applied to the 3805 current line is a bespoke shade of blue, the characters are less 3806 saturated than before and their hues are different, though the 3807 overall effect should still feel "sufficiently colourful, but not 3808 overdone". 3809 3810 - The (setq modus-themes-completions nil) is the same as before. 3811 However: 3812 3813 - The current line in Ivy now uses a shade of blue that is 3814 specific to completion UIs instead of an intense cyan 3815 background. This is for theme-wide consistency. 3816 3817 - Helm's current line has the same bespoke blue for its current 3818 line instead of another shade of blue it was using before. 3819 3820 - The (setq modus-themes-completions 'opinionated) should be the same 3821 as before, notwithstanding the aforementioned tweaks to Ivy/Helm. 3822 3823 - The (setq modus-themes-completions 'super-opinionated) for 3824 Icomplete, Vertico, Selectrum, Mct uses the same blue for the 3825 current line as is the default of Ivy and Helm. 3826 3827 Miscellaneous: 3828 3829 - The relevant private helper functions were rewritten. 3830 3831 - We declare a few faces to help streamline certain styles. 3832 3833 - Ivy action keys now inherit from 'modus-themes-key-binding'. We 3834 generally try to make all keys look the same, except when that would 3835 be detrimental to the usability of the given context/interface. 3836 3837 - Some Ivy faces are simplified or otherwise tweaked to fit in with 3838 the rest of the theme. 3839 3840 Thanks to Rudolf Adamkovič for the feedback about Vertico in issues 3841 214 and 278 which prompted me to review all completion UIs: 3842 3843 - <https://gitlab.com/protesilaos/modus-themes/-/issues/214> 3844 - <https://gitlab.com/protesilaos/modus-themes/-/issues/278> 3845 3846 ,* Adjusted the applicable hues in some 'modus-themes-syntax' variants. In 3847 particular: 3848 3849 - The strings' hue has more hints of blue when 'modus-themes-syntax' 3850 includes the 'green-strings' property. Such as: 3851 3852 (setq modus-themes-syntax '(green-strings)) 3853 (setq modus-themes-syntax '(alt-syntax green-strings)) 3854 (setq modus-themes-syntax '(alt-syntax green-strings faint)) 3855 (setq modus-themes-syntax '(alt-syntax green-strings faint yellow-comments)) 3856 3857 - Strings are more orange/yellow than red when 'modus-themes-syntax' 3858 includes the 'alt-syntax' property but NOT the 'green-strings'. For 3859 example: 3860 3861 (setq modus-themes-syntax '(alt-syntax)) 3862 (setq modus-themes-syntax '(alt-syntax yellow-comments)) 3863 (setq modus-themes-syntax '(alt-syntax yellow-comments faint)) 3864 3865 - Backslashes for regexp constructs are coloured appropriately to look 3866 distinct from the rest of the string and from the escaped construct in 3867 all cases. 3868 3869 ,* Removed background colours from the the default style of Org block 3870 delimiters. 3871 3872 As I explained in Emacs bug#52587,[1] Org has code that overrides 3873 themes which prefer not to extend the block delimiter faces to the 3874 edge of the window (as we would like to do by default). This 3875 practically means that we cannot have backgrounds for those lines and 3876 keep them limited to the stretch of area covered by their text. 3877 3878 As such, the default for Org block delimiter lines now is a gray 3879 foreground with no distinct background colour. The user option 3880 'modus-themes-org-blocks' provides "blocky" alternatives that use 3881 background colours---those extend to the edge of the window. 3882 3883 [1] <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52587#46> 3884 3885 ,* Deleted the compatibility layer for all user options that used to 3886 accept symbols in the past but now expect a list of symbols. The 3887 manual contains a snippet with all customisation options for those who 3888 do not want to read all the relevant doc strings. Evaluate this: 3889 3890 (info "(modus-themes) Customization Options") 3891 3892 Or visit: <https://protesilaos.com/emacs/modus-themes#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f>. 3893 3894 The original plan was to remove those during the transition to version 3895 2.0.0 (about a month ago) though I changed my mind thinking they would 3896 not pose a longer-term problem. 3897 3898 New information by Mark Bestley in issue 272 shows that this kind of 3899 complexity can lead to errors: 3900 <https://gitlab.com/protesilaos/modus-themes/-/issues/272#note_826725412>. 3901 3902 So it is better to keep things simple and ask users to configure all 3903 user options based on the up-to-date documentation. 3904 3905 Also thanks to Saša Janiška for the feedback in issue 272. 3906 3907 3908 New packages, faces, or face groups 3909 =================================== 3910 3911 ,* all-the-icons-dired. 3912 3913 ,* all-the-icons-ibuffer. 3914 3915 ,* 'child-frame-border' face (Emacs 28). 3916 3917 ,* 'citar' package. Thanks to Rudolf Adamkovič for the feedback in issue 3918 280: <https://gitlab.com/protesilaos/modus-themes/-/issues/280>. 3919 3920 ,* 'elisp-shorthand-font-lock-face' (Emacs 29). Read the manual by 3921 evaluating: 3922 3923 (info "(elisp) Shorthands") 3924 3925 ,* 'ement' (ement.el) Matrix client, though it is not listed in any 3926 archive yet: <https://github.com/alphapapa/ement.el>. 3927 3928 Thanks to Samuel Culpepper for the feedback in issue 279: 3929 <https://gitlab.com/protesilaos/modus-themes/-/issues/279>. 3930 3931 Also check the Ement issue tracker on the matter: 3932 <https://github.com/alphapapa/ement.el/issues/53>. 3933 3934 ,* 'mct' package. 3935 3936 ,* 'menu' face (built-in) which is used in the menu-bar when Emacs runs 3937 without a graphical toolkit. 3938 3939 ,* 'pgtk-im-0' face (Emacs 29). This is shown as a single-character-long 3940 block when you type the Compose key followed by the composable 3941 characters. 3942 3943 ,* 'pyim' (an input method for CJK characters). Thanks to Yuanchen Xie for 3944 the contribution in merge request 57: 3945 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/57>. 3946 The patch is small and is thus excluded from the requirement for 3947 copyright assignment to the FSF (remember that the themes are built 3948 into Emacs and any major contribution needs such copyright 3949 assignment---read the relevant entry in the themes' manual). 3950 3951 ,* 'slime' and 'sly' packages. Thanks to John Haman for the feedback 3952 which was done via email due to some problems with the web UI on 3953 GitLab (this information is shared with permission). Please note that 3954 I am not familiar with Common Lisp and could not test these 3955 thoroughly. Any mistakes or omissions are my own. 3956 3957 Concerning the web UI, there is a fully functional mirror of the 3958 themes on GitHub, while email is always an option. Use whatever works 3959 for you to report an issue or send a patch. 3960 3961 ,* 'textsec' package (Emacs 29). 3962 3963 New indirectly supported packages 3964 --------------------------------- 3965 3966 These inherit from base faces and look good enough already or use 3967 appropriate colours from the Modus themes: 3968 3969 ,* dtache 3970 ,* org-remark 3971 3972 3973 Changes to supported faces or face groups 3974 ========================================= 3975 3976 ,* Stopped making key bindings look like boxes. We revert to the old 3977 style we were using before the introduction of the 'help-key-binding' 3978 face (Emacs 28). 3979 3980 By default Emacs 28 or higher will render all key bindings it 3981 identifies with a box around them. The idea is to make them look like 3982 keys on a keyboard, which I never really liked because without 3983 generous padding you get a very tight space between the character and 3984 the box's borders which can look weird at small point sizes (Emacs 3985 faces do not have padding in the same way CSS does). 3986 3987 I tried following the default style for a few months and have concluded 3988 that it is not good enough for our purposes (my preferences 3989 notwithstanding): 3990 3991 - The box attribute does not work in terminal emulators. This means 3992 that keys only get a subtle grey background and the default 3993 foreground, which can be hard to make them stand out from their 3994 surrounding text if the font height is small and/or the keybinding is 3995 short (e.g. a single character). 3996 3997 - The box and grey background combination limits our options when we 3998 need to colour-code different types of keys. For example, the 3999 'which-key' package can show TAB as T and applies to it a different 4000 face to make the distinction obvious. In that case, the presence of 4001 the tight box makes the use of a bold weight inappropriate: the 4002 character and the box's borders seem to overlap. While the grey 4003 background limits our choice of colour as, for instance, yellow 4004 never looks good against it. Same principle for interfaces that can 4005 have colour-coded keys like 'transient' and 'hydra', where we lose 4006 much-needed flexibility. 4007 4008 ,* Adjusted the brightness of the 'which-key-special-key-face'. This is 4009 the face that applies to special keys. For example: 4010 4011 (setq which-key-special-keys '("SPC" "TAB" "RET" "ESC" "DEL")) 4012 4013 ,* Made 'transient' faces which are supposed to be de-emphasise certain 4014 elements inherit the 'shadow' face. This is an implicit customisation 4015 option, as it allows the user to adjust the foreground value of all 4016 "less important" constructs simply by changing the 'shadow' face. 4017 4018 ,* Covered the 'transient-purple' face (these are like the colour-coding 4019 of 'hydra'). 4020 4021 ,* Tweaked the 'transient-argument' and 'transient-value' faces to make 4022 things look a bit more consistent with the other transient faces. 4023 This is to avoid potential conflicts with the highlighted key 4024 bindings, especially when transient uses hydra-style colour-coded 4025 keys. 4026 4027 ,* Applied the same metaphors for key bindings to 'marginalia-key' 4028 ('marginalia' package) and 'embark-keybinding' ('embark' package). 4029 They inherit the 'modus-themes-key-binding' when possible. The only 4030 exception is with (setq modus-themes-completions nil) where conflicts 4031 may arise between the key's style and matching characters of the 4032 ongoing completion session. 4033 4034 Thanks to Rudolf Adamkovič for pointing out the inconsistency in issue 4035 278: <https://gitlab.com/protesilaos/modus-themes/-/issues/278>. 4036 4037 ,* Refrained from treating LaTeX sections as headings. This is because 4038 unlike Org/Outline/Markdown Latex is basically source code, so the 4039 sectioning does not work the same way it does for those lightweight 4040 markup/outlining modes. 4041 4042 Furthermore, font-latex.el defines 'font-latex-fontify-sectioning' 4043 which can be used to control the scale of those sections. It makes 4044 sense for the themes to not interfere with that design and just allow 4045 users to customise things uniformly regardless of the active theme. 4046 4047 Thanks to Gustavo Barros for the detailed feedback in issue 265: 4048 <https://gitlab.com/protesilaos/modus-themes/-/issues/265>. 4049 4050 ,* Reviewed the hues of 'all-the-icons' and related packages. 4051 4052 ,* Applied the correct style to 'info-menu-header', meaning that it now 4053 only uses a bold weight as it is not a real heading, instead of being 4054 affected by the user option 'modus-themes-headings'. 4055 4056 ,* Included new 'telega-entity-type-spoiler' face. Thanks to bit9tream 4057 for informing me about it in issue 271: 4058 <https://gitlab.com/protesilaos/modus-themes/-/issues/271>. The 4059 conclusion: 4060 4061 Tricky though perhaps dull 4062 4063 I understand this is not an interesting topic and it probably is 4064 too difficult to relate to the various data points without 4065 visualising them and comparing the before and after 4066 states. Furthermore, data can be deceptive and I have always 4067 maintained that theme development stands at the intersection of 4068 science and art (at least for the purposes of conforming with the 4069 rigorous accessibility standards of the Modus themes). 4070 4071 That granted, I wanted to shed light on the “behind the scenes” 4072 work that is not immediately obvious when one checks a diff that 4073 introduces some seemingly trivial tweaks like '#49d239'->'#49c029' 4074 or '#7fcfff'->'#8fbfff'. 4075 4076 ,* Tweaked the hues of all graph colours, which are used in the 4077 'org-habit' table. The changes are subtle and should improve the 4078 overall usability of the graph. For the technicalities, read: 4079 <https://protesilaos.com/codelog/2022-01-02-review-modus-themes-org-habit-colours/>. 4080 4081 Also thanks to Rudolf Adamkovič for reporting the problem with white 4082 text on yellow background in issue 270: 4083 <https://gitlab.com/protesilaos/modus-themes/-/issues/270>. 4084 4085 ,* Styled the 'markdown-highlighting-face'. This is the face used for 4086 text in between double equals signs when the user option 4087 'markdown-enable-highlighting-syntax' is non-nil. 4088 4089 ,* Amplified the overall colouration of Eldoc's current argument. It is 4090 a yellow foreground with a tinted background. The blue foreground 4091 which was applied before could be hard to tell apart in some cases, 4092 especially because it is a common colour that is used elsewhere in the 4093 themes. Whereas the warmer hues are easier to discern, especially 4094 while relying only on peripheral vision. 4095 4096 Thanks to Rudolf Adamkovič for the feedback in issue 275: 4097 <https://gitlab.com/protesilaos/modus-themes/-/issues/275>. 4098 4099 ,* Instructed Geiser to use the same style for its argument as Eldoc 4100 (edited the faces 'geiser-font-lock-autodoc-current-arg' and 4101 'geiser-font-lock-autodoc-identifier'). 4102 4103 ,* Made the 'keycast-key' face work when 'modus-themes-mode-line' has a 4104 padding value (read the latter doc string or consult the manual). 4105 4106 ,* Refined the 'magit' faces for bisect, reflog, sequence, and signature 4107 views. They get a bold weight and, where appropriate, are made to 4108 comply with the 'modus-theems-deueteranopia' option (meaning that 4109 greens turn into blues). 4110 4111 ,* Recoloured 'elfeed' tags from a shade of cyan to magenta, in the 4112 interest of theme-wide consistency but also to make them easier to 4113 tell apart from the name of the feed. Also updated the faces used in 4114 the header-line to look better in context. 4115 4116 ,* Removed the hardcoded ':slant italic' from the 'italic' face, which is 4117 consistent with how we do not hardcode ':weight bold' in the 'bold' 4118 face. 4119 4120 Such a design allows users to configure those faces and have the 4121 desired slant/weight (and even font family) apply consistently 4122 throughout the theme. Read the manual for further details: 4123 <https://protesilaos.com/emacs/modus-themes#h:2793a224-2109-4f61-a106-721c57c01375>. 4124 4125 Thanks to user derek-upham for pointing out the inconsistency in issue 4126 21 over at the GitHub mirror: 4127 <https://github.com/protesilaos/modus-themes/issues/21>. 4128 4129 ,* Improved the styles that apply to compilation buffers and related. 4130 The overarching intent was to reduce the excess colouration, without 4131 upsetting expectations and affecting the overall presentation. 4132 4133 Thanks to Rudolf Adamkovič for the feedback in issue 277: 4134 <https://gitlab.com/protesilaos/modus-themes/-/issues/277>. 4135 4136 Note that compilation buffers apply an underline by default. The 4137 manual explains how to change that: 4138 <https://protesilaos.com/emacs/modus-themes#h:420f5a33-c7a9-4112-9b04-eaf2cbad96bd>. 4139 4140 ,* Ensured a consistent style for the 'highlight' face across all 4141 contexts (typically used for mouse hover effects). The mode line has 4142 an exception when its style includes an accented background (per 4143 'modus-themes-mode-line'). 4144 4145 Thanks to Rudolf Adamkovič for the feedback in issue 214: 4146 <https://gitlab.com/protesilaos/modus-themes/-/issues/214>. 4147 4148 ,* Changed the foreground of 'mode-line-emphasis' from blue to purple, in 4149 order to avoid potential (albeit unlikely) confusion with other 4150 indicators. 4151 4152 ,* Desaturated the 'man' and 'woman' foreground value of the bold 4153 constructs and tweaked other faces to avoid potential inconsistencies. 4154 Thanks to Daniel Mendler for the feedback: 4155 <https://gitlab.com/protesilaos/modus-themes/-/commit/8080eb1c6c0020ba82e8abaa933d6686327bc616#note_841424489>. 4156 4157 ,* Removed certain exaggerations from widgets as seen in the Custom UI 4158 and EWW. Specifically: 4159 4160 - 'widget-field' does not need to ':extend', as that typically does 4161 not look good. 4162 4163 - 'custom-state' gets a warmer colour to convey its message more 4164 effectively. 4165 4166 - 'eww-form-text' no longer uses a ':box' because that breaks when the 4167 widget occupies more than one line. 4168 4169 - 'eww-form-textarea' can now inherit from 'eww-form-text'. 4170 4171 Thanks to Daniel Mendler for the feedback on the style of those faces in 4172 issue 284: <https://gitlab.com/protesilaos/modus-themes/-/issues/284>. 4173 4174 4175 The manual 4176 ========== 4177 4178 ,* Clarified the wording of 'shr' fonts, which affect 'eww', 'elfeed', 4179 'ement', and possibly others. 4180 4181 ,* Wrote section on custom Org emphasis faces. It includes code samples. 4182 4183 ,* Answered a Frequently Asked Question on whether the Modus themes are 4184 "colour schemes"---they are not and it is important to understand why. 4185 4186 ,* Addressed another Frequently Asked Question about porting the themes 4187 to other platforms or editors. Relevant blog posts which explain how 4188 complex the issue is and why porting requires the same attention to 4189 detail as this project: 4190 4191 - <https://protesilaos.com/codelog/2022-01-03-modus-themes-port-faq/>. 4192 - <https://protesilaos.com/codelog/2022-01-23-base16-modus-themes/>. 4193 4194 ,* Improved the sample code in the section about the backdrop of PDF 4195 files while using 'pdf-tools'. Thanks to Utkarsh Singh for the patch, 4196 which was sent via email. 4197 4198 ,* Provided sample code on an alternative style for Ediff. 4199 4200 There was a discussion with Philip Kaludercic in issue 273 about making 4201 this a defcustom: <https://gitlab.com/protesilaos/modus-themes/-/issues/273>. 4202 4203 I first entertained the notion and did set up a branch for testing 4204 purposes. However, I ultimately decided that such a course of action 4205 would establish a bad precedent because then every conceivable stylistic 4206 tweak could, in principle, become a user option. Furthermore, the 4207 potential defcustom would introduce too much complexity as Ediff would 4208 have to continue to behave as other diffs (per 'modus-themes-diffs') if 4209 the user did not want the alternative style. 4210 4211 As such, documenting how a user can achieve this is the right choice. 4212 4213 ,* Fixed internal link in the manual. Thanks to Rudolf Adamkovič for 4214 reporting the problem in issue 277: 4215 <https://gitlab.com/protesilaos/modus-themes/-/issues/277>. 4216 4217 4218 Miscellaneous 4219 ============= 4220 4221 ,* Covered workaround for improving the accuracy of colour reproduction 4222 in terminal emulators. The results are still not as good as the 4223 graphical version of Emacs, though they are considerably better than 4224 before. Thanks to gitrj95's issue 18 at the GitHub mirror, which 4225 prompted me to research this topic: 4226 <https://github.com/protesilaos/modus-themes/issues/18>. 4227 4228 ,* Helped report a bug in the PGTK build of Emacs where a new emacsclient 4229 window with the 'modus-vivendi' face would not show the cursor: 4230 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=53073>. Thanks to 4231 contributed to the discussion on issue 7 over at the GitHub mirror: 4232 <https://github.com/protesilaos/modus-themes/issues/7> 4233 4234 ,* Shifted the hue of the intense 'hl-line' from a grey-cyan to a more 4235 vivid blue by reducing the relative contribution of the green channel 4236 of light. 4237 4238 The change affects these styles: 4239 4240 (setq modus-themes-hl-line '(accented intense)) 4241 (setq modus-themes-hl-line '(accented intense underline)) 4242 4243 Thanks to Rudolf Adamkovič for suggesting a more vivid colour in issue 4244 214: <https://gitlab.com/protesilaos/modus-themes/-/issues/214>. 4245 4246 ,* Recalibrated the 'modus-vivendi' named colour 'bg-paren-match'. 4247 4248 I wanted to increase its distance relative to the main background, 4249 just to be sure that it is easier to spot. This is achieved by moving 4250 the hueness from the yellow to the magenta side of the spectrum. 4251 4252 Overall, the change is subtle and has no major impact on the contrast 4253 ratio relative to the main background and foreground (we need to 4254 consider both due to the specifics of show-paren-mode (and related)). 4255 4256 The results (#5f362f is the old, #6f3355 the new): 4257 4258 | | #000000 | #ffffff | #000000 | #ffffff | 4259 |---------+---------+---------+---------+---------| 4260 | #5f362f | 2.06 | 10.22 | 37904 | 333060 | 4261 | #6f3355 | 2.28 | 9.21 | 58282 | 291037 | 4262 4263 The TBLFM formula for this table (org-mode notation): 4264 4265 $2='(Λ $1 @1$2);%.2f :: $3='(Λ $1 @1$3);%.2f :: $4='(Δ $1 @1$4) :: $5='(Δ $1 @1$5) 4266 4267 The Greek letters mean: 4268 4269 (defalias 'Λ #'modus-themes-contrast) 4270 (defalias 'Δ #'color-distance) 4271 4272 ,* Expanded the "special" subset of the palette with faint variants of 4273 the four backgrounds. These are reserved for special circumstances, 4274 as the name implies. Below are the contrast values (see 4275 'modus-themes-contrast'). 4276 4277 Modus Operandi main accept colours against faint special backgrounds: 4278 4279 | | #f0f1ff | #ebf5eb | #fef2ea | #faeff9 | 4280 |---------+---------+---------+---------+---------| 4281 | #a60000 | 7.15 | 7.17 | 7.29 | 7.16 | 4282 | #972500 | 7.26 | 7.28 | 7.40 | 7.28 | 4283 | #a0132f | 7.13 | 7.15 | 7.27 | 7.14 | 4284 | #7f1010 | 9.44 | 9.47 | 9.63 | 9.47 | 4285 | #702f00 | 8.94 | 8.97 | 9.12 | 8.96 | 4286 | #7f002f | 9.64 | 9.67 | 9.83 | 9.66 | 4287 | #005e00 | 7.20 | 7.23 | 7.34 | 7.22 | 4288 | #315b00 | 7.13 | 7.15 | 7.27 | 7.15 | 4289 | #145c33 | 7.18 | 7.20 | 7.32 | 7.20 | 4290 | #104410 | 10.09 | 10.12 | 10.29 | 10.12 | 4291 | #30440f | 9.56 | 9.59 | 9.75 | 9.58 | 4292 | #0f443f | 9.76 | 9.79 | 9.96 | 9.79 | 4293 | #813e00 | 7.14 | 7.17 | 7.28 | 7.16 | 4294 | #70480f | 7.14 | 7.17 | 7.28 | 7.16 | 4295 | #863927 | 7.13 | 7.15 | 7.27 | 7.15 | 4296 | #5f4400 | 8.10 | 8.12 | 8.26 | 8.12 | 4297 | #5d5000 | 7.17 | 7.19 | 7.31 | 7.19 | 4298 | #5e3a20 | 8.91 | 8.94 | 9.09 | 8.93 | 4299 | #0031a9 | 9.31 | 9.34 | 9.49 | 9.33 | 4300 | #2544bb | 7.14 | 7.16 | 7.28 | 7.16 | 4301 | #0000c0 | 10.64 | 10.67 | 10.85 | 10.66 | 4302 | #003497 | 9.66 | 9.70 | 9.86 | 9.69 | 4303 | #0f3d8c | 9.06 | 9.09 | 9.24 | 9.09 | 4304 | #001087 | 13.15 | 13.20 | 13.42 | 13.19 | 4305 | #721045 | 9.99 | 10.02 | 10.19 | 10.01 | 4306 | #8f0075 | 7.72 | 7.75 | 7.88 | 7.74 | 4307 | #5317ac | 8.98 | 9.01 | 9.16 | 9.00 | 4308 | #752f50 | 8.22 | 8.25 | 8.38 | 8.24 | 4309 | #7b206f | 8.22 | 8.25 | 8.38 | 8.24 | 4310 | #55348e | 8.26 | 8.29 | 8.42 | 8.28 | 4311 | #00538b | 7.18 | 7.20 | 7.32 | 7.19 | 4312 | #30517f | 7.18 | 7.20 | 7.32 | 7.20 | 4313 | #005a5f | 7.13 | 7.15 | 7.27 | 7.15 | 4314 | #005077 | 7.76 | 7.79 | 7.91 | 7.78 | 4315 | #354f6f | 7.49 | 7.52 | 7.64 | 7.51 | 4316 | #125458 | 7.69 | 7.72 | 7.85 | 7.71 | 4317 4318 Modus Vivendi main accept colours against faint special backgrounds: 4319 4320 | | #0e183a | #001f1a | #241613 | #251232 | 4321 |---------+---------+---------+---------+---------| 4322 | #ff8059 | 7.01 | 7.01 | 7.07 | 7.00 | 4323 | #ef8b50 | 7.01 | 7.00 | 7.07 | 7.00 | 4324 | #ff9077 | 7.85 | 7.85 | 7.93 | 7.85 | 4325 | #ffa0a0 | 8.91 | 8.91 | 9.00 | 8.91 | 4326 | #f5aa80 | 9.04 | 9.04 | 9.13 | 9.04 | 4327 | #ff9fbf | 9.06 | 9.05 | 9.14 | 9.05 | 4328 | #44bc44 | 7.04 | 7.04 | 7.11 | 7.04 | 4329 | #70b900 | 7.13 | 7.13 | 7.20 | 7.12 | 4330 | #00c06f | 7.24 | 7.24 | 7.31 | 7.24 | 4331 | #78bf78 | 7.87 | 7.86 | 7.94 | 7.86 | 4332 | #99b56f | 7.60 | 7.59 | 7.67 | 7.59 | 4333 | #88bf99 | 8.23 | 8.22 | 8.30 | 8.22 | 4334 | #d0bc00 | 8.98 | 8.98 | 9.07 | 8.98 | 4335 | #c0c530 | 9.31 | 9.31 | 9.40 | 9.30 | 4336 | #d3b55f | 8.71 | 8.71 | 8.79 | 8.71 | 4337 | #d2b580 | 8.81 | 8.80 | 8.89 | 8.80 | 4338 | #cabf77 | 9.28 | 9.27 | 9.36 | 9.27 | 4339 | #d0ba95 | 9.20 | 9.20 | 9.29 | 9.20 | 4340 | #2fafff | 7.18 | 7.18 | 7.25 | 7.18 | 4341 | #79a8ff | 7.32 | 7.32 | 7.39 | 7.31 | 4342 | #00bcff | 7.96 | 7.96 | 8.04 | 7.96 | 4343 | #82b0ec | 7.74 | 7.74 | 7.81 | 7.74 | 4344 | #a0acef | 7.97 | 7.96 | 8.04 | 7.96 | 4345 | #80b2f0 | 7.89 | 7.88 | 7.96 | 7.88 | 4346 | #feacd0 | 9.94 | 9.93 | 10.03 | 9.93 | 4347 | #f78fe7 | 8.29 | 8.29 | 8.37 | 8.29 | 4348 | #b6a0ff | 7.82 | 7.81 | 7.89 | 7.81 | 4349 | #e0b2d6 | 9.51 | 9.50 | 9.60 | 9.50 | 4350 | #ef9fe4 | 8.88 | 8.88 | 8.96 | 8.87 | 4351 | #cfa6ff | 8.72 | 8.71 | 8.80 | 8.71 | 4352 | #00d3d0 | 9.28 | 9.27 | 9.36 | 9.27 | 4353 | #4ae2f0 | 11.09 | 11.09 | 11.20 | 11.09 | 4354 | #6ae4b9 | 11.08 | 11.07 | 11.18 | 11.07 | 4355 | #90c4ed | 9.34 | 9.34 | 9.43 | 9.33 | 4356 | #a0bfdf | 9.10 | 9.09 | 9.18 | 9.09 | 4357 | #a4d0bb | 10.18 | 10.17 | 10.27 | 10.17 | 4358 4359 ,* Add docs on color overrides through blending. Thanks to Alex Griffin 4360 for the contribution in issue 269 and the subsequent patch in merge 4361 request 56 (the patch is exempt from copyright assignment): 4362 4363 - <https://gitlab.com/protesilaos/modus-themes/-/issues/269>. 4364 - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/56>. 4365 4366 ,* Fixed typo in the ':group' value of some faces defined in 4367 modus-themes.el. Thanks to Gustavo Barros for reporting it in issue 4368 266: <https://gitlab.com/protesilaos/modus-themes/-/issues/266> 4369 4370 ,* Updated copyright statement in all .el files to use the same wording 4371 as all other files that are built into Emacs. 4372 4373 ,* Made all sorts of tweaks and refinements to doc strings and nodes in the 4374 manual. 4375 4376 Thanks again to everyone involved! This has been yet another cycle of 4377 intense work which further iterated on an already solid base. 4378 #+end_src 4379 4380 * 2.0.0 4381 :PROPERTIES: 4382 :CUSTOM_ID: h:46d92baa-eff3-4973-bac0-cf762b457e2d 4383 :END: 4384 4385 #+begin_src text 4386 Modus themes version 2.0.0 4387 4388 By Protesilaos Stavrou <info@protesilaos.com> on 2021-12-24 4389 4390 This entry covers the changes made to the project since the publication 4391 of version 1.7.0 on 2021-11-18. There have been more than 90 commits in 4392 the meantime. This is a major upgrade with some backward-incompatible 4393 changes, even though most work was done behind the scenes (i.e. not in 4394 git commits but local testing) to guarantee the relevance of all 4395 user-facing styles, code practices, et cetera. 4396 4397 All modifications of colour combinations mentioned herein are made in 4398 accordance with the primary accessibility objective of the themes for a 4399 minimum contrast ratio of 7:1 between background and foreground values 4400 in their given combination (the WCAG AAA standard for relative colour 4401 luminance). Edits also account for colour-coding that is optimised for 4402 the needs of users with red-green colour deficiency (deuteranopia). 4403 4404 To access the URL of the manual visit this web page: 4405 <https://protesilaos.com/emacs/modus-themes>. Or read it in the Emacs 4406 Info reader by evaluating this form: 4407 4408 (info "(modus-themes) Top") 4409 4410 The 'modus-operandi' and 'modus-vivendi' themes are built into Emacs-28 4411 (next stable release) or later, and are available on GNU ELPA as well as 4412 other archives. Emacs-28 ships version 1.6.0, while the current 4413 'master' branch (i.e. Emacs-29) and, by extension, GNU ELPA include the 4414 latest tagged release. 4415 4416 A fully fledged org-mode file with the annotated task list for Modus 4417 themes version 2.0.0 is supplied as complementary material to the 4418 present entry. It should be annexed below this text on the announcement 4419 page: <https://protesilaos.com/codelog/2021-12-24-modus-themes-2-0-0/>. 4420 4421 4422 Customisation options 4423 ===================== 4424 4425 There are some breaking changes that were necessary to improve the code 4426 base and make things easier as well as more efficient for end users. 4427 Please read carefully and apologies in advance for whatever 4428 inconvenience. 4429 4430 ,* The 'modus-themes-variable-pitch-headings' no longer has any effect. 4431 Instead, users can specify a 'variable-pitch' property to the list 4432 they pass to the 'modus-themes-headings' or 'modus-themes-org-agenda' 4433 (examples below). 4434 4435 ,* All 'modus-themes-scale-*' options are removed. Scaling of headings 4436 is now handled directly by the user options 'modus-themes-headings' 4437 and 'modus-themes-org-agenda' (code samples below). 4438 4439 ,* The 'modus-themes-headings' option now accepts a floating point (see 4440 function 'floatp') that represents the multiplier relative to the base 4441 font size. This can be used to scale headings accordingly. Since 4442 this option can target individual heading levels (for 1 through 8), 4443 users can now implement their desired scale with greater precision. 4444 Whereas before it was limited to the first four levels, admittedly for 4445 no good reason. 4446 4447 The newly introduced 'variable-pitch' property can also be applied on 4448 a per-level basis (making it easy to combine with existing properties, 4449 such as a custom weight, for maximum control). Example: 4450 4451 ;; This is an alist: read the manual or its doc string. 4452 (setq modus-themes-headings 4453 '((1 . (variable-pitch light 1.6)) 4454 (2 . (overline semibold 1.4)) 4455 (3 . (monochrome overline 1.2)) 4456 (4 . (overline 1.1)) 4457 (t . (rainbow 1.05)))) 4458 4459 ,* The 'modus-themes-org-agenda' follows the same design as the 4460 'modus-themes-headings' where appropriate. Headings that can be 4461 scaled accept a floating point, while those that may be rendered in a 4462 proportionately spaced font accept the 'variable-pitch' property. In 4463 addition, a custom font weight is also supported in the relevant 4464 places (just as with 'modus-themes-headings'). Overall, the interface 4465 can now be tailored to the user's preferences with greater precision. 4466 4467 ;; This is an alist: read the manual or its doc string. 4468 (setq modus-themes-org-agenda 4469 '((header-block . (variable-pitch light 1.6)) 4470 (header-date . (bold-today grayscale underline-today 1.2)) 4471 (event . (accented varied)) 4472 (scheduled . uniform) 4473 (habit . traffic-light))) 4474 4475 ,* The 'modus-themes-scale-small' that was used in the Org agenda 4476 interface has been removed. No replacement is provided, as the 4477 downsizing had the undesired effect of breaking the otherwise neat 4478 alignment of elements on the grid. 4479 4480 ,* The 'modus-themes-mode-line-padding' option has been removed. 4481 Instead, users can specify a natural number (positive integer) 4482 directly in the list of properties passed to the 4483 'modus-themes-mode-line' variable. This has no effect when the 4484 'moody' property is also set, because the Moody library applies its 4485 own padding. For example: 4486 4487 (setq modus-themes-mode-line '(borderless accented 4)) 4488 4489 Though not related to changes on our end, users of Emacs 29 must now 4490 set 'x-use-underline-position-properties' to nil for padding to work 4491 properly (due to other adjustments upstream). This relates to Emacs 4492 bug#52324 we had reported: 4493 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52324>. 4494 4495 ,* All deuteranopia styles are consolidated in a single toggle: 4496 'modus-themes-deuteranopia'. The 'modus-themes-success-deuteranopia' 4497 is thus rendered obsolete and superseded, while the individual 4498 deuteranopia-friendly styles for diffs ('modus-themes-diffs') and the 4499 Org agenda's habit graph ('modus-themes-org-agenda') are altogether 4500 removed. As opposed to top-level forms, there is no clean way to 4501 notify the user of the deprecation of individual values of a user 4502 option. 4503 4504 ,* The "foreground only" style has been altogether removed from the user 4505 option 'modus-themes-diffs'. It never was up to the aesthetic 4506 standard of the themes even though the colours met the minimum 7:1 4507 contrast ratio. There is a new section in the manual which documents 4508 how to implement such a style with user-level configurations. Short 4509 version: 4510 4511 (defun my-modus-themes-custom-faces () 4512 (modus-themes-with-colors 4513 (custom-set-faces 4514 `(modus-themes-diff-added ((,class :background unspecified :foreground ,green))) ; OR ,blue for deuteranopia 4515 `(modus-themes-diff-changed ((,class :background unspecified :foreground ,yellow))) 4516 `(modus-themes-diff-removed ((,class :background unspecified :foreground ,red))) 4517 4518 `(modus-themes-diff-refine-added ((,class :background ,bg-diff-added :foreground ,fg-diff-added))) 4519 ;; `(modus-themes-diff-refine-added ((,class :background ,bg-diff-added-deuteran :foreground ,fg-diff-added-deuteran))) 4520 `(modus-themes-diff-refine-changed ((,class :background ,bg-diff-changed :foreground ,fg-diff-changed))) 4521 `(modus-themes-diff-refine-removed ((,class :background ,bg-diff-removed :foreground ,fg-diff-removed))) 4522 4523 `(modus-themes-diff-focus-added ((,class :background ,bg-dim :foreground ,green))) ; OR ,blue for deuteranopia 4524 `(modus-themes-diff-focus-changed ((,class :background ,bg-dim :foreground ,yellow))) 4525 `(modus-themes-diff-focus-removed ((,class :background ,bg-dim :foreground ,red))) 4526 4527 `(modus-themes-diff-heading ((,class :background ,bg-alt :foreground ,fg-main))) 4528 4529 `(diff-indicator-added ((,class :foreground ,green))) ; OR ,blue for deuteranopia 4530 `(diff-indicator-changed ((,class :foreground ,yellow))) 4531 `(diff-indicator-removed ((,class :foreground ,red))) 4532 4533 `(magit-diff-added ((,class :background unspecified :foreground ,green-faint))) 4534 `(magit-diff-changed ((,class :background unspecified :foreground ,yellow-faint))) 4535 `(magit-diff-removed ((,class :background unspecified :foreground ,red-faint))) 4536 `(magit-diff-context-highlight ((,class :background ,bg-dim :foreground ,fg-dim)))))) 4537 4538 ;; This is so that the changes persist when switching between 4539 ;; modus-operandi and modus-vivendi 4540 (add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces) 4541 4542 4543 Removed support for packages 4544 ============================ 4545 4546 The following are no longer supported by the themes. The reasons vary 4547 in each case, though they boil down to (i) the package being obsoleted, 4548 or (ii) the package's faces inheriting from base faces that we already 4549 support (e.g. font-lock). Each case was carefully considered as part of 4550 the comprehensive review of all packages supported by the themes, though 4551 chances are that some mistake was made regardless. If you believe a 4552 package should not have been removed, please report as much. 4553 4554 ,* ag 4555 ,* apt-sources-list 4556 ,* apt-sources-list 4557 ,* buffer-expose 4558 ,* counsel-org-capture-string 4559 ,* define-word 4560 ,* diredc 4561 ,* disk-usage 4562 ,* easy-kill 4563 ,* flyspell-correct 4564 ,* git-gutter{,fringe}+ 4565 ,* git-lens 4566 ,* git-walktree 4567 ,* highlight-blocks 4568 ,* highlight-defined 4569 ,* highlight-escape-sequences 4570 ,* highlight-symbol 4571 ,* highlight-tail 4572 ,* hyperlist-mode 4573 ,* isl (isearch-light) 4574 ,* minibuffer-line 4575 ,* mu4e-conversation 4576 ,* no-emoji 4577 ,* objed 4578 ,* parrot 4579 ,* phi-search 4580 ,* pkgbuild-mode 4581 ,* rainbow-identifiers 4582 ,* sallet 4583 ,* spell-fu 4584 ,* spray 4585 ,* swoop 4586 ,* vdiff 4587 ,* volatile-highlights 4588 4589 4590 Changes to supported faces or face groups 4591 ========================================= 4592 4593 ,* Eliminated any possible exaggerations in wgrep faces. Those no longer 4594 use coloured backgrounds. Instead they have colour-coded foreground 4595 colours as well as a bold weight (they ultimately inherit from the 4596 'bold' face, which is a "hidden" customisation option, as explained in 4597 the manual). 4598 4599 ,* Forced Org block delimiters to not extend their background by default 4600 (though check 'modus-themes-org-blocks'). That was the intended 4601 design all along, but now it needs to be made explicit. See, for 4602 example, bug#52587 for Emacs: 4603 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52587> 4604 4605 ,* Revised the 'org-sexp-date' face so that it no longer looks like 4606 'org-date'. Dates are clickable buttons: they work like links, so 4607 they have an underline by default and are subject to the 4608 'modus-themes-links' user option. Whereas the 'org-sexp-date' is not 4609 applied to interactive elements and must thus be visually distinct. 4610 4611 This face is used for diary-style entries in Org files. For example: 4612 4613 %%(diary-anniversary 2000 12 25) NAME %d%s birthday 4614 4615 ,* Rewrote several Auctex/Tex faces to inherit from base faces where 4616 relevant (e.g. 'bold', 'success') as well as from font-lock faces. In 4617 the latter case, the end-result makes Auctex/Tex subject to the 4618 'modus-themes-syntax' option. These refinements promote theme-wide 4619 consistency without detracting from the established styles. 4620 4621 ,* Improved Git (Magit) commit faces for warnings or errors. This 4622 concerns two cases: 4623 4624 1. The summary line exceeds the recommended limit of 50 characters. 4625 This now uses a yellow foreground colour which contrasts well with 4626 the summary line's new blue hue (blue and yellow are complementary 4627 for our purposes, meaning that they have good contrast in hueness). 4628 4629 2. The second line (the one right below the summary) has text that 4630 should not be there. This one is coloured in a shade of red, which 4631 again contrasts well with blue. 4632 4633 Thanks to Damien Cassou for noticing in issue 261 that the previous 4634 style of applying tinted backgrounds did not work well when 4635 'hl-line-mode' was enabled ('hl-line-mode' overrides backgrounds and 4636 so the warnings/errors where not always obvious): 4637 <https://gitlab.com/protesilaos/modus-themes/-/issues/261>. 4638 4639 ,* Added support for the new 'magit-branch-warning' face that we helped 4640 upstream define: <https://github.com/magit/magit/issues/4550>. It 4641 disambiguates warnings in Magit status buffers from the generic and 4642 often inappropriate for such a context 'font-lock-warning-face'. 4643 4644 ,* Simplified all the Apropos faces. They no longer look like buttons or 4645 links as that makes the presentation of 'M-x apropos' very busy. 4646 Instead, they now only have a foreground colour. 4647 4648 ,* Updated support for org-roam faces by removing old entries and 4649 covering new ones. 4650 4651 ,* Replaced old company-mode faces with their new aliases: 4652 4653 - company-scrollbar-bg => company-tooltip-scrollbar-thumb 4654 - company-scrollbar-fg => company-tooltip-scrollbar-track 4655 4656 ,* Made 'org-column-title' inherit from 'fixed-pitch' when the user 4657 option 'modus-themes-mixed-fonts' is non-nil. This is needed to line 4658 up columns correctly. Thanks to Björn Lindström for the contribution 4659 in merge request 52: 4660 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/52>. 4661 4662 ,* Forced the 'org-colview' faces to use the same height, even when 4663 headings are scaled (see 'modus-themes-headings'). This ensures that 4664 the columns are aligned properly and text fits on the same row. 4665 Thanks to Björn Lindström for the contribution in merge request 53: 4666 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/53>. 4667 4668 ,* Refrained from applying a bold weight to the Org date selection 4669 indicator in the calendar. The use of bold has the potential to create 4670 problems with the alignment of dates for certain typefaces that do not 4671 have a proper bold variant. Also, there is no need for added emphasis 4672 given that we already use a prominent background colour. 4673 4674 ,* Made 'M-x org-table-header-line-mode' or the third-party package 4675 'org-table-sticky-header' use colours that fit better with those of 4676 tables. 4677 4678 ,* Removed explicit styling of the 'magit-branch-current' face because 4679 its definition checks if the ':box' attribute can be set and if not, it 4680 uses ':inverse-video'. Useful for terminal emulators. 4681 4682 ,* Expanded support for the 'mode-line-active' face for Emacs29. The 4683 face upstream basically adds proportionately spaced fonts (the 4684 'variable-pitch' face) to the mode line. The themes can already use 4685 that if the user option 'modus-themes-variable-pitch-ui' is non-nil. 4686 Thanks to Manuel Uberti for the feedback in issue 257: 4687 <https://gitlab.com/protesilaos/modus-themes/-/issues/257>. 4688 4689 ,* Implemented some stylistic refinements for ERC and Rcirc to ensure 4690 theme-wide consistency (e.g. timestamps are a shade of cyan). 4691 4692 ,* Tweaked adoc-mode faces for stylistic theme-wide consistency. 4693 4694 ,* Refashioned all the git faces of Treemacs so that they are more 4695 consistent with other such contexts or uses. The new styles also 4696 conform with the 'modus-themes-deuteranopia' option. 4697 4698 4699 Miscellaneous 4700 ============= 4701 4702 ,* Ended the wanton use of internal functions in places that did not 4703 require them. Instead, the themes define faces that evaluate such 4704 functions once and pass their results to the relevant entries. Cases 4705 include: 4706 4707 - Symlink and/or broken link faces in contexts such as Dired, 4708 Eshell, Helm, Trashed. 4709 4710 - Tabbed interfaces (tab-bar, tab-line, centaur-tabs). 4711 4712 - Verbatim markup or that of inline code in Org, Markdown, Asciidoc, 4713 etc. 4714 4715 - The optional use of 'variable-pitch' for User Interface elements 4716 (see 'modus-themes-variable-pitch-ui'). 4717 4718 ,* Refined the dedicated diff background colours of modus-vivendi that 4719 are used when the user option 'modus-themes-deuteranopia' is non-nil. 4720 The changes improve the distinction between all red and yellow 4721 constructs in contexts where they appear together (e.g. smerge-mode). 4722 Basically, yellows will look more bright, while reds appear as 4723 brown. The corresponding blues are toned down a bit to be consistent 4724 with the other colours. Consequently, the standard shades of green 4725 for added lines (when 'modus-themes-deuteranopia' is nil) are 4726 recalibrated to combine well with all other values. 4727 4728 ,* Made several faces return an 'unspecified' value instead of nil for 4729 their unused attributes under certain circumstances. This is to guard 4730 against third-party code that unconditionally expects a non-nil value. 4731 4732 ,* Omitted {over,under}line attributes from the mode line when the 4733 'padded' property is added to the 'modus-themes-mode-line' user 4734 option. Those are not necessary in that context. Thanks to Illia 4735 Ostapyshyn for the contribution in merge request 54: 4736 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/54> 4737 4738 ,* Rewrote several internal functions in the interest of consistency and 4739 clarity. 4740 4741 ,* Deleted two user options that were long obsolete: (i) 4742 'modus-themes-org-habit' has been superseded by 4743 'modus-themes-org-agenda' since version 1.5.0 of the themes and (ii) 4744 'modus-themes-intense-hl-line' has been replaced by 4745 'modus-themes-hl-line' since version 1.3.0. 4746 4747 ,* Removed parentheses from headings in the manual as they are invalid 4748 characters for some version of Texinfo. See Emacs bug#52126: 4749 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52126>. 4750 4751 ,* Updated all doc strings so that quoted lists yield valid syntax in 4752 Help buffers; syntax that can be directly evaluated (otherwise Emacs 4753 prettifies straight quotes as curly ones, which break the code). 4754 Thanks to Christian Tietze for bringing this issue to my attention: 4755 <https://gitlab.com/protesilaos/modus-themes/-/issues/248#note_753169268>. 4756 4757 ,* Rewrote all sections of the manual to document the current state of 4758 the project as pertains to valid user options, explicitly supported 4759 face groups, and so on. 4760 #+end_src 4761 4762 * 1.7.0 4763 :PROPERTIES: 4764 :CUSTOM_ID: h:22de7065-f54c-4944-b47f-3cc8a30551c8 4765 :END: 4766 4767 #+begin_src text 4768 Modus themes version 1.7.0 4769 4770 By Protesilaos Stavrou <info@protesilaos.com> on 2021-11-18 4771 4772 The present entry records the changes made to the project since the 4773 release of version 1.6.0 on 2021-09-29. There have been more than 60 4774 commits since then. 4775 4776 Every modification pertaining to colour combinations referenced herein 4777 is implemented in accordance with the primary accessibility objective of 4778 the themes for a minimum contrast ratio of 7:1 between background and 4779 foreground values in their given combination (the WCAG AAA standard). 4780 Edits also account for colour-coding that is optimised for the needs of 4781 users with red-green colour deficiency (deuteranopia). 4782 4783 To access the URL of the manual visit this web page: 4784 <https://protesilaos.com/emacs/modus-themes>. Or read it from Emacs by 4785 evaluating this form: 4786 4787 (info "(modus-themes) Top") 4788 4789 The themes are built into Emacs version 28 (next stable release), and 4790 are available on GNU ELPA as well as other archives. This release is 4791 the first one that is included with Emacs 29, or else the 'master' 4792 branch in emacs.git. 4793 4794 4795 Customisation options 4796 ===================== 4797 4798 + The 'modus-themes-no-mixed-fonts' has been deprecated and replaced by 4799 the 'modus-themes-mixed-fonts'. This is a breaking change for users 4800 who want to use "mixed fonts": they must set the new variable to 4801 non-nil. 4802 4803 As the name implies, the new variable changes the meaning of the 4804 feature to make it opt-in by default. This is consistent with the 4805 principle of least surprise, as users may not know why some fonts look 4806 different than others in certain cases. 4807 4808 Thanks to Christian Tietze for clarifying the doc string of this new 4809 user option in merge request 51: 4810 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/51>. 4811 4812 For context, "mixed fonts" refers to a design where spacing-sensitive 4813 constructs, such as code blocks and Org tables, inherit from the 4814 'fixed-pitch' face to remain monospaced (and properly aligned) at all 4815 times. Depending on the user's configurations, the 'fixed-pitch' face 4816 may not use the typeface that the user expects. 4817 4818 The manual provides information on how to set the desired fonts by 4819 editing the 'default', 'fixed-pitch', and 'variable-pitch' faces. 4820 4821 + The new 'modus-themes-mode-line-padding' can be used to control the 4822 apparent padding of the mode line when the user option 4823 'modus-themes-mode-line' includes the 'padded' property. The padding 4824 must be a positive integer (otherwise the code would be needlessly 4825 complex to guard against values that make the mode line look awkward, 4826 like anything lower than -3 or maybe even -2). 4827 4828 Thanks to Guilherme Semente and Manuel Uberti for the feedback in 4829 issue 245: <https://gitlab.com/protesilaos/modus-themes/-/issues/245>. 4830 4831 Note that the out-of-the-box style of the themes has a padding of 1 4832 (technically a ':line-width' of 1 for the ':box' attribute), whereas 4833 the default style of Emacs has it at -1. This is a design choice to 4834 avoid an overlap between the outer boundaries of a font's glyphs and 4835 the borders of the mode line, when using certain common typefaces at 4836 various point sizes. Such an overlap can hinder readability. 4837 4838 The manual contains a new Do-It-Yourself (DIY) section with detailed 4839 code samples on how to apply a negative value. 4840 4841 + The new 'modus-themes-intense-markup' option can be set to non-nil to 4842 make constructs such as inline code and verbatim text more colourful. 4843 This has a general utility, though its consideration was prompted by a 4844 phenomenon reported by Stefan Kangas in issue 238 where the overlay of 4845 the 'hl-line-face' overrides the subtle background these constructs 4846 use and can thus make them virtually indistinguishable from ordinary 4847 text: <https://gitlab.com/protesilaos/modus-themes/-/issues/238>. 4848 4849 Such is the standard behaviour of 'hl-line-mode' and there is nothing 4850 a theme can (or rather "should") do about it. Thanks to Stefan Kangas 4851 for the feedback. 4852 4853 + The 'modus-themes-headings' option can now accept and apply an exact 4854 font weight such as 'semibold' or 'light'. (The list of available 4855 weights is the value of the 'modus-themes--heading-weights' internal 4856 variable.) This supersedes the now-deprecated 'no-bold' property: 4857 'no-bold' is henceforth understood as the presence of a 'regular' 4858 weight. 4859 4860 Recall that this user option is an alist and can be used to target 4861 heading levels individually, which further reinforces the utility of 4862 this new property. 4863 4864 Thanks to Christian Tietze for suggesting this idea in issue 248: 4865 <https://gitlab.com/protesilaos/modus-themes/-/issues/248>. And 4866 thanks to Daniel Mendler for refining its implementation in commit 4867 54bfd62, which was sent as a patch file (yes, we accept those and I 4868 actually prefer them over a web app's UI). 4869 4870 + The 'modus-themes-org-agenda' has seen improvements to its 'event' key 4871 (this is an alist that has multiple keys). It now accepts a 'varied' 4872 property which differentiates between (i) plain timestamp entries and 4873 (ii) entries that are generated from either the diary or a symbolic 4874 expression. The 'varied' property combines with the other available 4875 properties to particularise their effects. Consult the doc string or 4876 the manual for the technicalities. 4877 4878 Thanks to Gustavo Barros for the detailed commentary in issue 241: 4879 <https://gitlab.com/protesilaos/modus-themes/-/issues/241>. 4880 4881 + The 'modus-themes-lang-checkers' now accepts a 'faint' property. This 4882 has the effect of toning down the colours in use. By default, the 4883 only colour is that of the underline, though more can be added by 4884 combining the properties accepted by this user option. Consult its 4885 doc string or the manual for further details. 4886 4887 Thanks to Morgan Smith for suggesting the idea in issue 239: 4888 <https://gitlab.com/protesilaos/modus-themes/-/issues/239>. 4889 4890 4891 Add support for new packages or face groups 4892 =========================================== 4893 4894 + 'company-tooltip-deprecated' face. Thanks to Roman Rudakov for the 4895 feedback in issue 247: <https://gitlab.com/protesilaos/modus-themes/-/issues/247>. 4896 4897 + 'corfu-default' face. Thanks to Daniel Mendler (Corfu's developer) 4898 for the feedback in issue 254: 4899 <https://gitlab.com/protesilaos/modus-themes/-/issues/254>. 4900 4901 + 'image-dired' package (Emacs 29). Thanks to Stefan Kangas for making it 4902 happen in emacs.git and for the feedback in issue 250: 4903 <https://gitlab.com/protesilaos/modus-themes/-/issues/250>. 4904 4905 + 'nano-modeline' package. 4906 4907 + 'vertico-quick' package. Thanks to Nicolas De Jaeghere for the 4908 contribution in merge request 48: 4909 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/51>. 4910 4911 4912 Changes to existing faces or face groups 4913 ======================================== 4914 4915 + Added support for the new Org agenda faces that improve the 4916 contextuality of various views. We implemented those upstream for Org 4917 version 9.5 in close cooperation with Gustavo Barros. Thanks to 4918 Gustavo for the detailed feedback in issue 241: 4919 <https://gitlab.com/protesilaos/modus-themes/-/issues/241>. The 4920 thread about the patch upstream: 4921 <https://list.orgmode.org/87lf7q7gpq.fsf@protesilaos.com/> 4922 4923 + Refined Org agenda date faces in the interest of consistency and in 4924 accordance with the aforementioned change. Thanks again to Gustavo 4925 Barros for the discussion in issue 241. 4926 4927 + Applied the 'shadow' face more consistently across all contexts where 4928 only a subtle foreground value is expected. This design choice makes 4929 it possible for users to manually edit the foreground colour of 4930 'shadow' to something even more subtle than the 'fg-alt' palette 4931 variable we use, which maps to a gray colour (e.g. they could use 4932 "gray50"). 4933 4934 + Implemented a subtle background colour to the 'widget-inactive' face. 4935 This makes it easier to discern inactive buttons, checkboxes, and the 4936 like, in contexts such as the Customize User Interface. Thanks to 4937 Stefan Kangas for the feedback in issue 242: 4938 <https://gitlab.com/protesilaos/modus-themes/-/issues/242>. 4939 4940 + Tweaked 'file-name-shadow' to also use italics (inherit from the 4941 'italic' face) in order to be more easy to distinguish it from 4942 ordinary text in the minibuffer. 4943 4944 Recall that the manual documents the meaning of inheriting from the 4945 'bold' and 'italic' faces instead of hardcoding a bold weight and an 4946 italic slant, respectively. In short: users can change the weight to 4947 what they want (e.g. semibold) and/or use distinct font families. 4948 4949 + Amplified the style of Version Control (VC) warnings and errors to let 4950 them draw more attention to themselves (because these indicators need 4951 to be acted upon). 4952 4953 + Recoloured the 'custom-group-tag' face to make it fit better in its 4954 context and be consistent with the rest of the themes' established 4955 patterns. 4956 4957 + Made marks for selection in Dired, Ibuffer, and related, conform with 4958 the 'modus-themes-success-deuteranopia' option. This means that they 4959 use blue colours when the option is non-nil, instead of their default 4960 shades of green. 4961 4962 + Adjusted the box width of key bindings for Emacs 28 or higher. They 4963 should no longer cause any alignment issues. This style is now used 4964 throughout the themes, including in transient views (e.g. Magit) which 4965 were the exception before. Thanks to Manuel Uberti and Kevin Fleming 4966 for the feedback in issue 232: 4967 <https://gitlab.com/protesilaos/modus-themes/-/issues/232>. 4968 4969 4970 Miscellaneous 4971 ============= 4972 4973 + Wrote a brief description of every user option in the manual. Also 4974 covered its type, as in boolean, alist, et cetera. 4975 4976 + Corrected the mode line border width for one combination of properties 4977 in the 'modus-themes-mode-line' option. This should now have the same 4978 height as all others: 4979 4980 (setq modus-themes-mode-line '(accented borderless)) 4981 4982 + Ensured that mode line attributes would not be set to nil, but kept at 4983 an 'unspecified' value instead, where relevant. This avoids problems 4984 with [faulty] code that unconditionally depends on something that does 4985 not exist, as in the following while ':box' is nil: 4986 4987 (face-attribute 'mode-line :box) 4988 4989 + Expanded, reworded, or otherwise improved the manual, based on the 4990 aforementioned. 4991 4992 Thanks once again to everyone involved! 4993 #+end_src 4994 4995 * 1.6.0 4996 :PROPERTIES: 4997 :CUSTOM_ID: h:e4b9945c-1db8-4626-abc9-372469b19253 4998 :END: 4999 5000 #+begin_src text 5001 Modus themes version 1.6.0 5002 5003 By Protesilaos Stavrou <info@protesilaos.com> on 2021-09-29 5004 5005 This entry records the changes made to the project since the release of 5006 version 1.5.0 on 2021-07-15. There have been around 70 commits since 5007 then. 5008 5009 Every colour-related modification referenced herein is always 5010 implemented in accordance with the primary accessibility objective of 5011 the themes for a minimum contrast ratio of 7:1 between background and 5012 foreground values in their given combination (the WCAG AAA standard). 5013 Such edits also account for colour-coding that is optimised for the 5014 needs of users with red-green colour deficiency (deuteranopia or 5015 variants). 5016 5017 Here is the URL of the manual: <https://protesilaos.com/emacs/modus-themes>. 5018 Or read it from Emacs by evaluating this form: 5019 5020 (info "(modus-themes) Top") 5021 5022 The themes are built into Emacs version 28 (current development target), 5023 and are available on GNU ELPA as well as other archives. This release 5024 is the final one for the emacs-28 branch, as that gets cut as the next 5025 stable release of GNU Emacs. Future releases will target Emacs 29 once 5026 that becomes the new 'master' branch. 5027 5028 5029 Customisation options 5030 ===================== 5031 5032 [ Themes need to be reloaded for changes to take effect. ] 5033 5034 + Introduced the new 'modus-themes-tabs-accented' boolean option. When 5035 set to non-nil, it renders the background of all tab interfaces in a 5036 shade of blue. Those interfaces are tab-bar (built-in), tab-line 5037 (built-in), and Centaur tabs. 5038 5039 - The background "accented" colour is the same as the one used for 5040 mode lines when 'modus-themes-mode-line' is configured accordingly. 5041 5042 + Tweaked the 'modus-themes-mode-line' to accept a 'padded' symbol as 5043 part of the list of properties it can read. This will increase the 5044 spacing around the mode lines' text, making the line taller overall 5045 but also more spacious. 5046 5047 Thanks to Manuel Uberti for making the proposal and providing feedback 5048 in issue 228: <https://gitlab.com/protesilaos/modus-themes/-/issues/228>. 5049 5050 + Added the 'modus-themes-scale-small' which complements the existing 5051 scale values with one that is meant to be smaller than the base 5052 height. This option is reserved for special cases and is currently 5053 only used as an opt-in feature in the Org agenda. 5054 5055 + Expanded the 'modus-themes-org-agenda' with more parameters: 5056 5057 - The current date can now also be underlined. 5058 - Date headings can be scaled/enlarged in size. 5059 - Events, like those of the Diary or sexp entries, can be customised. 5060 5061 Consult the manual or the variable's doc string for the details. 5062 5063 + Removed the obsoleted aliases 'modus-themes-slanted-constructs' and 5064 'modus-themes-scale-5'. Those are superseded by the more 5065 appropriately named 'modus-themes-italic-constructs' and 5066 'modus-themes-scale-title'. 5067 5068 Thanks to Nicolas De Jaeghere for the patch in merge request 47: 5069 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/47>. 5070 5071 5072 Faces and face groups 5073 ===================== 5074 5075 + Make the 'prodigy' faces for red/green/yellow inherit from the faces 5076 'error'/'success'/'warning', respectively. This is done to (i) avoid 5077 duplication and (ii) ensure that the green/success colour coding is 5078 consistent with the goal of the themes to empower users with red-green 5079 colour deficiency. The boolean option that changes all such greens to 5080 shades of blue is 'modus-themes-success-deuteranopia'. 5081 5082 + Assigned the ':extend' attribute to the 'org-code' face. This is 5083 necessary when the Org source contains lines that start with a colon 5084 sign. Those are interpreted as code blocks. For example: 5085 5086 : #+BEGIN_SRC emacs-lisp 5087 : (defun in-interval (bounds el) 5088 : (and (>= el (car bounds)) (<= el (cadr bounds)))) 5089 : #+END_SRC 5090 5091 With the ':extend' in place, the background stretches to the edge of 5092 the window, thus giving those lines a uniform rectangular shape. For 5093 inline uses of 'org-code', the background should remain limited to the 5094 span of the text. 5095 5096 + Broadened support for 'marginalia' faces in two phases. 5097 5098 - The first pertained to the file permissions that are shown when 5099 completing against file paths. Their style is similar to what 5100 'dired+' or the 'direfl' packages provide, however we have taken 5101 care to optimise the interface for the purposes of completion 5102 UIs---where things can look like Dired, we make them alike, but 5103 where they must differ, we differentiate the designs accordingly. 5104 There can be no compromises or arbitrary constraints. 5105 5106 Also read: <https://github.com/minad/marginalia/pull/91>. 5107 5108 - The second batch covered all sorts of extra classes that provide 5109 granular control over the appearance of Marginalia instances. 5110 Refinements also had to be made to already-supported faces for the 5111 sake of achieving consistency across the various Marginalia 5112 interfaces. 5113 5114 Also read: <https://github.com/minad/marginalia/pull/92>. 5115 5116 + Refined 'diredfl' and 'dired+' faces. For the various "priv" faces, 5117 the intent is to increase the difference in hueness between adjacent 5118 file permissions (the changes are minor, but they do change the 5119 overall result). Numbers are toned down so that they do not clash 5120 with dates. The file suffix no longer uses cyan to stand out more in 5121 detailed views. 5122 5123 + Made 'icomplete-selected-match' (Emacs28) more legible by aligning its 5124 presentation with metaphors that are estaslished across the 5125 modus-themes. Thanks to Kévin Le Gouguec (peniblec) for noting the 5126 inconsistency with the new face upstream and for writing the patch for 5127 it in merge request 50: 5128 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/50>. 5129 Also thanks to Manuel Uberti for confirming that things would look 5130 consistent in the comments' section of that merge request. 5131 5132 + Fixed faulty inheritance for the 'web-mode-keyword-face'. It should 5133 now properly copy the attributes of 'font-lock-keyword-face'. 5134 5135 + Made inheritance of the new 'help-key-binding' (Emacs28 key) the 5136 default for all faces that need to style key bindings. 5137 5138 In Emacs 28 all key bindings are automatically displayed with the face 5139 'help-key-binding' which uses some new face attributes to draw a 5140 cleaner box around it. Given that the themes must work with earlier 5141 versions of Emacs, we cannot inherit it unconditionally so we added 5142 the relevant conditionality. It is nice to offer this feature to 5143 those who use the themes on Emacs 28. Older versions retain the 5144 previous style of a blue colour coupled with a bold weight. 5145 5146 The exception to this rule is the transient.el faces (this is the 5147 pop-up window used by Magit, among others---transient.el is now built 5148 into Emacs). The box effect creates unpredictable misalignments, so 5149 we default to the old key binding style for those. 5150 5151 Thanks to Manuel Uberti and Kevin Fleming for their feedback in issue 5152 232: <https://gitlab.com/protesilaos/modus-themes/-/issues/232>. 5153 5154 + Added support for the new 'notmuch-jump-key' face. I contributed this 5155 face in commits c37c9912, 5cc106b0 to the Notmuch git repo: 5156 <https://git.notmuchmail.org/git/notmuch>. 5157 5158 + Updated the 'bookmark-face' (Emacs28) as it has been changed upstream 5159 to be a fringe indicator instead of an in-buffer, line-wide background 5160 highlight. 5161 5162 + Aligned Ediff faces with other 'modus-themes-diffs' styles. Before we 5163 would differentiate a "focus state", though that is now considered 5164 surplus to requirements. The notion of a "focus state" only make 5165 sense in Magit which applies variegated colour-coding to diff hunks 5166 based on their state. Whereas non-active Ediff changes are grayed 5167 out, so there is no need for further colour-coding nuances. The most 5168 noticeable change is with: 5169 5170 (setq modus-themes-diffs 'bg-only) 5171 5172 As noted in the commit message of 64c74ae (from 2021-09-04): 5173 5174 If users think this change is for the worse, we can always define a 5175 helper function like this: 5176 5177 (defun modus-themes--ediff-style (bgonly default) 5178 "Diff style for Ediff. 5179 BGONLY and DEFAULT depend on the value of `modus-themes-diffs'. 5180 The former is more subtle." 5181 (if (eq modus-themes-diffs 'bg-only) 5182 (list bgonly) 5183 (list default))) 5184 5185 And apply it thus: 5186 5187 `(ediff-current-diff-A ((,class :inherit ,@(modus-themes--ediff-style 5188 'modus-themes-diff-removed 5189 'modus-themes-diff-focus-removed)))) 5190 5191 No feedback was received towards that end in about a month, so we 5192 consider the change to be acceptable, without prejudice to the 5193 possibility of future updates. 5194 5195 + Unified the styles of 'org-agenda-calendar-sexp', 'org-agenda-diary', 5196 and 'org-agenda-calendar-event'. This is not a user-facing change but 5197 an internal refactoring to avoid repetition. It also makes things 5198 easier for the implementation of the 'modus-themes-org-agenda' (as 5199 mentioned above). 5200 5201 + Ensured that the 'bookmark-menu-bookmark' face inherits from the 5202 'bold' face. By default it hardcodes the bold weight, whereas we 5203 instruct it to inherit the 'bold' face. A user can thus change the 5204 ':weight' of that face to whatever they want, like semibold, 5205 extrabold, etc. We do this throughout the themes for bold and 5206 italics---consider it a "hidden feature" of sorts. Check the manual 5207 for more on the matter: 5208 5209 (info "(modus-themes) Configure bold and italic faces (DIY)") 5210 5211 + Provided support for tab-bar groups (Emacs28). Specifically the faces 5212 'tab-bar-tab-group-current' and 'tab-bar-tab-group-inactive'. 5213 5214 Thanks to Adam Porter (alphapapa) for the feedback in issue 8 over at 5215 the Github mirror: <https://github.com/protesilaos/modus-themes/issues/8>. 5216 5217 + Decoupled the 'stripes' face from that of 'hl-line-face'. This is 5218 because the stripes are not meant to change depending on the value of 5219 the user option 'modus-themes-hl-line'. 5220 5221 + Revised the red shade of "flagged" entries in mu4e and notmuch. Those 5222 are now consistent with Gnus. The shade of red that was used before 5223 was closer to the orange side of the spectrum whereas the current has 5224 hints of blue (a cherry colour) and thus combines better with the cyan 5225 and blue that prevail in those interfaces. These are fine margins, 5226 though the effect is noticeable regardless. 5227 5228 + Configured the new 'ansi-color' faces (Emacs28) which are used by 5229 shells and terminals (among others). Thanks to Manuel Uberti for 5230 reporting the changes to upstream Emacs in issue 236: 5231 <https://gitlab.com/protesilaos/modus-themes/-/issues/236>. 5232 5233 + Expanded support for EMMS faces, pertaining to its browser views. 5234 Thanks to Feng Shu (tumashu) for bringing those to my attention in 5235 issue 11 over at the Github mirror: 5236 <https://github.com/protesilaos/modus-themes/issues/11>. 5237 5238 + Styled the new 'tab-line-tab-modified' face (Emacs28). It should now 5239 use a faint red colour to denote changes to the underlying file. 5240 Thanks to Adam Porter (alphapapa) for bringing it to my attention in 5241 issue 12 over at the Github mirror: 5242 <https://github.com/protesilaos/modus-themes/issues/12>. 5243 5244 + Configured the single face that the 'cursor-flash' package has to 5245 offer. Thanks to Manuel Uberti for the feedback in issue 231: 5246 <https://gitlab.com/protesilaos/modus-themes/-/issues/231>. 5247 5248 + Included 'elpher' in the list of supported packages by means of 5249 covering the heading faces it implements. 5250 5251 + Recalibrated certain dedicated colours for inactive tabs and tweaked 5252 tab faces to (i) marginally improve the default aesthetic and (ii) 5253 harmonise it with the style of 'modus-themes-tabs-accented'. 5254 5255 + Removed the foreground attribute from all markup faces that are meant 5256 to denote emphasis in italics. That is because such faces are 5257 typically composed with others, so we do not wish to inadvertently 5258 override any other colour that would otherwise have taken effect. 5259 5260 + Wrote the faces for upstream Org that improve the contextuality of 5261 various agenda views (included in version 9.5). This was done in 5262 close collaboration with Gustavo Barros who offered detailed feedback 5263 in issue 208 (which also led to the creation and eventual expansion of 5264 the 'modus-themes-org-agenda' user option): 5265 <https://gitlab.com/protesilaos/modus-themes/-/issues/208>. 5266 5267 Four new faces improve certain styles and offer more flexibility for 5268 some Org agenda views: 'org-agenda-date-weekend-today', 5269 'org-imminent-deadline', 'org-agenda-structure-secondary', 5270 'org-agenda-structure-filter'. They inherit from existing faces in 5271 order to remain backward-compatible. 5272 5273 Quoting from <https://list.orgmode.org/87lf7q7gpq.fsf@protesilaos.com/>: 5274 5275 + The 'org-imminent-deadline' is useful to disambiguate generic 5276 warnings from deadlines. For example, a warning could be 5277 rendered in a yellow colored text and have a bold weight, 5278 whereas a deadline might be red and styled with italics. 5279 5280 + The 'org-agenda-structure-filter' applies to all tag/term 5281 filters in agenda views that search for keywords or patterns. 5282 It is designed to inherit from 'org-agenda-structure' in 5283 addition to the 'org-warning' face that was present before (and 5284 removes the generic 'warning' face from one place). This offers 5285 the benefit of consistency, as, say, an increase in font height 5286 or a change in font family in 'org-agenda-structure' will 5287 propagate to the filter as well. The whole header line thus 5288 looks part of a singular design. 5289 5290 + The 'org-agenda-structure-secondary' complements the above for 5291 those same views where a description follows the header. For 5292 instance, the tags view provides information to "Press N r" to 5293 filter by a numbered tag. Themes/users may prefer to 5294 disambiguate this line from the header above it, such as by 5295 using a less intense color or by reducing its height relative to 5296 the 'org-agenda-structure'. 5297 5298 + The 'org-agenda-date-weekend-today' provides the option to 5299 differentiate the current date on a weekend from the current 5300 date on weekdays. 5301 5302 Other patches I have made to, inter alia, emacs.git and org.git with 5303 regard to faces are documented in previous change log entries. 5304 5305 5306 Documentation 5307 ============= 5308 5309 + Removed references to old versions of the themes from before their 5310 refactoring in version 1.0.0. Those old packages no longer exist. 5311 Users must install the 'modus-themes' and then load either of 5312 'modus-operandi' or 'modus-vivendi'. 5313 5314 + Included various extensions of the Vertico package in the list of 5315 indirectly supported packages. Those define faces which either 5316 inherit from basic ones that we already support or use colours that 5317 are consistent with our accessibility target. 5318 5319 + Referenced 'side-hustle', 'tide', 'bufler' as an indirectly supported 5320 packages for the same reasons. 5321 5322 + Simplified time-stamp local variables that are used in modus-themes.el 5323 to show the time the file was edited. We apply 'time-stamp-pattern' 5324 instead of setting multiple time-stamp variables. Thanks to Stephen 5325 Gildea for the patch, which was sent to me via email (yes, you can 5326 always do that). 5327 5328 + Updated the manual's "acknowledgements" section to name all new 5329 contributors to code/ideas/feedback. 5330 5331 + Furnished information on how to configure the 'highlight-parentheses' 5332 package and extend its faces for use with the themes. The entry 5333 provides a complete Elisp implementation. 5334 5335 + Improved the code samples for the prism.el setup that users may wish 5336 to set up by themselves. The new lists of colours work better when 5337 Prism's colouration is limited to a small set of hues. 5338 5339 + Deleted trailing whitespace in the manual which had adverse effects 5340 when trying to compile the modus-themes.org over at emacs.git. Thanks 5341 to Philip Kaludercic for the patch in merge request 49: 5342 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/49>. 5343 5344 Thanks again to everyone involved. Looking forward to see the Modus 5345 themes, version 1.6.0, as part of the next stable release of Emacs. 5346 #+end_src 5347 5348 * 1.5.0 5349 :PROPERTIES: 5350 :CUSTOM_ID: h:05fc633d-69d6-4b5e-aade-1f9e4ba30ed3 5351 :END: 5352 5353 #+begin_src text 5354 Modus themes version 1.5.0 5355 5356 By Protesilaos Stavrou <info@protesilaos.com> on 2021-07-15 5357 5358 This entry outlines the set of changes made to the project since the 5359 release of version 1.4.0 on 2021-05-25. There have been over 130 5360 commits since then. 5361 5362 Every colour-related modification referenced herein is always 5363 implemented in accordance with the primary accessibility objective of 5364 the themes for a minimum contrast ratio of 7:1 between background and 5365 foreground values in their given combination (the WCAG AAA standard). 5366 Such edits also account for colour-coding that is optimised for the 5367 needs of users with red-green colour deficiency (deuteranopia or 5368 variants). 5369 5370 Here is the URL of the manual: <https://protesilaos.com/emacs/modus-themes>. 5371 Or read it from Emacs by evaluating this form: 5372 5373 (info "(modus-themes) Top") 5374 5375 The themes are built into Emacs version 28 (current development target), 5376 and are available on GNU ELPA as well as other archives. 5377 5378 5379 Customisation options 5380 ===================== 5381 5382 Overview of new style of sets of properties 5383 ------------------------------------------- 5384 5385 Several variables now accept a list of symbols as a value. Those 5386 represent properties, which can be combined with each other to realise 5387 the possible styles. The idea was to simplify their specification in 5388 order to make them easier to both maintain and extend. Thanks to Philip 5389 Kaludercic for introducing this concept in issue 210: 5390 <https://gitlab.com/protesilaos/modus-themes/-/issues/210>. 5391 5392 The variables are: 5393 5394 + 'modus-themes-prompts' by Philip Kaludercic in merge request 43: 5395 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/43> 5396 5397 + 'modus-themes-mode-line' by Philip Kaludercic in merge request 40: 5398 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/40>. 5399 5400 + 'modus-themes-lang-checkers' by Philip Kaludercic in merge request 46: 5401 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/46> 5402 5403 + 'modus-themes-org-agenda' 5404 + 'modus-themes-links' 5405 + 'modus-themes-headings' 5406 + 'modus-themes-hl-line' 5407 + 'modus-themes-paren-match' 5408 + 'modus-themes-region' 5409 + 'modus-themes-syntax' 5410 5411 Take 'modus-themes-syntax' as an example. Up until version 1.4.0, it 5412 would only accept a symbol, signifying a predefined style. So we had 5413 the possible value 'faint' and another 'faint-yellow-comments'. To make 5414 a third variant of the "faint" aesthetic, such as by combining it with 5415 the "alt syntax" and/or "green strings", we would need to write new 5416 presets in the form of 'faint-green-strings', 'faint-alt-syntax', 5417 'faint-alt-syntax-green-strings', 'faint-green-strings-yellow-comments', 5418 'faint-alt-syntax-green-strings-yellow-comments'. That would have been 5419 inefficient, hence why it was not done. 5420 5421 With the new approach of defining a list of properties, those 5422 combinations are all possible. Such as: 5423 5424 (setq modus-themes-syntax '(faint alt-syntax)) 5425 5426 (setq modus-themes-syntax '(yellow-comments alt-syntax green-strings)) 5427 5428 The order in which the properties are set is not significant. 5429 5430 The doc string of each of the aforementioned variables, or the 5431 corresponding entry in the manual, provides guidance on how to configure 5432 things. The old forms will continue to work for the time being, though 5433 they are considered deprecated and will stop being supported at a future 5434 date. 5435 5436 5437 Changes in stylistic variants for variables with sets of properties 5438 ------------------------------------------------------------------- 5439 5440 + The meaning of the "alt syntax" style in 'modus-themes-syntax' has 5441 been redefined. In the past, it used to have green-coloured strings 5442 and doc strings. Those are now red. Some other changes have been 5443 implemented to make the overall looks more consistent. Users who 5444 liked the old style can retain it by passing this list of properties: 5445 5446 (alt-syntax green-strings) 5447 5448 New styles for the "faint" aesthetic are possible, here shown as lists 5449 of properties: 5450 5451 (faint green-strings) 5452 (faint alt-syntax) 5453 (faint alt-syntax green-strings) 5454 5455 To each of those the 'yellow-comments' property can be added as well. 5456 5457 Consult the doc string or the manual for the technicalities and code 5458 samples. 5459 5460 + The 'modus-themes-hl-line' no longer has styles that include only an 5461 underline. Those proved to be problematic under certain circumstances 5462 and were thus removed. 5463 5464 Minor changes have been implemented to make the following combination 5465 of properties more consistent, by colourising the underline: 5466 5467 (accented intense underline) 5468 5469 + The 'modus-themes-paren-match' now has styles that include an 5470 'underline' property. Those extend the old options, such as: 5471 5472 (bold intense underline) 5473 5474 + The 'modus-themes-headings' have an improved set of styles for the "no 5475 text color" aesthetic. Those involve the 'monochrome' property, which 5476 can now yield results that include a background (whereas before it was 5477 just colourless text for the headings, optionally without a bold 5478 weight). As this is an alist, here is an example (always check the 5479 docs for fully fledged code samples): 5480 5481 (setq modus-themes-headings 5482 '((1 . (background overline)) 5483 (2 . (overline background rainbow)) 5484 (t . (monochrome no-bold background)))) 5485 5486 To allow a heading level N to retain its original style, a 't' value 5487 can be passed. In the previous version of the themes, it was possible 5488 to use 'nil' for the same purpose, though that is no longer valid. In 5489 those cases, the fallback value of the alist will be used instead, 5490 such as what is noted above: 5491 5492 (t . (monochrome no-bold background)) 5493 5494 + The 'modus-themes-links' provide several new possible styles, due to 5495 an expanded set of properties that includes, among others, 'bold', 5496 'italic', and 'background'. The documentation covers the details. 5497 5498 + The 'modus-themes-lang-checkers' can now attain a style that uses a 5499 prominently coloured background in addition to what was available 5500 before as a subtle background and the other variants. 5501 5502 5503 New variables 5504 ------------- 5505 5506 + The 'modus-themes-org-agenda' provides the means to refashion the 5507 entirety of the Org agenda buffer. The value it accepts is an alist, 5508 with some keys expecting a symbol and others a list of properties. 5509 The minutia are covered in its doc string. A possible configuration 5510 can look like this: 5511 5512 (setq modus-themes-org-agenda 5513 '((header-block . (variable-pitch scale-title)) 5514 (header-date . (grayscale workaholic bold-today)) 5515 (scheduled . uniform) 5516 (habit . traffic-light))) 5517 5518 'modus-themes-org-agenda' supersedes the old variable that was specific 5519 to the Org habit graph: 'modus-themes-org-habit'. There now is a 5520 'habit' key which accepts the same values as before, plus a new style 5521 that is optimised for users with red-green colour deficiency: 5522 'traffic-light-deuteranopia'. Please consult the doc string of 5523 'modus-themes-org-agenda' or the relevant entry to the manual. 5524 5525 Thanks to Gustavo Barros for contributing to the creation of this 5526 variable as well as to all other changes in the relevant faces that 5527 were done in the interest of usability. A full report about 5528 'modus-themes-org-agenda' with screen shots is available here: 5529 <https://protesilaos.com/codelog/2021-06-02-modus-themes-org-agenda/>. 5530 5531 A patch has been sent to upstream Org, with its review pending, which 5532 improves upon some of the areas we had identified: 5533 <https://lists.gnu.org/archive/html/emacs-orgmode/2021-06/msg00092.html>. 5534 5535 + The 'modus-themes-inhibit-reload' controls a new behaviour of 5536 automatically reloading the active theme when an option is set via the 5537 Custom interfaces or with 'customize-set-variable'. To opt-in to this 5538 feature, set the variable to a 'nil' value. 5539 5540 Thanks to Philip Kaludercic for implementing this in merge request 40: 5541 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/40>. 5542 5543 In the development phase of this option, a bug was identified 5544 pertaining to recursion, as reported by Gustavo Barros in issue 213: 5545 <https://gitlab.com/protesilaos/modus-themes/-/issues/213>. Changes 5546 have been made to remove that possibility, as found in merge request 5547 45: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/45>. 5548 5549 A thread was started on the emacs-devel mailing list to inquire upon 5550 the technicalities of this option, but it did not gain any traction: 5551 <https://lists.gnu.org/archive/html/emacs-devel/2021-06/msg00828.html>. 5552 5553 As such, we have decided to take our chances by pressing on with this 5554 feature. Users who are interested in it are encouraged to give it a 5555 try and report any possible complications. Issue 213 remains open. 5556 5557 + The 'modus-themes-italic-constructs' is the new name of the variable 5558 'modus-themes-slanted-constructs'. The term "slant" was considered 5559 too vague or technical and some users could have missed the meaning of 5560 this option. 5561 5562 + The 'modus-themes-scale-5' is renamed to 'modus-themes-scale-title' to 5563 better convey its utility. 5564 5565 5566 Changes to the manual 5567 ===================== 5568 5569 + Rewrote or introduced the documentation for all the customisation 5570 options mentioned above. Also updated relevant code samples, such as 5571 in the manual's introduction to the customisation options. Evaluate 5572 this form for an annotated code overview: 5573 5574 (info "(modus-themes) Customization Options") 5575 5576 + Rephrased a reference to "gamma ray values" as "gamma values". Thanks 5577 to Anders Johansson for the contribution in merge request 42: 5578 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/42>. 5579 5580 + Removed the Org macro that would insert the build date in the manual's 5581 introduction. This was required to make the file reproducible, 5582 otherwise it would keep changing each time a new version of Emacs was 5583 built. Refer to Emacs bug#48661 by Glenn Morris: 5584 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=48661>. 5585 5586 + Included note on tweaking the key hints that the Avy package produces. 5587 This is in response to issue 215 by Rudolf Adamkovič: 5588 <https://gitlab.com/protesilaos/modus-themes/-/issues/215>. Thanks to 5589 Nicolas De Jaeghere for providing the text. 5590 5591 + Wrote a note on how to control the underlines that are generated in 5592 compilation-mode buffers and related. It is about configuring the 5593 variable 'compilation-message-face'. 5594 5595 + Documented how to configure the colours that are applied to the names 5596 of the days in the 'M-x calendar' interface. The relevant variable is 5597 'calendar-weekend-days'. 5598 5599 + Elaborated on a "do it yourself" (DIY) guide on how to benefit from 5600 the hidden feature of the themes about how they handle the bold weight 5601 and the italic slant. In short, we do not hardcode values and thus 5602 make it easy for users to specify the particularities of what it means 5603 for a face to have a 'bold' or 'italic' attribute. 5604 5605 5606 Faces and face groups 5607 ===================== 5608 5609 New entries 5610 ----------- 5611 5612 Newly supported packages: 5613 5614 + 'ledger-mode'. Thanks to Pengji Zhang for the feedback in issue 202: 5615 <https://gitlab.com/protesilaos/modus-themes/-/issues/202>. 5616 5617 + 'gotest'. Thanks to Jerry Zhang for the feedback in issue 226: 5618 <https://gitlab.com/protesilaos/modus-themes/-/issues/226>. 5619 5620 + 'css-mode' 5621 5622 New faces for already supported groups: 5623 5624 + 'shr-h1', 'shr-h2', 'shr-h3', 'shr-h4', 'shr-h5', 'shr-h6' of the 5625 shr.el library (simple HTML renderer, as experienced in, for example, 5626 EWW). Those are available for Emacs28, with a patch by me: 5627 <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=49433> 5628 5629 + 'apropos-button' as a generic face that fontifies faces in apropos 5630 buffers. Available for Emacs28, with a patch by me: 5631 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49162>. 5632 5633 + 'selectrum-mouse-highlight'. This makes the mouse hover effect for 5634 selectrum look the same as in most other contexts. Thanks to okamsn 5635 for the feedback in issue 203: 5636 <https://gitlab.com/protesilaos/modus-themes/-/issues/203>. 5637 5638 5639 Review of existing entries 5640 -------------------------- 5641 5642 + Added an ':extend' property to 'next-error' face. This face is used 5643 for pulse effects. It is good to have them extend to the edge of the 5644 window, so that they are easier to spot. Thanks to Gustavo Barros for 5645 the feedback in issue 200, which is about pulse.el: 5646 <https://gitlab.com/protesilaos/modus-themes/-/issues/200>. 5647 5648 + Tweaked the various Apropos faces. The idea was to remove the colour 5649 from the pseudo headings so that we would not get an exaggerated 5650 result of too much variety in the buffer (e.g. that of 'M-x apropos'). 5651 The individual buttons retain their style as links, meaning that they 5652 are governed by the variable 'modus-themes-links'. 5653 5654 + Revised 'whitespace-line' face to make it look like a warning, as it 5655 ought to be. Thanks to Pengji Zhang for the feedback in issue 204: 5656 <https://gitlab.com/protesilaos/modus-themes/-/issues/204>. 5657 5658 + Reworked the colour-coding of the Hydra and Transient packages. These 5659 are meant to tone down some excesses with the standard red and to 5660 adapt other colours to it. Thanks to Gustavo Barros for providing 5661 suggestions and helping me tweak those in issue 206: 5662 <https://gitlab.com/protesilaos/modus-themes/-/issues/206>. 5663 5664 + Recoloured 'transient-argument' to improve its uniqueness in its 5665 context and to better comply with the expectation of hydra-style 5666 colour coding, as noted right above. 5667 5668 + Made the 'org-agenda-done' face conform with the customisation option 5669 'modus-themes-success-deuteranopia'. This means that it will be 5670 coloured in blue instead of green when the option is set to a non-nil 5671 value. 5672 5673 + Grayed out the foreground of the Org block delimiter lines on the 5674 premise that any extra colouration was not needed, given the presence 5675 of a gray background and the overall markup of the block. 5676 5677 + Toned down the colouration of the 'org-code' face, so that it is 5678 consistent with 'org-verbatim' as well as the colours used in opening 5679 and closing lines of blocks. Thanks to Gustavo Barros for suggesting 5680 this change in issue 206, though it went through a couple of reviews: 5681 <https://gitlab.com/protesilaos/modus-themes/-/issues/206>. 5682 5683 + Simplified the inheritance of the 'fixed-pitch' face, which is used 5684 for internal purposes to ensure alignment of elements in buffers that 5685 must cope with mixed font configurations, such as an org-mode file 5686 with 'M-x variable-pitch-font' enabled. 5687 5688 [ Recall that the option 'modus-themes-no-mixed-fonts' can disable 5689 this feature. Also note that the 'mixed-fonts' package, or 5690 equivalent, is not needed while using the Modus themes (though there 5691 is nothing wrong with having them together). ] 5692 5693 + Reduced the overall intensity of 'org-mode-line-clock-overrun'. 5694 Thanks to Gustavo Barros for the feedback in issue 208: 5695 <https://gitlab.com/protesilaos/modus-themes/-/issues/208>. 5696 5697 + Simplified or otherwise tweaked several Org agenda faces to render 5698 possible the new 'modus-themes-org-agenda' variable, as documented 5699 above. Thanks to Gustavo Barros for the feedback in issue 208: 5700 <https://gitlab.com/protesilaos/modus-themes/-/issues/208>. 5701 5702 + Increased ever so slightly the foreground colour of the 'highlight' 5703 face. This can help improve the perception of highlights, such as 5704 upon hovering over a link with the mouse. Thanks to Rudolf Adamkovič 5705 for reporting the potential problem in issue 216: 5706 <https://gitlab.com/protesilaos/modus-themes/-/issues/216>. 5707 5708 + Prevented the override of the 'diff-context' face when users assign a 5709 'bg-only' value to the 'modus-themes-diffs' variable. This makes it 5710 consistent with the intent of this style, which is to work with a 5711 non-nil value for 'diff-font-lock-syntax' (basically to allow the 5712 usual colour highlights of the underlying code syntax in diff 5713 buffers). 5714 5715 + Ensured consistency of all prompt-related faces by introducing a new 5716 face, 'modus-themes-prompt', that is inherited by all others (all 5717 prompt styles are controlled by the variable 'modus-themes-prompts'). 5718 This was originally implemented with the 'comint-highlight-prompt' 5719 face, though that could potentially lead to undefined faces if the 5720 comint library was not loaded. Whereas the 'modus-themes-prompt' 5721 guarantees that we pass a known face at all times. Thanks to Philip 5722 Kaludercic for bringing this potential bug to my attention in a 5723 comment to merge request 43: 5724 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/43#note_615224855>. 5725 5726 + Removed the background colour from the 'widget-inactive' face. It 5727 would create problems in some cases, such as in Custom buffers for 5728 multiple choice options. 5729 5730 + Refined 'calendar-weekend-header' and 'calendar-weekday-header' to 5731 emulate the design of physical calendars and remain truthful to the 5732 expectations set by the default configuration of the calendar.el 5733 library. Weekends now use a faint red, while weekdays are rendered in 5734 the same subtle gray they had before. The underlying principle is to 5735 make weekends convey a subtle warning to the effect that "this is not 5736 a day for work" (notwithstanding precarious economic realities). As 5737 noted above, there is an entry in the manual on how to make all days 5738 look the same, be it gray or faint red. Evaluate this form: 5739 5740 (info "(modus-themes) Note on calendarel weekday and weekend colors") 5741 5742 5743 Request for feedback on a potential version 2.0.0 of the Modus themes 5744 ===================================================================== 5745 5746 While we maintain a cautious stance towards preserving the default 5747 styles, there are some cases where we might be forced to introduce 5748 backward-incompatible changes. 5749 5750 Three such cases that can benefit from user feedback are: 5751 5752 + Issue 196 on 'modus-themes-no-mixed-fonts' 5753 <https://gitlab.com/protesilaos/modus-themes/-/issues/196>. 5754 5755 + Issue 198 on 'modus-themes-hl-line' 5756 <https://gitlab.com/protesilaos/modus-themes/-/issues/198> 5757 5758 [ Note that 'modus-themes-hl-line now accepts a list of properties as 5759 described in the opening sections of this entry. ] 5760 5761 + Issue 218 on 'modus-themes-diffs' 5762 <https://gitlab.com/protesilaos/modus-themes/-/issues/218>. 5763 5764 5765 Miscellaneous 5766 ============= 5767 5768 + Recalibrated the value of the colour 'bg-hl-line-intense' in the 5769 palette 'modus-themes-vivendi-colors'. The change should be 5770 practically indecipherable, though it slightly improves things in 5771 certain contexts. 5772 5773 + Refined the intensity of the three main yellow colours in 5774 'modus-themes-vivendi-colors'. 5775 5776 + Introduced a new 'modus-themes-faces' group so that those are 5777 decoupled from the customisation options in the various Custom 5778 buffers. Thanks to Philip Kaludercic for the patch in merge request 5779 39: <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/39>. 5780 5781 + Updated the manual's "Acknowledgements" section to include all new 5782 users who contributed to the project. 5783 5784 Thanks again to everyone involved! 5785 5786 5787 #+end_src 5788 5789 * 1.4.0 5790 :PROPERTIES: 5791 :CUSTOM_ID: h:4c643e3c-5284-4fab-97e8-217bc1c02f5d 5792 :END: 5793 5794 #+begin_src text 5795 Modus themes version 1.4.0 5796 5797 By Protesilaos Stavrou <info@protesilaos.com> on 2021-05-25 5798 5799 This entry records the changes made to the project since the release of 5800 version 1.3.0 on 2021-04-17. There have been around 100 commits in the 5801 meantime, as is the norm. 5802 5803 If you are coming from older versions, please consult the change log 5804 entry for version 1.0.0 with regard to the breaking changes that were 5805 introduced. 5806 5807 Every colour-related modification is always done in accordance with the 5808 overarching accessibility objective of the themes for a minimum contrast 5809 ratio of 7:1 between background and foreground values in their given 5810 combination (the WCAG AAA standard). 5811 5812 URL of the official manual: <https://protesilaos.com/emacs/modus-themes>. Or 5813 read it with Emacs' Info reader by evaluating this form: 5814 5815 (info "(modus-themes) Top") 5816 5817 Remember that the themes are built into Emacs version 28 (current 5818 development target), and are available on GNU ELPA, as well as other 5819 archives. 5820 5821 5822 Customisations variables 5823 ------------------------ 5824 5825 + Redefined the style of 'fg-only' that 'modus-themes-diffs' accepts, so 5826 that it no longer uses a red-green colour coding, but applies a 5827 red-blue distinction instead. The symbol 'fg-only' is a deprecated 5828 alias for the more descriptive 'fg-only-deuteranopia'. 5829 5830 This is done because green text on a light background is one of the 5831 worst combinations for the purposes of legibility, as it does not 5832 stand out in its context and thus forces undesirable compromises. 5833 Whereas red and blue work well in this case, while making the style 5834 accessible to users with red-green colour deficiency (deuteranopia). 5835 To avoid inconsistencies between Modus Operandi and Modus Vivendi, we 5836 replace green with blue in both themes. A full report is available in 5837 issue 183 which was created on April 21, 2021: 5838 <https://gitlab.com/protesilaos/modus-themes/-/issues/183>. 5839 5840 + Introduced the boolean 'modus-themes-success-deuteranopia' which 5841 replaces all instances of green with blue in contexts where a 5842 red-green colour coding is in effect (e.g. Org TODO vs DONE keywords, 5843 isearch current match...). 5844 5845 + Implemented 'modus-themes-mail-citations' to control the colouration 5846 of cited text in email-related buffers, such as Gnus or message.el. 5847 It accepts values nil, 'faint', and 'monochrome'. By default (the nil 5848 value) the text of citations cycles through blue, green, red, yellow 5849 depending on the level of depth. 5850 5851 + Expanded the set of options for 'modus-themes-mode-line' to encompass 5852 the values 'borderless-accented', 'borderless-accented-3d', and 5853 'borderless-accented-moody'. Those are variations of existing styles. 5854 The complete list: 5855 5856 - nil (default) 5857 - 3d 5858 - moody 5859 - borderless 5860 - borderless-3d 5861 - borderless-moody 5862 - accented 5863 - accented-3d 5864 - accented-moody 5865 - borderless-accented 5866 - borderless-accented-3d 5867 - borderless-accented-moody 5868 5869 + Renamed the non-nil values that 'modus-themes-org-blocks' accepts from 5870 'grayscale', 'rainbow' to 'gray-background' and 'tinted-background', 5871 respectively. The new symbols better describe their effect on Org 5872 source blocks, namely, that they affect the background of the block 5873 rather than the foreground. The old symbols will still work but are 5874 considered deprecated aliases of the newer ones. 5875 5876 + Altered the intensity of the 'modus-themes-hl-line' option 5877 'accented-background' to a more noticeable shade of cyan/teal. The 5878 old style was too subtle to have the desired effect. The value 5879 'underline-accented' is not affected by this change, as it still uses 5880 the same subtle background it did before in combination with a more 5881 pronounced underline colour. 5882 5883 + Deleted all deprecation warnings that concerned the transition from 5884 version 0.13.0 of the themes to 1.0.0. Those had been in effect for 5885 several months, spanning four tagged releases. 5886 5887 5888 Faces or face groups 5889 -------------------- 5890 5891 + Reconsidered the use of colour in all email-related citation faces to 5892 avoid exaggerations and reduce complexity. Colour values have been 5893 tweaked to tone down their overall intensity, while the number of 5894 colours has been reduced to four. Gnus and Mu4e have faces for more 5895 levels of citation depth, though those will simply repeat the 5896 four-colour cycle. 5897 5898 + Made the 'message-mml' face look consistent with the rest of the 5899 buffer while composing an email by changing its foreground colour from 5900 a yellow to a cyan variant. 5901 5902 + Refined several faces in the Notmuch group in the interest of harmony: 5903 5904 - Individual message headers in 'notmuch-show-mode' use bold text in 5905 addition to their existing subtle background to better stand out in 5906 their context. The face is 'notmuch-message-summary-face'. 5907 5908 - Tags are no longer set unconditionally to a bold typographic weight. 5909 They become such for unread threads in 'notmuch-search-mode' 5910 buffers, as well as for headers of 'notmuch-show-mode'. 5911 5912 - Removal and addition of tags is now denoted by a strike-through and 5913 an underline effect, respectively, whereas before they both used 5914 underlines with the only difference being their colour. 5915 5916 - The subject line in 'notmuch-search-mode' buffers uses the main 5917 foreground instead of a dimmed one. The field of matching authors 5918 has a tweaked foreground to keep the tabular view easy to read. 5919 5920 - All cryptography-related faces are simplified to not show a coloured 5921 background but only use a foreground colour instead. 5922 5923 + Removed direct support for 'counsel-notmuch' as it already inherits 5924 from the relevant notmuch faces. The package is thus considered 5925 indirectly supported. 5926 5927 + Refrained from setting a background to the 'csv-separator-face' as it 5928 would inevitably colourise the negative space in the tabular view 5929 created by 'csv-align-mode'. A red text colour is used instead, even 5930 though this is not common practice: it is easier to spot for small, 5931 single characters, such as a comma or a semicolon that is meant to 5932 have a special meaning. Thanks to Kevin Fleming for reporting the 5933 problem and for offering feedback on the choice of colour in issue 5934 194: <https://gitlab.com/protesilaos/modus-themes/-/issues/194>. 5935 5936 + Distinguished between ordinary links and widget buttons by removing 5937 the underline from the latter (the 'widget-button' face) and altering 5938 the shade of its foreground colour. Such widgets are used in Emacs' 5939 Custom interfaces and can also be found in the default Notmuch "hello" 5940 buffer that runs 'notmuch-hello-mode'. 5941 5942 + Tweaked the Ediff current faces to be consistent with 'diff-mode' and 5943 related. In practice, this only applies when 'modus-themes-diffs' is 5944 set to a value of 'fg-only-deuteranopia', as it adds a dim background 5945 to the current diff hunk. All other styles of 'modus-themes-diffs' 5946 look the same as before while using Ediff. 5947 5948 + Simplified the faces of 'corfu' to match the current state of the 5949 upstream project. Thanks to Daniel Mendler (its developer) for 5950 reporting this in issue 184: 5951 <https://gitlab.com/protesilaos/modus-themes/-/issues/184>. 5952 5953 + Refined all Eshell faces so that the output of 'ls' is consistent with 5954 the overall aesthetic of the themes. Also made 'eshell-prompt' 5955 inherit from 'comint-highlight-prompt' to look the same as other such 5956 prompts (all are configurable by 'modus-themes-prompts'). 5957 5958 + Revised 'eshell-prompt-extras' and 'eshell-git-prompt' to use colours 5959 and typographic weight that better match the style of the various 5960 configurations they offer. 5961 5962 + Simplified 'eshell-syntax-highlighting' to inherit from the standard 5963 Eshell faces, where appropriate. 5964 5965 + Adjusted the colour of 'centaur-tabs-active-bar-face' and removed the 5966 bespoke 'fg-tab-accent' colour from 'modus-themes-operandi-colors' and 5967 'modus-themes-vivendi-colors' that was only used by it (and which 5968 should have never been introduced to begin with). 5969 5970 + Updated the 'tab-bar-groups' faces to match changes upstream. Thanks 5971 to Fritz Grabo (its developer) for the patch in merge request 35: 5972 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/35>. 5973 5974 + Changed the Ibuffer title and group faces to better differentiate 5975 between group titles and special or non-file-visiting buffers. Thanks 5976 to Nicolas De Jaeghere for the patch in merge request 37: 5977 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/37>. 5978 5979 + Ensured that all faces that denote a "success" state, or which are 5980 expected to be coloured in green in a red-green binary, can use an 5981 appropriate blue colour (or colour combination that involves blue) 5982 instead when 'modus-themes-success-deuteranopia' is set to a non-nil 5983 value. 5984 5985 + Added support for the new 'bookmark-face' in Emacs version 28. This 5986 means that the built-in bookmark.el library is directly supported by 5987 the themes. This face can be disabled by setting 'bookmark-fontify' 5988 to nil. Thanks to Mark Barton for reporting the presence of this new 5989 face and for providing feedback on its style in issue 189: 5990 <https://gitlab.com/protesilaos/modus-themes/-/issues/189>. 5991 5992 + Aligned 'hes-mode' ('highlight-escape-sequences') with the standard 5993 font-lock faces for regexp grouping. This means that it conforms with 5994 changes to the 'modus-themes-syntax' variable. 5995 5996 + Reconfigured the 'org-quote' face to adapt its style depending on the 5997 value of 'modus-themes-org-blocks'. The default is a subtle blue/cold 5998 foreground colour against the main background. When a value of 5999 'gray-background' is assigned to 'modus-themes-org-blocks', the text's 6000 colour becomes that of the main foreground in order to maintain a good 6001 level of legibility. Thanks to Rudolf Adamkovič for the feedback in 6002 issue 190: <https://gitlab.com/protesilaos/modus-themes/-/issues/190>. 6003 6004 + Refashioned the 'show-paren-match-expression' face to make it apply a 6005 bespoke background colour and not override the expression's foreground 6006 colours. This face is used by 'show-paren-mode' when the 6007 customisation variable 'show-paren-style' is set to the 'expression' 6008 value. Thanks to Rudolf Adamkovič for the feedback in issue 191: 6009 <https://gitlab.com/protesilaos/modus-themes/-/issues/191>. 6010 6011 + Made headings level 8 use a fine shade of magenta by default instead 6012 of gray (notwithstanding user changes to 'modus-themes-headings'). 6013 This should have a negligible difference in Org or Outline buffers, 6014 but is more noticeable when editing Elisp in Emacs28 while also using 6015 'outline-minor-mode' and with 'outline-minor-mode-highlight' set to 6016 'override'. That is because several top-level forms use that heading 6017 level with those configurations. 6018 6019 6020 Documentation (the manual) 6021 -------------------------- 6022 6023 + Incorporated a sample configuration block with all customisation 6024 variables and with comment annotations of their available options, in 6025 an attempt to make it easier for users to discover what the themes 6026 provide. 6027 6028 + Replaced all instances of "modeline" with "mode line" for consistency 6029 with the Emacs style. Thanks to Rudolf Adamkovič for the patch that 6030 started this process in merge request 33: 6031 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/33>. 6032 6033 + Wrote note on setting mode line faces that indicate the state of 6034 'god-mode'. Thanks to Rudolf Adamkovič for the feedback in issue 187: 6035 <https://gitlab.com/protesilaos/modus-themes/-/issues/187>. Also 6036 thanks to Rudolf for updating the applicable hook in merge request 34: 6037 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/34>. 6038 6039 + Listed 'org-mode' variables that affect fontification in blocks: 6040 'org-src-fontify-natively', 'org-fontify-whole-block-delimiter-line', 6041 and 'org-fontify-quote-and-verse-blocks'. This complements the 6042 already documented variables 'org-fontify-whole-heading-line' and 6043 'org-fontify-done-headline' that pertain to headings. 6044 6045 + Included note on fontifying inline Latex expressions in Org buffers. 6046 Thanks to Rudolf Adamkovič for the feedback in issue 190: 6047 <https://gitlab.com/protesilaos/modus-themes/-/issues/190>. 6048 6049 + Elaborated on the use of 'face-remap-add-relative' by means of sample 6050 code that cycles through arbitrary colours for the 'region' face. 6051 This is filed under the "Do It Yourself" (DIY) section. 6052 6053 + Provided a DIY method for adapting the fontification of Org source 6054 block delimiter lines to the value of 'modus-themes-org-blocks'. 6055 6056 + Expanded the DIY entry on overriding the saturation of the active 6057 theme's colours with a method that combines the programmatic approach 6058 with manual overrides. The user can thus specify the colour values 6059 they want to override and let the rest be handled by Elisp. 6060 6061 + Introduced a section with answers to Frequently Asked Questions (FAQ) 6062 about the design of the themes as well as recommendations on how to 6063 ensure optimal reading conditions or start thinking about them. The 6064 questions are: 6065 6066 - Is the contrast ratio about adjacent colors? 6067 - What does it mean to avoid exaggerations? 6068 - Why are colors mostly variants of blue, magenta, cyan? 6069 - What is the best setup for legibility? 6070 6071 6072 Miscellaneous 6073 ------------- 6074 6075 + Removed superfluous code from internal functions and adapted their 6076 indentation to make them easier to read. 6077 6078 + Recalibrated some values in 'modus-themes-vivendi-colors' to ensure 6079 consistency in luminance with other colours that are used in their 6080 context. Those are subtle changes that can only be discerned in 6081 side-by-side comparisons of the before and after states. Thanks to 6082 André Alexandre Gomes for the feedback in issue 193: 6083 <https://gitlab.com/protesilaos/modus-themes/-/issues/193>. 6084 6085 + Changed the saturation and hueness of the bespoke 'fg-comment-yellow' 6086 in 'modus-themes-operandi-colors' and 'modus-themes-vivendi-colors' to 6087 better contrast with its context, while still keeping its luminance 6088 consistent with its role as a colour for comments in code. This is 6089 used when 'modus-themes-syntax' is configured appropriately (read its 6090 doc string or consult the manual). 6091 6092 + Attempted to add explicit support for the faces of the built-in 6093 pulse.el library, but ultimately opted against them as the doc string 6094 of 'pulse-highlight-face' advises against customising it, even though 6095 it is not clear from the source code in emacs.git what the problem 6096 could be. We shall reconsider this case for the next release cycle. 6097 Thanks to Gustavo Barros for the feedback on several aspects of this 6098 topic in issues 185 and 200: 6099 6100 - <https://gitlab.com/protesilaos/modus-themes/-/issues/185> 6101 - <https://gitlab.com/protesilaos/modus-themes/-/issues/200> 6102 6103 + Took the feedback of John Haman in issue 199 as a reminder to complete 6104 the set of possible values for the 'modus-themes-mode-line' variable: 6105 <https://gitlab.com/protesilaos/modus-themes/-/issues/199>. 6106 #+end_src 6107 6108 * 1.3.0 6109 :PROPERTIES: 6110 :CUSTOM_ID: h:5063c0c5-832e-4577-936e-d602b07d6d79 6111 :END: 6112 6113 #+begin_src text 6114 Modus themes version 1.3.0 6115 6116 By Protesilaos Stavrou <info@protesilaos.com> on 2021-04-17 6117 6118 This entry records the changes introduced to the project since the 6119 publication of version 1.2.0 (2021-03-04). There have been around 100 6120 commits in the meantime, as is the norm with all releases hitherto. 6121 6122 Every colour-related modification documented herein conforms with the 6123 overarching accessibility objective of the themes for a minimum contrast 6124 ratio of 7:1 between background and foreground values in their given 6125 combination (the WCAG AAA standard). 6126 6127 As the official manual is referenced several times throughout this log, 6128 make sure to store its URL: <https://protesilaos.com/emacs/modus-themes>. Or 6129 read it from Emacs' Info reader by evaluating this form: 6130 6131 (info "(modus-themes) Top") 6132 6133 If you are coming from older versions, please consult the change log 6134 entry for version 1.0.0 with regard to the breaking changes that were 6135 introduced. 6136 6137 Remember that the themes are built into Emacs28, and are available on 6138 GNU ELPA, as well as other archives. 6139 6140 6141 Customisation options 6142 --------------------- 6143 6144 + The old 'modus-themes-intense-hl-line' boolean variable has been 6145 replaced by 'modus-themes-hl-line', which provides several options for 6146 how to style the current line of 'hl-line-mode'. To retain the old 6147 effect, one must do this: 6148 6149 ;; Replacement for (setq modus-themes-intense-hl-line t) 6150 (setq modus-themes-hl-line 'intense-background) 6151 6152 The list of possible values: 6153 6154 1. nil (default) 6155 2. intense-background 6156 3. accented-background 6157 4. underline-neutral 6158 5. underline-accented 6159 6. underline-only-neutral 6160 7. underline-only-accented 6161 6162 The doc string of 'modus-themes-hl-line' as well as the manual 6163 describe the specifics. Thanks to Manuel Uberti for the feedback in 6164 commit b020592: 6165 <https://gitlab.com/protesilaos/modus-themes/-/commit/b020592e1a96d6e00d7d03faf9c293ec6081d49c>. 6166 6167 + The 'modus-themes-mode-line' variable now accepts three new "accented" 6168 styles that complement the existing set: 6169 6170 1. nil (default) 6171 2. 3d 6172 3. moody 6173 4. borderless 6174 5. borderless-3d 6175 6. borderless-moody 6176 7. accented 6177 8. accented-3d 6178 9. accented-moody 6179 6180 + The 'modus-themes-region' is extended with two new options of an 6181 "accent" background: 6182 6183 1. nil (default) 6184 2. no-extend 6185 3. bg-only 6186 4. bg-only-no-extend 6187 5. accent 6188 6. accent-no-extend 6189 6190 + The default value of 'modus-themes-headings' for per-level styles can 6191 now be set to nil. This fixes an inconsistency between the fallback 6192 value, which accepted nil, and the per-level styles which did not. 6193 Thanks to Mauro Aranda for reporting this in issue 163: 6194 <https://gitlab.com/protesilaos/modus-themes/-/issues/163>. 6195 6196 Please read the manual for the specifics of this variable, as it is an 6197 alist that accepts several possible combinations. 6198 6199 6200 Updates to the manual 6201 --------------------- 6202 6203 + Rewrote the sections that cover the aforementioned customisation 6204 options. 6205 6206 - For 'modus-themes-mode-line', we had to revise the recommendation 6207 for setting 'face-near-same-color-threshold' to 45000. That value 6208 is appropriate for the 'moody' and 'borderless-moody' options. 6209 Whereas for 'accented-moody' the number should be raised to 70000. 6210 Thanks to Nicolas De Jaeghere for providing this piece of 6211 information: 6212 <https://gitlab.com/protesilaos/modus-themes/-/commit/ab6ba698269f012ec880b690282264649bfb3b0d#note_551342198> 6213 6214 + Rephrased the GNU Free Documentation License quote to match the style 6215 of other manuals that are also built into Emacs. 6216 6217 + Documented 'org-mode' variables that affect the looks of various 6218 fontification styles. 6219 6220 + Simplified the 'kbd' macro that is declared in modus-themes.org to 6221 allow GNU ELPA's build system to parse the file for Emacs 26. 6222 6223 + Documented existing support for 'tab-bar-mode' and 'tab-line-mode'. 6224 6225 + Wrote a note on how to configure the 'dimmer.el' library by Neil 6226 Okamoto, in order to guarantee consistent results with the themes. 6227 The key is to use the RGB colour space instead of CIELAB. 6228 6229 + Included note on shr.el fonts and how those are used by EWW and 6230 Elfeed. 6231 6232 + Added a "Do-It-Yourself" (DIY) section on how to remap buffer-local 6233 faces. 6234 6235 + Detailed a DIY method to make the buffer-local backdrop of a pdf-tools 6236 page use a distinct colour than the default white for Modus Operandi. 6237 Extended the same principle to Modus Vivendi and described how to 6238 adapt to theme changes (such as via 'modus-themes-toggle'). Thanks to 6239 Utkarsh Singh for providing feedback on this topic in issue 175: 6240 <https://gitlab.com/protesilaos/modus-themes/-/issues/175>. 6241 6242 + Elaborated on DIY techniques to programmatically override the 6243 saturation of all colours specified by the active Modus theme. Thanks 6244 to user pRot0ta1p for the feedback in issue 166: 6245 <https://gitlab.com/protesilaos/modus-themes/-/issues/166>. 6246 6247 6248 Support for packages 6249 -------------------- 6250 6251 These are added to the already comprehensive list of explicitly 6252 supported packages: 6253 6254 + corfu 6255 + embark 6256 6257 + pandoc-mode. Thanks to Farasha Euker for the feedback in issue 171: 6258 <https://gitlab.com/protesilaos/modus-themes/-/issues/171>. 6259 6260 + tab-bar-groups 6261 + telega 6262 + vertico 6263 6264 Also added support for the 'help-key-binding' face which is part of 6265 Emacs 28. 6266 6267 6268 Changes to already supported faces or face groups 6269 ------------------------------------------------- 6270 6271 + Renamed all internal faces that the themes defined from 6272 "modus-theme-*" to "modus-themes-*". 6273 6274 + Refashioned all Ediff faces in the process of a major review of this 6275 tools' overall design. The manifold changes are: 6276 6277 - All inactive diffs respect the underlying fontification 6278 (e.g. programming syntax highlighting). Before they would override 6279 it with a gray foreground. 6280 6281 - All inactive diffs have been toned down, as their background is a 6282 finer shade of gray than the prominent one that was used before. 6283 6284 - There no longer is a visual distinction between even and odd 6285 inactive diffs (by means of different shades of gray). We are of 6286 the opinion that such subtleties, whose utility is marginal at best, 6287 have no place in themes that are designed for accessibility. 6288 6289 - All bespoke gray colour combinations that were only intended for 6290 those inactive diffs have thus been removed from each theme's 6291 palette. 6292 6293 - Active diffs follow the same style as diff-mode, to ensure 6294 theme-wide consistency (all diff styles are controlled by the 6295 variable 'modus-themes-diffs'). 6296 6297 This topic was discussed at length (with screenshots) in issue 169: 6298 <https://gitlab.com/protesilaos/modus-themes/-/issues/169>. Thanks to 6299 peniblec and Nicolas De Jaeghere for their feedback. 6300 6301 + Made 'smerge-markers' and 'vdiff-closed-fold-face' look like the 6302 headings in 'diff-mode' in the interest of consistency, especially 6303 while configuring the 'modus-themes-diffs' variable. 6304 6305 + Ensured consistency between all faces that pertain to key bindings in 6306 contexts where the hint to the key is active, in that pressing the key 6307 performs the action (e.g. Magit's transient buffers, which-key,...). 6308 The 'help-key-binding' for Emacs 28 is not included in this group, 6309 because it applies in cases where the keys are not active, such as in 6310 Help buffers. 6311 6312 + Refined 'epa-validity-disabled' and 'epa-validity-high' faces. The 6313 former no longer uses a background, as that was considered an 6314 exaggeration. While the latter is cast in a cyan hue instead of green 6315 for greater clarity (this relates to the general push to optimise for 6316 red-green colour deficiency, which means to only use green where it is 6317 absolutely necessary and, in such cases, to provide for a blue-ish 6318 alternative, as with the 'deuteranopia' value that can be assigned to 6319 'modus-themes-diffs'). 6320 6321 + Reworked 'ace-window', 'avy', and 'magit-blame' faces to ensure that 6322 their overlays do not inherit the face properties of underlying text, 6323 such as a different font family or height. Thanks to Nicolas De 6324 Jaeghere for the multiple merge requests and the concomitant feedback: 6325 6326 - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/27>. 6327 - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/29>. 6328 - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/30>. 6329 - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/31>. 6330 - <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/32>. 6331 6332 Also thanks to Damien Cassou for reporting an intermediate problem 6333 with 'avy' in issue 177; a problem that was eventually addressed by 6334 Nicolas De Jaeghere in merge request 31 (cited above): 6335 <https://gitlab.com/protesilaos/modus-themes/-/issues/177>. 6336 6337 + Optimised the colour combinations used by 'avy' to improve the 6338 distinction between consecutive characters. 6339 6340 + Reduced the brightness of EWW certificate faces, as they would attract 6341 disproportionate attention to themselves. 6342 6343 + Reworked all EWW text field and button faces to look more like what 6344 they are supposed to. 6345 6346 + Removed the slant and distinct foreground from the 'org-quote' face, 6347 as they would interfere with emphasis within the quote block. Thanks 6348 to Farasha Euker for the feedback in issue 171: 6349 <https://gitlab.com/protesilaos/modus-themes/-/issues/171>. 6350 6351 + Reduced the intensity in colouration of 'org-code' and 'org-macro' in 6352 order to avoid exaggerations and prevent their compounding effect in 6353 technical documents that include a high concentration of those faces. 6354 They still retain their overall character and continue to look like 6355 variants of 'org-verbatim'. 6356 6357 + Extended support for Selectrum's new 'selectrum-quick-keys-highlight' 6358 and 'selectrum-quick-keys-match'. 6359 6360 + Adjusted a few bongo faces for improved consistency and a more 6361 pleasant result overall. Quote from commit 07224cda08: 6362 6363 Refine bongo faces for consistency 6364 6365 The previous design was meant to keep the track fields distinct 6366 from each other. However the use of yellow was not good 6367 aesthetically: it does not fit with the rest of the theme. 6368 6369 Upon further experimentation, I realised that the album field 6370 (yellow) is only present when the artist and title fields are also 6371 available: first is the title, then the artist, and finally the 6372 album. This is true even with 'bongo-join-inserted-tracks' set to 6373 a non-nil value. So changing the face from yellow to a neutral 6374 value is safe. 6375 6376 The other two faces are adapted to look better in the new context. 6377 6378 + Made more command prompt faces respond to changes in the variable 6379 'modus-themes-prompts'. This concerns faces from the groups cider, 6380 circe, erc, indium, rcirc. 6381 6382 + Refashioned typescript faces, making them more prominent by default, 6383 while also exposing them to the value of 'modus-themes-syntax'. 6384 6385 + Revised the style of 'info-colors-ref-item-command'. This makes 6386 commands look the same as functions, which is technically correct. It 6387 also predicates the exact style on the value of the variable 6388 'modus-themes-syntax'. 6389 6390 + Made all enh-ruby-mode faces adapt to 'modus-themes-syntax'. Same for 6391 julia. 6392 6393 + Reconfigured all ztree faces for stylistic consistency. The 6394 'ztreep-diff-model-add-face' now responds to the 'deuteranopia' value 6395 that can be passed to 'modus-themes-diffs'. 6396 6397 + Appended the ':extend t' attribute to 'gnus-summary-cancelled' and 6398 'gnus-summary-selected'. These are only noticeable on Emacs 28 6399 following commit 88409b21c2 in emacs.git. 6400 6401 + Tweaked all faces of 'highlight-changes-mode' to better deliver on the 6402 intent of that mode. 6403 6404 + Opted to unconditionally render all 'dired-async' faces in a bold 6405 typographic weight, instead of basing them on a non-nil value for 6406 'modus-themes-bold-constructs'. Also changed 'dired-async-message' to 6407 a blue foreground, which further improves the themes' performance for 6408 red-green colour deficiency. 6409 6410 + Adjusted the colours of some 'notmuch-crypto-*' faces to better convey 6411 their meaning. 6412 6413 + Removed remaining conditional logic for underline styles in some 6414 spell- and linter- related faces to ensure that all such cases are 6415 controlled by the variable 'modus-themes-lang-checkers' (building on 6416 work that had been done in the past). 6417 6418 + Stopped changing 'keycast-key' to match the modeline style, as that 6419 diluted the meaning of the variable 'modus-themes-mode-line'. 6420 6421 + Tweaked calendar and diary faces for stylistic effect, except for the 6422 'diary' face which has been converted from a green to a blue variant 6423 for the purposes of coping with cases of red-green colour deficiency. 6424 6425 6426 Miscellaneous 6427 ------------- 6428 6429 + Clarified the changes in the backward-incompatible transition from 6430 version 0.13.0 of the themes to >= 1.0.0. Thanks to Damien Cassou for 6431 reporting the absence of easy-to-find information in issue 174: 6432 <https://gitlab.com/protesilaos/modus-themes/-/issues/174>. 6433 6434 + There were three point releases after 1.2.0 which refined certain 6435 aspects of the themes' packaging so that they could work both as 6436 built-in themes for Emacs as well as in package format via the likes 6437 of GNU ELPA. Those issues were eventually resolved by Basil 6438 L. Contovounesios: 6439 6440 - Issue 162: <https://gitlab.com/protesilaos/modus-themes/-/issues/162>. 6441 - Emacs bug#45068: <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45068#218>. 6442 6443 + Rewrote the 'modus-themes-headings' variable's declaration to improve 6444 its presentation in Custom interfaces. Thanks to Mauro Aranda for 6445 submitting the patch for commit 1c60927ebd. 6446 6447 + Applied the ':format' keyword to all 'defcustom' forms, based on the 6448 aforementioned patch. This should make all options look better in the 6449 various Custom interfaces. Thanks to Mauro Aranda for the feedback in 6450 issue 163: <https://gitlab.com/protesilaos/modus-themes/-/issues/163>. 6451 6452 + Refined the colour values 'bg-alt' and 'bg-dim' in 'modus-vivendi' to 6453 improve their instantiation on Textual User Interfaces. In 6454 particular, recalibrated the blue channel of light so that when the 6455 TUI cannot render the colour directly, it defaults to a gray value 6456 instead of a dark blue. 6457 6458 + Added a "Last-Modified" meta header to modus-themes.el, with gets 6459 updated automatically and uses a timestamp. This helps users who 6460 track the themes' git repo directly. Thanks to Togan Muftuoglu for 6461 the feedback in issue 168: 6462 <https://gitlab.com/protesilaos/modus-themes/-/issues/168>. 6463 6464 + Expanded the palette of each theme with accent values that are 6465 reserved for use in the tab-bar. Those are used by the newly 6466 supported 'tab-bar-groups' package. 6467 6468 + Recalibrated a few colour combinations to improve their resulting 6469 legibility. The changes should not be noticeable to the untrained 6470 eye. Interested parties can consult commit 349ea4a943. 6471 6472 + Tweaked the hueness of the 'yellow-active' colour of 'modus-operandi'. 6473 6474 Thanks once again to everyone involved! 6475 #+end_src 6476 6477 * 1.2.0 6478 :PROPERTIES: 6479 :CUSTOM_ID: h:751083a7-3514-40f5-9928-17a11de5b439 6480 :END: 6481 6482 #+begin_src text 6483 Modus themes version 1.2.0 6484 6485 By Protesilaos Stavrou <info@protesilaos.com> on 2021-03-04 6486 6487 This entry records the changes introduced to the project since the 6488 publication of version 1.1.0 (2021-01-24). There have been close to 100 6489 commits in the meantime. 6490 6491 Every colour-related modification documented herein conforms with the 6492 overarching accessibility objective of the themes for a minimum contrast 6493 ratio of 7:1 between background and foreground values in their given 6494 combination (the WCAG AAA standard). 6495 6496 As the official manual is referenced several times throughout this log, 6497 make sure to store its URL: <https://protesilaos.com/emacs/modus-themes>. Or 6498 read it from Emacs' Info reader by evaluating this form: 6499 6500 (info "(modus-themes) Top") 6501 6502 If you are coming from older versions, please consult the change log 6503 entry for version 1.0.0 with regard to the breaking changes that were 6504 introduced. 6505 6506 6507 Prior notice: Upgrading the themes in Emacs28 and GNU ELPA 6508 ---------------------------------------------------------- 6509 6510 Emacs28, the current development target, now includes a 'require-theme' 6511 function. It is a prerequisite to upgrading the Modus themes to their 6512 current version. Prior to the definition of that function, the themes 6513 could not transition from their 0.13.0 version to >=1.0.0. Special 6514 thanks to Basil L. Contovounesios for making it happen, as well Mauro 6515 Aranda and Eli Zaretskii for their feedback and support. 6516 6517 Expect the Modus themes in upstream Emacs to be updated shortly after 6518 the publication of this document. 6519 6520 GNU ELPA currently ships version 0.12.0 of the two standalone packages 6521 'modus-operandi-theme' and 'modus-vivendi-theme'. This will change in 6522 the immediate future, as a new 'modus-themes' package will succeed them. 6523 That new package will be built directly from emacs.git, as it must now 6524 become a ':core' entity instead of being listed as an ':external' one. 6525 6526 Again, expect a patch to be applied to elpa.git shortly after this 6527 document goes live. 6528 6529 6530 Customisation options 6531 --------------------- 6532 6533 [ All variables and their values are documented in the themes' manual. 6534 The default value is always nil. ] 6535 6536 + The new boolean 'modus-themes-subtle-line-numbers' variable will make 6537 the effect of 'display-line-numbers-mode' more subtle when set to a 6538 non-nil value. It removes the underlying background of the unfocused 6539 lines while toning down their foreground. 6540 6541 + The 'modus-themes-diffs' variable now accepts a 'deuteranopia' value. 6542 This optimises for red-green colour deficiency in all modes that show 6543 diffs (diff-mode, ediff, Magit...). In practice, all instances of 6544 green are replaced with appropriate blue hues. For more on the 6545 matter, read the report which also includes pictures: 6546 <https://protesilaos.com/codelog/2021-02-25-modus-themes-diffs-deuteranopia/>. 6547 6548 + The 'modus-themes-syntax' variable now reads 'faint-yellow-comments' 6549 as a valid value. This has the same scope as the existing 'faint' 6550 value with the added effect of assigning a yellow tint to comments: it 6551 tones down the saturation of colours that apply to code syntax 6552 (standard font-lock faces and others inheriting from them). 6553 6554 + The 'modus-themes-links' variable is expanded to accept the new value 6555 of 'neutral-underline-only': it removes the foreground from the link 6556 and draws a neutral gray underline below it. 6557 6558 6559 Refinements to existing packages or face groups 6560 ----------------------------------------------- 6561 6562 + Refashioned all faces that pertain to emails, including Gnus, Mu4e, 6563 Notmuch, and the standard 'message.el' library. This concerns the 6564 colours that apply to the message header keys and their values, as 6565 well as quote levels. 6566 6567 - Introduced more contrasting hues for headings and made more 6568 considerate use of bold typography. The new colour combinations are 6569 better suited for the task of delivering a sense of structure; 6570 structure that is at once effective and subtle. 6571 6572 - Applied less intense colours throughout all quotation levels. 6573 6574 - Revised the sequencing of hues in quotation levels to allow distinct 6575 levels to stand out more without relying on excessive saturation. 6576 6577 - Aligned the styling of Notmuch header dates with their counterparts 6578 in other similar contexts, in pursuit of theme-wide consistency. 6579 6580 + Rewrote the faces of EBDB to achieve a better sense of structure. 6581 6582 + Refined the colour combinations of change-log and log-view buffers to 6583 make it easier to discern distinct elements. 6584 6585 + Tweaked the colours of certain Elfeed constructs to improve the 6586 overall presentation of its search buffers. 6587 6588 + Changed the colour combinations of 'M-x re-builder' to amplify the 6589 distinction between the matching regexp groups while still reducing 6590 their overall intensity. 6591 6592 + Reconfigured the 'diff-changed' face to always extend its background 6593 to the edge of the window. Such "changed" lines are visible in 6594 'diff-mode' buffers when the command 'diff-unified->context' is 6595 invoked. 6596 6597 + Tweaked the colour combinations of ancillary faces in diff buffers 6598 when the variable 'modus-themes-diffs' is set to the value 'fg-only'. 6599 In particular: 6600 6601 - Removed the subtle background from the diff hunk headings and changed 6602 their colour to ensure good visibility---guarantees a sense of 6603 structure. 6604 6605 - Made the context lines inherit the default foreground colour (pure 6606 black/white), so that it contrasts better with red, green, and 6607 yellow text. 6608 6609 - Applied an accented foreground to the diff header. This is to 6610 ensure that it is not mistaken for a diff hunk's context. 6611 6612 All these guarantee that the foreground-only highlights in line-wise 6613 differences draw more attention to themselves. 6614 6615 + Aligned all the standard hi-* faces with their default aesthetics. 6616 Those are used by commands such as 'highlight-symbol-at-point'. 6617 Thanks to Philip K. for the valuable feedback in issue 157: 6618 <https://gitlab.com/protesilaos/modus-themes/-/issues/157>. 6619 6620 + Removed obsolete Consult faces and added new ones, so as to remain in 6621 sync with the latest developments in that project. Thanks to Daniel 6622 Mendler (Consult's maintainer) for reporting the inconsistency in 6623 issue 155: <https://gitlab.com/protesilaos/modus-themes/-/issues/155>. 6624 6625 - 'consult-preview-line' now retains fontification on the current 6626 line, instead of applying its own foreground. 6627 6628 - 'consult-narrow-indicator' is refashioned to be colour-coded in a 6629 consistent way with 'consult-async-split', as both denote the 6630 delineation of a given scope. 6631 6632 - 'consult-imenu-prefix' contrasts better with text on its current 6633 line, while it adapts to possible customisations performed on the 6634 Consult front. 6635 6636 + Expanded the coverage of 'marginalia' faces to two include 6637 'marginalia-char' and 'marginalia-type'. This is done in the interest 6638 of internal consistency between the elements of this set, as their 6639 defaults were also accessible (they inherit from standard faces that 6640 we already support). 6641 6642 + Opted to render the Notmuch logo in a neutral gray backdrop. This was 6643 deemed necessary as the logo is an immutable image file that consists 6644 of black and white strokes. Black and white are the main background 6645 values of 'modus-vivendi' and 'modus-operandi' respectively, which 6646 could lead to confusion. The neutral gray ensures that the logo is 6647 visible at all times. Thanks to Utkarsh Singh for the feedback in 6648 issue 122: <https://gitlab.com/protesilaos/modus-themes/-/issues/122>. 6649 6650 + Refined the dedicated colour values used for diff hunk headings, as 6651 seen in diff-mode buffers or Magit. The new colours yield text that 6652 is easier to read by slightly toning down the combined intensity of 6653 background+foreground. 6654 6655 + Removed the subtle background of 'diff-header' and 'diff-file-header'. 6656 The header's foreground and textual representation suffice to render 6657 it distinct in its context. 6658 6659 + Tweaked 'org-agenda-structure' and 'org-scheduled' to enhance the 6660 usability of Org Agenda buffers. 6661 6662 - Made 'org-agenda-structure' use the largest possible height that we 6663 expose to users: 'modus-themes-scale-5'. 6664 6665 - Re-calibrated the hueness of 'org-scheduled' and amplified its 6666 saturation, in order to better convey the meaning of a scheduled 6667 task. 6668 6669 Thanks to Morgan Smith for the valuable feedback in issue 153: 6670 <https://gitlab.com/protesilaos/modus-themes/-/issues/153>. 6671 6672 + Tweaked the faces of the 'bongo' package to enhance the 6673 distinctiveness of the constructs they style. 6674 6675 + Adjusted the overall aesthetic of calendar faces in the interest of 6676 theme-wide consistency. 6677 6678 + Aligned the visual metaphors of 'org-code' with those of 'org-macro' 6679 and 'org-verbatim', by ensuring that a subtle background is present 6680 behind the affected text, while the foreground conforms with the norms 6681 of the 'modus-themes-no-mixed-fonts' customisation option. 6682 6683 + Made quoted text in Info buffers look the same as 'org-verbatim' and 6684 Markdown's inline code. 6685 6686 + Instructed the faces of 'info-colors' to inherit from appropriate 6687 font-lock faces. This guarantees that everything works as intended 6688 with the various values of 'modus-themes-syntax'. 6689 6690 + Refined the language tag of Markdown fenced blocks so that it does 6691 attract unwarranted attention while delivering on its intended 6692 purpose. 6693 6694 + Rendered explicit the slant of ace-window hints, guaranteeing that it 6695 does not inherit from the underlying text. Thanks to Nicolas De 6696 Jaeghere for the patch: 6697 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/27>. 6698 6699 [ Some more changes have been discussed, but those require tweaks to 6700 the upstream package. ] 6701 6702 + Ensured that the 'org-tree-slide-header-overlay-face' never draws an 6703 overline when the variable 'modus-themes-headings' includes a relevant 6704 setting for heading level 1. Such as with the following example (all 6705 customisation options are documented in the themes' manual): 6706 6707 (setq modus-themes-headings 6708 '((1 . section) 6709 ...)) 6710 6711 + Extended support for the new 'tab-line-tab-inactive-alternate' face as 6712 that occurs in Emacs28 (current development target). It comes into 6713 effect when the variable 'tab-line-tab-face-functions' includes a 6714 value of 'tab-line-tab-face-inactive-alternating'. 6715 6716 6717 Newly supported packages 6718 ------------------------ 6719 6720 + bbdb :: Thanks to Nicolas De Jaeghere in issue 128: 6721 <https://gitlab.com/protesilaos/modus-themes/-/issues/128>. 6722 6723 + mmm-mode :: Thanks to Davor Rotim for the feedback in issue 161: 6724 <https://gitlab.com/protesilaos/modus-themes/-/issues/161>. 6725 6726 + quick-peek :: Thanks to Burgess Chang for the feedback in issue 151: 6727 <https://gitlab.com/protesilaos/modus-themes/-/issues/151> 6728 6729 + selectrum-prescient :: This new package was brought to my attention by 6730 Manuel Uberti. The intent is to phase out the faces in Selectrum, 6731 namely 'selectrum-primary-highlight', 'selectrum-secondary-highlight', 6732 though those will still be supported by the Modus themes for the 6733 foreseeable future. 6734 6735 + shortdoc 6736 6737 + spray 6738 6739 + terraform-mode :: Thanks to Kevin Fleming for the feedback in issue 6740 159: <https://gitlab.com/protesilaos/modus-themes/-/issues/159>. 6741 6742 + vc-dir (Emacs28) 6743 6744 6745 Theme-related contributions to the wider community 6746 -------------------------------------------------- 6747 6748 + Contributed the faces for 'vc-dir' in Emacs28 and applied them to all 6749 VC backends: <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=46358> and 6750 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=46745>. 6751 6752 + Contributed a new face and some related tweaks to Emacs' 6753 'shortdoc.el': <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=46748>. 6754 6755 + Added faces to the 'tab-bar-echo-area.el' package: 6756 <https://github.com/fritzgrabo/tab-bar-echo-area/pull/2>. 6757 6758 + Reported issue that led to the review of the header face in 6759 'org-tree-slide': <https://github.com/takaxp/org-tree-slide/issues/38>. 6760 6761 + Helped refine the faces of the 'rlist.el' package: 6762 <https://gitlab.com/mmemmew/rlist/-/commit/386f506d0110bebedd3a48ff972adba96e2232eb>. 6763 6764 6765 Documentation updates 6766 --------------------- 6767 6768 + Wrote about the indirect support for the 'goggles' package. I had 6769 helped write its faces, as was documented in the changelog for version 6770 1.1.0 of the themes. Thanks to Manuel Uberti for bringing this to my 6771 attention in issue 158: 6772 <https://gitlab.com/protesilaos/modus-themes/-/issues/158>. 6773 6774 + Explained that any changes to 'custom-theme-load-path' and/or 6775 'custom-theme-directory' should be performed before the themes are 6776 loaded. Thanks to Adrian Manea for the feedback in issue 156: 6777 <https://gitlab.com/protesilaos/modus-themes/-/issues/156>. 6778 6779 + Included the symbol 'bg-only' in the 'modus-themes-diffs' section of 6780 the manual. Thanks to user "iSeeU" for reporting the omission: 6781 <https://gitlab.com/protesilaos/modus-themes/-/issues/154>. 6782 6783 + Expanded the manual's entry on the semantics of the optional heading 6784 scale used by the themes (the variables 'modus-themes-scale-[1-5]'). 6785 The values 1-4 apply to regular headings, with 4 being the largest on 6786 the scale. While 'modus-themes-scale-5' is reserved for special 6787 headers, such as Org '#+title:' or the Org Agenda's structure. Recall 6788 that those variables only come into effect if the boolean variable 6789 'modus-themes-scale-headings' is set to a non-nil value (it is nil by 6790 default). 6791 6792 + Made several changes to the 'modus-themes.org' file in an effort to 6793 improve the accuracy of the generated Texinfo markup. Thanks to Glenn 6794 Morris and Richard Stallman for their valuable feedback in 6795 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45143>. 6796 6797 + Recorded a note in the manual on the intended colouration of 6798 backgrounds applied by 'mmm-mode'. It explains what the constraints 6799 are from an accessibility standpoint and how users can configure 6800 things locally for more colourful, yet inaccessible, backgrounds. 6801 Thanks to Davor Rotim for the valuable feedback in issue 161: 6802 <https://gitlab.com/protesilaos/modus-themes/-/issues/161>. 6803 6804 + Refined the manual's note on prism.el, simplifying the code samples 6805 and clarifying the commentary. 6806 6807 + Wrote indices for concepts, variables, functions, which are rendered 6808 in the Info manual. 6809 6810 + Elaborated on the possibility---and relative merits---of implementing 6811 a theme-agnostic hook for advanced face configurations, as opposed to 6812 relying on 'modus-themes-after-load-theme-hook'. Thanks to Daniel 6813 Mendler for the valuable feedback in issue 131: 6814 <https://gitlab.com/protesilaos/modus-themes/-/issues/131>. 6815 6816 6817 Miscellaneous 6818 ------------- 6819 6820 + Rewrote the documentation string of the 'deftheme' declaration of 6821 'modus-operandi' and 'modus-vivendi'. 6822 6823 + Provided links to the Info nodes that discuss each of the 'defcustom' 6824 declarations. 6825 6826 + Wrote doc strings for every custom face that the themes define. 6827 #+end_src 6828 6829 6830 * 1.1.0 6831 :PROPERTIES: 6832 :CUSTOM_ID: h:bb0e16a9-8a8b-4b1b-9d62-b1715295247b 6833 :END: 6834 6835 #+begin_src text 6836 Modus themes version 1.1.0 6837 6838 By Protesilaos Stavrou <info@protesilaos.com> on 2021-01-24 6839 6840 This entry records the changes introduced to the project since the 6841 publication of version 1.0.0 (2020-12-05). There have been around 150 6842 commits in the meantime, qualifying this as one of the largest releases 6843 to date. 6844 6845 As always, every colour-related modification documented herein conforms 6846 with the overarching accessibility objective of the themes for a minimum 6847 contrast ratio of 7:1 between background and foreground values in their 6848 given combination (conformance with the WCAG AAA standard). 6849 6850 As the official manual is referenced several times, make sure to store 6851 its URL: <https://protesilaos.com/emacs/modus-themes>. 6852 6853 If you are coming from older versions, please consult the change log 6854 entry for version 1.0.0. 6855 6856 6857 Overview 6858 -------- 6859 6860 + We have brought back the options that were present in version 0.13.0 6861 or earlier which allowed users to override colors for either---or 6862 both---of Modus Operandi and Modus Vivendi. Compared to the old 6863 mechanism, the new one is more robust and should work regardless of 6864 whether users run byte compiled code or not. This is considered and 6865 advanced, "do-it-yourself" pathway to theme customisation. It is 6866 discussed at length in the manual. 6867 6868 + The new 'modus-themes-with-colors' macro makes it possible to read 6869 palette variables from the active theme and, thus, pass them to 6870 arbitrary functions or variables. Again, this is part of the advanced 6871 customisations that are covered in the manual. 6872 6873 + Several of the existing customisation options provide new stylistic 6874 variants, further expanding their utility. While there are some new 6875 customisations altogether. Combined with the above, we provide the 6876 infrastructure that allows the themes to adapt gracefully to a variety 6877 of circumstances and cover a broad range of demands. 6878 6879 + More packages are added to the already comprehensive list of supported 6880 face groups. 6881 6882 + Some of the supported faces have benefited from further, albeit 6883 subtle, refinements, demonstrating our commitment to consistency as 6884 well as our attention to detail. 6885 6886 + Two reports on such "further refinements" were published on the code 6887 log section of protesilaos.com: <https://protesilaos.com/codelog>. 6888 6889 + We have more people contributing to the project (and assigning 6890 copyright to the FSF---as the themes are part of Emacs) and newer 6891 users reporting issues. Also, there is anecdotal evidence from 6892 several sources on an increased interest to make new or existing faces 6893 accessible by default (such as by copying colour combinations from the 6894 themes). 6895 6896 6897 New customisation options 6898 ------------------------- 6899 6900 + The existing 'modus-themes-mode-line' variable now supports three new 6901 borderless styles: 'borderless', 'borderless-3d', 'borderless-moody'. 6902 6903 - The 'borderless' value uses the same colors as the default (nil 6904 value), but removes the border effect. This is done by making the 6905 box property use the same color as the background, effectively 6906 blending the two and creating some padding. 6907 6908 - The 'borderless-3d' and 'borderless-moody' approximate the '3d' and 6909 'moody' options respectively, while removing the borders. However, 6910 to ensure that the inactive modelines remain visible, they apply a 6911 slightly more prominent background to them than what their 6912 counterparts do (same inactive background as with the default). 6913 6914 The complete list of options: 6915 6916 1. nil (default) 6917 2. 3d 6918 3. moody 6919 4. borderless 6920 5. borderless-3d 6921 6. borderless-moody 6922 6923 + 'modus-themes-lang-checkers' provides several styles for spell 6924 checkers and code linters with regard to how they underline text. The 6925 default (nil) is to use a colour-coded wavy underline, without 6926 changing the foreground of the affected text. Other options include 6927 the ability to set a straight underline and to control the saturation 6928 of the foreground, while one also provides for a change in the 6929 background of the text in question. The valid symbols are as follows 6930 (read the manual for more on the matter): 6931 6932 1. nil (default) 6933 2. straight-underline 6934 3. subtle-foreground 6935 4. subtle-foreground-straight-underline 6936 5. intense-foreground 6937 6. intense-foreground-straight-underline 6938 7. colored-background 6939 6940 + The 'modus-themes-org-habit' lets users pick between three styles for 6941 the 'org-habit' table: (1) nil (the default), which uses a total of 6942 eight colours, (2) 'simplified' which reduces the effective colours to 6943 four, while applying less saturated hues, and (3) 'traffic-light' 6944 which bring the colour count to three, thus blending the "clear" and 6945 "ready" states for workflows where the distinction between is not 6946 useful. 6947 6948 Please read the manual for a more detailed description of those 6949 variants. 6950 6951 Thanks to Gustavo Barros for suggesting the idea, providing user 6952 feedback on stylistic choices, as well as sharing insights on the 6953 workflow that made the 'traffic-light' style possible: 6954 <https://gitlab.com/protesilaos/modus-themes/-/issues/135>. 6955 6956 + 'modus-themes-variable-pitch-ui' when set to a non-nil value applies a 6957 proportionately spaced typeface (controlled by the 'variable-pitch' 6958 face) to the User Interface, specifically the mode line, header line, 6959 and tab-{bar,line}. 6960 6961 + The existing 'modus-themes-links' variable now has a colourless 6962 stylistic alternative: 'underline-only'. The available styles: 6963 6964 1. nil (default) 6965 2. faint 6966 3. neutral-underline 6967 4. faint-neutral-underline 6968 5. no-underline 6969 6. underline-only 6970 6971 + The existing 'modus-themes-prompts' variable has two new grayscale 6972 styles: 'subtle-gray', 'intense-gray'. Furthermore, their old 6973 'subtle' and 'intense' values have more informative aliases in the 6974 form of 'subtle-accented' and 'intense-accented'. All available 6975 values: 6976 6977 1. nil (default) 6978 2. subtle-accented ('subtle' remains for backward-compatibility) 6979 3. intense-accented ('intense' remains for backward-compatibility) 6980 4. subtle-gray 6981 5. intense-gray 6982 6983 + The existing 'modus-themes-headings' variable now accepts two new 6984 styles: 'no-color', 'no-color-no-bold'. All stylistic variants: 6985 6986 1. nil (default fallback option---covers all heading levels) 6987 2. t (default style for a single heading, when the fallback differs) 6988 3. no-bold 6989 4. line 6990 5. line-no-bold 6991 6. rainbow 6992 7. rainbow-line 6993 8. rainbow-line-no-bold 6994 9. highlight 6995 10. highlight-no-bold 6996 11. rainbow-highlight 6997 12. rainbow-highlight-no-bold 6998 13. section 6999 14. section-no-bold 7000 15. rainbow-section 7001 16. rainbow-section-no-bold 7002 17. no-color 7003 18. no-color-no-bold 7004 7005 Please read the manual for instructions on how to apply those 7006 universally or on a per-level basis. 7007 7008 7009 Added support for packages 7010 -------------------------- 7011 7012 + cfrs (used by treemacs) 7013 + cperl-mode 7014 + diredc 7015 7016 + display-fill-column-indicator-mode. Thanks to Gustavo Barros for the 7017 feedback: <https://gitlab.com/protesilaos/modus-themes/-/issues/148>. 7018 7019 + evil-snipe. Thanks to Peter Wu for the feedback: 7020 <https://gitlab.com/protesilaos/modus-themes/-/issues/139>. 7021 7022 + isl (isearch-light). Thanks to Manuel Uberti for the feedback: 7023 <https://gitlab.com/protesilaos/modus-themes/-/issues/144>. 7024 7025 + marginalia 7026 + org-tree-slide 7027 + recursion-indicator 7028 7029 + solaire. Thanks to CsBigDataHub1 for the feedback: 7030 <https://gitlab.com/protesilaos/modus-themes/-/issues/137>. 7031 7032 7033 Refinements to already supported faces 7034 -------------------------------------- 7035 7036 + Reviewed the 'rainbow-delimiters' faces. Everything is documented in 7037 a separate report (with screenshots). The short version is that we 7038 pay close attention to detail and are willing to go to great lengths 7039 in pursuit of improving the overall user experience: 7040 <https://protesilaos.com/codelog/2020-12-27-modus-themes-review-rainbow-delimiters/>. 7041 7042 + Updated the dedicated colours for 'whitespace-mode'. The background 7043 should now be easier to discern. Also removed any remaining 7044 inconsistencies. Thanks to Toon Claes for the feedback: 7045 <https://gitlab.com/protesilaos/modus-themes/-/issues/149>. 7046 7047 + Refined the faces of regexp constructs for strings affected by certain 7048 values passed to the 'modus-themes-syntax' option. This is done to 7049 disambiguate the backslashes and grouping delimiters from the rest of 7050 the string. The relevant values for 'modus-themes-syntax' are: 7051 7052 - green-strings 7053 - yellow-comments-green-strings 7054 - alt-syntax 7055 - alt-syntax-yellow-comments 7056 7057 The default colour for strings is blue, while regexp faces are yellow 7058 and red, whereas in those variants the strings become green, hence the 7059 need to make regexp faces more distinct (blue and magenta contrast 7060 better with green and also between themselves, thus matching the 7061 alternative aesthetics). 7062 7063 + Reviewed dictionary.el faces (which ships with Emacs 28): 7064 7065 - Made 'dictionary-reference-face' look like all other links. 7066 7067 - Removed all properties from 'dictionary-word-definition-face': 7068 the default sets a font family, which can create inconsistencies. 7069 7070 - Converted 'dictionary-word-entry-face' into comment-like text. 7071 7072 + Refined and expanded the faces of Consult. 7073 7074 - Made its grep commands look the same as those of all other grep 7075 tools. 7076 7077 - Ensured that line number previews, such as for the 'consult-line' 7078 command use their own style of a subtle foreground instead of 7079 inheriting from the 'line-number' face. This is to avoid cases 7080 where previewed numbers and actual line numbers could be conflated 7081 for one another. 7082 7083 - Removed the foreground pertinent to 'consult-imenu-prefix', as its 7084 bold weight combined with the structure of Imenu indices was deemed 7085 sufficient to differentiate it from actual 'consult-imenu' targets. 7086 7087 + Eliminated exaggerations in the use of colour for various 'which-key' 7088 faces. 7089 7090 + Removed the needless background from the 'log-view-commit-body' face. 7091 This is a new face that ships with Emacs 28 (its inclusion upstream 7092 was documented in the last changelog entry). 7093 7094 + Applied a subtle background to the 'log-view-message' face, in the 7095 interest of improving the usability of its interface, in particular, 7096 to contribute to heightened situational awareness while invoking 7097 'log-view-toggle-entry-display' in buffers such as those produced by 7098 'vc-print-root-log'. 7099 7100 + Introduced a neutral background for all 'outline-minor-faces' instead 7101 of merely mirroring the style of 'outline-mode' headings. This is 7102 because it can sometimes be hard to tell whether 'outline-minor-mode' 7103 is active, provided certain fairly common configurations in the 7104 'modus-themes-headings' user option (refer to the manual for all 7105 customisation options). 7106 7107 + Tweaked 'diff-mode' headings. 7108 7109 - Adjusted the values of the dedicated colours for diff headings in 7110 order to amplify their relative contrast. 7111 7112 - Assigned a bold typographic weight to the 'diff-hunk-header' face so 7113 as to enforce a greater sense of structure. 7114 7115 - Instructed 'diff-function' to inherit 'modus-theme-diff-heading' in 7116 order to eliminate exaggerations in colouration. 7117 7118 + Removed unnecessary underline from 'selectrum-current-candidate'. 7119 Thanks to Daniel Mendler for the feedback: 7120 <https://gitlab.com/protesilaos/modus-themes/-/issues/132>. 7121 7122 + Made 'counsel-outline' inherit from the underlying Org faces. Also 7123 corrected the style of 'counsel-outline-default' to use the main 7124 foreground colour. Thanks to Gustavo Barros for the feedback: 7125 <https://gitlab.com/protesilaos/modus-themes/-/issues/134>. 7126 7127 + Prevented headings, ultimately governed by the 'modus-themes-headings' 7128 user option, from inheriting the 'default' face as that could lead to 7129 unintended consequences, such as by retaining a background colour when 7130 none was expected. 7131 7132 + Refashioned all faces that specified a foreground value of 'fg-alt' to 7133 inherit the 'shadow' face instead ('fg-alt' is the colour that is 7134 used, for example, in code comments by default). This makes it 7135 possible for users to enact change across the theme just by tweaking 7136 'shadow'. 7137 7138 + Fixed 'ruler-mode' text scaling adjustment, to make it cope well with 7139 'text-scale-adjust' and relevant commands. Also introduced minor 7140 stylistic changes to the remainder of the 'ruler-mode' faces. 7141 7142 + Eliminated the potentially problematic form of ':foreground nil' from 7143 the 'org-ellipsis' face. In such cases it is always better to either 7144 specify no foreground whatsoever, or declare an unspecified value. 7145 7146 7147 Patches from the community 7148 -------------------------- 7149 7150 Remember that the themes are part of Emacs and, thus, contributions that 7151 exceed a cumulative total of ~15 lines require the assignment of 7152 copyright to the Free Software Foundation. Please consult the themes' 7153 manual on the matter. 7154 7155 + Nicolas De Jaeghere added support for 'exwm-floating-border-color': 7156 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/15>. 7157 7158 + Anders Johansson added support for 'helm-fd-finish': 7159 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/16>. 7160 7161 + Carlo Zancanaro fixed misquoting of 'tuareg-font-lock-multistage-face': 7162 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/17>. 7163 7164 + Xinglu Chen expanded Notmuch support to all its remaining faces: 7165 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/18>. 7166 7167 + Kostadin Ninev added support for Dired+: 7168 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/19>. 7169 7170 + Nicolas De Jaeghere expanded the supported items of 'pdf-faces'. Also 7171 added an entry to the manual pertaining to link hints and the 7172 requisite setup: 7173 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/20>. 7174 7175 + Nicolas De Jaeghere wrote the new 'modus-themes-with-colors' macro, 7176 which is documented at length in the manual: 7177 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/21>. 7178 7179 + Nicolas De Jaeghere set up the infrastructure that grants users the 7180 ability to override palette colors; an option that was removed in the 7181 transition from version 0.13.0 to 1.0.0. The relevant variables are 7182 'modus-themes-colors-operandi', 'modus-themes-colors-vivendi' (again, 7183 consult the manual): 7184 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/23>. 7185 7186 + Nicolas De Jaeghere deleted the 'modus-themes-core.el' file and merged 7187 its contents into the main 'modus-themes.el' library: 7188 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/24> and 7189 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/25>. 7190 7191 + Nicolas De Jaeghere made the 'compilation-info' face consistent with 7192 other compilation faces in terms of their optional bold weight: 7193 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/26>. 7194 7195 Any remaining faults that may exist, despite our best intentions to 7196 remove them, are those of the maintainer and will be addressed as soon 7197 as they are identified. 7198 7199 FSF copyright status: 7200 7201 | Full name | Copyright | 7202 |---------------------+--------------| 7203 | Anders Johansson | covered | 7204 | Carlo Zancanaro | not required | 7205 | Kostadin Ninev | covered | 7206 | Nicolas De Jaeghere | covered | 7207 | Xinglu Chen | not required | 7208 7209 7210 Theme-related contributions to the wider community 7211 -------------------------------------------------- 7212 7213 + Helped address an incomplete colour value in 'org-transclusion-block': 7214 <https://github.com/nobiot/org-transclusion/issues/41>. 7215 7216 + Contributed to the formation of the zebra striping of 'embark': 7217 <https://github.com/oantolin/embark/commit/bb4ae2a666ab1f4a307edd71f77bcbb90fb25cef>. 7218 7219 + Reviewed the faces of 'goggles': 7220 <https://github.com/minad/goggles/commit/d6e584a2c9487d3df4aee818c43485e437cb87ef>. 7221 7222 + Helped raise awareness about refactoring 'org-tree-slide-header-overlay-face': 7223 <https://github.com/takaxp/org-tree-slide/issues/38>. 7224 7225 + Reported an issue for Moody that would affect the subset of Emacs 28 7226 users who enable the new 'mode-line-compact' option: 7227 <https://github.com/tarsius/moody/issues/28>. 7228 7229 + Did the same for Keycast: <https://github.com/tarsius/keycast/issues/13>. 7230 7231 + Defined the new 'perl-non-scalar-variable' in upstream Emacs: 7232 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45840>. 7233 7234 7235 Miscellaneous 7236 ------------- 7237 7238 + Created a new palette subset for "graph" colours, as none of the 7239 existing paradigms would suffice for cases where faithfulness to 7240 colour huenesss is important. Those are currently used by 7241 'modus-themes-org-habit'. 7242 7243 + Ensured that theme functions which need to produce an error message do 7244 so by calling 'error' instead of 'user-error'. 7245 7246 + Added a 'modus-themes-load-themes' function that users can add to 7247 their init files. 7248 7249 + Expanded the project's git repo README file with a sample 7250 'use-package' configuration. 7251 7252 + The previous two points followed from an inquiry into the subtleties 7253 between 'enable-theme' and 'load-theme'. Those are now documented at 7254 length in the manual. 7255 7256 + Added screenshots to the web page that holds the official manual. 7257 Thanks to Damien Cassou for the feedback: 7258 <https://gitlab.com/protesilaos/modus-themes/-/issues/147>. 7259 7260 + Swapped the values of 'cyan-faint' and 'cyan-alt-faint' for Modus 7261 Vivendi. 7262 7263 + Tweaked 'font-lock-doc-face' and 'font-lock-type-face' variations when 7264 "faint syntax" is in effect: (setq modus-themes-syntax 'faint). 7265 7266 + Refined 'font-lock-doc-face' for when modus-themes-syntax is given a 7267 value of either 'yellow-comments-green-strings' or 'green-strings'. 7268 The changes are minor when treated in isolation, though they have 7269 helped improve the overall consistency of the end result: the gestalt. 7270 7271 + Reviewed select "faint" colours for both Modus Operandi and Modus 7272 Vivendi. The technicalities are discussed in a complete report: 7273 <https://protesilaos.com/codelog/2021-01-11-modus-themes-review-select-faint-colours/>. 7274 7275 + Ensured that (setq modus-themes-syntax 'alt-syntax) and its "yellow 7276 comments" variant are more truthful to their intended style, by 7277 eliminating any exaggerations in the use of colour. 7278 7279 + Adjusted the saturation of the green-alt value of Modus Vivendi. 7280 7281 + Updated the manual to reflect all of the aforementioned. 7282 7283 Thanks once again to everyone who contributed patches or reported an 7284 issue. This has been yet another period of intense work; work which 7285 helps solidify the Modus themes as (i) uncompromisingly accessible in 7286 accordance with the highest legibility standard, (ii) highly 7287 customisable in true Emacs fashion, (iii) thoroughly comprehensive in 7288 terms of face coverage, and (iv) meticulously designed throughout. 7289 #+end_src 7290 7291 * 1.0.0 7292 :PROPERTIES: 7293 :CUSTOM_ID: h:94b5915e-1085-4859-ac9f-daf91e007741 7294 :END: 7295 7296 #+begin_src text 7297 Modus themes version 1.0.0 7298 7299 By Protesilaos Stavrou <info@protesilaos.com> on 2020-12-05 7300 7301 This entry documents the changes since version 0.13.0 (2020-10-08). 7302 They constitute a major release with backward-incompatible additions 7303 which are described below. 7304 7305 As always, every colour-related modification documented herein conforms 7306 with the overarching accessibility objective of the themes for a minimum 7307 contrast ratio of 7:1 between background and foreground values in their 7308 given combination (conformance with the WCAG AAA standard). 7309 7310 Expect to find examples of basic and advanced customisations in the 7311 comprehensive Info manual bundled with the themes, which is also 7312 available at: <https://protesilaos.com/emacs/modus-themes>. 7313 7314 7315 Overview of major changes 7316 ========================= 7317 7318 0. The option that was present in earlier releases to override the 7319 colour palette has been removed. It cannot work with byte 7320 compilation. We must not compromise on performance, especially in 7321 light of the fairly high line count of the themes (broad face 7322 coverage combined with a multitude of customisation options). 7323 7324 1. The code base has been refactored. The two themes, Modus Operandi 7325 (light) and Modus Vivendi (dark), derive from the same source. 7326 7327 2. The refactoring makes it possible to distribute the two themes as 7328 part of a single package. You can find 'modus-themes' on MELPA, with 7329 other archives and core Emacs following suit soon thereafter (the 7330 Modus themes are built into Emacs since their version 0.12.0). 7331 7332 3. The 'modus-operandi-theme' and 'modus-vivendi-theme' packages in 7333 MELPA and GNU ELPA are obsolete. MELPA has already deleted them and 7334 now only provides 'modus-themes', while GNU ELPA shall do so soon 7335 enough. 7336 7337 + Package providers of GNU/Linux distros, or other archives, are 7338 encouraged to update their sources so that they only deliver a 7339 single package that covers both themes. 7340 7341 4. To avoid surprises, the refactored code is in the 'main' branch which 7342 becomes the default henceforth. The 'master' branch, from where all 7343 prior releases were built, is thus deprecated. Existing installs of 7344 'modus-operandi-theme' and/or 'modus-vivendi-theme' must manually 7345 switch to the new package sources, which offer a certain guarantee 7346 that they are informed of the breaking changes documented herein. 7347 7348 + Users of 'straight.el' must make sure that they pull from the 7349 'main' branch. This may also be the case for other such tools, 7350 though I have not had the time to test them all. 7351 7352 5. The refactoring introduces a unified customisation framework. Now 7353 all user-facing variables are named 'modus-themes-*' instead of 7354 'modus-operandi-*' and 'modus-vivendi-*'. Users of both items can 7355 thus cut down on duplicate code or inelegant workarounds on their 7356 end. Example: 7357 7358 modus-operandi-bold-constructs 7359 | | | | | | | ====> modus-themes-bold-constructs 7360 modus-vivendi-bold-constructs 7361 7362 6. The themes now provide common user-facing functions. 7363 7364 + 'modus-themes-load-operandi' and 'modus-themes-load-vivendi' can be 7365 used in Lisp to load the theme they name, while disabling their 7366 counterpart and running 'modus-themes-after-load-theme-hook'. The 7367 hook can be used to override or further customise faces (examples 7368 are furnished in the manual). 7369 7370 + 'modus-themes-toggle' interactively switches between Modus Operandi 7371 and Modus Vivendi or opens a minibuffer prompt to select between 7372 the two if none of them is active. It ultimately calls the 7373 aforementioned functions to load the themes, so it also triggers 7374 the hook. Bind this command to a key of your convenience (the 7375 author uses F5). 7376 7377 + 'modus-themes-color' returns the colour value of a symbol in the 7378 alists that hold the themes' palettes. The alists are 7379 'modus-themes-colors-operandi' and 'modus-themes-colors-vivendi'. 7380 'modus-themes-color' always operates on the active theme, making it 7381 suitable for post-theme-load customisations (via the hook we 7382 covered earlier). Its usage is documented in the manual and is 7383 meant to be employed by those who are prepared to assume 7384 responsibility for face-related changes they introduce on their 7385 setup. 7386 7387 + 'modus-themes-color-alts' occupies the same niche as the one right 7388 above, with the exception that it takes two arguments. The first 7389 is the alist key to be used by 'modus-operandi' and the second is 7390 for 'modus-vivendi'. 7391 7392 + 'modus-themes-wcag-formula' implements the WCAG formula to measure 7393 a colour value's relative luminance. While 'modus-themes-contrast' 7394 applies the formula to derive the contrast ratio between two colour 7395 values in hexadecimal RGB notation. This can be used to verify the 7396 accessibility of colour combinations provided by the themes or new 7397 ones defined at the user level (the Modus themes conform with the 7398 WCAG AAA standard which means that this kind of contrast is 7:1 or 7399 higher for all applicable background+foreground combinations). 7400 7401 7402 Customisation options 7403 ===================== 7404 7405 This is the complete list with all the customisation options: 7406 7407 modus-themes-slanted-constructs (boolean) 7408 modus-themes-bold-constructs (boolean) 7409 modus-themes-variable-pitch-headings (boolean) 7410 modus-themes-no-mixed-fonts (boolean) 7411 modus-themes-headings (alist) 7412 modus-themes-scale-headings (boolean) 7413 modus-themes-fringes (choice) 7414 modus-themes-org-blocks (choice) 7415 modus-themes-prompts (choice) 7416 modus-themes-mode-line (choice) 7417 modus-themes-diffs (choice) 7418 modus-themes-syntax (choice) 7419 modus-themes-intense-hl-line (boolean) 7420 modus-themes-paren-match (choice) 7421 modus-themes-region (choice) 7422 modus-themes-links (choice) 7423 modus-themes-completions (choice) 7424 7425 Plus those which are contingent on 'modus-themes-scale-headings': 7426 7427 modus-themes-scale-1 7428 modus-themes-scale-2 7429 modus-themes-scale-3 7430 modus-themes-scale-4 7431 modus-themes-scale-5 7432 7433 Consult the manual for each of them and please verify that none of the 7434 older options remains in your init file. 7435 7436 7437 Customisation options that did not exist in earlier versions 7438 ------------------------------------------------------------ 7439 7440 New entries and their possible values: 7441 7442 1. modus-themes-syntax 7443 7444 ,* nil (default) 7445 ,* faint 7446 ,* yellow-comments 7447 ,* green-strings 7448 ,* yellow-comments-green-strings 7449 ,* alt-syntax 7450 ,* alt-syntax-yellow-comments 7451 7452 (supersedes options for "faint syntax" and "comments") 7453 7454 2. modus-themes-links 7455 7456 ,* nil (default) 7457 ,* faint 7458 ,* neutral-underline 7459 ,* faint-neutral-underline 7460 ,* no-underline 7461 7462 (supersedes options for "no underlines") 7463 7464 3. modus-themes-paren-match 7465 7466 ,* nil (default) 7467 ,* intense 7468 ,* subtle-bold 7469 ,* intense-bold 7470 7471 (supersedes options for "intense paren match") 7472 7473 4. modus-themes-region 7474 7475 ,* nil (default) 7476 ,* no-extend 7477 ,* bg-only 7478 ,* bg-only-no-extend 7479 7480 Furthermore, the 'modus-themes-diff' has a new option to choose from: 7481 the symbol 'bg-only'. It applies colour-coded backgrounds but does not 7482 override any syntax highlighting that may be present. This makes it 7483 suitable for use with a non-nil value for diff-font-lock-syntax (which 7484 is the default for diff-mode buffers in Emacs 27 or higher). 7485 7486 7487 Support for new faces or face groups 7488 ==================================== 7489 7490 + consult 7491 + macrostep 7492 + make-mode 7493 + pdf-tools 7494 + popup 7495 + shr 7496 + sieve-mode 7497 7498 (remember that the list of supported packages is already comprehensive) 7499 7500 Thanks to: 7501 7502 + Adam Spiers for bringing 'macrostep' to my attention. 7503 7504 + Madhavan Krishnan for submitting the code for pdf-tools: 7505 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/14>. 7506 7507 + Manuel Uberti for reporting the issue with popup.el: 7508 <https://gitlab.com/protesilaos/modus-themes/-/issues/107>. 7509 7510 + Again thanks to Manuel for consult: 7511 <https://gitlab.com/protesilaos/modus-themes/-/issues/123>. And to 7512 Daniel Mendler, its developer, for communicating with us on the status 7513 of the project. 7514 7515 + Togan Muftuoglu for reporting the issue with sieve-mode: 7516 <https://gitlab.com/protesilaos/modus-themes/-/issues/121>. 7517 7518 7519 Refinements to existing faces 7520 ============================= 7521 7522 + The diary and holiday marks in 'M-x calendar' are displayed using a 7523 slightly tinted background in order to improve their contrast. 7524 Holidays are also rendered in a bold font. Thanks to Nicolas De 7525 Jaeghere for reporting the issue and following it up with valuable 7526 feedback: <https://gitlab.com/protesilaos/modus-themes/-/issues/127>. 7527 7528 + Code blocks in 'markdown-mode' now have a subtle background that 7529 extends to the edge of the window. Thanks to Roman Rudakov for the 7530 suggestion and Hörmetjan Yiltiz for further testing: 7531 <https://gitlab.com/protesilaos/modus-themes/-/issues/115>. 7532 7533 + Inline code in 'markdown-mode' has a subtle background that covers the 7534 length of the construct. Refer to issue #115 as above. 7535 7536 + Ivy's main pattern-matching faces are slightly adjusted to work more 7537 effectively when users opt for "modus-themes-completions 'moderate" or 7538 "modus-themes-completions 'opinionated". 7539 7540 + Swiper's 'swiper-isearch' command defaults to a more colourful 7541 presentation that clearly disambiguates matching pattern groups 7542 between themselves as well as their own active and inactive states. 7543 Thanks to John Haman for reporting the problem: 7544 <https://gitlab.com/protesilaos/modus-themes/-/issues/125>. 7545 7546 + Swiper's remaining faces are tweaked to better convey the intent of 7547 this tool. 7548 7549 + The border of 'ivy-posframe' is more noticeable. Thanks to Pete 7550 Kazmier: <https://gitlab.com/protesilaos/modus-themes/-/issues/126>. 7551 7552 + The 'fringe' face no longer returns a nil background, which allows 7553 'dap-ui-controls-mode' to display things properly. Thanks to Simon 7554 Pugnet: <https://gitlab.com/protesilaos/modus-themes/-/issues/106>. 7555 7556 + Tags and priority cookies in Org mode no longer have a box property. 7557 This is because of changes in upstream Org that we helped solve and 7558 that are covered in the previous CHANGELOG entry (in short: Org 7559 heading constructs inherit the underlying heading's properties that 7560 are not part of their own specs, while they retain those that are 7561 explicitly defined for them---adaptive headings). Properly solves the 7562 following issues: 7563 7564 ,* <https://gitlab.com/protesilaos/modus-themes/-/issues/104>. Thanks 7565 to user "bepolymathe". 7566 7567 ,* <https://gitlab.com/protesilaos/modus-themes/-/issues/95>. Thanks 7568 to Roman Rudakov. 7569 7570 + The faces of 'M-x re-builder' are less intrusive. 7571 7572 + All the following now inherit from basic font-lock faces and thus 7573 benefit from options such as 'modus-themes-syntax': 7574 7575 ,* geiser 7576 ,* nxml-mode 7577 ,* tuareg 7578 ,* web-mode 7579 ,* xah-elisp-mode 7580 7581 + Diff headers have a subtle grey background that extends to the edge of 7582 the window. 7583 7584 + The faces of log-view and change-log use colour combinations that 7585 better differentiate the various objects on display. 7586 7587 + 'font-lock-type-face' uses a cyan hue instead of magenta. 7588 7589 + 'magit-header-line-key' uses a blue foreground colour instead of red. 7590 7591 + Doc strings in code syntax are rendered in a new dedicated colour. 7592 The change is fairly subtle and should practically go unnoticed. 7593 7594 + 'org-date' now respects the 'modus-themes-no-mixed-fonts' option. 7595 Thanks to user "fleimgruber" for reporting the issue: 7596 <https://gitlab.com/protesilaos/modus-themes/-/issues/124>. 7597 7598 + 'org-property-value' uses a slightly different shade of cyan. 7599 7600 + 'dim-autoload' will always look like a regular comment. 7601 7602 + The 'italic' face is inhereted by all relevant faces instead of 7603 hard-wiring a slant property. This offers the potential advantage of 7604 specifying a distinct family (or other properties) for constructs that 7605 are meant to be rendered in italics (the manual has an example in its 7606 DIY sections for this scenario though it uses the 'bold' face---just 7607 apply the same idea to the 'italic' face). 7608 7609 + 'dictionary-reference-face' inherits from 'button' (as with all 7610 links). 7611 7612 + Several comment-related faces beyond the basic ones work with 7613 'modus-themes-syntax' when that has an effect on the colour of 7614 comments. The faces are: 7615 7616 ,* git-commit-comment-file 7617 ,* git-commit-comment-heading 7618 ,* git-rebase-comment-hash 7619 ,* git-rebase-comment-heading 7620 7621 + 'transient-value' is more noticeable and fits better in its context. 7622 7623 + All remaining Org metadata-related faces are refined for consistency 7624 between them in an attempt to make them unobtrusive. More subtle 7625 colouration is applied. Affected faces: 7626 7627 ,* org-drawer 7628 ,* org-property-value 7629 ,* org-special-keyword 7630 7631 7632 Theme-related contributions to the wider community 7633 ================================================== 7634 7635 + Defined the 'log-view-commit-body' for Emacs 28.1: 7636 <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg00303.html> 7637 and 7638 <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg02196.html>. 7639 7640 + Specified the version of the 'diff-error' face for Emacs 28.1: 7641 <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg01328.html>. 7642 7643 + Added the 'org-dispatcher-highlight' face to upstream Org: 7644 <https://lists.gnu.org/archive/html/emacs-orgmode/2020-10/msg00158.html>. 7645 7646 ,* Report with screenshots: 7647 <https://protesilaos.com/codelog/2020-10-24-org-export-dispatcher-face/>. 7648 7649 + Helped fix face of Flymake's unknown backend in inactive modelines: 7650 <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg01119.html>. 7651 7652 + Solved bug#44198 about a user not knowning the themes are in Emacs: 7653 <https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-10/msg02001.html>. 7654 7655 7656 Miscellaneous 7657 ============= 7658 7659 + The new default 'main' branch of the Modus themes' git repo is an idea 7660 that was presented by user "Emacs Contrib" in issue 112: 7661 <https://gitlab.com/protesilaos/modus-themes/-/issues/112>. Raising 7662 awareness about the negative impact of potentially, tacitly, or 7663 explicitly offensive language is a goal worth pursuing. Plus "main" 7664 is a more appropriate name for the primary branch of a project and we 7665 do not lose anything by introducing this change as part of version 7666 1.0.0, which anyhow requires manual interventions in user 7667 configurations. 7668 7669 + Thanks to Manuel Uberti, Jeremy Friesen, and Gitlab user "Eugene" for 7670 their feedback during the process that eventually led to the 7671 development of the 'modus-themes-syntax' customisation option: 7672 <https://gitlab.com/protesilaos/modus-themes/-/issues/105>. 7673 7674 + Thanks to André Alexandre Gomes for the feedback in issue 111, which 7675 led to the simplification of the manual's references to Guix: 7676 <https://gitlab.com/protesilaos/modus-themes/-/issues/111>. 7677 7678 + Thanks to Nicolas De Jaeghere for noting that BBDB is indirectly 7679 supported: <https://gitlab.com/protesilaos/modus-themes/-/issues/128>. 7680 7681 Between the refactoring of the code base and all other changes, this has 7682 been yet another period of hard work to deliver on the promise of themes 7683 that are (i) highly accessible and (ii) comprehensive in both their face 7684 coverage and customisation options, while always conforming with the 7685 highest accessibility standard for legible text. 7686 7687 Special thanks to the MELPA maintainers for all their contributions. 7688 MELPA is an integral part of the wider Emacs community. Thanks, in 7689 particular, to Chris Rayner who has reviewed all my pull requests 7690 hitherto, and to Jonas Bernoulli for checking the latest one (and its 7691 concomitant issue) that introduced the new 'modus-themes' package. 7692 7693 Thank you, the reader, for your attention and for understanding the 7694 longer term benefits of the refactoring, despite the short term friction 7695 it may have introduced. 7696 #+end_src 7697 7698 * 0.13.0 7699 :PROPERTIES: 7700 :CUSTOM_ID: h:b529ec46-2a9f-4844-9760-4708d2ca575b 7701 :END: 7702 7703 #+begin_src text 7704 Modus Operandi and Modus Vivendi version 0.13.0 7705 7706 By Protesilaos Stavrou <info@protesilaos.com> on 2020-10-08 7707 7708 This entry documents the changes since version 0.12.0 (2020-08-26). 7709 There have been around 150 commits in the meantime, making this the 7710 largest release to date (though sheer volume should not be conflated 7711 with quality, of which there is plenty). 7712 7713 As always, everything described herein conforms with the overarching 7714 accessibility objective of the themes for a minimum contrast ratio of 7715 7:1 between background and foreground values in their given combinations 7716 (conformance with the WCAG AAA standard). 7717 7718 Overview 7719 ======== 7720 7721 1. There is a new Info manual that documents the customisation options 7722 as well as every other piece of information pertinent to the themes. 7723 You will find it in the Info pages inside of Emacs. Or browse it 7724 online: <https://protesilaos.com/emacs/modus-themes>. 7725 7726 2. New customisation options grant users more power to further adapt the 7727 active theme to their preferences. 7728 7729 3. Extended coverage for even more faces and face groups, adding to the 7730 already comprehensive list of directly supported ones. 7731 7732 4. Lots of tweaks to improve the use of colour and avoid exaggerations 7733 (well, "exaggerations" is relative, since the prior state was already 7734 carefully designed). 7735 7736 5. A new page hosts all pictures that demo the themes across a wide 7737 range of scenaria: <https://protesilaos.com/emacs/modus-themes-pictures>. 7738 7739 6. Similarly, the change log also has its own dedicated web page: 7740 <https://protesilaos.com/emacs/modus-themes-changelog>. 7741 7742 7743 New customisation options 7744 ========================= 7745 7746 Note that all customisation options are documented at length in the new 7747 Info manual. What is offered here is not necessarily exhaustive. 7748 7749 7750 Diff styles 7751 ----------- 7752 7753 Symbol names ("choice" type): 7754 7755 + modus-operandi-theme-diffs 7756 + modus-vivendi-theme-diffs 7757 7758 Possible values: 7759 7760 1. nil (default) 7761 2. desaturated 7762 2. fg-only 7763 7764 DEPRECATED ("boolean" type): 7765 7766 + modus-operandi-theme-subtle-diffs 7767 + modus-vivendi-theme-subtle-diffs 7768 7769 This option supersedes older ones while retaining their functionality. 7770 7771 The default remains unaltered, meaning that the diffs will use fairly 7772 prominent colour-coded combinations for the various elements (e.g. green 7773 text on an unambiguously green backdrop). 7774 7775 A 'desatured' value will tone down the default aesthetic, giving a less 7776 vibrant feel. 7777 7778 While 'fg-only' removes almost all coloured backgrounds, opting to apply 7779 colour only to the relevant text (this was the case with the 7780 now-deprecated options). There are some exceptions, like word-wise or 7781 "refined" diffs, which still use coloured backgrounds to convey their 7782 meaning. 7783 7784 7785 Modeline styles 7786 --------------- 7787 7788 Symbol names ("choice" type): 7789 7790 + modus-operandi-theme-mode-line 7791 + modus-vivendi-theme-mode-line 7792 7793 Possible values: 7794 7795 1. nil (default) 7796 2. 3d 7797 3. moody 7798 7799 DEPRECATED ("boolean" type): 7800 7801 + modus-operandi-theme-3d-modeline 7802 + modus-vivendi-theme-3d-modeline 7803 7804 The default modeline continues to be a two-dimensional rectangle with a 7805 border around it. Active and inactive modelines use different colour 7806 combinations for their main background and foreground. 7807 7808 Option '3d' produces an effect similar to what you get in a generic 7809 Emacs session, where the active modeline has a pseudo three-dimensional 7810 effect applied to it. This option offers the same functionality as that 7811 of the deprecated variables. 7812 7813 Option 'moody' is designed specifically for use with the Moody library, 7814 though it can also be used without it. Instead of implementing a box 7815 effect, it applies an overline and underline instead, while also toning 7816 down the inactive modeline. 7817 7818 Thanks to Nicolas De Jaeghere for the feedback and code samples in issue 7819 80: <https://gitlab.com/protesilaos/modus-themes/-/issues/80> 7820 7821 7822 Headline styles 7823 --------------- 7824 7825 Symbol names ("alist" type): 7826 7827 + modus-operandi-theme-headings 7828 + modus-vivendi-theme-headings 7829 7830 DEPRECATED ("boolean" type): 7831 7832 + modus-operandi-theme-rainbow-headings 7833 + modus-operandi-theme-section-headings 7834 + modus-vivendi-theme-rainbow-headings 7835 + modus-vivendi-theme-section-headings 7836 7837 Possible values, which can be specified for each heading level (examples 7838 further below): 7839 7840 0. nil (default fallback option---covers all heading levels) 7841 1. t (default style for a single heading, when the fallback differs) 7842 2. no-bold 7843 3. line 7844 4. line-no-bold 7845 5. rainbow 7846 6. rainbow-line 7847 7. rainbow-line-no-bold 7848 8. highlight 7849 9. highlight-no-bold 7850 10. rainbow-highlight 7851 11. rainbow-highlight-no-bold 7852 12. section 7853 13. section-no-bold 7854 14. rainbow-section 7855 15. rainbow-section-no-bold 7856 7857 This supersedes and greatly expands upon what the deprecated variables 7858 once offered. It is now possible to (i) benefit from more stylistic 7859 choices, and (ii) apply them on a per-level basis. 7860 7861 As always, the defaults remain in tact: headings are just rendered in a 7862 bold weight and their colours are not too saturated to offer a plain 7863 text impression that relies on typography to convey its meaning. 7864 7865 The info manual explains the details. A few examples: 7866 7867 ;; Per-level styles (t means everything else) 7868 (setq modus-operandi-theme-headings 7869 '((1 . highlight) 7870 (2 . line) 7871 (t . rainbow-line-no-bold))) 7872 7873 ;; Uniform style for all levels 7874 (setq modus-operandi-theme-headings 7875 '((t . rainbow-line-no-bold))) 7876 7877 ;; Default style for level 1, while others differ 7878 (setq modus-operandi-theme-headings 7879 '((1 . t) 7880 (2 . line) 7881 (t . rainbow-line-no-bold))) 7882 7883 Thanks to Adam Spiers for the feedback in issue 81: 7884 <https://gitlab.com/protesilaos/modus-themes/-/issues/81>. Also thanks 7885 to Nicolas De Jaeghere for helping refine relevant stylistic choices: 7886 <https://gitlab.com/protesilaos/modus-themes/-/issues/90>. 7887 7888 7889 No link underlines 7890 ------------------ 7891 7892 Symbol names ("boolean" type): 7893 7894 + modus-operandi-theme-no-link-underline 7895 + modus-vivendi-theme-no-link-underline 7896 7897 Possible values: 7898 7899 1. nil (default) 7900 2. t 7901 7902 By default, the themes apply an underline effect to links, symbolic 7903 links, and buttons. Users can now disable this style by setting the new 7904 option to 't'. 7905 7906 Thanks to Utkarsh Singh for the feedback in issue 94: 7907 <https://gitlab.com/protesilaos/modus-themes/-/issues/94> 7908 7909 7910 No mixed fonts 7911 -------------- 7912 7913 Symbol names ("boolean" type): 7914 7915 + modus-operandi-theme-no-mixed-fonts 7916 + modus-vivendi-theme-no-mixed-fonts 7917 7918 Possible values: 7919 7920 1. nil (default) 7921 2. t 7922 7923 By default, the themes configure some spacing-sensitive faces, such as 7924 Org tables and code blocks, to always inherit from the 'fixed-pitch' 7925 face (documented in the manual). This is to ensure that those 7926 constructs remain monospaced when users opt for something like the 7927 built-in 'M-x variable-pitch-mode'. Otherwise the layout would break. 7928 7929 The obvious downside with this theme design is that users need to 7930 explicitly configure the font family of 'fixed-pitch' in order to apply 7931 their desired typeface (how to do this is also covered in the manual). 7932 That may be something they do not want to do. Hence this option to 7933 disable any kind of font mixing done by the active theme. Set it to 7934 't'. 7935 7936 7937 Support for new faces or face groups 7938 ==================================== 7939 7940 + awesome-tray 7941 + binder 7942 + cperl-mode 7943 + eldoc-highlight-function-argument 7944 + erc escaped colour sequences 7945 + eshell-syntax-highlighting 7946 + flycheck-color-mode-line 7947 + isearch regexp groups (Emacs version >= 28) 7948 + mpdel 7949 + objed 7950 + org 9.4 new faces: 'org-headline-todo' and 'org-table-header' 7951 + racket-mode 7952 + typescript-mode 7953 7954 Thanks to: 7955 7956 + Damien Cassou for reporting the issue with mpdel: 7957 <https://gitlab.com/protesilaos/modus-themes/-/issues/99> 7958 7959 + Dario Gjorgjevski for reporting the issue with erc: 7960 <https://gitlab.com/protesilaos/modus-themes/-/issues/92> 7961 7962 + Markus Beppler for contributing the patch for cperl-mode: 7963 <https://gitlab.com/protesilaos/modus-themes/-/merge_requests/11> 7964 7965 + User "Moesasji" for reporting the issue with objed: 7966 <https://gitlab.com/protesilaos/modus-themes/-/issues/79> 7967 7968 7969 Refinements to existing faces 7970 ============================= 7971 7972 + calfw applies colours and styles in a way that makes it consistent 7973 with the rest of the themes' metaphors. 7974 7975 + diredfl makes more considerate use of colour. We still apply colour 7976 everywhere (the whole point of this package) but make sure to avoid 7977 exaggerations. 7978 7979 + doom-modeline-battery-error face fits better with the rest of the 7980 design. 7981 7982 + elfeed search buffers use less intense colours, while still keeping 7983 all elements fairly distinct. The intent is to avoid a "rainbow 7984 effect" in such a dense interface. 7985 7986 + elfeed read and unread items are more distinct. 7987 7988 + git commit and vc log edit messages benefit from refined colour 7989 combinations for their various constructs. The commit's summary is 7990 now rendered in a bold weight, to better convey the idea that this is 7991 a quasi heading element. 7992 7993 + gnus heading colours are more consistent. All information remains 7994 clearly distinct, but we now avoid using colours that are on opposite 7995 sides of the colour spectrum. Basically to keep things distinct 7996 without going over the top. 7997 7998 + gnus read and unread items are easier to tell apart. Thanks to user 7999 "Nick" for reporting the issue: 8000 <https://gitlab.com/protesilaos/modus-themes/-/issues/97>. 8001 8002 + help-argument-name has a distinct foreground colour, so that it is 8003 easier to spot it in "*Help*" buffers. Its slant is also controlled 8004 by the active theme's customisation option for slanted constructs (nil 8005 by default---check the manual). 8006 8007 + helpful-heading now is consistent with other heading styles. Thanks 8008 to Nicolas De Jaeghere for reporting the issue: 8009 <https://gitlab.com/protesilaos/modus-themes/-/issues/90>. 8010 8011 + icomplete, ido, orderless are all tweaked to work better under various 8012 circumstances. 8013 8014 + info-menu-star uses a red colour to make it easier to select a menu 8015 entry by estimating its number. This face applies to every third 8016 element and is a nice little extra to have. 8017 8018 + info quoted strings are configured to always render in 'fixed-pitch', 8019 in line with the themes' design for mixed fonts (remember to check the 8020 relevant customisation option). 8021 8022 + line numbers work properly with 'text-scale-adjust'. Thanks to user 8023 "jixiuf" for reporting the issue: 8024 <https://gitlab.com/protesilaos/modus-themes/-/issues/98>. 8025 8026 + line-number-current-line no longer applies a bold weight to its text. 8027 This is to avoid a certain "jump effect" while moving between lines, 8028 where the affected numbers grow and shrink in weight as the line 8029 changes (once you see it, you will know what I mean). 8030 8031 + line-number-major-tick and line-number-minor-tick do use a bold weight 8032 because they are fixed on the scale. Their colours are also improved 8033 to better complement their intended role (these faces are for Emacs 27 8034 or higher). 8035 8036 + magit-diff-file-heading-selection, magit-diff-hunk-heading-selection 8037 use more appropriate colour combinations. 8038 8039 + markdown blockquotes and org quote blocks use a different foreground, 8040 which is colder than the previous one. Just to make sure that they 8041 are not mistaken for inline code. 8042 8043 + message headers use less exaggerated colour combinations. The 8044 differences are fairly minor. 8045 8046 + message-mml no longer uses a green foreground, as that could 8047 potentially cause confusion with quoted text in some cases. A unique, 8048 albeit less saturated, foreground is used instead. 8049 8050 + message-separator uses a more neutral colour combination, while 8051 retaining its overall uniqueness within its context (i.e. mail 8052 composition). 8053 8054 + modeline colours are refined to improve the contrast between active 8055 and inactive states. 8056 8057 + mu4e-replied-face has a new colour that accounts for colour distance 8058 relative to its context. Thanks to Shreyas Ragavan for reporting the 8059 issue: <https://gitlab.com/protesilaos/modus-themes/-/issues/69>. 8060 8061 + org agenda date and structure no longer behave like headings in other 8062 Org buffers. Instead, they have their own styles to better perform 8063 their intended function and to avoid exaggerations. 8064 8065 + org agenda dimmed to-do items (which have blocked sub-items) are no 8066 longer assigned a subtle grey background colour. They are instead 8067 rendered with a bold weight and a subtle grey foreground to minimise 8068 distractions. Thanks to Roman Rudakov for reporting this in issue 8069 101: <https://gitlab.com/protesilaos/modus-themes/-/issues/101>. 8070 8071 + org agenda clocked items are configured to extend their background to 8072 the edge of the window. Otherwise they are cut off at the last text 8073 character, which creates inconsistencies while using tags: a tag is 8074 placed to the right so the background extends further than without 8075 them. Based again on the feedback of Roman Rudakov in issue 101: 8076 <https://gitlab.com/protesilaos/modus-themes/-/issues/101>. 8077 8078 + org agenda current time no longer uses a background. A bold weight 8079 and a blue foreground are applied instead. The intent is to keep 8080 things clean. This is also covered by Roman Rudakov's feedback in 8081 issue 101: <https://gitlab.com/protesilaos/modus-themes/-/issues/101>. 8082 8083 + org-checkbox-statistics-done, org-checkbox-statistics-todo inherit 8084 from org-done and org-todo respectively, instead of defining their own 8085 properties. 8086 8087 + org drawers and their data now use 'fixed-pitch' in the interest of 8088 consistency with other metadata-like faces. Thanks (yet again!) to 8089 Nicolas De Jaeghere for reporting the issue: 8090 <https://gitlab.com/protesilaos/modus-themes/-/issues/91>. 8091 8092 + org-footnote underlines will now always use the same colour, instead 8093 of applying the one of other coloured constructs (e.g. when the 8094 footnote is inline and part of the text is rendered as verbatim). 8095 8096 + org-meta-line is less prominent and, thus, more consistent with other 8097 metadata-related constructs. 8098 8099 + org-roam faces are updated to match the current state of the upstream 8100 project. The main colour of org-roam links is now different than that 8101 of standard links in an attempt to differentiate between the two (due 8102 to their unique semantics). If this is not desired, you can evaluate 8103 the following: 8104 8105 (setq org-roam-link-use-custom-faces nil) 8106 8107 + org-todo, org-done, as well as relevant faces such as priorities and 8108 statistics are reviewed to work better with all heading combinations. 8109 Though please read the next section about "adaptive headings", as such 8110 workarounds will no longer be necessary for future stable releases of 8111 Org. 8112 8113 + selectrum uses different styles than before to account for its unique 8114 property of overlaying matching characters on top of the current 8115 line's background. We want to avoid scenaria where matches are 8116 difficult to discern and the current line is not clear. 8117 8118 + vc modeline states benefit from improved colour choices. Just minor 8119 adjustments to account for the review of the base modeline colours. 8120 8121 + vterm base colours now are variants of gray to ensure that some tools, 8122 such as zsh suggestions work properly. Thanks to user "jixiuf" for 8123 reporting this issue and suggesting a possible solution: 8124 <https://gitlab.com/protesilaos/modus-themes/-/issues/93>. 8125 8126 Contributions to the wider community 8127 ==================================== 8128 8129 Sometimes the themes reveal bugs in other packages. It is of paramount 8130 importance that we report those to the upstream developers, try to help 8131 them reproduce the issue, and, where possible, support them in tracing 8132 the problem's root cause. 8133 8134 Four such cases during this release: 8135 8136 1. Adaptive Org headings. Solved upstream and documented on my website: 8137 <https://protesilaos.com/codelog/2020-09-24-org-headings-adapt/>. 8138 Reported and discussed on the themes' issue tracker: 8139 <https://gitlab.com/protesilaos/modus-themes/-/issues/37>. 8140 8141 2. Alignment of Org tags with proportional fonts. Ongoing thread: 8142 <https://lists.gnu.org/archive/html/emacs-orgmode/2020-09/msg00415.html>. 8143 Reported and discussed on the themes' issue tracker: 8144 <https://gitlab.com/protesilaos/modus-themes/-/issues/85>. 8145 8146 3. Org priority cookie has extra space. Ongoing thread: 8147 <https://lists.gnu.org/archive/html/emacs-orgmode/2020-09/msg00696.html>. 8148 Reported and discussed on the themes' issue tracker, with feedback 8149 from Roman Rudakov: 8150 <https://gitlab.com/protesilaos/modus-themes/-/issues/95>. 8151 8152 4. Company overlay pop-up misaligns items. Reported upstream and 8153 acknowledged as a known issue that occurs in certain cases: 8154 <https://github.com/company-mode/company-mode/issues/1010>. 8155 Discussion on the themes' issue tracker, with feedback from Iris 8156 Garcia: <https://gitlab.com/protesilaos/modus-themes/-/issues/96>. 8157 8158 8159 Miscellaneous 8160 ============= 8161 8162 + Belatedly (by about 2 weeks) pushed tag for version 0.12.0. Thanks to 8163 Alex Griffin for bringing this to my attention: 8164 <https://gitlab.com/protesilaos/modus-themes/-/issues/89> 8165 8166 + Fixed a bug with how some older customisation options were declared as 8167 obsolete. Thanks to Tassilo Horn for noticing and reporting the 8168 problem: <https://gitlab.com/protesilaos/modus-themes/-/issues/88>. 8169 8170 + Fixed a misplaced optional prefix argument in the manual for how to 8171 switch themes using a custom function. Thanks to Manuel Uberti for 8172 catching this omission of mine and reporting it: 8173 <https://gitlab.com/protesilaos/modus-themes/-/issues/84>. 8174 8175 + Silenced the Elisp package linter for a spurious error on a single 8176 eldoc face. Thanks to Steve Purcell for the guidance: 8177 <https://github.com/purcell/package-lint/issues/187>. 8178 8179 + Defined two new dedicated background colours for exceptional cases. 8180 These are intended for internal use in very special circumstances. 8181 8182 + Reword GuixSD to "Guix System" in the list of package formats 8183 currently available. 8184 8185 + Reviewed the main blue colours for both themes. While the changes are 8186 practically impossible to discern upon first sight, the process was 8187 far from straightforward. A complete report documents the minutia: 8188 <https://protesilaos.com/codelog/2020-09-14-modus-themes-review-blues/>. 8189 8190 + Reviewed the "active" palette subset, typically used in the modelines. 8191 No report was necessary for those, as the changes were fairly simple. 8192 8193 + Reviewed the "intense" background colour that comes into effect when 8194 users opt for the customisation option for intense paren-match styles 8195 (check the manual). Both the hue and the saturation have been changed 8196 to better conform with the intended function of this particular entry. 8197 8198 + Reviewed the fringe-specific accented backgrounds. Commit 7316e3320 8199 contains tables that compare the relative luminance of old and new 8200 values. 8201 8202 + Improved the advice for setting fonts using 'set-face-attribute'. The 8203 information is in the manual and is also available as a blog entry: 8204 <https://protesilaos.com/codelog/2020-09-05-emacs-note-mixed-font-heights/>. 8205 8206 + Rewrote an expression as "(or x y)" instead of "(if x x y)" in one 8207 place. Just goes to show that tweaking the code is also part of the 8208 deal. 8209 8210 + Abstracted and simplified heading level properties by using bespoke 8211 theme faces. Makes it easier to keep things consistent across the 8212 various face groups. 8213 8214 + Same principle as above for diff-related styles. 8215 8216 + Users who prefer to do things their own way or who just wish to 8217 contribute code to the Modus themes may wish to read my "Notes for 8218 aspiring Emacs theme developers": 8219 <https://protesilaos.com/codelog/2020-08-28-notes-emacs-theme-devs/>. 8220 8221 This has been yet another period of intense work: reviewing faces and 8222 applying colours is never easy, adding new customisation options is 8223 always tricky, and documenting everything takes a lot of time (unless 8224 you do all of those on a whimsy, which hopefully is not the case here). 8225 8226 Thanks again to everyone who helped improve the themes! 8227 #+end_src 8228 8229 * 0.12.0 8230 :PROPERTIES: 8231 :CUSTOM_ID: h:9d9394c1-84b6-4c23-8936-fe4f2f43301d 8232 :END: 8233 8234 #+begin_src text 8235 Modus Operandi and Modus Vivendi version 0.12.0 8236 8237 By Protesilaos Stavrou <info@protesilaos.com> on 2020-08-26 8238 8239 This entry documents the set of changes since version 0.11.0 8240 (2020-07-31). There have been around 70 commits in the meatime, though 8241 the sheer number may obfuscate the fact that a lot of work has gone into 8242 this release. 8243 8244 As always, every change described here conforms with the accessibility 8245 objective of the themes for a minimum 7:1 contrast ratio between 8246 background and foreground values in their given combinations 8247 (conformance with the WCAG AAA standard). 8248 8249 New customisation options 8250 ========================= 8251 8252 1 Completion Frameworks 8253 ----------------------- 8254 8255 The star of the show has to be the new option that refashions the 8256 aesthetics of completion UIs: Helm, Icomplete, Ido, Ivy, Sallet, 8257 Selectrum. The 'modus-operandi-theme-completions' and 8258 'modus-vivendi-theme-completions' accept the following symbols: 8259 8260 + nil (default) 8261 + moderate 8262 + opinionated 8263 8264 Nil means that the overall presentation of the UI follows the patterns 8265 established by its own source code. For example, Ivy uses four distinct 8266 background and foreground combinations of accented colours to highlight 8267 the matching groups. A grey background is added to denote the implicit 8268 match between those groups. So we choose to respect this metaphor, 8269 while applying colours that conform with the accessibility goal of our 8270 project. Whereas Icomplete or Ido use subtle styles to present their 8271 results. Again, we remain faithful to their presentation. 8272 8273 With 'moderate', we apply nuanced background and foreground combinations 8274 of accented colour values. This will slightly tone down Helm, Ivy, 8275 Sallet, Selectrum, while it will slightly adjust the looks of Icomplete 8276 and Ido. 8277 8278 Whereas 'opinionated' has a more pronounced effect on the overall 8279 aesthetics of the UI. For the likes of Icomplete and Ido which are 8280 subtle by default, this option will use intense combinations of 8281 background and foreground colours. They are the diametric opposite of 8282 the nil value. Whereas Helm, Ivy, Sallet, Selectrum, will use even more 8283 subtle colours. Again, they are farther away than their default looks. 8284 8285 These new options supersede the now-deprecated and more limited in scope 8286 variables of prior releases: 8287 8288 + modus-operandi-theme-intense-standard-completions 8289 + modus-vivendi-theme-intense-standard-completions 8290 8291 Thanks to the following people for their valuable feedback in issue 75: 8292 https://gitlab.com/protesilaos/modus-themes/-/issues/75 8293 8294 + Anders Johansson 8295 + Manuel Uberti 8296 + Shreyas Ragavan 8297 8298 2 Prompts 8299 --------- 8300 8301 The 'modus-operandi-theme-prompts' and modus-vivendi-theme-prompts' will 8302 change the overall looks of minibuffer and shell prompts ('M-x shell' as 8303 well as 'M-x eshell'). Their possible values are: 8304 8305 + nil (default) 8306 + subtle 8307 + intense 8308 8309 Nil will only use a coloured foreground for the prompts' text. Simple 8310 and effective. 8311 8312 With 'subtle', the default foreground value is retained but is now 8313 complemented by an appropriately tinted background. The effect is more 8314 noticeable than the default, though not by much. 8315 8316 While 'intense' applies a coloured background and foreground combination 8317 that should clearly stand out from the rest of the context. 8318 8319 Thanks to Manuel Uberti for sharing feedback in issue 74: 8320 https://gitlab.com/protesilaos/modus-themes/-/issues/74 8321 8322 3 Fringe visibility 8323 ------------------- 8324 8325 A new pair of symbols supersedes older variables: 8326 8327 + modus-operandi-theme-visible-fringes ==> modus-operandi-theme-fringes 8328 + modus-vivendi-theme-visible-fringes ==> modus-vivendi-theme-fringes 8329 8330 While the deprecated options were booleans, the current ones offer a 8331 choice between the following: 8332 8333 + nil (default) 8334 + subtle 8335 + intense 8336 8337 Nil means that the fringes have no distinct background of their own. 8338 They still exist per the settings of 'fringe-mode', but can only be 8339 discerned by tracking the negative space between the frame's or window's 8340 edge and the buffer's effective boundaries. 8341 8342 The 'subtle' value will apply a greyscale background that is fairly 8343 close to the default main background (pure white/black). The fringes 8344 are now visible. 8345 8346 As its name implies, 'intense' has a more pronounced effect than the 8347 other values. It also uses a greyscale background. 8348 8349 Review of already supported faces and colours 8350 ============================================= 8351 8352 1 Magit blame styles 8353 -------------------- 8354 8355 The headers that Magit's blame interface produces were difficult to tell 8356 apart from their context. A set of carefully selected colours now makes 8357 sure that they are always distinct. Some subtle background values are 8358 used, in addition to other typographic elements. 8359 8360 Thanks to Damien Cassou for reporting this problem and for providing 8361 valuable feedback that informed the final design. Refer to issue 71: 8362 https://gitlab.com/protesilaos/modus-themes/-/issues/71 8363 8364 2 Paren match colours 8365 --------------------- 8366 8367 The face that highlights the matching delimiter when 'show-paren-mode' 8368 (or equivalent) is enabled uses two dedicated colours, whose names are: 8369 'bg-paren-match' and 'bg-paren-match-intense'. Those have been reviewed 8370 to make them more obvious in various contexts and to improve their 8371 overall consistency. 8372 8373 A report with relative contrast ratios is available on my website: 8374 https://protesilaos.com/codelog/2020-08-09-modus-themes-paren-match/ 8375 8376 I benefited from valuable feedback from Shreyas Ragavan in issue 70: 8377 https://gitlab.com/protesilaos/modus-themes/-/issues/70 8378 8379 3 Mu4e faces 8380 ------------ 8381 8382 Some faces were tweaked to make it easier to distinguish replied, 8383 forwarded, and draft messages from other headers. The changes are 8384 fairly small in scope, but the effect should be that of an overall 8385 improvement. 8386 8387 Thanks to Shreyas Ragavan for noticing these inconsistencies and for 8388 their continued participation in addressing them. See issue 69: 8389 https://gitlab.com/protesilaos/modus-themes/-/issues/69 8390 8391 4 Notmuch message headings 8392 -------------------------- 8393 8394 A couple of inconsistencies with how notmuch would style email addresses 8395 and folded messages were addressed. The generic 'italic' face was also 8396 tweaked in the process, removing the foreground it would falsely define. 8397 8398 Thanks to Damien Cassou for bringing these to my attention in issue 72: 8399 https://gitlab.com/protesilaos/modus-themes/-/issues/72 8400 8401 5 hl-todo 8402 --------- 8403 8404 Let the special keywords of 'hl-todo-mode' use an optional slant, just 8405 like code comments do. This is to ensure that they feel part of their 8406 context. 8407 8408 6 Magit general interface 8409 ------------------------- 8410 8411 Several faces were reviewed in the interest of colour harmony and to 8412 address potential inconsistencies or exaggerations. The most noticeable 8413 change pertains to the log views, as we now use fewer accent values, 8414 reducing whatever unnecessary "rainbow effect" may have existed. 8415 8416 7 VC commit logs 8417 ---------------- 8418 8419 The presentation of 'vc-print-log' and 'vc-print-root-log' has been 8420 reviewed to reduce the stark contrast between the colours it once used. 8421 While the elements remain distinct, the differences between them are 8422 more subtle, which is preferable when viewing long lists of 8423 similar-looking patterns. 8424 8425 8 Powerline 8426 ----------- 8427 8428 The active and inactive minibuffers now use appropriate accented 8429 backgrounds or foregrounds for some of their elements. This makes them 8430 better for their intended function. 8431 8432 Thanks to Shreyas Ragavan and tycho garen for their feedback in issue 8433 73, which was actually about adding support for Spaceline. It uses 8434 Powerline as its dependency, so we eventually had to accommodate both of 8435 them: https://gitlab.com/protesilaos/modus-themes/-/issues/73 8436 8437 Shreyas also helped by adding a short note in the README which informs 8438 users of those two packages on how to tweak things when conducting tests 8439 or changing themes. See merge requests 9 and 10: 8440 8441 + https://gitlab.com/protesilaos/modus-themes/-/merge_requests/9 8442 + https://gitlab.com/protesilaos/modus-themes/-/merge_requests/10 8443 8444 9 Latex sectioning 8445 ------------------ 8446 8447 The themes will no longer affect the height of the Latex sectioning 8448 faces. This is because there already exists a variable that scales them 8449 accordingly. 8450 8451 Thanks to Anders Johansson for providing insights in issue 77: 8452 https://gitlab.com/protesilaos/modus-themes/-/issues/77 8453 8454 10 Transient pop-up menu 8455 ------------------------ 8456 8457 Extended support for its new colour-coded faces that follow in the 8458 footsteps of the 'hydra' package for visual semantics. 8459 8460 11 Miscellaneous 8461 ---------------- 8462 8463 The following faces were refined: 8464 8465 + 'org-formula' inherits from 'fixed-pitch' to ensure that it does not 8466 break table layouts when the user opts for a mixed-font setup (such as 8467 with 'M-x variable-pitch-mode'). 8468 8469 + 'bongo-elapsed-track-part' uses a more appropriate accented 8470 background. 8471 8472 + 'symbol-overlay-default-face' is less intense than before. This is in 8473 response to feedback I received from Manuel Uberti as an aside in 8474 issue 75: https://gitlab.com/protesilaos/modus-themes/-/issues/75 8475 8476 + 'rectangle-preview' uses a slightly accented background, which 8477 distinguishes it from the highlighted region. This is to denote a 8478 different state where the user is typing in some text. 8479 8480 + 'diff-hl-change' now uses the more appropriate yellow colour instead 8481 of blue. Yellow denotes "mixed changes" and, therefore, stands 8482 between "removed" (red) and "added" (green). As it so happens, yellow 8483 is a colour that derives by mixing red with green. 8484 8485 New packages 8486 ============ 8487 8488 The following are now explicitly supported by the themes: 8489 8490 + org-table-sticky-header 8491 + pkgbuild-mode 8492 + semantic 8493 + spaceline 8494 8495 More faces or face groups that are defined: 8496 8497 + git-rebase (magit) 8498 + doom-modeline-debug-visual 8499 + file-name-shadow 8500 + the faces used by Emacs 27's 'display-line-numbers-major-tick' and 8501 'display-line-numbers-minor-tick' 8502 + table-cell 8503 8504 Final notes 8505 =========== 8506 8507 There now exists an HTML version of the README, which will hopefully 8508 make things easier for users: https://protesilaos.com/emacs/modus-themes/ 8509 8510 Other changes are not user-facing. For example, using 'pcase' instead 8511 of 'cond' to make relevant expressions more succinct. Or defining a 8512 coloured underline in a more straightforward way. No need to document 8513 them at length. 8514 8515 While this release introduces customisation options, it feels as though 8516 the themes are approaching a stable state. We know what works, we have 8517 a comprehensive colour palette that can meet our evolving needs, and we 8518 have already achieved broad package/face coverage. All while conforming 8519 with the overarching objective of this project for a minimum 7:1 8520 contrast ratio between background and foreground values in any given 8521 combination we specify. 8522 8523 I wish to thank everyone who has helped me by testing things and sharing 8524 their thoughts. The people already mentioned herein: 8525 8526 - Anders Johansson (https://gitlab.com/andersjohansson) 8527 - Damien Cassou (https://gitlab.com/DamienCassou) 8528 - Manuel Uberti (https://gitlab.com/muberti) 8529 - Shreyas Ragavan (https://gitlab.com/shrysr) 8530 - tycho garen (https://gitlab.com/tychoish) 8531 #+end_src 8532 8533 * 0.11.0 8534 :PROPERTIES: 8535 :CUSTOM_ID: h:7a453154-3486-45a8-9249-9183ad49ff42 8536 :END: 8537 8538 #+begin_src text 8539 Modus Operandi and Modus Vivendi version 0.11.0 8540 8541 By Protesilaos Stavrou <info@protesilaos.com> on 2020-07-31 8542 8543 This entry records the changes since version 0.10.0 (2020-06-24). The 8544 present release covers close to 100 commits, some of which introduce 8545 far-reaching changes. It is not just the quantity that matters. 8546 Sometimes even a minor tweak requires lots of testing and forethought. 8547 This release represents another month of intense work and attention to 8548 detail. 8549 8550 Palette review of "nuanced" colours 8551 =================================== 8552 8553 The themes contain a subset of palette variables that have a two-fold 8554 utility: 8555 8556 1. Provide a subtle coloured background that can be combined with all 8557 foreground colours that are intended for text/code highlighting. 8558 8559 2. Produce variegated text in cases where complementary information 8560 needs to be displayed alongside some more prominent construct 8561 (e.g. Org table formulas). 8562 8563 In early July 2020, these colours went through a comprehensive review to 8564 improve their intended use. The complete report is available on my 8565 website: 8566 <https://protesilaos.com/codelog/2020-07-08-modus-themes-nuanced-colours/> 8567 8568 This formed the preparatory work that enabled several of the changes 8569 documented herein, most noticeable among which is the "Org blocks" 8570 customisation option. 8571 8572 Customisation options 8573 ===================== 8574 8575 Org blocks 8576 ---------- 8577 8578 1. The symbols 'modus-operandi-theme-distinct-org-blocks' and 8579 'modus-vivendi-theme-distinct-org-blocks' are DEPRECATED. They are 8580 now REPLACED by the general-purpose 'modus-operandi-theme-org-blocks' 8581 and 'modus-vivendi-theme-org-blocks' respectively. 8582 8583 2. The aforementioned new symbols allow users to configure different 8584 styles for Org blocks. 8585 8586 + Option 'greyscale' (which you must quote like this: 'greyscale) 8587 will apply a subtle grey background to the contents of the block, 8588 while it will extend its beginning and end lines to ensure that the 8589 area is distinct from the rest of the buffer. This is the style 8590 you would normally get with the old customisation options. 8591 8592 + Option 'rainbow' (again, must be quoted) will instead apply a 8593 colour-coded subtle background in the main area of the block. The 8594 exact colour depends on the programming language being used. You 8595 would need to check the source code for how these are currently 8596 mapped (search for "org-src-block-faces"). The basic idea is to 8597 have different colours that make it easier for mixing the 8598 input/output of multiple programming languages. Users who engage 8599 in literate programming may find this particularly useful. Because 8600 the block is already quite apparent, the beginning and end lines 8601 are not extended to the edge of the window, to avoid exaggerations 8602 that could create distractions. 8603 8604 Variable pitch headings (proportionately-spaced headings) 8605 --------------------------------------------------------- 8606 8607 The symbols 'modus-operandi-theme-proportional-fonts' and 8608 'modus-vivendi-theme-proportional-fonts' are DEPRECATED. They are now 8609 REPLACED by the more appropriately-named 8610 'modus-operandi-theme-variable-pitch-headings' and 8611 'modus-vivendi-theme-variable-pitch-headings' respectively. 8612 8613 The intended effect is exactly the same as before, namely, to let 8614 headings in Org and relevant modes use a proportionately-spaced font 8615 regardless of what the default is (typically a monospaced typeface). 8616 8617 Remember that to configure the exact font family for the generic 8618 'variable-pitch' face, you can use something like this: 8619 8620 (set-face-attribute 'variable-pitch nil :family "FiraGO") 8621 8622 Check the README for further details on setting and mixing fonts. 8623 8624 Faint syntax for programming 8625 ---------------------------- 8626 8627 Users can now enable 'modus-operandi-theme-faint-syntax' or 8628 'modus-vivendi-theme-faint-syntax'. The intended effect is to tone down 8629 all syntax highlighting in programming modes, while always respecting 8630 the overarching objective of these themes for a minimum contrast ratio 8631 of 7:1 (highest accessibility standard for colour contrast---WCAG AAA). 8632 8633 The default is to use more saturated colours. 8634 8635 Intense hl-line 8636 --------------- 8637 8638 Toggling on 'modus-operandi-theme-intense-hl-line' or 8639 'modus-vivendi-theme-intense-hl-line' will apply a more pronounced grey 8640 to the background of faces that highlight the current line. This 8641 affects tools such as the built-in 'hl-line-mode', which is in turn 8642 enabled automatically by lots of other packages, like 'elfeed' and 8643 'mu4e'. 8644 8645 The default is to use a subtle grey. 8646 8647 Intense paren-match 8648 ------------------- 8649 8650 Same principle as above. 'modus-operandi-theme-intense-paren-match' and 8651 'modus-vivendi-theme-intense-paren-match' will make the matching 8652 parentheses more intense than the default subtle warm background. This 8653 concerns modes such as that of the 'smartparens' package as well as the 8654 built-in 'show-paren-mode'. 8655 8656 Refactored the use of bold 8657 ========================== 8658 8659 A major review of the themes now makes it possible to specify the exact 8660 weight of what a "bold" typeface is. This is only meaningful for cases 8661 where a font family has variants such as "semibold". 8662 8663 Evaluate this, replacing "semibold" with the one your typeface supports: 8664 8665 (set-face-attribute 'bold nil :weight 'semibold) 8666 8667 The default is to use a standard bold weight. 8668 8669 Packages and face groups 8670 ======================== 8671 8672 Refine already-supported faces 8673 ------------------------------ 8674 8675 + The following packages now use more appropriate colour combinations: 8676 8677 - diary 8678 - annotate 8679 - transient (magit pop-up menu, though also used elsewhere) 8680 - fountain 8681 - calendar 8682 - mu4e 8683 - markdown-mode 8684 - outline-minor-faces 8685 8686 + Other changes: 8687 8688 - org-agenda has undergone a thoroughgoing review to improve the 8689 semantics of colour for scheduled tasks, deadlines, modeline 8690 filters, current date etc. 8691 8692 - org and outline-mode headings have been refined to look better with 8693 the "rainbow headings" option that was introduced in an earlier 8694 release (check the README). 8695 8696 - org-quote now works properly with the "Org blocks" option mentioned 8697 above. 8698 8699 - org-checkbox-statistics uses the same foreground colour as org-todo, 8700 for the sake of consistency. 8701 8702 - org-date now always inherits from 'fixed-pitch', to ensure proper 8703 alignment of elements when a mixed fonts setup is used (tools for 8704 achieving this effect are documented at length in the README). The 8705 relevant patch was contributed by Matthew Stevenson. 8706 8707 - org-meta-line no longer looks like a comment, which helps denote its 8708 special utility (e.g. when evaluating a table's formula). 8709 8710 - org-warning now uses a variant of red for its text, which works 8711 better in the contexts this face is used (e.g. the agenda or the 8712 export dispatcher). 8713 8714 - We now apply a slightly more accented colour combination for 8715 'secondary-selection', which is chiefly used by Org and Calendar in 8716 various contexts. 8717 8718 - Gnus group level faces make more considerate use of colour to better 8719 denote their significance. 8720 8721 - Cited text in message buffers has a better sequence of colours. 8722 8723 - Two new Helm faces are supported. 8724 8725 - Let 'keycast' use a different border colour when the "3D modeline" 8726 option is enabled (refer to the README for that option). 8727 8728 - Extend 'hl-todo-keyword-faces' with the "bug" keyword. 8729 8730 - More intense colour for 'diff-hl-reverted-hunk-highlight'. 8731 8732 - Tone down the focused modeline's border colour. 8733 8734 - Define new bespoke faces that the themes use internally. 8735 8736 - Use more appropriate colours for 'header-line-highlight'. 8737 8738 - Apply greyscale line highlight for flycheck current line in the 8739 diagnostics buffer, instead of the warmer colour combination it had 8740 before. 8741 8742 - Tweak text colour difference between MU4E read and unread messages. 8743 8744 Added support for new packages 8745 ------------------------------ 8746 8747 + bongo 8748 + boon 8749 + dictionary 8750 + eshell-fringe-status 8751 + eshell-git-prompt 8752 + eshell-prompt-extras 8753 + highlight-tail 8754 + hl-defined 8755 + notmuch 8756 + tty-menu 8757 8758 Miscellaneous 8759 ============= 8760 8761 + Expand the README with new documentation and clarify parts of the 8762 existing one. 8763 8764 + Update the Wiki page with screenshots and their descriptions (this in 8765 itself is a day's worth of work): 8766 https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots 8767 8768 + Make the source code of each theme work better with the built-in 8769 'outline-minor-mode'. Check my video if you need a demo on how I use 8770 this in tandem with 'imenu': 8771 https://protesilaos.com/codelog/2020-07-20-emacs-outline-imenu/ 8772 8773 Thanks to, in no particular order: 8774 8775 + Shreyas Ragavan (https://gitlab.com/shrysr) for introducing me to the 8776 idea that derived the "rainbow" Org blocks and for providing valuable 8777 feedback in several issues. 8778 8779 + Matthew Stevenson (https://gitlab.com/matth0204) for contributing the 8780 aforementioned patch for the 'org-date' face. 8781 8782 + Manuel Uberti (https://gitlab.com/muberti) for offering valuable 8783 feedback in a number of issues (and special thanks for doing this for 8784 several months now). 8785 8786 + Dinko (https://gitlab.com/dinkonin) for noticing a not-so-obvious bug 8787 in the initial implementation of the "rainbow Org blocks" option. 8788 8789 + okamsn (https://gitlab.com/okamsn) for providing the necessary 8790 feedback that allowed me to refactor the use of "bold", mentioned 8791 above. 8792 8793 Refer to the issue tracker (or commit log) for further details: 8794 https://gitlab.com/protesilaos/modus-themes/-/issues 8795 #+end_src 8796 8797 * 0.10.0 8798 :PROPERTIES: 8799 :CUSTOM_ID: h:de114a53-7cbd-49aa-bf24-d1f1f0bf342e 8800 :END: 8801 8802 #+begin_src text 8803 Modus Operandi and Modus Vivendi version 0.10.0 8804 8805 By Protesilaos Stavrou <info@protesilaos.com> on 2020-06-24 8806 8807 This entry records the changes since version 0.9.0 (2020-06-03). The 8808 present release is focused on stability and internal improvements. 8809 8810 Fixes and adjustments 8811 --------------------- 8812 8813 Basil L. Contovounesios, aka @basil-conto, (and also a contributor to 8814 core Emacs) sent several patches that do the following: 8815 8816 + Fix top-level parentheses so that the results of 8817 'custom-theme-set-faces' and 'custom-theme-set-variables' are not 8818 passed as arguments to the first 'custom-theme-set-faces'. 8819 8820 + Fix the docstrings of the custom 'modus-theme-*' faces. 8821 8822 + Simplify the syntax of properties assigned to each face. 8823 8824 + Improve the way styles are inherited by Dired and Ibuffer. 8825 8826 Basil also pointed out an inconsistency with regard to an unwanted 8827 underline effect for the 'doom-modeline-urgent' face in Modus Vivendi. 8828 It was promptly removed. 8829 8830 From my part, I fixed issues 46 and 51 that concerned the way the 8831 compiler would evaluate each theme's palette. The palette is now 8832 defined as a constant. Further information: 8833 8834 - https://gitlab.com/protesilaos/modus-themes/-/issues/46 8835 - https://gitlab.com/protesilaos/modus-themes/-/issues/51 8836 8837 8838 Improvements to existing faces 8839 ------------------------------ 8840 8841 André Alexandre Gomes (@aadcg) provided valuable feedback and 8842 suggestions in issue 50 on the redesign of several 'org-mode' faces. 8843 8844 The thread is long and contains lots of screenshots: 8845 https://gitlab.com/protesilaos/modus-themes/-/issues/50 8846 8847 The changes in outline: 8848 8849 + Org checkboxes have a subtle background which gives them a more 8850 pronounced appearance while retaining their overall simplicity. 8851 8852 + Org dates use a more saturated variant of cyan than they did before. 8853 It helps distinguish them from their context. Especially true for 8854 dates inside of tables. 8855 8856 + Org agenda dates have also undergone a slight review to match the 8857 above. 8858 8859 + Org time grid now uses a more appropriate foreground colour, which has 8860 been designed specifically for unfocused context. 8861 8862 + Org todo keywords use a more semantically-correct variant of red, 8863 rather than the purple one they had before. 8864 8865 + Org statistics' cookies for pending tasks use a red variant as well 8866 rather than the previous yellow one, in the interest of consistency 8867 and to avoid exaggerations. 8868 8869 8870 Other internal refinements 8871 -------------------------- 8872 8873 + Subtle review of the Modus Vivendi palette. In short, it addresses: 8874 8875 - Imbalanced levels of luminance and inconsistent differences in hue 8876 between them and their neighbouring colours (e.g. the greens between 8877 them, and the greens next to the yellows in the context of syntax 8878 highlighting). The result was that they would create an undesirable 8879 emphatic 'pop out' effect when placed close to more moderate 8880 colours. 8881 8882 - Differences in luminance and hue could lead to scenaria where two 8883 colours could be conflated with each other or otherwise fail to 8884 perform their intended function. 8885 8886 - The complete report is on my website: 8887 https://protesilaos.com/codelog/2020-06-13-modus-vivendi-palette-review/ 8888 8889 + Major review of the 'diredfl' faces, in the interest of improved 8890 readability and harmony between the various colours. This benefits 8891 from the palette changes in Modus Vivendi, but also from a similar 8892 review to Modus Operandi that was documented in version 0.9.0. 8893 8894 + Refactor the names of dedicates colours for "marking" purposes. These 8895 are used in Dired, Ibuffer, Proced, etc. Then apply them consistently 8896 throughout each theme. 8897 8898 + Make sure that 'stripes' uses the same colours as 'hl-line-mode'. 8899 8900 + Let symlinks use a more appropriate colour in Dired and Trashed. 8901 8902 + Refine the use of colour in 'magit-tag', 'eshell-prompt', 8903 'message-header-name', 'log-edit-header', 'change-log-function', 8904 'message-mml', 'message-header-name', 'message-separator'. These are 8905 subtle (i.e. difficult) tweaks that improve the overall presentation 8906 in context. 8907 8908 + Make diff indicators not use an unnecessary background when the 8909 user-facing option for "subtle diffs" is enabled (check the README for 8910 the exact name of this option). This ensures consistency between the 8911 indicators and the actual scope of the diffs. 8912 8913 + Add support for the 'minibuffer-line' package and extend existing 8914 support of the faces used in the built-in Emacs info pages. 8915 8916 My thanks to Basil and André for their contributions! 8917 #+end_src 8918 8919 * 0.9.0 8920 :PROPERTIES: 8921 :CUSTOM_ID: h:96ccc8b9-2d5e-4857-bf25-4e094e17bfed 8922 :END: 8923 8924 #+begin_src text 8925 Modus Operandi and Modus Vivendi version 0.9.0 8926 8927 By Protesilaos Stavrou <info@protesilaos.com> on 2020-06-03 8928 8929 This entry records the changes since version 0.8.0 (2020-04-28). The 8930 present release contains about 50 commits, covering a month of active 8931 development. 8932 8933 All changes are aligned with the primary objective of this project, 8934 which is conformance with the WCAG AAA accessibility standard for colour 8935 contrast. This translates to a minimum contrast ratio of 7:1 between a 8936 given combination of foreground and background colours. The highest 8937 standard of its kind. 8938 8939 All customisation options that are booleans are off ('nil') by default. 8940 The project's policy is to offer such features on an "opt-in" basis, 8941 while always respecting the principle of least surprise. 8942 8943 Refer to the README for further information on the exact names of 8944 symbols and the like. 8945 8946 New customisation options 8947 ------------------------- 8948 8949 + It is now possible to make the faces of Icomplete, Ido, and a few 8950 other related tools such as 'orderless', use coloured backgrounds to 8951 style their feedback. This is the aesthetic already in effect for 8952 Ivy, Helm, and Selectrum. The default is more subtle, in that it uses 8953 just an accented foreground value without any added background. 8954 8955 + Advanced users can now override both the exact values of colour 8956 variables, as well as the mapping of properties/variables to faces. 8957 In practice this means that it is possible to completely change parts 8958 of the theme (or the entirety of it for that matter). It also means 8959 that users can simply access the theme's palette for the sake of 8960 correctly passing the appropriate value to some bespoke face of 8961 theirs. 8962 8963 + An extra increment for scaled headings is now available. This should 8964 hold the highest value on the scale. Such variables only take effect 8965 when the user opts for the "scaled headings" option. 8966 8967 Overview of changes 8968 ------------------- 8969 8970 + A set of internal reforms were carried through in order to allow the 8971 colour palette to be accessed from user configuration files. This 8972 required a lot of debugging work to make sure the themes compile 8973 properly and performance is not affected. 8974 8975 - The original idea for this redesign was suggested by Len Trigg in 8976 issue 39: https://gitlab.com/protesilaos/modus-themes/-/issues/39. 8977 Len also provided a real-world implementation of this new option, 8978 which is included in the project's README. 8979 8980 - André Alexandre Gomes helped figure out the problems caused by the 8981 initial design of this feature. In particular, André identified a 8982 performance penalty as well as errors pertaining to byte 8983 compilation. Everything was eventually resolved. For more see 8984 issue 44: https://gitlab.com/protesilaos/modus-themes/-/issues/44. 8985 8986 + Several org-mode faces were reviewed in order to cope well with mixed 8987 font settings. This is about use-cases where the main typeface is 8988 proportionately-spaced, either by default or by some minor mode like 8989 the built-in 'variable-pitch-mode'. The intent of configuring those 8990 faces is to make them always inherit a fixed-pitch (monospace) font 8991 family, in the interest of preserving the alignment of elements. The 8992 idea, suggested code, as well as user feedback were offered by Ben in 8993 issue 40: https://gitlab.com/protesilaos/modus-themes/-/issues/40. 8994 8995 + Mixed font settings may have some side-effects depending on user 8996 configurations. This is unavoidable as we cannot control how users 8997 define their fonts. Mark Barton reported one such case, while he was 8998 able to fix it by making use of the suggested typeface definitions. 8999 See issue 42: https://gitlab.com/protesilaos/modus-themes/-/issues/42. 9000 9001 + The faces for the 'tab-bar-mode' and 'tab-line-mode' that ship with 9002 Emacs 27 were written anew. Same for those of 'centaur-tabs'. The 9003 ideas for the redesign as well as the overall aesthetic are Ben's, per 9004 issue 41: https://gitlab.com/protesilaos/modus-themes/-/issues/41. 9005 9006 + An edge case with Helm's interpretation of colour values for its 9007 ripgrep interface was reported by Manuel Uberti in issue 49: 9008 https://gitlab.com/protesilaos/modus-themes/-/issues/49. It 9009 essentially had to do with the syntax for the regexp engine as read by 9010 the underlying 'rg' executable. Collaboration on that front 9011 eventually led to fixes in Helm itself, committed by its maintainer. 9012 Note that the README for the Modus themes already contains information 9013 on how Helm applies a face to the matches of grep or grep-like 9014 commands. Issue 49 confirmed what was already known in that regard 9015 (i.e. that the "--color=never" command-line option is required to use 9016 the Helm face, else a colour value from the ANSI colour vector is 9017 used---both are supported by the themes). 9018 9019 + The faces for Flycheck, Flymake, and Flyspell that would apply an 9020 underline effect were completely rewritten to account for relevant 9021 differences between GUI and TUI Emacs. 9022 9023 - For GUI Emacs, all affected faces will now just use a colour-coded 9024 wavy underline. Empowered by the introduction of dedicated 9025 linter-related colours in prior commits (for version 0.8.0), we no 9026 longer have to change the foreground value of the offending text in 9027 addition to applying the underline effect. Whereas before the text 9028 would also get repainted, which was too intrusive in most 9029 circumstances. 9030 9031 - If support for wavy underlines is not available, we assume the 9032 presence of a TUI, which generally is relatively more limited in its 9033 ability to reproduce colours with precision (meaning that the 9034 dedicated linter colour could be distorted, potentially producing 9035 inaccessible combinations). So for those cases we apply a straight 9036 underline combined with a colour-coded foreground for the affected 9037 text. This makes it more intense compared to the GUI equivalent, 9038 but is the necessary course of action to overcome the constraints 9039 imposed by the underlying terminal. 9040 9041 + The palette of Modus Operandi underwent lots of subtle changes to make 9042 the background value of hl-line-mode more visible while retaining the 9043 overall style and character of the theme. In principle, you should 9044 not be able to tell the difference, unless presented with a careful 9045 side-by-side comparison. This is the comprehensive report, including 9046 a reproducible org-mode document with all the relevant contrast ratios: 9047 https://protesilaos.com/codelog/2020-05-10-modus-operandi-palette-review/. 9048 9049 + Fixed `org-hide' to actually "hide" by using the appropriate colour 9050 value. 9051 9052 + Several other face groups received minor tweaks. 9053 9054 + The README was improved to better present the available customisation 9055 options and to cover other topics of interest. 9056 9057 + Updated the screen shots and their description in the relevant Wiki 9058 page: https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots. 9059 9060 Added support for 9061 ----------------- 9062 9063 + circe 9064 + el-search 9065 + eros 9066 + golden-ratio-scroll-screen 9067 + highlight-indentation 9068 + hyperlist 9069 + indium 9070 + journalctl-mode 9071 + minimap 9072 + nxml-mode 9073 + vdiff 9074 + yasnippet 9075 #+end_src 9076 9077 * 0.8.0 9078 :PROPERTIES: 9079 :CUSTOM_ID: h:afa34aec-7079-4c45-8e16-ab4e7cc8cd6a 9080 :END: 9081 9082 #+begin_src text 9083 Modus Operandi and Modus Vivendi version 0.8.0 9084 9085 By Protesilaos Stavrou <info@protesilaos.com> on 2020-04-28 9086 9087 This entry records the changes since version 0.7.0 (2020-03-30). The 9088 present release contains a little more than a hundred commits, covering 9089 one month of intense work. 9090 9091 All changes are aligned with the primary objective of this project, 9092 which is conformance with the WCAG AAA accessibility standard for colour 9093 contrast. This translates to a minimum contrast ratio of 7:1 between a 9094 given combination of foreground and background colours. 9095 9096 All customisation options mentioned herein are off ('nil') by default. 9097 The project's policy is to offer such features on an "opt-in" basis, 9098 while always respecting the principle of least surprise. 9099 9100 Refer to the README for further information. 9101 9102 9103 Four new customisation options 9104 ------------------------------ 9105 9106 The options in outline, with their detailed description below: 9107 9108 + Rainbow headings 9109 + Section headings 9110 + 3D modeline 9111 + Subtle diffs 9112 9113 1. "Rainbow headings" will apply more vivid colours to headings in 9114 'org-mode' and 'outline-mode'. The gradation is similar to that of a 9115 rainbow's colour spectrum. 9116 9117 The default is to use colour values that are closer to the grey 9118 scale. 9119 9120 2. "Section headings" also apply to 'org-mode' and 'outline-mode'. They 9121 will draw an overline over each heading and use a nuanced background 9122 colour that is appropriate for each level. For Org, this option has 9123 some additional effects, where it will render keywords and priority 9124 cookies in a box and add to them a subtle background. This is to 9125 make sure that everything feels consistent (to the extent possible). 9126 9127 The default is to not use overlines, backgrounds, boxes in any of the 9128 relevant faces. This is consistent with the standard austere 9129 colouration of headings: to not deviate too much from a "plain text" 9130 aesthetic. 9131 9132 NOTE: "rainbow headings" and "section headings" can work on their own or 9133 be combined together. 9134 9135 3. "3D modeline" will use a faux unpressed button style for the current 9136 window's modeline (like the standard looks of 'emacs -Q'). The 9137 colours used for the active and inactive modelines are tweaked 9138 accordingly to maximise the effect while retaining the visual 9139 distinction between them. 9140 9141 The default is to draw the modelines in a two-dimensional style, with 9142 the active one having a more noticeable border around it. 9143 9144 4. "Subtle diffs" will use colour-coded text for line-wise differences 9145 without applying any appropriately-coded background value or, where 9146 necessary, by using only a subtle greyscale background. This affects 9147 'diff-mode', 'magit', 'ediff', and 'smerge-mode'. For Magit an extra 9148 set of tweaks is implemented to account for the differentiation 9149 between the focused and unfocused diff hunks. 9150 9151 Due to their unique requirements, word-wise or refined changes are 9152 always drawn with a colour-coded background, though it is less 9153 intense when this option is enabled. 9154 9155 The default is to use a colour-coded background and foreground 9156 combination (e.g. light green text on a dark green backdrop) and to 9157 make appropriate adjustments for refined diffs and modes of 9158 interaction such as Magit's focused/unfocused diff states. 9159 9160 9161 Other major refinements 9162 ----------------------- 9163 9164 + Thoroughly revise the colours of 'ediff' and 'smerge-mode', so that 9165 they are aligned with those of 'diff-mode' and 'magit'. This is in 9166 addition to the "subtle diffs" options mentioned in the previous 9167 section. 9168 9169 + Review the faces used by Flycheck and Flymake. A wavy/curly underline 9170 is now used in all terminals that support it. The underlined text is 9171 drawn with a more nuanced foreground than before. The previous design 9172 was exaggerating an already clear effect and could make things more 9173 difficult under certain circumstances. 9174 9175 + All language checkers, including the aforementioned linter front-ends, 9176 now benefit from a new set of colours that are designed specifically 9177 for this particular purpose. Makes the affected faces feel more 9178 different than their context. 9179 9180 + Use dedicated colours for escape sequences, regular expression 9181 constructs, and quoted characters. The goal is to better 9182 differentiate them from their surroundings. 9183 9184 + Tweak the colours of 'hydra' to improve the distinction between its 9185 various types of behaviour. 9186 9187 + Reduce the overall luminance of the background colours used in the 9188 fringes by the likes of 'flycheck', 'flymake', 'diff-hl', etc. They 9189 should now not stand out more than they should, while retaining their 9190 intended role. 9191 9192 + Implement more saturated colours in Elfeed. The previous choices 9193 could make it harder to differentiate the various parts of the 9194 presentation. 9195 9196 + Make better use of the customisation options for bold and slanted 9197 constructs where that is allowed. If a face is not tied to the 9198 semantics of these styles then it is drawn without them, unless the 9199 user specifically opts for the relevant customisation options. 9200 9201 9202 Added support for packages (A-Z) 9203 -------------------------------- 9204 9205 + ag 9206 + color-rg 9207 + ctrlf 9208 + debbugs 9209 + eglot 9210 + forge 9211 + helpful 9212 + highlight-symbol 9213 + ibuffer 9214 + icomplete 9215 + iflipb 9216 + magit-imerge 9217 + man 9218 + orderless 9219 + page-break-lines 9220 + parrot 9221 + phi-grep 9222 + phi-search 9223 + pomidor 9224 + rcirc 9225 + spell-fu 9226 + switch-window 9227 + swoop 9228 + tab-bar-mode 9229 + tab-line-mode 9230 + trashed 9231 + tomatinho 9232 + tuareg 9233 + vimish-fold 9234 + visible-mark 9235 + vterm 9236 + wcheck-mode 9237 + winum 9238 + woman 9239 9240 9241 Miscellaneous changes and concluding remarks 9242 -------------------------------------------- 9243 9244 + Rewrote large parts of the README to make the customisation options 9245 easier to discover and understand. 9246 9247 + Updated the screen shots and their description in the relevant Wiki 9248 page: https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots 9249 #+end_src 9250 9251 * 0.7.0 9252 :PROPERTIES: 9253 :CUSTOM_ID: h:353114b7-6980-4622-8057-b8cbb8361a8a 9254 :END: 9255 9256 #+begin_src text 9257 Modus Operandi and Modus Vivendi version 0.7.0 9258 9259 By Protesilaos Stavrou <info@protesilaos.com> on 2020-03-30 9260 9261 This entry documents the changes since version 0.6.0 (2020-03-01). The 9262 present release is the largest to date containing 110 commits. 9263 9264 All changes conform with the primary objective of this project, which is 9265 conformance with the WCAG AAA accessibility standard for colour 9266 contrast. This represents a minimum contrast ratio of 7:1 between a 9267 given combination of foreground and background colours. 9268 9269 All customisation options mentioned herein are off ('nil') by default. 9270 The project's policy is to offer such features on an "opt-in" basis. 9271 Refer to the README or each theme's source code for the names of these 9272 user-facing symbols. 9273 9274 Major refinements to existing face groups 9275 ----------------------------------------- 9276 9277 + The headline feature of this release is a refined set of colours for 9278 visualising version-control-system differences ("diffs"). The new 9279 colours are less intense than before and are designed to better convey 9280 the meaning of the constructs they apply to. Affected face groups are 9281 those of 'magit' and 'diff-mode'. A future release will assess how 9282 similar packages, such as 'ediff', can benefit from this work. 9283 9284 + The other major set of changes concerns the colours that apply to 9285 fringes (see 'fringe-mode'). A new customisation option allows for a 9286 distinct background for the fringes (courtesy of Anders Johansson in 9287 commit 80fb704). The default uses the same colours as the main 9288 buffer's background. Building on this effort, fringe indicators, such 9289 as those of 'flycheck' now benefit from an entirely new set of 9290 background+foreground colour combinations that are designed 9291 specifically for the fringes. 9292 9293 + A new customisation option allows users to render 'org-mode' source 9294 blocks in a distinct background colour. The default is to use the 9295 same background as the rest of the buffer. When this option is 9296 enabled, the background colour for the beginning and end line of such 9297 blocks is extended to the end of the window (using the ':extend t' 9298 attribute for >= Emacs 27). Older Emacs versions already extend to 9299 the end of the window. 9300 9301 + The colour combination that shows the matching parentheses or 9302 delimiters has been reviewed. The commit is fairly small and the 9303 changes are immediately noticeable only to the most discerning of 9304 eyes. Still, the considerations informing the review imposed a 9305 rigorous method. Rather than summarise the findings, interested 9306 readers are advised to refer to commit af3a327: it offers a 9307 comprehensive analysis on the matter. 9308 9309 Added support for packages (A-Z) 9310 -------------------------------- 9311 9312 + auctex/tex 9313 + bm 9314 + buffer-expose 9315 + centaur-tabs 9316 + cider (tentative, feedback is much appreciated) 9317 + csv-mode 9318 + dynamic-ruler 9319 + ebdb 9320 + elfeed-score 9321 + flyspell-correct 9322 + fold-this 9323 + freeze-it 9324 + frog-menu 9325 + git-walktree 9326 + helm-switch-shell 9327 + highlight-defined 9328 + highlight-escape-sequences (hes-mode) 9329 + highlight-numbers 9330 + highlight-thing 9331 + hl-todo 9332 + ioccur 9333 + julia 9334 + kaocha-runner 9335 + markup-faces (adoc-mode) 9336 + multiple-cursors 9337 + num3-mode 9338 + org-roam 9339 + org-superstar 9340 + org-treescope 9341 + outline-minor-mode 9342 + paradox 9343 + rainbow-identifiers 9344 + rg 9345 + ripgrep 9346 + sallet (tentative, feedback is much appreciated) 9347 + selectrum 9348 + sesman 9349 + side-notes 9350 + skewer-mode 9351 + stripes 9352 + symbol-overlay 9353 + syslog-mode 9354 + vc-annotate (C-x v g) 9355 + volatile-highlights 9356 + web-mode 9357 + yaml-mode 9358 9359 Note about VC-annotate 9360 ---------------------- 9361 9362 Quoting from the relevant note in the project's README: 9363 9364 Due to the unique way `vc-annotate' (`C-x v g') applies colours, 9365 support for its background mode (`vc-annotate-background-mode') is 9366 disabled at the theme level. 9367 9368 Normally, such a drastic measure should not belong in a theme: 9369 assuming the user's preferences is bad practice. However, it has 9370 been deemed necessary in the interest of preserving colour contrast 9371 accessibility while still supporting a useful built-in tool. 9372 9373 If there actually is a way to avoid such a course of action, without 9374 prejudice to the accessibility standard of this project, then please 9375 report as much (or contribute as per the information in the 9376 Contributing section). 9377 9378 9379 Overview of refinements to already supported packages 9380 ----------------------------------------------------- 9381 9382 In this section the notion of "dedicated colours" pertains to colour 9383 values that are reserved for special faces. They are never used for 9384 syntax highlighting or other common scenaria. 9385 9386 + Define new background colours for fringe indicators (as noted in the 9387 first section). Apply them to 'bm', 'diff-hl', 'git-gutter', 9388 'flycheck' fringe indicators. All such indicators are now made more 9389 visible and work better with the new customisation option for 9390 rendering the fringes in a distinct background. 9391 9392 + Define dedicated colours for tab-like interfaces. Currently these 9393 apply only to 'centaur-tabs'. The intention is to eventually 9394 implement them to the tab modes that ship with Emacs 27, as well as 9395 any other package that offers such functionality. 9396 9397 + Define dedicated colours for actions that "mark" items. Use them in 9398 'dired', 'proced', 'gnus'. An accented background is combined with an 9399 accented foreground. The intention is to make the underlying 9400 construct distinct even under circumstances where the mark's 9401 background changes, such as when it intersects with 'hl-line-mode' or 9402 'stripes': the accented foreground will still be recognisable as a 9403 colour that differs from the main foreground. The use of a bold font 9404 weight further reinforces the intended action. 9405 9406 + Refine 'dired' faces to account for the new "mark" styles. 9407 Directories are no longer rendered in a bold weight. 9408 9409 + Tweak the colours used in the built-in 'diary' and 'calendar' for 9410 better usability. 9411 9412 + Tweak 'deadgrep' colours for consistency with packages that offer 9413 similar functionality. 9414 9415 + Tweak 'compilation-line-number' in the interest of consistency with 9416 similar interfaces. 9417 9418 + Use a more appropriate colour for 'trailing-whitespace'. It now is a 9419 colour value that was designed specifically as a background. 9420 9421 + Expand 'fountain-mode' support by covering its new heading faces. The 9422 headings will be presented in larger font sizes, or using proportional 9423 fonts, should the user enable the relevant theme customisation options 9424 (see README or source code). 9425 9426 + Remove bold weight from matching parentheses in 'show-paren-mode' and 9427 'smartparens'. The temporarily applied bold weight can cause 9428 misalignments while using certain fonts. Also apply the new colours 9429 for matching delimiters, as documented in the first section. 9430 9431 + Refine 'outline-mode' colours to be consistent with those of Org's 9432 headings. 9433 9434 + Several usability and colour refinements for 'helm' and related 9435 packages in that milieu. 9436 9437 + Remove box property from emphasis markers in the mode line. It 9438 created inconsistencies with other faces. 9439 9440 + Refine the colours used in Magit logs, `change-log', `log-view'. They 9441 are meant to be more distinct from their context, without drawing too 9442 much attention to themselves. 9443 9444 + Minor internal fixes for indentation and the like. 9445 9446 Miscellaneous changes and concluding remarks 9447 -------------------------------------------- 9448 9449 + Add section in the README which documents a legal requirement for all 9450 potential non-trivial code contributions: the need to assign copyright 9451 to the Free Software Foundation. The Modus Themes are now distributed 9452 via the official GNU ELPA repository and copyright over them is 9453 assigned to the FSF. 9454 9455 + Add CHANGELOG file which consolidates all tagged release notes such as 9456 this one. 9457 9458 + Add new screen shots to the relevant Wiki page, together with detailed 9459 descriptions on what is being demonstrated: 9460 https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots 9461 9462 Special thanks to Manuel Uberti for reporting several issues and 9463 offering feedback where appropriate. I was able to add support for lots 9464 of new packages. While a few among the already supported face groups 9465 underwent tweaks and refinements. The 'helm' ecosystem benefited the 9466 most. 9467 9468 Thanks to Anders Johansson for the patch that introduced the 9469 fringes-related customisation option. It inspired me to reconsider the 9470 use of this particular area of the interface, which eventually led to 9471 the barrage of commits that refashioned the fringe indicators. A major 9472 win overall. 9473 9474 Thanks to Jonathan Otsuka for fixing an error of mine on the naming of 9475 some symbols. My apologies for missing it: I will be more careful from 9476 now on. 9477 9478 Note: both patches were small, requiring no copyright assignment. 9479 Larger contributions are always welcome, though make sure you read the 9480 section in the README with regard to assigning copyright to the Free 9481 Software Foundation. 9482 #+end_src 9483 9484 * 0.6.0 9485 :PROPERTIES: 9486 :CUSTOM_ID: h:c8c33ff2-6f75-4642-a27e-ee6e8abc493e 9487 :END: 9488 9489 #+begin_src text 9490 This release contains lots of refinements and additions. 9491 9492 Let me start with an administrative point: I have completed the process 9493 of assigning my copy rights to the Free Software Foundation. This 9494 covers every contribution I make to GNU Emacs. In practice, it means 9495 that the Modus themes can now be included in the official ELPA archive 9496 and theoretically be shipped with Emacs itself. The ELPA inclusion is 9497 ongoing. Once it is completed, I will update the docs accordingly. 9498 9499 The administrative change has no effect on the way this project is 9500 handled. I still am the developer/maintainer and will continue to 9501 improve things further. If you still have questions, feel free to 9502 contact me: https://protesilaos.com/contact 9503 9504 Moving on to the changes since version 0.5.0 (2020-01-26). 9505 9506 Added support for: 9507 9508 + alert 9509 + apropos (built-in) 9510 + dap-mode 9511 + deft 9512 + dim-autoload 9513 + dired-git 9514 + enhanced-ruby-mode 9515 + gbd-mi.el (built-in library) 9516 + helm-ls-git 9517 + helm-xref 9518 + imenu-list 9519 + jira (org-jira) 9520 + js2-mode 9521 + jupyter 9522 + org-pomodoro 9523 + origami 9524 + rmail (built-in) 9525 + vc-print-log (built-in) 9526 + window-divider-mode (built-in) 9527 + xref (built-in) 9528 9529 Refinements to existing faces: 9530 9531 + A new subset of "nuanced" accent colours has been introduced. These 9532 are named {red,green,yellow,blue,magenta,cyan}-nuanced. Their purpose 9533 is to be used in contexts where lots of structured information is 9534 presented to the user, but each component does not need to draw too much 9535 attention to itself (e.g. Org's metadata). As always, their contrast 9536 ratio is designed to always be >= 7:1 relative to the backgrounds they 9537 may be combined with. 9538 9539 + Greatly improve the support for Gnus, even though most changes are 9540 subtle and are made in the interest of consistency. The group levels 9541 now make use of the "nuanced" palette where appropriate (to denote 9542 levels of lower importance). 9543 9544 + Several refinements for Org, including the use of "nuanced" colours 9545 for various metadata tags. The agenda headers will now be scaled 9546 appropriately and use a variable-pitch font if the user sets the 9547 relevant customisation values of the theme they are using (check the 9548 documentation in each theme file or the repo's README). 9549 9550 + Lots of refinements for Helm. Some of these were introduced to align 9551 the overall aesthetic with equivalent metaphors in Ivy. Others are 9552 meant to improve the styles of the headers and make various constructs 9553 consistent with their variants in the Helm ecosystem but also with their 9554 non-Helm counterparts (such as xref file names with and without Helm, 9555 but also with Helm's grep). 9556 9557 + Improve the colours of buttons in contexts such as M-x customize. 9558 This is especially noticeable in modus-vivendi-theme (the dark theme) 9559 where the buttons are a darker shade of grey rather than the original 9560 lighter one. 9561 9562 + Keycast now uses styles that are more consistent with the overall 9563 aesthetic of the Modus themes. This means that the mode line indicators 9564 are blue-ish (blue is generally used for highlights in the mode line, 9565 but also when hovering over an item with the mouse pointer). The pseudo 9566 button effect (colours + 3d) has been removed in favour of a flat look, 9567 in line with the flatness of the mode line itself. Whereas before the 9568 keycast faces where designed to be consistent with the package's 9569 defaults. 9570 9571 There were also a few minor refinements for: 9572 9573 + calendar and diary 9574 + icomplete 9575 + mm-uu-extract 9576 + nobreak-hyphen and nobreak-space 9577 + org-habit 9578 + tooltip-mode 9579 9580 Finally, the Commentary section of each theme has been greatly expanded. 9581 It now includes the user-facing customisation options and the complete 9582 list of supported packages. 9583 #+end_src 9584 9585 * 0.5.0 9586 :PROPERTIES: 9587 :CUSTOM_ID: h:dffc2bd4-6597-4be4-88f6-b349be7ebc6e 9588 :END: 9589 9590 #+begin_src text 9591 This release contains support for several new packages and lots of 9592 refinements for existing ones. A lot of work went into making the 9593 themes more robust by reviewing the inheritance of styles from one 9594 face group to another (in general, the ':inherit' property should not 9595 be used frivolously). Several subtle changes were made to the colour 9596 palette of both themes to ensure consistency, enable more possible 9597 combinations, and avoid potential ambiguity under certain potential 9598 circumstances. 9599 9600 Overall, this release gives me confidence that the themes have reached 9601 a fairly stable state. What follows is an overview of the changes 9602 since version 0.4.0 (2020-01-02). 9603 9604 Added support for: 9605 9606 + equake 9607 + flymake 9608 + focus 9609 + fountain (fountain-mode) 9610 + git-lens 9611 + git-timemachine 9612 + hi-fill-column 9613 + highlight-blocks 9614 + info-colors 9615 + lsp-mode 9616 + lsp-ui 9617 + proced (built-in) 9618 + regexp-builder (built-in) 9619 + suggest 9620 9621 Refinements: 9622 9623 + The header line uses its own dedicated colours. Several changes 9624 were made in 'eww', 'info', 'elfeed', 'magit', 'flycheck' to make 9625 sure that any accent value that appears there conforms with the 9626 overarching accessibility objective of the Modus themes (contrast 9627 ratio of >= 7:1, else WCAG AAA). 9628 + 'ivy' no longer uses a box style for the current line, as that was 9629 not always reliable. Appropriate colours are used instead. 9630 + 'org-mode' blocks use a foreground value that distinguishes their 9631 opening and closing tags from source code comments. 9632 + The 'org-ellipsis' face was configured to always inherit the looks 9633 of its respective heading or element, rather than have its own 9634 excessive styling. 9635 + 'paren-match' has colours that are designed specifically for it. 9636 This is done to retain their utility while making sure they are not 9637 mistaken for some other type of feedback. 9638 + 'magit' has explicit styles for the mode line process indicators, 9639 instead of inheriting from another face. The intention is to use 9640 foreground values that are designed specifically for use on the mode 9641 line (the minimum contrast ratio requirement). 9642 + 'erc' faces have been thoroughly reviewed in the interest of better 9643 usability. Its mode line indicators now use appropriate colours. 9644 + The faces of the 'messages' library have been thoroughly reviewed. 9645 This affects various email interfaces, but also 'elfeed' entry 9646 metadata headings. 9647 + 'whitespace-mode' no longer has a newline character that stands out. 9648 That kind of emphasis was not necessary, given that the symbol used 9649 is a dollar sign, which is already far more visible than a mid dot. 9650 + 'font-lock' (generic syntax highlighting) has better colour 9651 combinations for regexp grouping constructs. 9652 + 'rainbow-delimiters' was given its missing base error face. 9653 + 'git-commit' comment action uses a slightly different foreground 9654 value than before to better match its context. 9655 + 'isearch' and 'query-replace' use colours that properly denote each 9656 action's utility. 9657 + 'visual-regexp' has been reviewed to make the matching groups more 9658 distinct from each other. 9659 + 'occur' and any other buffer that relies on the 'match' face can now 9660 benefit from the new colour combinations, in that its results cannot 9661 be confused for the active 'isearch' or 'query-replace' or even 9662 their lazily highlighted results (or, indeed, of any other search 9663 tool). 9664 + 'company' uses faces for its search feedback that are consistent 9665 with other search metaphors. 9666 + Emacs 27's new ':extend' property is only implemented where 9667 necessary (note that the latest release is version 26.3). 9668 #+end_src 9669 9670 * 0.4.0 9671 :PROPERTIES: 9672 :CUSTOM_ID: h:1597e301-f9df-4aac-8ec5-b8ecf34f2930 9673 :END: 9674 9675 #+begin_src text 9676 This is an overview of the changes since version 0.3.0 (2019-12-25). 9677 9678 Add support for: 9679 9680 + ert 9681 + flycheck-indicator 9682 + mentor 9683 + mu4e-conversation 9684 + powerline-evil 9685 + telephone-line 9686 + vc (built-in version control) 9687 9688 Refinements to already-supported packages: 9689 9690 + company-mode (several refinements) 9691 + doom-modeline (major review) 9692 + helm (several tweaks) 9693 + hl-line-mode (use unique background) 9694 + ivy (improve matching line) 9695 + line-number-mode (minor tweaks) 9696 + markdown-mode (comprehensive expansion) 9697 + mode-line (more appropriate styles for the highlight) 9698 + powerline (minor tweaks) 9699 + region (use unique background) 9700 + swiper (improve matching line in main window) 9701 + whitespace-mode (several refinements) 9702 + mu4e (tweak mu4e-modeline-face for consistency) 9703 9704 Miscellaneous: 9705 9706 + Fix actual and potential problems with cursor faces that would 9707 distort the use of appropriate background and foreground colours. 9708 The documentation stipulates that the `cursor' face cannot be 9709 inherited by other faces, due to its peculiar nature of only 9710 recognising the background colour. 9711 + Add support for more bold constructs in code. As with all such 9712 options, it is disabled by default, expecting the user to 9713 explicitly opt in. 9714 + Declare additional custom faces. Only meant for internal use. 9715 + Subtle refinements to "active" colour values in both Modus 9716 Operandi and Modus Vivendi. These mostly concern the mode line 9717 (with a few special exceptions), where emphasis has been placed on 9718 the need to provide greater contrast between accent values that 9719 can be used there. 9720 + Minor documentation refinements. 9721 #+end_src 9722 9723 * 0.3.0 9724 :PROPERTIES: 9725 :CUSTOM_ID: h:cb0ca8dc-3960-4490-b3c4-27d10cf6ed44 9726 :END: 9727 9728 #+begin_src text 9729 Overview of changes since 0.2.0 (2019-12-18): 9730 9731 + Add support for the following packages: 9732 9733 + apt-sources-list 9734 + calfw 9735 + counsel-css 9736 + counsel-notmuch 9737 + counsel-org-capture-string 9738 + cov 9739 + disk-usage 9740 + evil-visual-mark-mode 9741 + geiser 9742 + keycast 9743 + org-journal 9744 + org-noter 9745 + paren-face 9746 + powerline 9747 + vc 9748 + xah-elisp-mode 9749 9750 + Explicitly style the following packages (these were already covered, 9751 in terms of the colours they used, but are now targeted directly): 9752 9753 + calendar 9754 + counsel 9755 + cursor 9756 + package (M-x list-packages) 9757 9758 + Minor tweaks to face groups: 9759 9760 + dired 9761 + compile 9762 9763 + Fixes and refinements: 9764 9765 + Documentation strings will now inherit the option for slanted 9766 constructs (off by default -- see the README about all the user 9767 options). 9768 + Comment delimiters have the same styles as the body of the comment 9769 to avoid inconsistencies when the option for slanted constructs is 9770 enabled. 9771 + The line number that is displayed in the compile log is now 9772 correctly styled. 9773 + Removed duplicate entries for ivy-remote and added ivy-separator. 9774 + Ensure that the minibuffer prompt is always above the minimum 9775 contrast ratio of 7:1, by using a more appropriate shade of cyan. 9776 + Properly reference a couple of variables in Modus Vivendi. 9777 9778 + Internal adjustments: 9779 9780 + Decouple the core dired faces from those of external packages. 9781 + Same for org and org-recur. 9782 9783 + Minor documentation updates. 9784 #+end_src 9785 9786 * 0.2.0 9787 :PROPERTIES: 9788 :CUSTOM_ID: h:c9746d04-adf4-41b1-9b7c-6caaf17f8816 9789 :END: 9790 9791 #+begin_src text 9792 Overview of changes since 0.1.0 (2019-12-09): 9793 9794 + Comprehensive review of `org-mode' faces. The use of colour should 9795 now be more consistent with the semantics of each element. These should 9796 also respond better to a variety of combinations, such as when the user 9797 has `hl-line-mode' enabled. The agenda view is the greatest beneficiary 9798 of this review. 9799 9800 + Make `mu4e' mode line faces consistent with other elements that may be 9801 placed on the mode line. 9802 9803 + Make `gnus' header name/subject more distinct. 9804 9805 + Several minor refinements to `ivy' and its extensions. 9806 9807 + General usability refinements to `ace-window'. 9808 9809 + Minor review of `elfeed' styles, in the interest of improving the 9810 contrast between the elements. 9811 9812 + Add support for: 9813 + `persp-mode' (fork of the already supported `perspective') 9814 + `dashboard' 9815 + `evil-mode' 9816 + `evil-goggles' 9817 + `ruler-mode' 9818 #+end_src 9819 9820 * 0.1.0 9821 :PROPERTIES: 9822 :CUSTOM_ID: h:e14e612e-6951-4812-bc88-62c498bd5644 9823 :END: 9824 9825 #+begin_src text 9826 First stable release of Modus Operandi and Modus Vivendi. 9827 #+end_src