diff options
author | Andrea Corallo <akrl@sdf.org> | 2021-04-19 18:46:50 +0200 |
---|---|---|
committer | Andrea Corallo <akrl@sdf.org> | 2021-04-19 18:46:50 +0200 |
commit | b5c76530fab4b99e76249bfb9a105b30bef4ce67 (patch) | |
tree | 319d7a65b6f818cebed9833534a423fbcb79a9b5 | |
parent | e54066f3d459f67a1ee4e44552bf0356d010e03f (diff) | |
parent | 0a4dc70830f5e8286b47120cabc750cca07a75c1 (diff) | |
download | emacs-b5c76530fab4b99e76249bfb9a105b30bef4ce67.tar.gz emacs-b5c76530fab4b99e76249bfb9a105b30bef4ce67.tar.bz2 emacs-b5c76530fab4b99e76249bfb9a105b30bef4ce67.zip |
Merge remote-tracking branch 'savannah/master' into native-comp
256 files changed, 3185 insertions, 2088 deletions
diff --git a/admin/charsets/eucjp-ms.awk b/admin/charsets/eucjp-ms.awk index ca9a317611b..033b37f5ede 100644 --- a/admin/charsets/eucjp-ms.awk +++ b/admin/charsets/eucjp-ms.awk @@ -38,7 +38,7 @@ BEGIN { JISX0208_FROM2 = "/xf5/xa1"; JISX0212_FROM = "/x8f/xf3/xf3"; - print ";;; eucjp-ms.el -- translation table for eucJP-ms -*- lexical-binding:t -*-"; + print ";;; eucjp-ms.el --- translation table for eucJP-ms -*- lexical-binding:t -*-"; print ";;; Automatically generated from /usr/share/i18n/charmaps/EUC-JP-MS.gz"; print "(let ((map"; print " '(;JISEXT<->UNICODE"; diff --git a/admin/charsets/mule-charsets.el b/admin/charsets/mule-charsets.el index 99a8c60d880..7bcceb39b23 100644 --- a/admin/charsets/mule-charsets.el +++ b/admin/charsets/mule-charsets.el @@ -1,4 +1,4 @@ -;; mule-charsets.el -- Generate Mule-original charset maps. -*- lexical-binding: t -*- +;;; mule-charsets.el --- Generate Mule-original charset maps. -*- lexical-binding: t -*- ;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H13PRO009 diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el index 221c9b104e0..abd41e34a48 100644 --- a/admin/unidata/unidata-gen.el +++ b/admin/unidata/unidata-gen.el @@ -1,4 +1,4 @@ -;; unidata-gen.el -- Create files containing character property data -*- lexical-binding:t -*- +;;; unidata-gen.el --- Create files containing character property data -*- lexical-binding:t -*- ;; Copyright (C) 2008-2021 Free Software Foundation, Inc. @@ -1446,7 +1446,7 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." ";; no-byte-compile: t\n" ";; no-update-autoloads: t\n" ";; End:\n\n" - (format ";; %s ends here\n" basename))))) + (format ";;; %s ends here\n" basename))))) (or noninteractive (message "Generating %s...done" file))) (defun unidata-gen-charprop (&optional charprop-file) @@ -1470,7 +1470,7 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)." ";; no-byte-compile: t\n" ";; no-update-autoloads: t\n" ";; End:\n\n" - (format ";; %s ends here\n" + (format ";;; %s ends here\n" (file-name-nondirectory charprop-file))))) diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi index d0865c5d0bd..1eba7074f76 100644 --- a/doc/emacs/mini.texi +++ b/doc/emacs/mini.texi @@ -64,10 +64,10 @@ minibuffer-electric-default-mode}. Since the minibuffer appears in the echo area, it can conflict with other uses of the echo area. If an error message or an informative -message is emitted while the minibuffer is active, the message hides -the minibuffer for a few seconds, or until you type something; then -the minibuffer comes back. While the minibuffer is in use, Emacs does -not echo keystrokes. +message is emitted while the minibuffer is active, the message is +displayed in brackets after the minibuffer text for a few seconds, or +until you type something; then the message disappears. While the +minibuffer is in use, Emacs does not echo keystrokes. @vindex minibuffer-follows-selected-frame While using the minibuffer, you can switch to a different frame, diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index 3388102f694..22b665bc931 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -2012,7 +2012,8 @@ that can be handled). This special form establishes the error handlers @var{handlers} around the execution of @var{protected-form}. If @var{protected-form} executes without error, the value it returns becomes the value of the -@code{condition-case} form; in this case, the @code{condition-case} has +@code{condition-case} form (in the absence of a success handler; see below). +In this case, the @code{condition-case} has no effect. The @code{condition-case} form makes a difference when an error occurs during @var{protected-form}. @@ -2062,6 +2063,12 @@ error description. If @var{var} is @code{nil}, that means no variable is bound. Then the error symbol and associated data are not available to the handler. +@cindex success handler +As a special case, one of the @var{handlers} can be a list of the +form @code{(:success @var{body}@dots{})}, where @var{body} is executed +with @var{var} (if non-@code{nil}) bound to the return value of +@var{protected-form} when that expression terminates without error. + @cindex rethrow a signal Sometimes it is necessary to re-throw a signal caught by @code{condition-case}, for some outer-level handler to catch. Here's diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 68d7e827d26..228c940cc8b 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -1965,9 +1965,18 @@ Tables}). The width of a tab character is usually @code{tab-width} (@pxref{Usual Display}). @end defun -@defun string-width string +@defun string-width string &optional from to This function returns the width in columns of the string @var{string}, if it were displayed in the current buffer and the selected window. +Optional arguments @var{from} and @var{to} specify the substring of +@var{string} to consider, and are interpreted as in @code{substring} +(@pxref{Creating Strings}). + +The return value is an approximation: it only considers the values +returned by @code{char-width} for the constituent characters, always +takes a tab character as taking @code{tab-width} columns, ignores +display properties and fonts, etc. For these reasons, we recommend +using @code{window-text-pixel-size}, described below, instead. @end defun @defun truncate-string-to-width string width &optional start-column padding ellipsis ellipsis-text-property @@ -4752,6 +4761,7 @@ window on a minibuffer-less frame. @node Display Property @section The @code{display} Property @cindex display specification +@cindex display property @kindex display @r{(text property)} The @code{display} text property (or overlay property) is used to @@ -5289,6 +5299,16 @@ where @var{props} is a property list of alternating keyword symbols and values, including at least the pair @code{:type @var{type}} that specifies the image type. + Image descriptors which define image dimensions, @code{:width}, +@code{:height}, @code{:max-width} and @code{:max-height}, may take +either an integer, which represents the dimension in pixels, or a pair +@code{(@var{value} . em)}, where @var{value} is the dimension's +length in @dfn{ems}@footnote{In typography an em is a distance +equivalent to the height of the type. For example when using 12 point +type 1 em is equal to 12 points. Its use ensures distances and type +remain proportional.}. One em is equivalent to the height of the font +and @var{value} may be an integer or a float. + The following is a list of properties that are meaningful for all image types (there are also properties which are meaningful only for certain image types, as documented in the following subsections): @@ -5758,13 +5778,13 @@ properties: @item :foreground @var{foreground} @var{foreground}, if non-@code{nil}, should be a string specifying a color, which is used as the image's foreground color. If the value is -@code{nil}, it defaults to the faces's foreground color. +@code{nil}, it defaults to the current face's foreground color. @item :background @var{background} @var{background}, if non-@code{nil}, should be a string specifying a color, which is used as the image's background color if the image supports transparency. If the value is @code{nil}, it defaults to the -faces's background color. +current face's background color. @item :css @var{css} @var{css}, if non-@code{nil}, should be a string specifying the CSS to diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi index dabf985018f..cbc94d8c1b3 100644 --- a/doc/lispref/keymaps.texi +++ b/doc/lispref/keymaps.texi @@ -1686,7 +1686,7 @@ presence of such a binding can still prevent translation from taking place. For example, let us return to our VT100 example above and add a binding for @kbd{C-c @key{ESC}} to the global map; now when the user hits @kbd{C-c @key{PF1}} Emacs will fail to decode @kbd{C-c @key{ESC} O P} into @kbd{C-c -@key{PF1}} because it will stop reading keys right after @kbd{C-x @key{ESC}}, +@key{PF1}} because it will stop reading keys right after @kbd{C-c @key{ESC}}, leaving @kbd{O P} for later. This is in case the user really hit @kbd{C-c @key{ESC}}, in which case Emacs should not sit there waiting for the next key to decide whether the user really pressed @kbd{@key{ESC}} or @kbd{@key{PF1}}. diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi index 0d0caebd1f7..d8091f1b4b1 100644 --- a/doc/lispref/objects.texi +++ b/doc/lispref/objects.texi @@ -2411,7 +2411,7 @@ that is evaluated. For example: @noindent Although the list @code{(0.5)} was mutable when it was created, it should not -have been changed via @code{setcar} because it given to @code{eval}. The +have been changed via @code{setcar} because it was given to @code{eval}. The reverse does not occur: an object that should not be changed never becomes mutable afterwards. diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index b3246494a20..0dfdac71479 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -1325,7 +1325,7 @@ the numeric ID of the foreground process group of @var{process}; it returns @code{nil} if Emacs can be certain that this is not so. The value is @code{t} if Emacs cannot tell whether this is true. This function signals an error if @var{process} is a network, serial, or -pipe connection, or is the subprocess is not active. +pipe connection, or if the subprocess is not active. @end defun @node Signals to Processes @@ -3410,8 +3410,9 @@ Unsigned integer in little endian order, with @var{bitlen} bits. @item str @var{len} String of bytes of length @var{len}. -@item strz @var{len} -Zero-terminated string of bytes, in a fixed-size field with length @var{len}. +@item strz &optional @var{len} +Zero-terminated string of bytes, can be of arbitrary length or in a fixed-size +field with length @var{len}. @item vec @var{len} [@var{type}] Vector of @var{len} elements. The type of the elements is given by diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi index e106f39cdd9..fc2e3f3b111 100644 --- a/doc/misc/eshell.texi +++ b/doc/misc/eshell.texi @@ -515,8 +515,8 @@ below the @code{completion-cycle-threshold}), press @kbd{M-?}. @subsection pcomplete Pcomplete, short for programmable completion, is the completion library originally written for Eshell, but usable for command -completion@footnote{Command completion as opposed to code completion, -which is a beyond the scope of pcomplete.} in other modes. +completion@footnote{Command completion, as opposed to code completion, +which is beyond the scope of pcomplete.} in other modes. Completions are defined as functions (with @code{defun}) named @code{pcomplete/COMMAND}, where @code{COMMAND} is the name of the diff --git a/doc/misc/message.texi b/doc/misc/message.texi index 1497c710e4e..d2353e6cec6 100644 --- a/doc/misc/message.texi +++ b/doc/misc/message.texi @@ -1792,8 +1792,89 @@ member list with elements @code{CC} and @code{To}, then @code{message-carefully-insert-headers} will not insert a @code{To} header when the message is already @code{CC}ed to the recipient. +@item message-syntax-checks +@vindex message-syntax-checks +Controls what syntax checks should not be performed on outgoing posts. +To disable checking of long signatures, for instance, add + +@lisp +(signature . disabled) +@end lisp + +to this list. + +Valid checks are: + +@table @code +@item approved +@cindex approved +Check whether the article has an @code{Approved} header, which is +something only moderators should include. +@item continuation-headers +Check whether there are continuation header lines that don't begin with +whitespace. +@item control-chars +Check for invalid characters. +@item empty +Check whether the article is empty. +@item existing-newsgroups +Check whether the newsgroups mentioned in the @code{Newsgroups} and +@code{Followup-To} headers exist. +@item from +Check whether the @code{From} header seems nice. +@item illegible-text +Check whether there is any non-printable character in the body. +@item invisible-text +Check whether there is any invisible text in the buffer. +@item long-header-lines +Check for too long header lines. +@item long-lines +@cindex long lines +Check for too long lines in the body. +@item message-id +Check whether the @code{Message-ID} looks syntactically ok. +@item multiple-headers +Check for the existence of multiple equal headers. +@item new-text +Check whether there is any new text in the messages. +@item newsgroups +Check whether the @code{Newsgroups} header exists and is not empty. +@item quoting-style +Check whether text follows last quoted portion. +@item repeated-newsgroups +Check whether the @code{Newsgroups} and @code{Followup-To} headers +contains repeated group names. +@item reply-to +Check whether the @code{Reply-To} header looks ok. +@item sender +@cindex Sender +Insert a new @code{Sender} header if the @code{From} header looks odd. +@item sendsys +@cindex sendsys +Check for the existence of version and sendsys commands. +@item shoot +Check whether the domain part of the @code{Message-ID} header looks ok. +@item shorten-followup-to +Check whether to add a @code{Followup-To} header to shorten the number +of groups to post to. +@item signature +Check the length of the signature. +@item size +Check for excessive size. +@item subject +Check whether the @code{Subject} header exists and is not empty. +@item subject-cmsg +Check the subject for commands. +@item valid-newsgroups +Check whether the @code{Newsgroups} and @code{Followup-To} headers +are valid syntactically. @end table +All these conditions are checked by default, except for @code{sender} +for which the check is disabled by default if +@code{message-insert-canlock} is non-@code{nil} (@pxref{Canceling News}). + +@end table @node Mail Headers @section Mail Headers @@ -2072,88 +2153,6 @@ Other variables for customizing outgoing news articles: @table @code -@item message-syntax-checks -@vindex message-syntax-checks -Controls what syntax checks should not be performed on outgoing posts. -To disable checking of long signatures, for instance, add - -@lisp -(signature . disabled) -@end lisp - -to this list. - -Valid checks are: - -@table @code -@item approved -@cindex approved -Check whether the article has an @code{Approved} header, which is -something only moderators should include. -@item continuation-headers -Check whether there are continuation header lines that don't begin with -whitespace. -@item control-chars -Check for invalid characters. -@item empty -Check whether the article is empty. -@item existing-newsgroups -Check whether the newsgroups mentioned in the @code{Newsgroups} and -@code{Followup-To} headers exist. -@item from -Check whether the @code{From} header seems nice. -@item illegible-text -Check whether there is any non-printable character in the body. -@item invisible-text -Check whether there is any invisible text in the buffer. -@item long-header-lines -Check for too long header lines. -@item long-lines -@cindex long lines -Check for too long lines in the body. -@item message-id -Check whether the @code{Message-ID} looks syntactically ok. -@item multiple-headers -Check for the existence of multiple equal headers. -@item new-text -Check whether there is any new text in the messages. -@item newsgroups -Check whether the @code{Newsgroups} header exists and is not empty. -@item quoting-style -Check whether text follows last quoted portion. -@item repeated-newsgroups -Check whether the @code{Newsgroups} and @code{Followup-To} headers -contains repeated group names. -@item reply-to -Check whether the @code{Reply-To} header looks ok. -@item sender -@cindex Sender -Insert a new @code{Sender} header if the @code{From} header looks odd. -@item sendsys -@cindex sendsys -Check for the existence of version and sendsys commands. -@item shoot -Check whether the domain part of the @code{Message-ID} header looks ok. -@item shorten-followup-to -Check whether to add a @code{Followup-To} header to shorten the number -of groups to post to. -@item signature -Check the length of the signature. -@item size -Check for excessive size. -@item subject -Check whether the @code{Subject} header exists and is not empty. -@item subject-cmsg -Check the subject for commands. -@item valid-newsgroups -Check whether the @code{Newsgroups} and @code{Followup-To} headers -are valid syntactically. -@end table - -All these conditions are checked by default, except for @code{sender} -for which the check is disabled by default if -@code{message-insert-canlock} is non-@code{nil} (@pxref{Canceling News}). - @item message-ignored-news-headers @vindex message-ignored-news-headers Regexp of headers to be removed before posting. The default is@* diff --git a/doc/misc/modus-themes.org b/doc/misc/modus-themes.org index 9764a3467fa..001ed572186 100644 --- a/doc/misc/modus-themes.org +++ b/doc/misc/modus-themes.org @@ -4,9 +4,9 @@ #+language: en #+options: ':t toc:nil author:t email:t -#+macro: stable-version 1.2.3 -#+macro: release-date 2021-03-05 -#+macro: development-version 1.3.0-dev +#+macro: stable-version 1.3.2 +#+macro: release-date 2021-04-18 +#+macro: development-version 1.4.0-dev #+macro: export-date (eval (format-time-string "%F %R %z" (current-time))) #+macro: file @@texinfo:@file{@@$1@@texinfo:}@@ #+macro: space @@texinfo:@: @@ @@ -46,11 +46,15 @@ built on {{{export-date}}}. Copyright (C) 2020-2021 Free Software Foundation, Inc. #+begin_quote -Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, -Version 1.3 or any later version published by the Free Software -Foundation; with no Invariant Sections, with no Front-Cover Texts, -and with no Back-Cover Texts. +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover Texts being “A GNU Manual,” and +with the Back-Cover Texts as in (a) below. A copy of the license is +included in the section entitled “GNU Free Documentation License.” + +(a) The FSF’s Back-Cover Text is: “You have the freedom to copy and +modify this GNU manual.” #+end_quote * Overview @@ -141,7 +145,7 @@ The themes are now ready to be used: [[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][ :custom_id: h:c4b10085-149f-43e2-bd4d-347f33aee054 :end: -The =modus-themes= package is available from the GNU ELPA archive, which +The ~modus-themes~ package is available from the GNU ELPA archive, which is configured by default. Prior to querying any package archive, make sure to have updated the @@ -287,7 +291,8 @@ package configurations in their setup. We use this as an example: :init ;; Add all your customizations prior to loading the themes (setq modus-themes-slanted-constructs t - modus-themes-bold-constructs nil) + modus-themes-bold-constructs nil + modus-themes-region 'no-extend) ;; Load the theme files before enabling a theme (else you get an error). (modus-themes-load-themes) @@ -374,13 +379,13 @@ Symbol: ~modus-themes-bold-constructs~ Possible values: -1. =nil= (default) -2. =t= +1. ~nil~ (default) +2. ~t~ The default is to use a bold typographic weight only when it is required. -With a non-nil value (=t=) display several syntactic constructs in bold +With a non-nil value (~t~) display several syntactic constructs in bold weight. This concerns keywords and other important aspects of code syntax. It also affects certain mode line indicators and command-line prompts. @@ -397,13 +402,13 @@ Symbol: ~modus-themes-slanted-constructs~ Possible values: -1. =nil= (default) -2. =t= +1. ~nil~ (default) +2. ~t~ The default is to not use slanted text (italics) unless it is absolutely necessary. -With a non-nil value (=t=) choose to render more faces in slanted text. +With a non-nil value (~t~) choose to render more faces in slanted text. This typically affects documentation strings and code comments. ** Option for syntax highlighting @@ -418,7 +423,7 @@ Symbol: ~modus-themes-syntax~ Possible values: -1. =nil= (default) +1. ~nil~ (default) 2. ~faint~ 3. ~yellow-comments~ 4. ~green-strings~ @@ -467,8 +472,8 @@ Symbol: ~modus-themes-no-mixed-fonts~ Possible values: -1. =nil= (default) -2. =t= +1. ~nil~ (default) +2. ~t~ By default, the themes configure some spacing-sensitive faces like Org tables and code blocks to always inherit from the ~fixed-pitch~ face. @@ -476,14 +481,14 @@ This is to ensure that those constructs remain monospaced even when users opt for a mode that remaps typeface families, such as the built-in {{{kbd(M-x variable-pitch-mode)}}}. Otherwise the layout would appear broken, due to how spacing is done. To disable this behaviour, set the -option to =t=. +option to ~t~. Users may prefer to use another package for handling mixed typeface configurations, rather than letting the theme do it, perhaps because a purpose-specific package has extra functionality. Two possible options are ~org-variable-pitch~ and ~mixed-pitch~. -[[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org (and others)]]. +[[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org and others]]. ** Option for links :properties: @@ -497,7 +502,7 @@ Symbol: ~modus-themes-links~ Possible values: -1. =nil= (default) +1. ~nil~ (default) 2. ~faint~ 3. ~neutral-underline~ 4. ~faint-neutral-underline~ @@ -545,7 +550,7 @@ Symbol: ~modus-themes-prompts~ Possible values: -1. =nil= (default) +1. ~nil~ (default) 2. ~subtle-accented~ (~subtle~ exists for backward compatibility) 3. ~intense-accented~ (~intense~ exists for backward compatibility) 4. ~subtle-gray~ @@ -577,12 +582,15 @@ Symbol: ~modus-themes-mode-line~ Possible values: -1. =nil= (default) +1. ~nil~ (default) 2. ~3d~ 3. ~moody~ 4. ~borderless~ 5. ~borderless-3d~ 6. ~borderless-moody~ +7. ~accented~ +8. ~accented-3d~ +9. ~accented-moody~ The default produces a two-dimensional effect both for the active and inactive modelines. The differences between the two are limited to @@ -612,6 +620,11 @@ that the inactive modelines remain visible, they apply a slightly more prominent background to them than what their counterparts do (same inactive background as with the default). +Similarly, ~accented~, ~accented-3d~, and ~accented-moody~ correspond to the +default (~nil~), ~3d~, and ~moody~ styles respectively, except that the active +mode line uses a colored background instead of the standard shade of +gray. + Note that Moody does not expose any faces that the themes could style directly. Instead it re-purposes existing ones to render its tabs and ribbons. As such, there may be cases where the contrast ratio falls @@ -624,10 +637,11 @@ is activated when Emacs determines that the background and foreground of the given construct are too close to each other in terms of color distance. In effect, users would need to experiment with the variable ~face-near-same-color-threshold~ to trigger the effect. We find that a -value of =45000= will suffice, contrary to the default =30000=. Do not set -the value too high, because that would have the adverse effect of always -overriding the default color (which has been carefully designed to be -highly accessible). +value of =45000= will suffice, contrary to the default =30000=. Though for +the ~accented-moody~ value mentioned above, that should be raised up to +=70000=. Do not set it too high, because it has the adverse effect of +always overriding the default colors (which have been carefully designed +to be highly accessible). Furthermore, because Moody expects an underline and overline instead of a box style, it is advised you include this in your setup: @@ -648,7 +662,7 @@ Symbol: ~modus-themes-completions~ Possible values: -1. =nil= (default) +1. ~nil~ (default) 2. ~moderate~ 3. ~opinionated~ @@ -661,7 +675,7 @@ The former category encompasses Icomplete, Ido, Selectrum as well as pattern matching styles like Orderless and Flx. The latter covers Helm, Ivy, and similar. -A value of =nil= will respect the metaphors of each completion framework. +A value of ~nil~ will respect the metaphors of each completion framework. Option ~moderate~ applies a combination of background and foreground that is fairly subtle. For Icomplete and friends this constitutes a @@ -677,7 +691,7 @@ packages will revert to an even more nuanced aesthetic with some additional changes to the choice of hues. To appreciate the scope of this customization option, you should spend -some time with every one of the =nil= (default), ~moderate~, and ~opinionated~ +some time with every one of the ~nil~ (default), ~moderate~, and ~opinionated~ possibilities. ** Option for fringe visibility @@ -692,7 +706,7 @@ Symbol: ~modus-themes-fringes~ Possible values: -1. =nil= (default) +1. ~nil~ (default) 2. ~subtle~ 3. ~intense~ @@ -716,7 +730,7 @@ Symbol: ~modus-themes-lang-checkers~ Possible values: -1. =nil= (default) +1. ~nil~ (default) 2. ~subtle-foreground~ 3. ~intense-foreground~ 4. ~straight-underline~ @@ -755,25 +769,50 @@ refer to their documentation strings. ** Option for line highlighting (hl-line-mode) :properties: :alt_title: Line highlighting -:description: Toggle intense style for current line highlighting +:description: Choose style of current line (hl-line-mode) :custom_id: h:1dba1cfe-d079-4c13-a810-f768e8789177 :end: -#+vindex: modus-themes-intense-hl-line +#+vindex: modus-themes-hl-line -Symbol: ~modus-themes-intense-hl-line~ +Symbol: ~modus-themes-hl-line~ Possible values: -1. =nil= (default) -2. =t= +1. ~nil~ (default) +2. ~intense-background~ +3. ~accented-background~ +4. ~underline-neutral~ +5. ~underline-accented~ +6. ~underline-only-neutral~ +7. ~underline-only-accented~ + +The default is to use a subtle gray background for the current line when +~hl-line-mode~ is enabled. + +The ~intense-background~ applies a more prominent gray to the background +of the current line. + +With ~accented-background~ the default's subtle aesthetic is retained, but +the background has a more colored hint. + +The ~underline-neutral~ combines the default subtle neutral background +with a gray underline. -The default is to use a subtle gray background for ~hl-line-mode~ and its -global equivalent. +Similarly, the ~underline-accented~ renders the background of the current +line in a subtle colored background, while it also draws an accented +underline. -With a non-nil value (=t=) use a more prominent background color instead. +Option ~underline-only-neutral~ produces a neutral underline, but does not +use any background. -This affects several packages that enable ~hl-line-mode~, such as =elfeed= -and =mu4e=. +While ~underline-only-accented~ also uses just an underline, only this one +is colored. + +Consider setting the variable ~x-underline-at-descent-line~ to a non-nil +value for better results with underlines. + +This style affects several packages that enable ~hl-line-mode~, such as +=elfeed= and =mu4e=. ** Option for line numbers (display-line-numbers-mode) :properties: @@ -787,8 +826,8 @@ Symbol: ~modus-themes-subtle-line-numbers~ Possible value: -1. =nil= (default) -2. =t= +1. ~nil~ (default) +2. ~t~ The default style for ~display-line-numbers-mode~ and its global variant is to apply a subtle gray background to the line numbers. The current @@ -799,7 +838,7 @@ Similarly, the faces for ~display-line-numbers-major-tick~ and its counterpart ~display-line-numbers-minor-tick~ use appropriate styles that involve a bespoke background and foreground combination. -With a non-nil value (=t=), line numbers have no background of their own. +With a non-nil value (~t~), line numbers have no background of their own. Instead they retain the primary background of the theme, blending with the rest of the buffer. Foreground values for all relevant faces are updated to accommodate this aesthetic. @@ -816,7 +855,7 @@ Symbol: ~modus-themes-paren-match~ Possible values: -1. =nil= (default) +1. ~nil~ (default) 2. ~subtle-bold~ 3. ~intense~ 4. ~intense-bold~ @@ -847,10 +886,12 @@ Symbol: ~modus-themes-region~ Possible values: -1. =nil= (default) +1. ~nil~ (default) 2. ~no-extend~ 3. ~bg-only~ 4. ~bg-only-no-extend~ +5. ~accent~ +6. ~accent-no-extend~ Nil means to only use a prominent gray background with a neutral foreground. The foreground overrides all syntax highlighting. The @@ -866,6 +907,11 @@ colors. It extends to the edge of the window. Option ~bg-only-no-extend~ is a combination of the ~bg-only~ and ~no-extend~ options. +Option ~accent~ is like the default, though it uses a more colorful +background, while ~accent-no-extend~ is the same except it draws the +region only up to the end of each line instead of extending to the edge +of the window. + ** Option for diff buffer looks :properties: :alt_title: Diffs @@ -878,7 +924,7 @@ Symbol: ~modus-themes-diffs~ Possible values: -1. =nil= (default) +1. ~nil~ (default) 2. ~desaturated~ 3. ~fg-only~ 4. ~bg-only~ @@ -935,7 +981,7 @@ Symbol: ~modus-themes-org-blocks~ Possible values: -1. =nil= (default) +1. ~nil~ (default) 2. ~grayscale~ 3. ~rainbow~ @@ -960,6 +1006,9 @@ major-mode so that the colors are applied consistently throughout: use Or start typing in each code block (inefficient at scale, but it still works). +The extent of Org block delimiter lines is controlled by the variable +~org-fontify-whole-block-delimiter-line~. + ** Option for org-habit graph styles :properties: :alt_title: Org agenda habits @@ -972,7 +1021,7 @@ Symbol: ~modus-themes-org-habit~ Possible values: -1. =nil= (default) +1. ~nil~ (default) 2. ~simplified~ 3. ~traffic-light~ @@ -1014,11 +1063,10 @@ than other customization options documented in this manual. Symbol: ~modus-themes-headings~ -Possible values, which can be specified for each heading level (examples -further below): +Possible values, which can be specified for each heading level N +(examples further below): -+ nil (default fallback option---covers all heading levels) -+ =t= (default style for a single heading, when the fallback differs) ++ ~nil~ (~t~ is also available for backward compatibility) + ~no-bold~ + ~line~ + ~line-no-bold~ @@ -1058,19 +1106,19 @@ To set a uniform value for all heading levels, use this pattern: '((t . section))) ;; Default aesthetic for every heading -(setq modus-themes-headings - '()) +(setq modus-themes-headings nil) #+end_src The default style for headings uses a fairly desaturated foreground -value in combination with bold typographic weight. To specify this +color in combination with bold typographic weight. To specify this style for a given level N, assuming you wish to have another fallback -option, just specify the value =t= like this: +option, just assign the value ~nil~ like this: #+begin_src emacs-lisp (setq modus-themes-headings - '((1 . t) + '((1 . nil) (2 . line) + (3) ; same as nil (t . rainbow-line-no-bold))) #+end_src @@ -1122,6 +1170,9 @@ A description of all other possible styles beyond the default: + ~no-color-no-bold~ is like ~no-color~ but without the bold weight. +Remember to also inspect relevant variables that Org provides, such as: +~org-fontify-whole-heading-line~ and ~org-fontify-done-headline~. + ** Option for scaled headings :properties: :alt_title: Scaled headings @@ -1134,12 +1185,12 @@ Symbol: ~modus-themes-scale-headings~ Possible values: -1. =nil= (default) -2. =t= +1. ~nil~ (default) +2. ~t~ The default is to use the same size for headings and paragraph text. -With a non-nil value (=t=) make headings larger in height relative to the +With a non-nil value (~t~) make headings larger in height relative to the main text. This is noticeable in modes like Org, Markdown, and Info. *** Control the scale of headings @@ -1217,8 +1268,8 @@ Symbol: ~modus-themes-variable-pitch-ui~ Possible values: -1. =nil= (default) -2. =t= +1. ~nil~ (default) +2. ~t~ This option concerns User Interface elements that are under the direct control of Emacs. In particular: the mode line, header line, tab bar, @@ -1227,7 +1278,7 @@ and tab line. The default is to use the same font as the rest of Emacs, which usually is a monospaced family. -With a non-nil value (=t=) apply a proportionately spaced typeface. This +With a non-nil value (~t~) apply a proportionately spaced typeface. This is done by assigning the ~variable-pitch~ face to the relevant items. [[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org and others]]. @@ -1244,13 +1295,13 @@ Symbol: ~modus-themes-variable-pitch-headings~ Possible values: -1. =nil= (default) -2. =t= +1. ~nil~ (default) +2. ~t~ The default is to use the main font family, which typically is monospaced. -With a non-nil value (=t=) apply a proportionately spaced typeface, else +With a non-nil value (~t~) apply a proportionately spaced typeface, else "variable-pitch", to headings (such as in Org mode). [[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org and others]]. @@ -1357,7 +1408,7 @@ With that granted, let us expand the example to actually change the If you evaluate this form, your cursor will become blue. But if you change themes, such as with ~modus-themes-toggle~, your edits will be -lost, because the newly loaded theme will override the =:background= +lost, because the newly loaded theme will override the ~:background~ attribute you had assigned to that face. For such changes to persist, we need to make them after loading the @@ -1458,7 +1509,7 @@ Getting a list of colors may have its applications, though what you are most likely interested in is how to use those variables to configure several faces at once. To do so we can rely on the built-in ~custom-set-faces~ function, which sets face specifications for the -special =user= theme. That "theme" gets applied on top of regular themes +special ~user~ theme. That "theme" gets applied on top of regular themes like ~modus-operandi~ and ~modus-vivendi~. This is how it works: @@ -1502,7 +1553,7 @@ Thus: [[#h:86f6906b-f090-46cc-9816-1fe8aeb38776][A theme-agnostic hook for theme loading]]. To discover the faces defined by all loaded libraries, you may do -{{{kbd(M-x list-faces-display)}}}. Be warned that when you =:inherit= a face +{{{kbd(M-x list-faces-display)}}}. Be warned that when you ~:inherit~ a face you are introducing an implicit dependency, so try to avoid doing so for libraries other than the built-in {{{file(faces.el)}}} (or at least understand that things may break if you inherit from a yet-to-be-loaded face). @@ -1524,6 +1575,68 @@ the previous section. Adapt the above example like this: ...)) #+end_src +** Remap face with local value (DIY) +:properties: +:custom_id: h:7a93cb6f-4eca-4d56-a85c-9dcd813d6b0f +:end: +#+cindex: Remapping faces + +There are cases where we need to change the buffer-local attributes of a +face. This might be because we have our own minor mode that re-uses a +face for a particular purpose, such as a line selection tool that +activates ~hl-line-mode~, but we wish to keep it distinct from other +buffers. This is where ~face-remap-add-relative~ can be applied and may +be combined with ~modus-themes-with-colors~ to deliver consistent results. + +[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette (DIY)]]. + +In this example we will write a simple interactive function that adjusts +the background color of the ~region~ face. This is the sample code: + +#+begin_src emacs-lisp +(defvar my-rainbow-region-colors + (modus-themes-with-colors + `((red . ,red-subtle-bg) + (green . ,green-subtle-bg) + (yellow . ,yellow-subtle-bg) + (blue . ,blue-subtle-bg) + (magenta . ,magenta-subtle-bg) + (cyan . ,cyan-subtle-bg))) + "Sample list of color values for `my-rainbow-region'.") + +(defun my-rainbow-region (color) + "Remap buffer-local attribute of `region' using COLOR." + (interactive + (list + (completing-read "Pick a color: " my-rainbow-region-colors))) + (face-remap-add-relative + 'region + `( :background ,(alist-get (intern color) my-rainbow-region-colors) + :foreground ,(face-attribute 'default :foreground)))) +#+end_src + +When ~my-rainbow-region~ is called interactively, it prompts for a color +to use. The list of candidates is drawn from the car of each +association in ~my-rainbow-region-colors~ (so "red", "green", etc.). + +To extend this principle, we may write wrapper functions that pass a +color directly. Those can be useful in tandem with hooks. Consider +this example: + +#+begin_src emacs-lisp +(defun my-rainbow-region-magenta () + (my-rainbow-region 'magenta)) + +(add-hook 'diff-mode-hook #'my-rainbow-region-magenta) +#+end_src + +Whenever we enter a ~diff-mode~ buffer, we now get a magenta-colored +region. + +Perhaps you may wish to generalise those findings in to a set of +functions that also accept an arbitrary face. We shall leave the +experimentation up to you. + ** Override colors (DIY) :properties: :custom_id: h:307d95dd-8dbd-4ece-a543-10ae86f155a6 @@ -1627,16 +1740,89 @@ with {{{kbd(M-x modus-themes-toggle)}}} will also use the overrides. Given that this is a user-level customisation, one is free to implement whatever color values they desire, even if the possible combinations fall below the minimum 7:1 contrast ratio that governs the design of the -themes (the WCAG AAA legibility standard). Preferences aside, it is -advised to inspect the source code of ~modus-themes-operandi-colors~ and -~modus-themes-vivendi-colors~ to read the inline commentary: it explains -what the intended use of each palette subset is. +themes (the WCAG AAA legibility standard). Alternatively, this can also +be done programmatically ([[#h:4589acdc-2505-41fc-9f5e-699cfc45ab00][Override color saturation]]). + +For manual interventions it is advised to inspect the source code of +~modus-themes-operandi-colors~ and ~modus-themes-vivendi-colors~ for the +inline commentary: it explains what the intended use of each palette +subset is. Furthermore, users may benefit from the ~modus-themes-contrast~ function that we provide: [[#h:02e25930-e71a-493d-828a-8907fc80f874][test color combinations]]. It measures the contrast ratio between two color values, so it can help in overriding the palette (or a subset thereof) without making the end result inaccessible. +** Override color saturation (DIY) +:properties: +:custom_id: h:4589acdc-2505-41fc-9f5e-699cfc45ab00 +:end: +#+cindex: Change a theme's color saturation + +In the previous section we documented how one can override color values +manually ([[#h:307d95dd-8dbd-4ece-a543-10ae86f155a6][Override colors]]). Here we use a programmatic approach which +leverages the built-in ~color-saturate-name~ function to adjust the +saturation of all color values used by the active Modus theme. Our goal +is to prepare a counterpart of the active theme's palette that holds +modified color values, adjusted for a percent change in saturation. A +positive number amplifies the effect, while a negative one will move +towards a grayscale spectrum. + +We start with a function that can be either called from Lisp or invoked +interactively. In the former scenario, we pass to it the rate of change +we want. While in the latter, a minibuffer prompt asks for a number to +apply the desired effect. In either case, we intend to assign anew the +value of ~modus-themes-operandi-color-overrides~ (light theme) and the +same for ~modus-themes-vivendi-color-overrides~ (dark theme). + +#+begin_src emacs-lisp +(defun my-modus-themes-saturate (percent) + "Saturate current Modus theme palette overrides by PERCENT." + (interactive + (list (read-number "Saturation by percent: "))) + (let* ((theme (modus-themes--current-theme)) + (palette (pcase theme + ('modus-operandi modus-themes-operandi-colors) + ('modus-vivendi modus-themes-vivendi-colors) + (_ (error "No Modus theme is active")))) + (overrides (pcase theme + ('modus-operandi 'modus-themes-operandi-color-overrides) + ('modus-vivendi 'modus-themes-vivendi-color-overrides) + (_ (error "No Modus theme is active"))))) + (let (name cons colors) + (dolist (cons palette) + (setq name (color-saturate-name (cdr cons) percent)) + (setq name (format "%s" name)) + (setq cons `(,(car cons) . ,name)) + (push cons colors)) + (set overrides colors)) + (pcase theme + ('modus-operandi (modus-themes-load-operandi)) + ('modus-vivendi (modus-themes-load-vivendi))))) + +;; sample Elisp calls (or call `my-modus-themes-saturate' interactively) +(my-modus-themes-saturate 50) +(my-modus-themes-saturate -75) +#+end_src + +Using the above has an immediate effect, as it reloads the active Modus +theme. + +To disable the effect, one must reset the aforementioned variables to +~nil~. Or specify a command for it, such as by taking inspiration from +the ~modus-themes-toggle~ we already provide: + +#+begin_src emacs-lisp +(defun my-modus-themes-revert-overrides () + "Reset palette overrides and reload active Modus theme." + (interactive) + (setq modus-themes-operandi-color-overrides nil + modus-themes-vivendi-color-overrides nil) + (pcase (modus-themes--current-theme) + ('modus-operandi (modus-themes-load-operandi)) + ('modus-vivendi (modus-themes-load-vivendi)))) +#+end_src + ** Font configurations for Org and others (DIY) :properties: :custom_id: h:defcf4fc-8fa8-4c29-b12e-7119582cc929 @@ -1677,9 +1863,9 @@ reading the doc string of ~set-face-attribute~): (set-face-attribute 'fixed-pitch nil :family "DejaVu Sans Mono" :height 1.0) #+end_src -Note the differences in the =:height= property. The =default= face must +Note the differences in the ~:height~ property. The ~default~ face must specify an absolute value, which is the point size × 10. So if you want -to use a font at point size =11=, you set the height to =110=.[fn:: =:height= +to use a font at point size =11=, you set the height to =110=.[fn:: ~:height~ values do not need to be rounded to multiples of ten: the likes of =115= are perfectly valid—some typefaces will change to account for those finer increments.] Whereas every other face must have a value that is @@ -1689,6 +1875,8 @@ importance: it ensures that all fonts can scale gracefully when using something like the ~text-scale-adjust~ command which only operates on the base font size (i.e. the ~default~ face's absolute height). +[[#h:e6c5451f-6763-4be7-8fdb-b4706a422a4c][Note for EWW and Elfeed fonts (SHR fonts)]]. + ** Custom Org user faces (DIY) :properties: :custom_id: h:89f0678d-c5c3-4a57-a526-668b2bb2d7ad @@ -1871,6 +2059,68 @@ package: (circadian-setup)) #+end_src +** Backdrop for pdf-tools (DIY) +:properties: +:custom_id: h:ff69dfe1-29c0-447a-915c-b5ff7c5509cd +:end: +#+cindex: Remapping pdf-tools backdrop + +Most PDF files use a white background for their page, making it +impossible to discern the file's boundaries in the buffer while using +the Modus Operandi theme. To introduce a distinction between the +buffer's backdrop and the PDF page's background, the former must be +rendered as some shade of gray. Ideally, ~pdf-tools~ would provide a face +that the themes could support directly, though this does not seem to be +the case for the time being. We must thus employ the face remapping +technique that is documented elsewhere in this document to change the +buffer-local value of the ~default~ face. + +[[#h:7a93cb6f-4eca-4d56-a85c-9dcd813d6b0f][Remap face with local value (DIY)]]. + +To remap the buffer's backdrop, we start with a function like this one: + +#+begin_src emacs-lisp +(defun my-pdf-tools-backdrop () + (face-remap-add-relative + 'default + `(:background ,(modus-themes-color 'bg-alt)))) + +(add-hook 'pdf-tools-enabled-hook #'my-pdf-tools-backdrop) +#+end_src + +The idea is to assign that function to a hook that gets called when +~pdf-tools~ renders the document: ~pdf-tools-enabled-hook~. This is enough +when you only use one theme. However it has the downside of setting the +background color value only at render time. In other words, the face +remapping function does not get evaluated anew whenever the theme +changes, such as upon invoking {{{kbd(M-x modus-themes-toggle)}}}. + +To have our face remapping adapt gracefully while switching between the +Modus themes, we need to also account for the current theme and control +the activation of ~pdf-view-midnight-minor-mode~. To which end we arrive +at something like the following, which builds on the above example: + +#+begin_src emacs-lisp +(defun my-pdf-tools-backdrop () + (face-remap-add-relative + 'default + `(:background ,(modus-themes-color 'bg-alt)))) + +(defun my-pdf-tools-midnight-mode-toggle () + (when (derived-mode-p 'pdf-view-mode) + (if (eq (car custom-enabled-themes) 'modus-vivendi) + (pdf-view-midnight-minor-mode 1) + (pdf-view-midnight-minor-mode -1)) + (my-pdf-tools-backdrop))) + +(add-hook 'pdf-tools-enabled-hook #'my-pdf-tools-midnight-mode-toggle) +(add-hook 'modus-themes-after-load-theme-hook #'my-pdf-tools-midnight-mode-toggle) +#+end_src + +With those in place, PDFs have a distinct backdrop for their page, while +they automatically switch to their dark mode when ~modus-themes-toggle~ is +called from inside a buffer whose major-mode is ~pdf-view-mode~. + ** A theme-agnostic hook for theme loading (DIY) :properties: :custom_id: h:86f6906b-f090-46cc-9816-1fe8aeb38776 @@ -1976,6 +2226,7 @@ have lots of extensions, so the "full support" may not be 100% true… + compilation-mode + completions + consult ++ corfu + counsel* + counsel-css + counsel-notmuch @@ -2018,8 +2269,9 @@ have lots of extensions, so the "full support" may not be 100% true… + eldoc-box + elfeed + elfeed-score ++ embark + emms -+ enhanced-ruby-mode ++ enh-ruby-mode (enhanced-ruby-mode) + epa + equake + erc @@ -2149,6 +2401,7 @@ have lots of extensions, so the "full support" may not be 100% true… + outline-minor-faces + package (what you get with {{{kbd(M-x list-packages)}}}) + page-break-lines ++ pandoc-mode + paradox + paren-face + parrot @@ -2206,7 +2459,11 @@ have lots of extensions, so the "full support" may not be 100% true… + sx + symbol-overlay + syslog-mode ++ tab-bar-groups ++ tab-bar-mode ++ tab-line-mode + table (built-in table.el) ++ telega + telephone-line + terraform-mode + term @@ -2221,6 +2478,7 @@ have lots of extensions, so the "full support" may not be 100% true… + vc (built-in mode line status for version control) + vc-annotate (the out put of {{{kbd(C-x v g)}}}) + vdiff ++ vertico + vimish-fold + visible-mark + visual-regexp @@ -2274,6 +2532,42 @@ inherit from some basic faces. Please confirm. This section covers information that may be of interest to users of individual packages. +** Note for dimmer.el +:properties: +:custom_id: h:8eb4b758-d318-4480-9ead-357a571beb93 +:end: + +The {{{file(dimmer.el)}}} library by Neil Okamoto can be configured to +automatically dim the colors of inactive Emacs windows. To guarantee +consistent results with the Modus themes, we suggest some tweaks to the +default styles, such as in this minimal setup: + +#+begin_src emacs-lisp +(use-package dimmer + :config + (setq dimmer-fraction 0.3) + (setq dimmer-adjustment-mode :foreground) + (setq dimmer-use-colorspace :rgb) + + (dimmer-mode 1)) +#+end_src + +Of the above, we strongly recommend the RGB color space because it is +the one that remains faithful to the hueness of the colors used by the +themes. Whereas the default CIELAB space has a tendency to distort +colors in addition to applying the dim effect, which can be somewhat +disorienting. + +The value of the ~dimmer-fraction~ has been selected empirically. Users +might prefer to tweak it further (increasing it makes the dim effect +more pronounced). + +Changing the ~dimmer-adjustment-mode~ is a matter of preference. Though +because the Modus themes use black and white as their base colors, any +other value for that variable will turn the main background gray. This +inadvertently leads to the opposite of the intended utility of this +package: it draws too much attention to unfocused windows. + ** Note for display-fill-column-indicator-mode :properties: :custom_id: h:2a602816-bc1b-45bf-9675-4cbbd7bf6cab @@ -2521,6 +2815,21 @@ specifications the webpage provides. Consult {{{kbd(C-h v shr-use-colors)}}}. + +** Note for EWW and Elfeed fonts (SHR fonts) +:properties: +:custom_id: h:e6c5451f-6763-4be7-8fdb-b4706a422a4c +:end: + +EWW and Elfeed rely on the Simple HTML Renderer to display their +content. The {{{file(shr.el)}}} library contains the variable ~shr-use-fonts~ +that controls whether the text in the buffer is set to a ~variable-pitch~ +typeface (proportionately spaced) or if just retains whatever the +default font family is. Its default value is non-nil, which means that +~variable-pitch~ is applied. + +[[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org and others]]. + ** Note for Helm grep :properties: :custom_id: h:d28879a2-8e4b-4525-986e-14c0f873d229 @@ -2748,26 +3057,28 @@ The Modus themes are a collective effort. Every bit of work matters. + Contributions to code or documentation :: Anders Johansson, Basil L.{{{space()}}} Contovounesios, Carlo Zancanaro, Eli Zaretskii, Kostadin - Ninev, Madhavan Krishnan, Markus Beppler, Matthew Stevenson, Nicolas - De Jaeghere, Shreyas Ragavan, Stefan Kangas, Vincent Murphy, Xinglu - Chen. + Ninev, Madhavan Krishnan, Markus Beppler, Matthew Stevenson, Mauro + Aranda, Nicolas De Jaeghere, Shreyas Ragavan, Stefan Kangas, Vincent + Murphy, Xinglu Chen. + Ideas and user feedback :: Aaron Jensen, Adam Spiers, Adrian Manea, Alex Griffin, Alex Peitsinis, Alexey Shmalko, Alok Singh, Anders Johansson, André Alexandre Gomes, Arif Rezai, Basil L.{{{space()}}} Contovounesios, Burgess Chang, Christian Tietze, Christopher Dimech, Damien Cassou, Daniel Mendler, Dario Gjorgjevski, David Edmondson, - Davor Rotim, Divan Santana, Gerry Agbobada, Gianluca Recchia, Gustavo - Barros, Hörmetjan Yiltiz, Ilja Kocken, Iris Garcia, Jeremy Friesen, - John Haman, Joshua O'Connor, Kevin Fleming, Kostadin Ninev, Len Trigg, - Manuel Uberti, Mark Burton, Markus Beppler, Michael Goldenberg, Morgan - Smith, Murilo Pereira, Nicolas De Jaeghere, Paul Poloskov, Pete - Kazmier, Peter Wu, Philip K., Pierre Téchoueyres, Roman Rudakov, Ryan - Phillips, Sam Kleinman, Shreyas Ragavan, Simon Pugnet, Tassilo Horn, - Thibaut Verron, Trey Merkley, Togan Muftuoglu, Toon Claes, Uri Sharf, - Utkarsh Singh, Vincent Foley. As well as users: Ben, CsBigDataHub1, - Emacs Contrib, Eugene, Fourchaux, Fredrik, Moesasji, Nick, TheBlob42, - bepolymathe, doolio, fleimgruber, iSeeU, jixiuf, okamsn. + Davor Rotim, Divan Santana, Emanuele Michele Alberto Monterosso, + Farasha Euker, Gerry Agbobada, Gianluca Recchia, Gustavo Barros, + Hörmetjan Yiltiz, Ilja Kocken, Iris Garcia, Jeremy Friesen, John + Haman, Joshua O'Connor, Kevin Fleming, Kévin Le Gouguec, Kostadin + Ninev, Len Trigg, Manuel Uberti, Mark Burton, Markus Beppler, Mauro + Aranda, Michael Goldenberg, Morgan Smith, Murilo Pereira, Nicky van + Foreest, Nicolas De Jaeghere, Paul Poloskov, Pete Kazmier, Peter Wu, + Philip K., Pierre Téchoueyres, Roman Rudakov, Ryan Phillips, Sam + Kleinman, Shreyas Ragavan, Simon Pugnet, Tassilo Horn, Thibaut Verron, + Trey Merkley, Togan Muftuoglu, Toon Claes, Uri Sharf, Utkarsh Singh, + Vincent Foley. As well as users: Ben, CsBigDataHub1, Emacs Contrib, + Eugene, Fourchaux, Fredrik, Moesasji, Nick, TheBlob42, Trey, + bepolymathe, doolio, fleimgruber, iSeeU, jixiuf, okamsn, pRot0ta1p. + Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii, Glenn Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core Emacs), @@ -2819,6 +3130,7 @@ And here are the canonical sources of this project's documentation: #+texinfo: @include doclicense.texi #+begin_export html +<pre> GNU Free Documentation License Version 1.3, 3 November 2008 @@ -3270,6 +3582,7 @@ If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. +</pre> #+end_export #+html: <!-- diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 40245acb8e5..e0f648fbd97 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -5095,35 +5095,21 @@ two forms in your @file{~/.emacs} after loading the @code{tramp} and @item I get a warning @samp{Tramp has been compiled with Emacs a.b, this is Emacs c.d} +@item +I get an error @samp{tramp-file-name-handler: Invalid function: +tramp-compat-with-mutex} @value{tramp} comes with compatibility code for different Emacs versions. When you see this warning, you don't use the Emacs built-in version of @value{tramp}. In case you have installed @value{tramp} -from GNU ELPA, you must delete and reinstall it. +from GNU ELPA, see the package README file for instructions how to +recompile it. @ifset installchapter In case you have installed it from its Git repository, @ref{Recompilation}. @end ifset @item -I get an error @samp{tramp-file-name-handler: Invalid function: -tramp-compat-with-mutex} - -Likely, you have a running Emacs session with loaded @value{tramp}, -and you try to upgrade it to another version from GNU ELPA. Since -@value{tramp} is not forward compatible, you must unload / reload it. -Try the following steps: - -@example -@kbd{M-x tramp-unload-tramp @key{RET}} -@kbd{M-x load-library @key{RET} tramp @key{RET}} -@end example - -If this doesn't work, you must restart Emacs with proper -@code{load-path} for the new @value{tramp} version. - - -@item I get an error @samp{Remote file error: Forbidden reentrant call of Tramp} @vindex remote-file-error @@ -1572,6 +1572,13 @@ will match the font size in use where it is embedded. This feature relies on librsvg 2.48 or above being available. ++++ +*** Image properties support 'em' sizes. +Size image properties, for example ':height', ':max-height', etc., can +be given a cons of the form '(SIZE . em)', where SIZE is an integer or +float which is multiplied by the font size to calculate the image +size, and em is a symbol. + ** EWW +++ @@ -2678,6 +2685,11 @@ argument ELLIPSIS, will now indicate truncation using '…' when the selected frame can display it, and using "..." otherwise. +++ +** 'string-width' now accepts two optional arguments FROM and TO. +This allows calculating the width of a substring without consing a +new string. + ++++ ** New command 'make-directory-autoloads'. This does the same as the old command 'update-directory-autoloads', but has different semantics: Instead of passing in the output file via @@ -2943,6 +2955,12 @@ arrays nor objects. The special events 'dbus-event' and 'file-notify' are now ignored in 'while-no-input' when added to this variable. ++++ +** 'condition-case' now allows for a success handler. +It is written as (:success BODY...) where BODY is executed whenever +the protected form terminates without error, with the specified +variable bound to the the value of the protected form. + * Changes in Emacs 28.1 on Non-Free Operating Systems diff --git a/etc/themes/manoj-dark-theme.el b/etc/themes/manoj-dark-theme.el index 1f4891c3168..5a527111d35 100644 --- a/etc/themes/manoj-dark-theme.el +++ b/etc/themes/manoj-dark-theme.el @@ -1,4 +1,4 @@ -;;; manoj-dark.el --- A dark theme from Manoj -*- lexical-binding:t -*- +;;; manoj-dark-theme.el --- A dark theme from Manoj -*- lexical-binding:t -*- ;; Copyright (C) 2011-2021 Free Software Foundation, Inc. diff --git a/etc/themes/modus-operandi-theme.el b/etc/themes/modus-operandi-theme.el index 64763a16825..77c2e1198ca 100644 --- a/etc/themes/modus-operandi-theme.el +++ b/etc/themes/modus-operandi-theme.el @@ -4,7 +4,7 @@ ;; Author: Protesilaos Stavrou <info@protesilaos.com> ;; URL: https://gitlab.com/protesilaos/modus-themes -;; Version: 1.2.3 +;; Version: 1.3.2 ;; Package-Requires: ((emacs "26.1")) ;; Keywords: faces, theme, accessibility @@ -52,6 +52,9 @@ (eval-and-compile (unless (and (fboundp 'require-theme) + load-file-name + (equal (file-name-directory load-file-name) + (expand-file-name "themes/" data-directory)) (require-theme 'modus-themes t)) (require 'modus-themes))) diff --git a/etc/themes/modus-themes.el b/etc/themes/modus-themes.el index ad2070766a8..08e634e10d8 100644 --- a/etc/themes/modus-themes.el +++ b/etc/themes/modus-themes.el @@ -4,7 +4,8 @@ ;; Author: Protesilaos Stavrou <info@protesilaos.com> ;; URL: https://gitlab.com/protesilaos/modus-themes -;; Version: 1.2.4 +;; Version: 1.3.2 +;; Last-Modified: <2021-04-18 06:25:05 +0300> ;; Package-Requires: ((emacs "26.1")) ;; Keywords: faces, theme, accessibility @@ -50,7 +51,7 @@ ;; modus-themes-mode-line (choice) ;; modus-themes-diffs (choice) ;; modus-themes-syntax (choice) -;; modus-themes-intense-hl-line (boolean) +;; modus-themes-hl-line (choice) ;; modus-themes-subtle-line-numbers (boolean) ;; modus-themes-paren-match (choice) ;; modus-themes-region (choice) @@ -112,6 +113,7 @@ ;; compilation-mode ;; completions ;; consult +;; corfu ;; counsel ;; counsel-css ;; counsel-notmuch @@ -155,8 +157,9 @@ ;; eldoc-box ;; elfeed ;; elfeed-score +;; embark ;; emms -;; enhanced-ruby-mode +;; enh-ruby-mode (enhanced-ruby-mode) ;; epa ;; equake ;; erc @@ -284,6 +287,7 @@ ;; outline-minor-faces ;; package (M-x list-packages) ;; page-break-lines +;; pandoc-mode ;; paradox ;; paren-face ;; parrot @@ -339,10 +343,12 @@ ;; swoop ;; sx ;; symbol-overlay +;; syslog-mode +;; tab-bar-groups ;; tab-bar-mode ;; tab-line-mode -;; syslog-mode ;; table (built-in table.el) +;; telega ;; telephone-line ;; terraform-mode ;; term @@ -357,6 +363,7 @@ ;; vc (built-in mode line status for version control) ;; vc-annotate (C-x v g) ;; vdiff +;; vertico ;; vimish-fold ;; visible-mark ;; visual-regexp @@ -389,7 +396,7 @@ ;;; News: ;; ;; Users updating from older versions to >= 1.0.0, are advised to read -;; the anouncement on the emacs-devel mailing list: +;; the announcement on the emacs-devel mailing list: ;; <https://lists.gnu.org/archive/html/emacs-devel/2021-03/msg00300.html>. ;; ;; The web page of the change log is also available: @@ -434,9 +441,11 @@ (bg-alt . "#f0f0f0") (fg-alt . "#505050") ;; specifically for on/off states and must be combined with ;; themselves, though the backgrounds are also meant to be used with - ;; other "active" values, defined further below + ;; other "active" values, defined further below; bg-active-accent + ;; can work as a substitute for bg-active (bg-active . "#d7d7d7") (fg-active . "#0a0a0a") (bg-inactive . "#efefef") (fg-inactive . "#404148") + (bg-active-accent . "#d0d6ff") ;; these special values are intended as alternatives to the base ;; values for cases where we need to avoid confusion between the ;; highlighted constructs; they must either be used as pairs based @@ -496,20 +505,20 @@ ;; those foregrounds are meant exclusively for bg-active, bg-inactive (red-active . "#8a0000") (green-active . "#004c2e") - (yellow-active . "#702d1f") + (yellow-active . "#702f00") (blue-active . "#0030b4") (magenta-active . "#5c2092") (cyan-active . "#003f8a") ;; the "subtle" values below be combined with fg-dim, while the ;; "intense" should be paired with fg-main (red-subtle-bg . "#f2b0a2") - (red-intense-bg . "#ff8892") + (red-intense-bg . "#ff9f9f") (green-subtle-bg . "#aecf90") (green-intense-bg . "#5ada88") (yellow-subtle-bg . "#e4c340") (yellow-intense-bg . "#f5df23") (blue-subtle-bg . "#b5d0ff") - (blue-intense-bg . "#6aaeff") + (blue-intense-bg . "#77baff") (magenta-subtle-bg . "#f0d3ff") (magenta-intense-bg . "#d5baff") (cyan-subtle-bg . "#c0efff") @@ -544,7 +553,7 @@ (red-refine-bg . "#ffcccc") (red-refine-fg . "#780000") (green-refine-bg . "#aceaac") (green-refine-fg . "#004c00") (yellow-refine-bg . "#fff29a") (yellow-refine-fg . "#604000") - (blue-refine-bg . "#8ac7ff") (blue-refine-fg . "#002288") + (blue-refine-bg . "#8fcfff") (blue-refine-fg . "#002f88") (magenta-refine-bg . "#ffccff") (magenta-refine-fg . "#770077") (cyan-refine-bg . "#8eecf4") (cyan-refine-fg . "#004850") ;; the "nuanced" backgrounds can be combined with all of the above @@ -563,22 +572,22 @@ ;; work with all accents that cover those two, plus bg-main ;; ;; bg-hl-alt and bg-hl-alt-intense should only be used when no - ;; other greyscale or fairly neutral background is available to + ;; other grayscale or fairly neutral background is available to ;; properly draw attention to a given construct ;; ;; bg-header is between bg-active and bg-inactive, so it ;; can be combined with any of the "active" values, plus the ;; "special" and base foreground colors ;; - ;; bg-paren-match, bg-paren-match-intense, bg-region and - ;; bg-tab-active must be combined with fg-main, while - ;; bg-tab-inactive should be combined with fg-dim, whereas + ;; bg-paren-match, bg-paren-match-intense, bg-region, + ;; bg-region-accent and bg-tab-active must be combined with fg-main, + ;; while bg-tab-inactive should be combined with fg-dim, whereas ;; bg-tab-inactive-alt goes together with fg-main ;; ;; bg-tab-bar is only intended for the bar that holds the tabs and ;; can only be combined with fg-main ;; - ;; fg-tab-active is meant to be combined with bg-tab-active, + ;; fg-tab-accent is meant to be combined with bg-tab-active, ;; though only for styling special elements, such as underlining ;; the current tab ;; @@ -606,12 +615,22 @@ (bg-paren-match . "#e0af82") (bg-paren-match-intense . "#c488ff") (bg-region . "#bcbcbc") + (bg-region-accent . "#afafef") (bg-tab-bar . "#d5d5d5") (bg-tab-active . "#f6f6f6") (bg-tab-inactive . "#bdbdbd") (bg-tab-inactive-alt . "#999999") - (fg-tab-active . "#30169e") + (fg-tab-accent . "#30169e") + + (red-tab . "#680000") + (green-tab . "#003900") + (yellow-tab . "#393000") + (orange-tab . "#502300") + (blue-tab . "#000080") + (cyan-tab . "#052f60") + (magenta-tab . "#5f004d") + (purple-tab . "#400487") (fg-escape-char-construct . "#8b1030") (fg-escape-char-backslash . "#654d0f") @@ -651,10 +670,6 @@ (bg-diff-focus-changed . "#ecdfbf") (fg-diff-focus-changed . "#392900") (bg-diff-focus-removed . "#efcbcf") (fg-diff-focus-removed . "#4a0000") - (bg-diff-neutral-0 . "#979797") (fg-diff-neutral-0 . "#040404") - (bg-diff-neutral-1 . "#b0b0b0") (fg-diff-neutral-1 . "#252525") - (bg-diff-neutral-2 . "#cccccc") (fg-diff-neutral-2 . "#3a3a3a") - (bg-mark-sel . "#a0f0cf") (fg-mark-sel . "#005040") (bg-mark-del . "#ffccbb") (fg-mark-del . "#840040") (bg-mark-alt . "#f5d88f") (fg-mark-alt . "#782900")) @@ -677,13 +692,15 @@ symbol and the latter as a string.") (defconst modus-themes-vivendi-colors '(;; base values (bg-main . "#000000") (fg-main . "#ffffff") - (bg-dim . "#110b11") (fg-dim . "#e0e6f0") - (bg-alt . "#181a20") (fg-alt . "#a8a8a8") + (bg-dim . "#100f10") (fg-dim . "#e0e6f0") + (bg-alt . "#191a1b") (fg-alt . "#a8a8a8") ;; specifically for on/off states and must be combined with ;; themselves, though the backgrounds are also meant to be used with - ;; other "active" values, defined further below + ;; other "active" values, defined further below; bg-active-accent + ;; can work as a substitute for bg-active (bg-active . "#323232") (fg-active . "#f4f4f4") (bg-inactive . "#1e1e1e") (fg-inactive . "#bfc0c4") + (bg-active-accent . "#2a2a66") ;; these special values are intended as alternatives to the base ;; values for cases where we need to avoid confusion between the ;; highlighted constructs; they must either be used as pairs based @@ -791,7 +808,7 @@ symbol and the latter as a string.") (red-refine-bg . "#77002a") (red-refine-fg . "#ffb9ab") (green-refine-bg . "#00422a") (green-refine-fg . "#9ff0cf") (yellow-refine-bg . "#693200") (yellow-refine-fg . "#e2d980") - (blue-refine-bg . "#242679") (blue-refine-fg . "#8ec6ff") + (blue-refine-bg . "#242679") (blue-refine-fg . "#8ecfff") (magenta-refine-bg . "#71206a") (magenta-refine-fg . "#ffcaf0") (cyan-refine-bg . "#004065") (cyan-refine-fg . "#8ae4f2") ;; the "nuanced" backgrounds can be combined with all of the above @@ -810,22 +827,22 @@ symbol and the latter as a string.") ;; work with all accents that cover those two, plus bg-main ;; ;; bg-hl-alt and bg-hl-alt-intense should only be used when no - ;; other greyscale or fairly neutral background is available to + ;; other grayscale or fairly neutral background is available to ;; properly draw attention to a given construct ;; ;; bg-header is between bg-active and bg-inactive, so it ;; can be combined with any of the "active" values, plus the ;; "special" and base foreground colors ;; - ;; bg-paren-match, bg-paren-match-intense, bg-region and - ;; bg-tab-active must be combined with fg-main, while - ;; bg-tab-inactive should be combined with fg-dim, whereas + ;; bg-paren-match, bg-paren-match-intense, bg-region, + ;; bg-region-accent and bg-tab-active must be combined with fg-main, + ;; while bg-tab-inactive should be combined with fg-dim, whereas ;; bg-tab-inactive-alt goes together with fg-main ;; ;; bg-tab-bar is only intended for the bar that holds the tabs and ;; can only be combined with fg-main ;; - ;; fg-tab-active is meant to be combined with bg-tab-active, + ;; fg-tab-accent is meant to be combined with bg-tab-active, ;; though only for styling special elements, such as underlining ;; the current tab ;; @@ -853,12 +870,22 @@ symbol and the latter as a string.") (bg-paren-match . "#5f362f") (bg-paren-match-intense . "#7416b5") (bg-region . "#3c3c3c") + (bg-region-accent . "#4f3d88") (bg-tab-bar . "#2c2c2c") (bg-tab-active . "#0e0e0e") (bg-tab-inactive . "#3d3d3d") (bg-tab-inactive-alt . "#595959") - (fg-tab-active . "#5ac3cf") + (fg-tab-accent . "#5ac3cf") + + (red-tab . "#ffc0bf") + (green-tab . "#88ef88") + (yellow-tab . "#d2e580") + (orange-tab . "#f5ca80") + (blue-tab . "#92d9ff") + (cyan-tab . "#60e7e0") + (magenta-tab . "#ffb8ff") + (purple-tab . "#cfcaff") (fg-escape-char-construct . "#e7a59a") (fg-escape-char-backslash . "#abab00") @@ -898,10 +925,6 @@ symbol and the latter as a string.") (bg-diff-focus-changed . "#4a3a10") (fg-diff-focus-changed . "#d0daaf") (bg-diff-focus-removed . "#5e2526") (fg-diff-focus-removed . "#eebdba") - (bg-diff-neutral-0 . "#575757") (fg-diff-neutral-0 . "#fcfcfc") - (bg-diff-neutral-1 . "#454545") (fg-diff-neutral-1 . "#dddddd") - (bg-diff-neutral-2 . "#313131") (fg-diff-neutral-2 . "#bfbfbf") - (bg-mark-sel . "#002f2f") (fg-mark-sel . "#60cfa2") (bg-mark-del . "#5a0000") (fg-mark-del . "#ff99aa") (bg-mark-alt . "#3f2210") (fg-mark-alt . "#f0aa20")) @@ -916,219 +939,219 @@ symbol and the latter as a string.") ;; These faces are used internally to ensure consistency between various ;; groups and to streamline the evaluation of relevant customization ;; options. -(defface modus-theme-subtle-red nil +(defface modus-themes-subtle-red nil "Subtle red background combined with a dimmed foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-subtle-green nil +(defface modus-themes-subtle-green nil "Subtle green background combined with a dimmed foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-subtle-yellow nil +(defface modus-themes-subtle-yellow nil "Subtle yellow background combined with a dimmed foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-subtle-blue nil +(defface modus-themes-subtle-blue nil "Subtle blue background combined with a dimmed foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-subtle-magenta nil +(defface modus-themes-subtle-magenta nil "Subtle magenta background combined with a dimmed foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-subtle-cyan nil +(defface modus-themes-subtle-cyan nil "Subtle cyan background combined with a dimmed foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-subtle-neutral nil +(defface modus-themes-subtle-neutral nil "Subtle gray background combined with a dimmed foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-intense-red nil +(defface modus-themes-intense-red nil "Intense red background combined with the main foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-intense-green nil +(defface modus-themes-intense-green nil "Intense green background combined with the main foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-intense-yellow nil +(defface modus-themes-intense-yellow nil "Intense yellow background combined with the main foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-intense-blue nil +(defface modus-themes-intense-blue nil "Intense blue background combined with the main foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-intense-magenta nil +(defface modus-themes-intense-magenta nil "Intense magenta background combined with the main foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-intense-cyan nil +(defface modus-themes-intense-cyan nil "Intense cyan background combined with the main foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-intense-neutral nil +(defface modus-themes-intense-neutral nil "Intense gray background combined with the main foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-refine-red nil +(defface modus-themes-refine-red nil "Combination of accented red background and foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-refine-green nil +(defface modus-themes-refine-green nil "Combination of accented green background and foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-refine-yellow nil +(defface modus-themes-refine-yellow nil "Combination of accented yellow background and foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-refine-blue nil +(defface modus-themes-refine-blue nil "Combination of accented blue background and foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-refine-magenta nil +(defface modus-themes-refine-magenta nil "Combination of accented magenta background and foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-refine-cyan nil +(defface modus-themes-refine-cyan nil "Combination of accented cyan background and foreground. This is used for general purpose highlighting, mostly in buffers or for completion interfaces. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-active-red nil +(defface modus-themes-active-red nil "A red background meant for use on the modeline or similar. This is combined with the modelines primary foreground value. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-active-green nil +(defface modus-themes-active-green nil "A green background meant for use on the modeline or similar. This is combined with the modelines primary foreground value. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-active-yellow nil +(defface modus-themes-active-yellow nil "A yellow background meant for use on the modeline or similar. This is combined with the modelines primary foreground value. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-active-blue nil +(defface modus-themes-active-blue nil "A blue background meant for use on the modeline or similar. This is combined with the modelines primary foreground value. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-active-magenta nil +(defface modus-themes-active-magenta nil "A magenta background meant for use on the modeline or similar. This is combined with the modelines primary foreground value. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-active-cyan nil +(defface modus-themes-active-cyan nil "A cyan background meant for use on the modeline or similar. This is combined with the modelines primary foreground value. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-fringe-red nil +(defface modus-themes-fringe-red nil "A red background meant for use on the fringe or similar. This is combined with the main foreground value. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-fringe-green nil +(defface modus-themes-fringe-green nil "A green background meant for use on the fringe or similar. This is combined with the main foreground value. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-fringe-yellow nil +(defface modus-themes-fringe-yellow nil "A yellow background meant for use on the fringe or similar. This is combined with the main foreground value. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-fringe-blue nil +(defface modus-themes-fringe-blue nil "A blue background meant for use on the fringe or similar. This is combined with the main foreground value. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-fringe-magenta nil +(defface modus-themes-fringe-magenta nil "A magenta background meant for use on the fringe or similar. This is combined with the main foreground value. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-fringe-cyan nil +(defface modus-themes-fringe-cyan nil "A cyan background meant for use on the fringe or similar. This is combined with the main foreground value. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-nuanced-red nil +(defface modus-themes-nuanced-red nil "A nuanced red background. This does not specify a foreground of its own. Instead it is meant to serve as the backdrop for elements such as Org blocks, headings, and any @@ -1136,7 +1159,7 @@ other surface that needs to retain the colors on display. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-nuanced-green nil +(defface modus-themes-nuanced-green nil "A nuanced green background. This does not specify a foreground of its own. Instead it is meant to serve as the backdrop for elements such as Org blocks, headings, and any @@ -1144,7 +1167,7 @@ other surface that needs to retain the colors on display. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-nuanced-yellow nil +(defface modus-themes-nuanced-yellow nil "A nuanced yellow background. This does not specify a foreground of its own. Instead it is meant to serve as the backdrop for elements such as Org blocks, headings, and any @@ -1152,7 +1175,7 @@ other surface that needs to retain the colors on display. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-nuanced-blue nil +(defface modus-themes-nuanced-blue nil "A nuanced blue background. This does not specify a foreground of its own. Instead it is meant to serve as the backdrop for elements such as Org blocks, headings, and any @@ -1160,7 +1183,7 @@ other surface that needs to retain the colors on display. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-nuanced-magenta nil +(defface modus-themes-nuanced-magenta nil "A nuanced magenta background. This does not specify a foreground of its own. Instead it is meant to serve as the backdrop for elements such as Org blocks, headings, and any @@ -1168,7 +1191,7 @@ other surface that needs to retain the colors on display. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-nuanced-cyan nil +(defface modus-themes-nuanced-cyan nil "A nuanced cyan background. This does not specify a foreground of its own. Instead it is meant to serve as the backdrop for elements such as Org blocks, headings, and any @@ -1176,7 +1199,7 @@ other surface that needs to retain the colors on display. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-special-cold nil +(defface modus-themes-special-cold nil "Combines the 'special cold' background and foreground values. This is intended for cases when a neutral gray background is not suitable and where a combination of more saturated colors would not be @@ -1184,7 +1207,7 @@ appropriate. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-special-mild nil +(defface modus-themes-special-mild nil "Combines the 'special mild' background and foreground values. This is intended for cases when a neutral gray background is not suitable and where a combination of more saturated colors would not be @@ -1192,7 +1215,7 @@ appropriate. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-special-warm nil +(defface modus-themes-special-warm nil "Combines the 'special warm' background and foreground values. This is intended for cases when a neutral gray background is not suitable and where a combination of more saturated colors would not be @@ -1200,7 +1223,7 @@ appropriate. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-special-calm nil +(defface modus-themes-special-calm nil "Combines the 'special calm' background and foreground values. This is intended for cases when a neutral gray background is not suitable and where a combination of more saturated colors would not be @@ -1208,180 +1231,180 @@ appropriate. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-diff-added nil +(defface modus-themes-diff-added nil "Combines green colors for the 'added' state in diffs. The applied colors are contingent on the value assigned to `modus-themes-diffs'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-diff-changed nil +(defface modus-themes-diff-changed nil "Combines yellow colors for the 'changed' state in diffs. The applied colors are contingent on the value assigned to `modus-themes-diffs'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-diff-removed nil +(defface modus-themes-diff-removed nil "Combines red colors for the 'removed' state in diffs. The applied colors are contingent on the value assigned to `modus-themes-diffs'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-diff-refine-added nil +(defface modus-themes-diff-refine-added nil "Combines green colors for word-wise 'added' state in diffs. The applied colors are contingent on the value assigned to `modus-themes-diffs'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-diff-refine-changed nil +(defface modus-themes-diff-refine-changed nil "Combines yellow colors for word-wise 'changed' state in diffs. The applied colors are contingent on the value assigned to `modus-themes-diffs'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-diff-refine-removed nil +(defface modus-themes-diff-refine-removed nil "Combines red colors for word-wise 'removed' state in diffs. The applied colors are contingent on the value assigned to `modus-themes-diffs'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-diff-focus-added nil +(defface modus-themes-diff-focus-added nil "Combines green colors for the focused 'added' state in diffs. The applied colors are contingent on the value assigned to `modus-themes-diffs'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-diff-focus-changed nil +(defface modus-themes-diff-focus-changed nil "Combines yellow colors for the focused 'changed' state in. The applied colors are contingent on the value assigned to `modus-themes-diffs'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-diff-focus-removed nil +(defface modus-themes-diff-focus-removed nil "Combines red colors for the focused 'removed' state in diffs. The applied colors are contingent on the value assigned to `modus-themes-diffs'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-diff-heading nil +(defface modus-themes-diff-heading nil "Combines blue colors for the diff hunk heading. The applied colors are contingent on the value assigned to `modus-themes-diffs'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-pseudo-header nil +(defface modus-themes-pseudo-header nil "Generic style for some elements that function like headings. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-mark-alt nil - "Combines yellow colors for marking special lines +(defface modus-themes-mark-alt nil + "Combines yellow colors for marking special lines. This is intended for use in modes such as Dired, Ibuffer, Proced. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-mark-del nil - "Combines red colors for marking deletable lines +(defface modus-themes-mark-del nil + "Combines red colors for marking deletable lines. This is intended for use in modes such as Dired, Ibuffer, Proced. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-mark-sel nil - "Combines green colors for marking lines +(defface modus-themes-mark-sel nil + "Combines green colors for marking lines. This is intended for use in modes such as Dired, Ibuffer, Proced. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-mark-symbol nil +(defface modus-themes-mark-symbol nil "Applies a blue color and other styles for mark indicators. This is intended for use in modes such as Dired, Ibuffer, Proced. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-heading-1 nil - "General purpose face for use in headings level 1 +(defface modus-themes-heading-1 nil + "General purpose face for use in headings level 1. The exact attributes assigned to this face are contingent on the values assigned to the `modus-themes-headings' variable. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-heading-2 nil +(defface modus-themes-heading-2 nil "General purpose face for use in headings level 2. The exact attributes assigned to this face are contingent on the values assigned to the `modus-themes-headings' variable. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-heading-3 nil +(defface modus-themes-heading-3 nil "General purpose face for use in headings level 3. The exact attributes assigned to this face are contingent on the values assigned to the `modus-themes-headings' variable. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-heading-4 nil +(defface modus-themes-heading-4 nil "General purpose face for use in headings level 4. The exact attributes assigned to this face are contingent on the values assigned to the `modus-themes-headings' variable. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-heading-5 nil +(defface modus-themes-heading-5 nil "General purpose face for use in headings level 5. The exact attributes assigned to this face are contingent on the values assigned to the `modus-themes-headings' variable. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-heading-6 nil +(defface modus-themes-heading-6 nil "General purpose face for use in headings level 6. The exact attributes assigned to this face are contingent on the values assigned to the `modus-themes-headings' variable. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-heading-7 nil +(defface modus-themes-heading-7 nil "General purpose face for use in headings level 7. The exact attributes assigned to this face are contingent on the values assigned to the `modus-themes-headings' variable. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-heading-8 nil +(defface modus-themes-heading-8 nil "General purpose face for use in headings level 8. The exact attributes assigned to this face are contingent on the values assigned to the `modus-themes-headings' variable. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-hl-line nil +(defface modus-themes-hl-line nil "General purpose face for the current line. The exact attributes assigned to this face are contingent on the values -assigned to the `modus-themes-intense-hl-line' variable. +assigned to the `modus-themes-hl-line' variable. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-bold nil +(defface modus-themes-bold nil "Generic face for applying a conditional bold weight. This behaves in accordance with `modus-themes-bold-constructs'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-slant nil +(defface modus-themes-slant nil "Generic face for applying a conditional slant (italics). This behaves in accordance with `modus-themes-slanted-constructs'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-variable-pitch nil +(defface modus-themes-variable-pitch nil "Generic face for applying a conditional `variable-pitch'. This behaves in accordance with `modus-themes-no-mixed-fonts', `modus-themes-variable-pitch-headings' for all heading levels, and @@ -1389,7 +1412,7 @@ This behaves in accordance with `modus-themes-no-mixed-fonts', The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-graph-red-0 nil +(defface modus-themes-graph-red-0 nil "Special subdued red face for use in graphs. This is intended to be applied in contexts such as the Org agenda habit graph where faithfulness to the semantics of a color value is of @@ -1397,7 +1420,7 @@ paramount importance. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-graph-red-1 nil +(defface modus-themes-graph-red-1 nil "Special prominent red face for use in graphs. This is intended to be applied in contexts such as the Org agenda habit graph where faithfulness to the semantics of a color value is of @@ -1405,7 +1428,7 @@ paramount importance. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-graph-green-0 nil +(defface modus-themes-graph-green-0 nil "Special subdued green face for use in graphs. This is intended to be applied in contexts such as the Org agenda habit graph where faithfulness to the semantics of a color value is of @@ -1413,7 +1436,7 @@ paramount importance. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-graph-green-1 nil +(defface modus-themes-graph-green-1 nil "Special prominent green face for use in graphs. This is intended to be applied in contexts such as the Org agenda habit graph where faithfulness to the semantics of a color value is of @@ -1421,7 +1444,7 @@ paramount importance. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-graph-yellow-0 nil +(defface modus-themes-graph-yellow-0 nil "Special subdued yellow face for use in graphs. This is intended to be applied in contexts such as the Org agenda habit graph where faithfulness to the semantics of a color value is of @@ -1429,7 +1452,7 @@ paramount importance. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-graph-yellow-1 nil +(defface modus-themes-graph-yellow-1 nil "Special prominent yellow face for use in graphs. This is intended to be applied in contexts such as the Org agenda habit graph where faithfulness to the semantics of a color value is of @@ -1437,7 +1460,7 @@ paramount importance. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-graph-blue-0 nil +(defface modus-themes-graph-blue-0 nil "Special subdued blue face for use in graphs. This is intended to be applied in contexts such as the Org agenda habit graph where faithfulness to the semantics of a color value is of @@ -1445,7 +1468,7 @@ paramount importance. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-graph-blue-1 nil +(defface modus-themes-graph-blue-1 nil "Special prominent blue face for use in graphs. This is intended to be applied in contexts such as the Org agenda habit graph where faithfulness to the semantics of a color value is of @@ -1453,7 +1476,7 @@ paramount importance. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-graph-magenta-0 nil +(defface modus-themes-graph-magenta-0 nil "Special subdued magenta face for use in graphs. This is intended to be applied in contexts such as the Org agenda habit graph where faithfulness to the semantics of a color value is of @@ -1461,7 +1484,7 @@ paramount importance. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-graph-magenta-1 nil +(defface modus-themes-graph-magenta-1 nil "Special prominent magenta face for use in graphs. This is intended to be applied in contexts such as the Org agenda habit graph where faithfulness to the semantics of a color value is of @@ -1469,7 +1492,7 @@ paramount importance. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-graph-cyan-0 nil +(defface modus-themes-graph-cyan-0 nil "Special subdued cyan face for use in graphs. This is intended to be applied in contexts such as the Org agenda habit graph where faithfulness to the semantics of a color value is of @@ -1477,7 +1500,7 @@ paramount importance. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-graph-cyan-1 nil +(defface modus-themes-graph-cyan-1 nil "Special prominent cyan face for use in graphs. This is intended to be applied in contexts such as the Org agenda habit graph where faithfulness to the semantics of a color value is of @@ -1485,27 +1508,51 @@ paramount importance. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-lang-note nil +(defface modus-themes-lang-note nil "Generic face for linter or spell checker notes. The exact attributes and color combinations are controlled by `modus-themes-lang-checkers'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-lang-warning nil +(defface modus-themes-lang-warning nil "Generic face for linter or spell checker warnings. The exact attributes and color combinations are controlled by `modus-themes-lang-checkers'. The actual styling of the face is done by `modus-themes-faces'.") -(defface modus-theme-lang-error nil +(defface modus-themes-lang-error nil "Generic face for linter or spell checker errors. The exact attributes and color combinations are controlled by `modus-themes-lang-checkers'. The actual styling of the face is done by `modus-themes-faces'.") +(defface modus-themes-reset-soft nil + "Generic face to set most face properties to nil. + +This is intended to be inherited by faces that should not retain +properties from their context (e.g. an overlay over an underlined +text should not be underlined as well) yet still blend in. Also +see `modus-themes-reset-hard'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-reset-hard nil + "Generic face to set all face properties to nil. + +This is intended to be inherited by faces that should not retain +properties from their context (e.g. an overlay over an underlined +text should not be underlined as well) and not blend in. Also +see `modus-themes-reset-soft'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-key-binding nil + "Generic face for key bindings. +The actual styling of the face is done by `modus-themes-faces'.") + ;;; Customization options @@ -1592,8 +1639,31 @@ mixing fonts." :type 'boolean :link '(info-link "(modus-themes) No mixed fonts")) -(defcustom modus-themes-headings - '((t . nil)) +(defconst modus-themes--headings-choice + '(choice + (const :format "[%v] %t\n" :tag "Fairly desaturated foreground with bold weight (default)" nil) + (const :format "[%v] %t\n" :tag "Same as the default (backward-compatible)" t) + (const :format "[%v] %t\n" :tag "Like the default without bold weight" no-bold) + (const :format "[%v] %t\n" :tag "Like the default plus overline" line) + (const :format "[%v] %t\n" :tag "Like `line' without bold weight" line-no-bold) + (const :format "[%v] %t\n" :tag "Like the default but with more colorful foreground" rainbow) + (const :format "[%v] %t\n" :tag "Like `rainbow' plus overline" rainbow-line) + (const :format "[%v] %t\n" :tag "Like `rainbow' without bold weight" rainbow-no-bold) + (const :format "[%v] %t\n" :tag "Like `rainbow-line' without bold weight" rainbow-line-no-bold) + (const :format "[%v] %t\n" :tag "Like the default plus subtle background" highlight) + (const :format "[%v] %t\n" :tag "Like `highlight' without bold weight" highlight-no-bold) + (const :format "[%v] %t\n" :tag "Like `highlight' with more colorful foreground" rainbow-highlight) + (const :format "[%v] %t\n" :tag "Like `rainbow-highlight' without bold weight" rainbow-highlight-no-bold) + (const :format "[%v] %t\n" :tag "Like `highlight' plus overline" section) + (const :format "[%v] %t\n" :tag "Like `section' without bold weight" section-no-bold) + (const :format "[%v] %t\n" :tag "Like `section' with more colorful foreground" rainbow-section) + (const :format "[%v] %t\n" :tag "Like `rainbow-section' without bold weight" rainbow-section-no-bold) + (const :format "[%v] %t\n" :tag "Do not use any distinct foreground color; just bold weight" no-color) + (const :format "[%v] %t\n" :tag "Like `no-bold' but without the distinct foreground color" no-color-no-bold)) + "Refer to the doc string of `modus-themes-headings'. +This is a helper variable intended for internal use.") + +(defcustom modus-themes-headings nil "Alist of styles for headings, with optional value per level. To control faces per level from 1-8, use something like this: @@ -1608,17 +1678,18 @@ To set a uniform value for all heading levels, use this pattern: (setq modus-themes-headings '((t . rainbow-line-no-bold))) -The default uses a fairly desaturated foreground value in +The default value uses a fairly desaturated foreground color in combination with a bold typographic weight. To specify this style for a given level N (assuming you wish to have another -fallback option), just specify the value t like this: +fallback option), just specify the value nil like this: (setq modus-themes-headings - '((1 . t) + '((1 . nil) (2 . line) + (3) ; same as nil (t . rainbow-line-no-bold))) -A description of all possible values: +A description of all other possible values: + `no-bold' retains the default text color while removing the typographic weight. @@ -1669,30 +1740,14 @@ A description of all possible values: + `no-color-no-bold' is like `no-color' but without the bold weight." :group 'modus-themes - :package-version '(modus-themes . "1.2.0") + :package-version '(modus-themes . "1.3.0") :version "28.1" - :type - '(alist - :key-type symbol - :value-type - (choice (const :tag "Fairly desaturated foreground with bold weight (default)" t) - (const :tag "Like the default without bold weight" no-bold) - (const :tag "Like the default plus overline" line) - (const :tag "Like `line' without bold weight" line-no-bold) - (const :tag "Like the default but with more colorful foreground" rainbow) - (const :tag "Like `rainbow' plus overline" rainbow-line) - (const :tag "Like `rainbow' without bold weight" rainbow-no-bold) - (const :tag "Like `rainbow-line' without bold weight" rainbow-line-no-bold) - (const :tag "Like the default plus subtle background" highlight) - (const :tag "Like `highlight' without bold weight" highlight-no-bold) - (const :tag "Like `highlight' with more colorful foreground" rainbow-highlight) - (const :tag "Like `rainbow-highlight' without bold weight" rainbow-highlight-no-bold) - (const :tag "Like `highlight' plus overline" section) - (const :tag "Like `section' without bold weight" section-no-bold) - (const :tag "Like `section' with more colorful foreground" rainbow-section) - (const :tag "Like `rainbow-section' without bold weight" rainbow-section-no-bold) - (const :tag "Do not use any distinct foreground color; just bold weight" no-color) - (const :tag "Like `no-bold' but without the distinct foreground color" no-color-no-bold))) + :type `(alist + :options ,(mapcar (lambda (el) + (list el modus-themes--headings-choice)) + '(1 2 3 4 5 6 7 8 t)) + :key-type symbol + :value-type ,modus-themes--headings-choice) :link '(info-link "(modus-themes) Heading styles")) (defcustom modus-themes-scale-headings nil @@ -1830,16 +1885,16 @@ accordance with it in cases where it changes, such as while using "Define the visibility of fringes. Nil means the fringes have no background color. Option `subtle' -will apply a greyscale value that is visible yet close to the +will apply a grayscale value that is visible yet close to the main buffer background color. Option `intense' will use a more -pronounced greyscale value." +pronounced grayscale value." :group 'modus-themes :package-version '(modus-themes . "1.0.0") :version "28.1" :type '(choice - (const :tag "No visible fringes (default)" nil) - (const :tag "Subtle greyscale background" subtle) - (const :tag "Intense greyscale background" intense)) + (const :format "[%v] %t\n" :tag "No visible fringes (default)" nil) + (const :format "[%v] %t\n" :tag "Subtle grayscale background" subtle) + (const :format "[%v] %t\n" :tag "Intense grayscale background" intense)) :link '(info-link "(modus-themes) Fringes")) (defcustom modus-themes-lang-checkers nil @@ -1867,13 +1922,13 @@ most intense combination of face properties." :package-version '(modus-themes . "1.1.0") :version "28.1" :type '(choice - (const :tag "Only color-coded wavy underline (default)" nil) - (const :tag "Like the default, but with a straight underline" straight-underline) - (const :tag "Color-coded wavy underline; subtle foreground" subtle-foreground) - (const :tag "Combines `straight-underline' and `subtle-foreground'" subtle-foreground-straight-underline) - (const :tag "Color-coded wavy underline; intense foreground" intense-foreground) - (const :tag "Combines `straight-underline' and `intense-foreground'" intense-foreground-straight-underline) - (const :tag "Color-coded background, foreground, straight underline" colored-background)) + (const :format "[%v] %t\n" :tag "Only color-coded wavy underline (default)" nil) + (const :format "[%v] %t\n" :tag "Like the default, but with a straight underline" straight-underline) + (const :format "[%v] %t\n" :tag "Color-coded wavy underline; subtle foreground" subtle-foreground) + (const :format "[%v] %t\n" :tag "Combines `straight-underline' and `subtle-foreground'" subtle-foreground-straight-underline) + (const :format "[%v] %t\n" :tag "Color-coded wavy underline; intense foreground" intense-foreground) + (const :format "[%v] %t\n" :tag "Combines `straight-underline' and `intense-foreground'" intense-foreground-straight-underline) + (const :format "[%v] %t\n" :tag "Color-coded background, foreground, straight underline" colored-background)) :link '(info-link "(modus-themes) Language checkers")) (defcustom modus-themes-org-blocks nil @@ -1897,10 +1952,10 @@ association list)." :package-version '(modus-themes . "1.0.0") :version "28.1" :type '(choice - (const :tag "No Org block background (default)" nil) - (const :tag "Subtle gray block background" grayscale) - (const :tag "Subtle gray block background (alt spelling)" greyscale) - (const :tag "Color-coded background per programming language" rainbow)) + (const :format "[%v] %t\n" :tag "No Org block background (default)" nil) + (const :format "[%v] %t\n" :tag "Subtle gray block background" grayscale) + (const :format "[%v] %t\n" :tag "Subtle gray block background (alt spelling)" greyscale) + (const :format "[%v] %t\n" :tag "Color-coded background per programming language" rainbow)) :link '(info-link "(modus-themes) Org mode blocks")) (defcustom modus-themes-org-habit nil @@ -1936,17 +1991,17 @@ highlights the alert and overdue states." :package-version '(modus-themes . "1.1.0") :version "28.1" :type '(choice - (const :tag "Respect the original design of org-habit (default)" nil) - (const :tag "Like the default, but do not distinguish between present and future variants" simplified) - (const :tag "Like `simplified', but only use red, yellow, green" traffic-light)) + (const :format "[%v] %t\n" :tag "Respect the original design of org-habit (default)" nil) + (const :format "[%v] %t\n" :tag "Like the default, but do not distinguish between present and future variants" simplified) + (const :format "[%v] %t\n" :tag "Like `simplified', but only use red, yellow, green" traffic-light)) :link '(info-link "(modus-themes) Org agenda habits")) (defcustom modus-themes-mode-line nil "Adjust the overall style of the mode line. -Nil is a two-dimensional rectangle with a border around it. The -active and the inactive modelines use different shades of -greyscale values for the background and foreground. +The default (nil) is a two-dimensional rectangle with a border +around it. The active and the inactive modelines use different +shades of grayscale values for the background and foreground. A `3d' value will apply a three-dimensional effect to the active modeline. The inactive modelines remain two-dimensional and are @@ -1969,17 +2024,25 @@ and `moody' options respectively, while removing the borders. However, to ensure that the inactive modelines remain visible, they apply a slightly more prominent background to them than what their counterparts do (same inactive background as with the -default)." +default). + +Similarly, `accented', `accented-3d', and `accented-moody' +correspond to the default (nil), `3d', and `moody' styles +respectively, except that the active mode line uses a colored +background instead of the standard shade of gray." :group 'modus-themes - :package-version '(modus-themes . "1.0.0") + :package-version '(modus-themes . "1.3.0") :version "28.1" :type '(choice - (const :tag "Two-dimensional box (default)" nil) - (const :tag "Three-dimensional style for the active mode line" 3d) - (const :tag "No box effects, which are optimal for use with the `moody' library" moody) - (const :tag "Like the default, but without border effects" borderless) - (const :tag "Like `3d', but without noticeable border" borderless-3d) - (const :tag "Like `moody', but without noticeable border" borderless-moody)) + (const :format "[%v] %t\n" :tag "Two-dimensional box (default)" nil) + (const :format "[%v] %t\n" :tag "Three-dimensional style for the active mode line" 3d) + (const :format "[%v] %t\n" :tag "No box effects, which are optimal for use with the `moody' library" moody) + (const :format "[%v] %t\n" :tag "Like the default, but without border effects" borderless) + (const :format "[%v] %t\n" :tag "Like `3d', but without noticeable border" borderless-3d) + (const :format "[%v] %t\n" :tag "Like `moody', but without noticeable border" borderless-moody) + (const :format "[%v] %t\n" :tag "Two-dimensional box with a colored background" accented) + (const :format "[%v] %t\n" :tag "Like `3d', but with a colored background" accented-3d) + (const :format "[%v] %t\n" :tag "Like `moody', but with a colored background" accented-moody)) :link '(info-link "(modus-themes) Mode line")) (defcustom modus-themes-diffs nil @@ -1998,7 +2061,7 @@ Option `fg-only' will remove all accented backgrounds, except from word-wise changes. It instead uses color-coded foreground values to differentiate between added/removed/changed lines. If a background is necessary, such as with `ediff', then a subtle -greyscale value is used. +grayscale value is used. Option `bg-only' applies a background but does not override the text's foreground. This makes it suitable for a non-nil value @@ -2014,11 +2077,11 @@ of optimizing for such a use-case." :package-version '(modus-themes . "1.2.0") :version "28.1" :type '(choice - (const :tag "Intensely colored backgrounds (default)" nil) - (const :tag "Slightly accented backgrounds with tinted text" desaturated) - (const :tag "No backgrounds, except for refined diffs" fg-only) - (const :tag "Apply color-coded backgrounds; keep syntax colors in tact" bg-only) - (const :tag "Optimized for red-green color defficiency" deuteranopia)) + (const :format "[%v] %t\n" :tag "Intensely colored backgrounds (default)" nil) + (const :format "[%v] %t\n" :tag "Slightly accented backgrounds with tinted text" desaturated) + (const :format "[%v] %t\n" :tag "No backgrounds, except for refined diffs" fg-only) + (const :format "[%v] %t\n" :tag "Apply color-coded backgrounds; keep syntax colors in tact" bg-only) + (const :format "[%v] %t\n" :tag "Optimized for red-green color defficiency" deuteranopia)) :link '(info-link "(modus-themes) Diffs")) (defcustom modus-themes-completions nil @@ -2048,9 +2111,9 @@ revert to an even more nuanced aesthetic." :package-version '(modus-themes . "1.0.0") :version "28.1" :type '(choice - (const :tag "Respect the framework's established aesthetic (default)" nil) - (const :tag "Subtle backgrounds for various elements" moderate) - (const :tag "Radical alternative to the framework's looks" opinionated)) + (const :format "[%v] %t\n" :tag "Respect the framework's established aesthetic (default)" nil) + (const :format "[%v] %t\n" :tag "Subtle backgrounds for various elements" moderate) + (const :format "[%v] %t\n" :tag "Radical alternative to the framework's looks" opinionated)) :link '(info-link "(modus-themes) Completion UIs")) (defcustom modus-themes-prompts nil @@ -2069,18 +2132,18 @@ Options `subtle-gray' and `intense-gray' are like their `subtle-accented' and `intense-accented' counterparts, except they use grayscale values instead of accented ones." :group 'modus-themes - :package-version '(modus-themes . "1.0.0") + :package-version '(modus-themes . "1.1.0") :version "28.1" :type '(choice ;; `subtle' is the same as `subtle-accented', while `intense' is ;; equal to `intense-accented' for backward compatibility - (const :tag "No prompt background (default)" nil) - (const :tag "Subtle accented background for the prompt" subtle-accented) - (const :tag "Same as `subtle-accented' for compatibility with older versions" subtle) - (const :tag "Intense accented background and foreground for the prompt" intense-accented) - (const :tag "Same as `intense-accented' for compatibility with older versions" intense) - (const :tag "Like `subtle-accented' but grayscale" subtle-gray) - (const :tag "Like `intense-accented' but grayscale" intense-gray)) + (const :format "[%v] %t\n" :tag "No prompt background (default)" nil) + (const :format "[%v] %t\n" :tag "Subtle accented background for the prompt" subtle-accented) + (const :format "[%v] %t\n" :tag "Same as `subtle-accented' for compatibility with older versions" subtle) + (const :format "[%v] %t\n" :tag "Intense accented background and foreground for the prompt" intense-accented) + (const :format "[%v] %t\n" :tag "Same as `intense-accented' for compatibility with older versions" intense) + (const :format "[%v] %t\n" :tag "Like `subtle-accented' but grayscale" subtle-gray) + (const :format "[%v] %t\n" :tag "Like `intense-accented' but grayscale" intense-gray)) :link '(info-link "(modus-themes) Command prompts")) (defcustom modus-themes-intense-hl-line nil @@ -2091,6 +2154,45 @@ they use grayscale values instead of accented ones." :type 'boolean :link '(info-link "(modus-themes) Line highlighting")) +(make-obsolete 'modus-themes-intense-hl-line 'modus-themes-hl-line "1.3.0") + +(defcustom modus-themes-hl-line nil + "Control the current line highlight of HL-line mode. + +The default (nil) is to apply a subtle neutral background to the +current line. + +Option `intense-background' uses a prominent neutral background. + +Option `accented-background' uses a subtle colored background. + +Option `underline-neutral' combines a subtle neutral background +with a gray underline. + +Option `underline-accented' draws an underline while applying a +subtle colored background. + +Option `underline-only-neutral' uses just a neutral underline, +without any added change to the background. + +Option `underline-only-accented' uses just a colored underline, +without any added change to the background. + +Set `x-underline-at-descent-line' to a non-nil value for better +results with underlines." + :group 'modus-themes + :package-version '(modus-themes . "1.3.0") + :version "28.1" + :type '(choice + (const :format "[%v] %t\n" :tag "Subtle neutral background (default)" nil) + (const :format "[%v] %t\n" :tag "Prominent neutral background" intense-background) + (const :format "[%v] %t\n" :tag "Subtle colored background" accented-background) + (const :format "[%v] %t\n" :tag "Underline with a subtle neutral background" underline-neutral) + (const :format "[%v] %t\n" :tag "Underline with a subtle colored background" underline-accented) + (const :format "[%v] %t\n" :tag "Just a neutral underline, without a background" underline-only-neutral) + (const :format "[%v] %t\n" :tag "Just an accented underline, without a background" underline-only-accented)) + :link '(info-link "(modus-themes) Line highlighting")) + (defcustom modus-themes-subtle-line-numbers nil "Use more subtle style for command `display-line-numbers-mode'." :group 'modus-themes @@ -2115,10 +2217,10 @@ uses a bold weight." :package-version '(modus-themes . "1.0.0") :version "28.1" :type '(choice - (const :tag "Sublte tinted background (default)" nil) - (const :tag "Like the default, but also use bold typographic weight" subtle-bold) - (const :tag "Intense saturated background" intense) - (const :tag "Like `intense' but with bold weight" intense-bold)) + (const :format "[%v] %t\n" :tag "Sublte tinted background (default)" nil) + (const :format "[%v] %t\n" :tag "Like the default, but also use bold typographic weight" subtle-bold) + (const :format "[%v] %t\n" :tag "Intense saturated background" intense) + (const :format "[%v] %t\n" :tag "Like `intense' but with bold weight" intense-bold)) :link '(info-link "(modus-themes) Matching parentheses")) (defcustom modus-themes-syntax nil @@ -2155,14 +2257,14 @@ Option `faint-yellow-comments' combines the `faint' style with :package-version '(modus-themes . "1.2.0") :version "28.1" :type '(choice - (const :tag "Balanced use of blue, cyan, magenta, purple variants (default)" nil) - (const :tag "Like the default, but with desaturated color values" faint) - (const :tag "Apply yellow tint to comments, keep the default style for the rest" yellow-comments) - (const :tag "Use green for strings, keep the default style for the rest" green-strings) - (const :tag "Use green for strings, yellow for comments, keep the default style for the rest" yellow-comments-green-strings) - (const :tag "Refashion syntax highlighting with more colors, gray comments" alt-syntax) - (const :tag "Like `alt-syntax' but with yellow comments" alt-syntax-yellow-comments) - (const :tag "Like `faint' but with yellow comments" faint-yellow-comments)) + (const :format "[%v] %t\n" :tag "Balanced use of blue, cyan, magenta, purple variants (default)" nil) + (const :format "[%v] %t\n" :tag "Like the default, but with desaturated color values" faint) + (const :format "[%v] %t\n" :tag "Apply yellow tint to comments, keep the default style for the rest" yellow-comments) + (const :format "[%v] %t\n" :tag "Use green for strings, keep the default style for the rest" green-strings) + (const :format "[%v] %t\n" :tag "Use green for strings, yellow for comments, keep the default style for the rest" yellow-comments-green-strings) + (const :format "[%v] %t\n" :tag "Refashion syntax highlighting with more colors, gray comments" alt-syntax) + (const :format "[%v] %t\n" :tag "Like `alt-syntax' but with yellow comments" alt-syntax-yellow-comments) + (const :format "[%v] %t\n" :tag "Like `faint' but with yellow comments" faint-yellow-comments)) :link '(info-link "(modus-themes) Syntax styles")) (defcustom modus-themes-links nil @@ -2174,11 +2276,11 @@ foreground. Option `faint' applies desaturated colors to the link's text and underline. -Option `neutral-underline' applies a subtle grey underline, while +Option `neutral-underline' applies a subtle gray underline, while retaining the link's foreground. Option `faint-neutral-underline' combines a desaturated text -color with a subtle grey underline. +color with a subtle gray underline. Option `no-underline' removes link underlines altogether, while retaining their original fairly vivid color. @@ -2193,13 +2295,13 @@ using a subtle underline below it." :package-version '(modus-themes . "1.2.0") :version "28.1" :type '(choice - (const :tag "Undeline link using the same color as the text (default)" nil) - (const :tag "Like the default, but apply less intense colors to links" faint) - (const :tag "Change the color of link underlines to a neutral grey" neutral-underline) - (const :tag "Desaturated foreground with neutral grey underline" faint-neutral-underline) - (const :tag "Remove underline property from links, keeping their foreground as-is" no-underline) - (const :tag "Apply underline only; use default foreground" underline-only) - (const :tag "Like `underline-only' but with a subtle underline" neutral-underline-only)) + (const :format "[%v] %t\n" :tag "Undeline link using the same color as the text (default)" nil) + (const :format "[%v] %t\n" :tag "Like the default, but apply less intense colors to links" faint) + (const :format "[%v] %t\n" :tag "Change the color of link underlines to a neutral gray" neutral-underline) + (const :format "[%v] %t\n" :tag "Desaturated foreground with neutral gray underline" faint-neutral-underline) + (const :format "[%v] %t\n" :tag "Remove underline property from links, keeping their foreground as-is" no-underline) + (const :format "[%v] %t\n" :tag "Apply underline only; use default foreground" underline-only) + (const :format "[%v] %t\n" :tag "Like `underline-only' but with a subtle underline" neutral-underline-only)) :link '(info-link "(modus-themes) Link styles")) (defcustom modus-themes-region nil @@ -2218,15 +2320,24 @@ override any existing colors. It extends to the edge of the window. Option `bg-only-no-extend' is a combination of the `bg-only' and -`no-extend' options." +`no-extend' options. + +Option `accent' uses a more colorful background with a neutral +foreground. It overrides all syntax highlighting and extends to +the edge of the window. + +Option `accent-no-extend' is like the above, but stretches only +to the end of each line within the region." :group 'modus-themes - :package-version '(modus-themes . "1.0.0") + :package-version '(modus-themes . "1.3.0") :version "28.1" :type '(choice - (const :tag "Intense background; overrides colors; extends to edge of window (default)" nil) - (const :tag "As with the default, but does not extend" no-extend) - (const :tag "Subtle background; preserves colors; extends to edge of window" bg-only) - (const :tag "As with the `subtle' option, but does not extend" bg-only-no-extend)) + (const :format "[%v] %t\n" :tag "Intense background; overrides colors; extends to edge of window (default)" nil) + (const :format "[%v] %t\n" :tag "As with the default, but does not extend" no-extend) + (const :format "[%v] %t\n" :tag "Subtle background; preserves colors; extends to edge of window" bg-only) + (const :format "[%v] %t\n" :tag "As with the `subtle' option, but does not extend" bg-only-no-extend) + (const :format "[%v] %t\n" :tag "Like the default, but with an accented background" accent) + (const :format "[%v] %t\n" :tag "As with the `accent' option, but does not extend" accent-no-extend)) :link '(info-link "(modus-themes) Active region")) @@ -2382,8 +2493,8 @@ Those are stored in `modus-themes-faces' and (defun modus-themes--fringe (mainbg subtlebg intensebg) "Conditional use of background colors for fringes. -MAINBG is the default. SUBTLEBG should be a subtle greyscale -value. INTENSEBG must be a more pronounced greyscale color." +MAINBG is the default. SUBTLEBG should be a subtle grayscale +value. INTENSEBG must be a more pronounced grayscale color." (pcase modus-themes-fringes ('intense (list :background intensebg)) ('subtle (list :background subtlebg)) @@ -2431,9 +2542,9 @@ combinable with INTENSEFG." ('intense (list :background intensebg :foreground intensefg)) ('subtle-accented (list :background subtlebg :foreground subtlefg)) ('subtle (list :background subtlebg :foreground subtlefg)) - ('subtle-gray (list :inherit 'modus-theme-subtle-neutral)) - ('intense-gray (list :inherit 'modus-theme-intense-neutral)) - (_ (list :background nil :foreground mainfg)))) + ('subtle-gray (list :inherit 'modus-themes-subtle-neutral)) + ('intense-gray (list :inherit 'modus-themes-intense-neutral)) + (_ (list :background 'unspecified :foreground mainfg)))) (defun modus-themes--paren (normalbg intensebg) "Conditional use of intense colors for matching parentheses. @@ -2582,10 +2693,10 @@ theme's source code)." BG, FG, BGACCENT, FGACCENT apply a background and foreground color respectively. -The former pair is a greyscale combination that should be more +The former pair is a grayscale combination that should be more distinct than the background of the block. It is applied to the default styles or when `modus-themes-org-blocks' is set -to `greyscale'. +to `grayscale' (or `greyscale'). The latter pair should be more subtle than the background of the block, as it is used when `modus-themes-org-blocks' is @@ -2606,13 +2717,14 @@ instead. Same for SIMPLE." (_ (list :background default)))) (defun modus-themes--mode-line-attrs - (fg bg fg-alt bg-alt border border-3d &optional alt-style border-width fg-distant) + (fg bg fg-alt bg-alt fg-accent bg-accent border border-3d &optional alt-style border-width fg-distant) "Color combinations for `modus-themes-mode-line'. FG and BG are the default colors. FG-ALT and BG-ALT are meant to accommodate the options for a 3D modeline or a `moody' compliant -one. BORDER applies to all permutations of the modeline, except -the three-dimensional effect, where BORDER-3D is used instead. +one. FG-ACCENT and BG-ACCENT are used for all variants. BORDER +applies to all permutations of the modeline, except the +three-dimensional effect, where BORDER-3D is used instead. Optional ALT-STYLE applies an appropriate style to the mode line's box property. @@ -2644,6 +2756,17 @@ property." `(:background ,bg :foreground ,fg :underline ,bg :overline ,bg :distant-foreground ,fg-distant)) + ('accented + `(:foreground ,fg-accent :background ,bg-accent :box ,border)) + ('accented-3d + `(:background ,bg-accent :foreground ,fg-accent + :box (:line-width ,(or border-width 1) + :color ,border-3d + :style ,(and alt-style 'released-button)))) + ('accented-moody + `(:background ,bg-accent :foreground ,fg-accent + :underline ,border :overline ,border + :distant-foreground ,fg-distant)) (_ `(:foreground ,fg :background ,bg :box ,border)))) @@ -2730,7 +2853,7 @@ These are intended for Helm, Ivy, etc." "Conditional application of link styles. FG is the link's default color for its text and underline property. FGFAINT is a desaturated color for the text and -underline. UNDERLINE is a grey color only for the undeline." +underline. UNDERLINE is a gray color only for the undeline." (pcase modus-themes-links ('faint (list :foreground fgfaint :underline t)) ('neutral-underline (list :foreground fg :underline underline)) @@ -2757,18 +2880,39 @@ AMOUNT is a customization option." (when modus-themes-scale-headings (list :height amount))) -(defun modus-themes--region (bg fg bgsubtle) +(defun modus-themes--region (bg fg bgsubtle bgaccent) "Apply `modus-themes-region' styles. BG and FG are the main values that are used by default. BGSUBTLE is a subtle background value that can be combined with all colors -used to fontify text and code syntax." +used to fontify text and code syntax. BGACCENT is a colored +background that combines well with FG." (pcase modus-themes-region ('bg-only (list :background bgsubtle)) ('bg-only-no-extend (list :background bgsubtle :extend nil)) ('no-extend (list :background bg :foreground fg :extend nil)) + ('accent (list :background bgaccent :foreground fg)) + ('accent-no-extend (list :background bgaccent :foreground fg :extend nil)) (_ (list :background bg :foreground fg)))) +(defun modus-themes--hl-line (bgdefault bgintense bgaccent lineneutral lineaccent) + "Apply `modus-themes-hl-line' styles. + +BGDEFAULT is a subtle neutral background. BGINTENSE is like the +default, but more prominent. BGACCENT is a subtle accented +background. LINENEUTRAL and LINEACCENT are a color values that +can remain distinct against the buffer's possible backgrounds: +the former is neutral, the latter is accented. LINEONLY must be +a prominent neutral color." + (pcase modus-themes-hl-line + ('intense-background (list :background bgintense)) + ('accented-background (list :background bgaccent)) + ('underline-neutral (list :background bgdefault :underline lineneutral)) + ('underline-accented (list :background bgaccent :underline lineaccent)) + ('underline-only-neutral (list :background 'unspecified :underline lineneutral)) + ('underline-only-accented (list :background 'unspecified :underline lineaccent)) + (_ (list :background bgdefault)))) + ;;;; Utilities for DIY users @@ -2929,112 +3073,112 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;; custom faces ;; these bespoke faces are inherited by other constructs below ;;;;; subtle colored backgrounds - `(modus-theme-subtle-red ((,class :background ,red-subtle-bg :foreground ,fg-dim))) - `(modus-theme-subtle-green ((,class :background ,green-subtle-bg :foreground ,fg-dim))) - `(modus-theme-subtle-yellow ((,class :background ,yellow-subtle-bg :foreground ,fg-dim))) - `(modus-theme-subtle-blue ((,class :background ,blue-subtle-bg :foreground ,fg-dim))) - `(modus-theme-subtle-magenta ((,class :background ,magenta-subtle-bg :foreground ,fg-dim))) - `(modus-theme-subtle-cyan ((,class :background ,cyan-subtle-bg :foreground ,fg-dim))) - `(modus-theme-subtle-neutral ((,class :background ,bg-inactive :foreground ,fg-inactive))) + `(modus-themes-subtle-red ((,class :background ,red-subtle-bg :foreground ,fg-dim))) + `(modus-themes-subtle-green ((,class :background ,green-subtle-bg :foreground ,fg-dim))) + `(modus-themes-subtle-yellow ((,class :background ,yellow-subtle-bg :foreground ,fg-dim))) + `(modus-themes-subtle-blue ((,class :background ,blue-subtle-bg :foreground ,fg-dim))) + `(modus-themes-subtle-magenta ((,class :background ,magenta-subtle-bg :foreground ,fg-dim))) + `(modus-themes-subtle-cyan ((,class :background ,cyan-subtle-bg :foreground ,fg-dim))) + `(modus-themes-subtle-neutral ((,class :background ,bg-inactive :foreground ,fg-inactive))) ;;;;; intense colored backgrounds - `(modus-theme-intense-red ((,class :background ,red-intense-bg :foreground ,fg-main))) - `(modus-theme-intense-green ((,class :background ,green-intense-bg :foreground ,fg-main))) - `(modus-theme-intense-yellow ((,class :background ,yellow-intense-bg :foreground ,fg-main))) - `(modus-theme-intense-blue ((,class :background ,blue-intense-bg :foreground ,fg-main))) - `(modus-theme-intense-magenta ((,class :background ,magenta-intense-bg :foreground ,fg-main))) - `(modus-theme-intense-cyan ((,class :background ,cyan-intense-bg :foreground ,fg-main))) - `(modus-theme-intense-neutral ((,class :background ,bg-active :foreground ,fg-main))) + `(modus-themes-intense-red ((,class :background ,red-intense-bg :foreground ,fg-main))) + `(modus-themes-intense-green ((,class :background ,green-intense-bg :foreground ,fg-main))) + `(modus-themes-intense-yellow ((,class :background ,yellow-intense-bg :foreground ,fg-main))) + `(modus-themes-intense-blue ((,class :background ,blue-intense-bg :foreground ,fg-main))) + `(modus-themes-intense-magenta ((,class :background ,magenta-intense-bg :foreground ,fg-main))) + `(modus-themes-intense-cyan ((,class :background ,cyan-intense-bg :foreground ,fg-main))) + `(modus-themes-intense-neutral ((,class :background ,bg-active :foreground ,fg-main))) ;;;;; refined background and foreground combinations ;; general purpose styles that use an accented foreground against an ;; accented background - `(modus-theme-refine-red ((,class :background ,red-refine-bg :foreground ,red-refine-fg))) - `(modus-theme-refine-green ((,class :background ,green-refine-bg :foreground ,green-refine-fg))) - `(modus-theme-refine-yellow ((,class :background ,yellow-refine-bg :foreground ,yellow-refine-fg))) - `(modus-theme-refine-blue ((,class :background ,blue-refine-bg :foreground ,blue-refine-fg))) - `(modus-theme-refine-magenta ((,class :background ,magenta-refine-bg :foreground ,magenta-refine-fg))) - `(modus-theme-refine-cyan ((,class :background ,cyan-refine-bg :foreground ,cyan-refine-fg))) + `(modus-themes-refine-red ((,class :background ,red-refine-bg :foreground ,red-refine-fg))) + `(modus-themes-refine-green ((,class :background ,green-refine-bg :foreground ,green-refine-fg))) + `(modus-themes-refine-yellow ((,class :background ,yellow-refine-bg :foreground ,yellow-refine-fg))) + `(modus-themes-refine-blue ((,class :background ,blue-refine-bg :foreground ,blue-refine-fg))) + `(modus-themes-refine-magenta ((,class :background ,magenta-refine-bg :foreground ,magenta-refine-fg))) + `(modus-themes-refine-cyan ((,class :background ,cyan-refine-bg :foreground ,cyan-refine-fg))) ;;;;; "active" combinations, mostly for use on the mode line - `(modus-theme-active-red ((,class :background ,red-active :foreground ,bg-active))) - `(modus-theme-active-green ((,class :background ,green-active :foreground ,bg-active))) - `(modus-theme-active-yellow ((,class :background ,yellow-active :foreground ,bg-active))) - `(modus-theme-active-blue ((,class :background ,blue-active :foreground ,bg-active))) - `(modus-theme-active-magenta ((,class :background ,magenta-active :foreground ,bg-active))) - `(modus-theme-active-cyan ((,class :background ,cyan-active :foreground ,bg-active))) + `(modus-themes-active-red ((,class :background ,red-active :foreground ,bg-active))) + `(modus-themes-active-green ((,class :background ,green-active :foreground ,bg-active))) + `(modus-themes-active-yellow ((,class :background ,yellow-active :foreground ,bg-active))) + `(modus-themes-active-blue ((,class :background ,blue-active :foreground ,bg-active))) + `(modus-themes-active-magenta ((,class :background ,magenta-active :foreground ,bg-active))) + `(modus-themes-active-cyan ((,class :background ,cyan-active :foreground ,bg-active))) ;;;;; nuanced backgrounds ;; useful for adding an accented background that is suitable for all ;; main foreground colors (intended for use in Org source blocks) - `(modus-theme-nuanced-red ((,class :background ,red-nuanced-bg :extend t))) - `(modus-theme-nuanced-green ((,class :background ,green-nuanced-bg :extend t))) - `(modus-theme-nuanced-yellow ((,class :background ,yellow-nuanced-bg :extend t))) - `(modus-theme-nuanced-blue ((,class :background ,blue-nuanced-bg :extend t))) - `(modus-theme-nuanced-magenta ((,class :background ,magenta-nuanced-bg :extend t))) - `(modus-theme-nuanced-cyan ((,class :background ,cyan-nuanced-bg :extend t))) + `(modus-themes-nuanced-red ((,class :background ,red-nuanced-bg :extend t))) + `(modus-themes-nuanced-green ((,class :background ,green-nuanced-bg :extend t))) + `(modus-themes-nuanced-yellow ((,class :background ,yellow-nuanced-bg :extend t))) + `(modus-themes-nuanced-blue ((,class :background ,blue-nuanced-bg :extend t))) + `(modus-themes-nuanced-magenta ((,class :background ,magenta-nuanced-bg :extend t))) + `(modus-themes-nuanced-cyan ((,class :background ,cyan-nuanced-bg :extend t))) ;;;;; fringe-specific combinations - `(modus-theme-fringe-red ((,class :background ,red-fringe-bg :foreground ,fg-main))) - `(modus-theme-fringe-green ((,class :background ,green-fringe-bg :foreground ,fg-main))) - `(modus-theme-fringe-yellow ((,class :background ,yellow-fringe-bg :foreground ,fg-main))) - `(modus-theme-fringe-blue ((,class :background ,blue-fringe-bg :foreground ,fg-main))) - `(modus-theme-fringe-magenta ((,class :background ,magenta-fringe-bg :foreground ,fg-main))) - `(modus-theme-fringe-cyan ((,class :background ,cyan-fringe-bg :foreground ,fg-main))) + `(modus-themes-fringe-red ((,class :background ,red-fringe-bg :foreground ,fg-main))) + `(modus-themes-fringe-green ((,class :background ,green-fringe-bg :foreground ,fg-main))) + `(modus-themes-fringe-yellow ((,class :background ,yellow-fringe-bg :foreground ,fg-main))) + `(modus-themes-fringe-blue ((,class :background ,blue-fringe-bg :foreground ,fg-main))) + `(modus-themes-fringe-magenta ((,class :background ,magenta-fringe-bg :foreground ,fg-main))) + `(modus-themes-fringe-cyan ((,class :background ,cyan-fringe-bg :foreground ,fg-main))) ;;;;; special base values ;; these are closer to the grayscale than the accents defined above ;; and should only be used when the next closest alternative would be - ;; a greyscale value than an accented one - `(modus-theme-special-cold ((,class :background ,bg-special-cold :foreground ,fg-special-cold))) - `(modus-theme-special-mild ((,class :background ,bg-special-mild :foreground ,fg-special-mild))) - `(modus-theme-special-warm ((,class :background ,bg-special-warm :foreground ,fg-special-warm))) - `(modus-theme-special-calm ((,class :background ,bg-special-calm :foreground ,fg-special-calm))) + ;; a grayscale value than an accented one + `(modus-themes-special-cold ((,class :background ,bg-special-cold :foreground ,fg-special-cold))) + `(modus-themes-special-mild ((,class :background ,bg-special-mild :foreground ,fg-special-mild))) + `(modus-themes-special-warm ((,class :background ,bg-special-warm :foreground ,fg-special-warm))) + `(modus-themes-special-calm ((,class :background ,bg-special-calm :foreground ,fg-special-calm))) ;;;;; diff-specific combinations ;; intended for `diff-mode' or equivalent - `(modus-theme-diff-added + `(modus-themes-diff-added ((,class ,@(modus-themes--diff bg-main green bg-diff-focus-added fg-diff-focus-added green-nuanced-bg fg-diff-added bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran)))) - `(modus-theme-diff-changed + `(modus-themes-diff-changed ((,class ,@(modus-themes--diff bg-main yellow bg-diff-focus-changed fg-diff-focus-changed yellow-nuanced-bg fg-diff-changed)))) - `(modus-theme-diff-removed + `(modus-themes-diff-removed ((,class ,@(modus-themes--diff bg-main red bg-diff-focus-removed fg-diff-focus-removed red-nuanced-bg fg-diff-removed)))) - `(modus-theme-diff-refine-added + `(modus-themes-diff-refine-added ((,class ,@(modus-themes--diff bg-diff-added fg-diff-added bg-diff-refine-added fg-diff-refine-added bg-diff-focus-added fg-diff-focus-added bg-diff-refine-added-deuteran fg-diff-refine-added-deuteran)))) - `(modus-theme-diff-refine-changed + `(modus-themes-diff-refine-changed ((,class ,@(modus-themes--diff bg-diff-changed fg-diff-changed bg-diff-refine-changed fg-diff-refine-changed bg-diff-focus-changed fg-diff-focus-changed)))) - `(modus-theme-diff-refine-removed + `(modus-themes-diff-refine-removed ((,class ,@(modus-themes--diff bg-diff-removed fg-diff-removed bg-diff-refine-removed fg-diff-refine-removed bg-diff-focus-removed fg-diff-focus-removed)))) - `(modus-theme-diff-focus-added + `(modus-themes-diff-focus-added ((,class ,@(modus-themes--diff bg-dim green bg-diff-focus-added fg-diff-focus-added bg-diff-added fg-diff-added bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran)))) - `(modus-theme-diff-focus-changed + `(modus-themes-diff-focus-changed ((,class ,@(modus-themes--diff bg-dim yellow bg-diff-focus-changed fg-diff-focus-changed bg-diff-changed fg-diff-changed)))) - `(modus-theme-diff-focus-removed + `(modus-themes-diff-focus-removed ((,class ,@(modus-themes--diff bg-dim red bg-diff-focus-removed fg-diff-focus-removed bg-diff-removed fg-diff-removed)))) - `(modus-theme-diff-heading + `(modus-themes-diff-heading ((,class ,@(modus-themes--diff bg-main blue bg-diff-heading fg-diff-heading @@ -3043,65 +3187,70 @@ by virtue of calling either of `modus-themes-load-operandi' and t)))) ;;;;; mark indicators ;; color combinations intended for Dired, Ibuffer, or equivalent - `(modus-theme-pseudo-header ((,class :inherit bold :foreground ,fg-main))) - `(modus-theme-mark-alt ((,class :inherit bold :background ,bg-mark-alt :foreground ,fg-mark-alt))) - `(modus-theme-mark-del ((,class :inherit bold :background ,bg-mark-del :foreground ,fg-mark-del))) - `(modus-theme-mark-sel ((,class :inherit bold :background ,bg-mark-sel :foreground ,fg-mark-sel))) - `(modus-theme-mark-symbol ((,class :inherit bold :foreground ,blue-alt))) + `(modus-themes-pseudo-header ((,class :inherit bold :foreground ,fg-main))) + `(modus-themes-mark-alt ((,class :inherit bold :background ,bg-mark-alt :foreground ,fg-mark-alt))) + `(modus-themes-mark-del ((,class :inherit bold :background ,bg-mark-del :foreground ,fg-mark-del))) + `(modus-themes-mark-sel ((,class :inherit bold :background ,bg-mark-sel :foreground ,fg-mark-sel))) + `(modus-themes-mark-symbol ((,class :inherit bold :foreground ,blue-alt))) ;;;;; heading levels ;; styles for regular headings used in Org, Markdown, Info, etc. - `(modus-theme-heading-1 + `(modus-themes-heading-1 ((,class ,@(modus-themes--heading 1 fg-main magenta-alt-other magenta-nuanced-bg bg-region) ,@(modus-themes--scale modus-themes-scale-4)))) - `(modus-theme-heading-2 + `(modus-themes-heading-2 ((,class ,@(modus-themes--heading 2 fg-special-warm magenta-alt red-nuanced-bg bg-region) ,@(modus-themes--scale modus-themes-scale-3)))) - `(modus-theme-heading-3 + `(modus-themes-heading-3 ((,class ,@(modus-themes--heading 3 fg-special-cold blue blue-nuanced-bg bg-region) ,@(modus-themes--scale modus-themes-scale-2)))) - `(modus-theme-heading-4 + `(modus-themes-heading-4 ((,class ,@(modus-themes--heading 4 fg-special-mild cyan cyan-nuanced-bg bg-region) ,@(modus-themes--scale modus-themes-scale-1)))) - `(modus-theme-heading-5 + `(modus-themes-heading-5 ((,class ,@(modus-themes--heading 5 fg-special-calm green-alt-other green-nuanced-bg bg-region)))) - `(modus-theme-heading-6 + `(modus-themes-heading-6 ((,class ,@(modus-themes--heading 6 yellow-nuanced-fg yellow-alt-other yellow-nuanced-bg bg-region)))) - `(modus-theme-heading-7 + `(modus-themes-heading-7 ((,class ,@(modus-themes--heading 7 red-nuanced-fg red-alt red-nuanced-bg bg-region)))) - `(modus-theme-heading-8 + `(modus-themes-heading-8 ((,class ,@(modus-themes--heading 8 fg-dim magenta bg-alt bg-region)))) ;;;;; graph-specific faces - `(modus-theme-graph-red-0 ((,class :background ,red-graph-0-bg))) - `(modus-theme-graph-red-1 ((,class :background ,red-graph-1-bg))) - `(modus-theme-graph-green-0 ((,class :background ,green-graph-0-bg))) - `(modus-theme-graph-green-1 ((,class :background ,green-graph-1-bg))) - `(modus-theme-graph-yellow-0 ((,class :background ,yellow-graph-0-bg))) - `(modus-theme-graph-yellow-1 ((,class :background ,yellow-graph-1-bg))) - `(modus-theme-graph-blue-0 ((,class :background ,blue-graph-0-bg))) - `(modus-theme-graph-blue-1 ((,class :background ,blue-graph-1-bg))) - `(modus-theme-graph-magenta-0 ((,class :background ,magenta-graph-0-bg))) - `(modus-theme-graph-magenta-1 ((,class :background ,magenta-graph-1-bg))) - `(modus-theme-graph-cyan-0 ((,class :background ,cyan-graph-0-bg))) - `(modus-theme-graph-cyan-1 ((,class :background ,cyan-graph-1-bg))) + `(modus-themes-graph-red-0 ((,class :background ,red-graph-0-bg))) + `(modus-themes-graph-red-1 ((,class :background ,red-graph-1-bg))) + `(modus-themes-graph-green-0 ((,class :background ,green-graph-0-bg))) + `(modus-themes-graph-green-1 ((,class :background ,green-graph-1-bg))) + `(modus-themes-graph-yellow-0 ((,class :background ,yellow-graph-0-bg))) + `(modus-themes-graph-yellow-1 ((,class :background ,yellow-graph-1-bg))) + `(modus-themes-graph-blue-0 ((,class :background ,blue-graph-0-bg))) + `(modus-themes-graph-blue-1 ((,class :background ,blue-graph-1-bg))) + `(modus-themes-graph-magenta-0 ((,class :background ,magenta-graph-0-bg))) + `(modus-themes-graph-magenta-1 ((,class :background ,magenta-graph-1-bg))) + `(modus-themes-graph-cyan-0 ((,class :background ,cyan-graph-0-bg))) + `(modus-themes-graph-cyan-1 ((,class :background ,cyan-graph-1-bg))) ;;;;; language checkers - `(modus-theme-lang-error ((,class ,@(modus-themes--lang-check fg-lang-underline-error fg-lang-error red red-nuanced-bg)))) - `(modus-theme-lang-note ((,class ,@(modus-themes--lang-check fg-lang-underline-note fg-lang-note blue-alt blue-nuanced-bg)))) - `(modus-theme-lang-warning ((,class ,@(modus-themes--lang-check fg-lang-underline-warning fg-lang-warning yellow yellow-nuanced-bg)))) + `(modus-themes-lang-error ((,class ,@(modus-themes--lang-check fg-lang-underline-error fg-lang-error red red-nuanced-bg)))) + `(modus-themes-lang-note ((,class ,@(modus-themes--lang-check fg-lang-underline-note fg-lang-note blue-alt blue-nuanced-bg)))) + `(modus-themes-lang-warning ((,class ,@(modus-themes--lang-check fg-lang-underline-warning fg-lang-warning yellow yellow-nuanced-bg)))) ;;;;; other custom faces - `(modus-theme-bold ((,class ,@(modus-themes--bold-weight)))) - `(modus-theme-hl-line ((,class :background ,(if modus-themes-intense-hl-line - bg-hl-line-intense bg-hl-line) - :extend t))) - `(modus-theme-slant ((,class :inherit italic :slant ,@(modus-themes--slant)))) - `(modus-theme-variable-pitch ((,class ,@(modus-themes--variable-pitch)))) + `(modus-themes-bold ((,class ,@(modus-themes--bold-weight)))) + `(modus-themes-hl-line ((,class ,@(modus-themes--hl-line bg-hl-line bg-hl-line-intense blue-nuanced-bg + bg-region blue-intense-bg) + :extend t))) + `(modus-themes-key-binding ((,class :inherit bold :foreground ,blue-alt-other))) + `(modus-themes-slant ((,class :inherit italic :slant ,@(modus-themes--slant)))) + `(modus-themes-variable-pitch ((,class ,@(modus-themes--variable-pitch)))) + `(modus-themes-reset-soft ((,class :background ,bg-main :foreground ,fg-main + :weight normal :slant normal :strike-through nil + :box nil :underline nil :overline nil :extend nil))) + `(modus-themes-reset-hard ((,class :inherit (fixed-pitch modus-themes-reset-soft)))) ;;;; standard faces ;;;;; absolute essentials `(default ((,class :background ,bg-main :foreground ,fg-main))) @@ -3114,7 +3263,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(bold-italic ((,class :inherit (bold italic)))) `(buffer-menu-buffer ((,class :inherit bold))) `(comint-highlight-input ((,class :inherit bold))) - `(comint-highlight-prompt ((,class :inherit modus-theme-bold + `(comint-highlight-prompt ((,class :inherit modus-themes-bold ,@(modus-themes--prompt cyan blue-nuanced-bg blue-alt @@ -3124,8 +3273,10 @@ by virtue of calling either of `modus-themes-load-operandi' and `(file-name-shadow ((,class :foreground ,fg-unfocused))) `(header-line ((,class ,@(modus-themes--variable-pitch-ui) :background ,bg-header :foreground ,fg-header))) - `(header-line-highlight ((,class :inherit modus-theme-active-blue))) - `(help-argument-name ((,class :inherit modus-theme-slant :foreground ,cyan))) + `(header-line-highlight ((,class :inherit modus-themes-active-blue))) + `(help-argument-name ((,class :inherit modus-themes-slant :foreground ,cyan))) + `(help-key-binding ((,class :box (:line-width (1 . -1) :color ,bg-region) ; NOTE: box syntax is for Emacs28 + :background ,bg-inactive))) `(homoglyph ((,class :foreground ,red-alt-faint))) `(ibuffer-locked-buffer ((,class :foreground ,yellow-alt-other-faint))) `(italic ((,class :slant italic))) @@ -3137,10 +3288,10 @@ by virtue of calling either of `modus-themes-load-operandi' and cyan-refine-bg fg-main)))) `(mm-command-output ((,class :foreground ,red-alt-other))) `(mm-uu-extract ((,class :background ,bg-dim :foreground ,fg-special-mild))) - `(next-error ((,class :inherit modus-theme-subtle-red))) - `(rectangle-preview ((,class :inherit modus-theme-special-mild))) - `(region ((,class ,@(modus-themes--region bg-region fg-main bg-hl-alt-intense)))) - `(secondary-selection ((,class :inherit modus-theme-special-cold))) + `(next-error ((,class :inherit modus-themes-subtle-red))) + `(rectangle-preview ((,class :inherit modus-themes-special-mild))) + `(region ((,class ,@(modus-themes--region bg-region fg-main bg-hl-alt-intense bg-region-accent)))) + `(secondary-selection ((,class :inherit modus-themes-special-cold))) `(shadow ((,class :foreground ,fg-alt))) `(success ((,class :inherit bold :foreground ,green))) `(trailing-whitespace ((,class :background ,red-intense-bg))) @@ -3163,7 +3314,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(widget-single-line-field ((,class :inherit widget-field))) ;;;;; ag `(ag-hit-face ((,class :foreground ,fg-special-cold))) - `(ag-match-face ((,class :inherit modus-theme-special-calm))) + `(ag-match-face ((,class :inherit modus-themes-special-calm))) ;;;;; alert `(alert-high-face ((,class :inherit bold :foreground ,red-alt))) `(alert-low-face ((,class :foreground ,fg-special-mild))) @@ -3207,28 +3358,28 @@ by virtue of calling either of `modus-themes-load-operandi' and `(all-the-icons-silver ((,class :foreground ,fg-special-cold))) `(all-the-icons-yellow ((,class :foreground ,yellow))) ;;;;; annotate - `(annotate-annotation ((,class :inherit modus-theme-subtle-blue))) - `(annotate-annotation-secondary ((,class :inherit modus-theme-subtle-green))) + `(annotate-annotation ((,class :inherit modus-themes-subtle-blue))) + `(annotate-annotation-secondary ((,class :inherit modus-themes-subtle-green))) `(annotate-highlight ((,class :background ,blue-nuanced-bg :underline ,blue-intense))) `(annotate-highlight-secondary ((,class :background ,green-nuanced-bg :underline ,green-intense))) ;;;;; anzu - `(anzu-match-1 ((,class :inherit modus-theme-subtle-cyan))) - `(anzu-match-2 ((,class :inherit modus-theme-subtle-green))) - `(anzu-match-3 ((,class :inherit modus-theme-subtle-yellow))) + `(anzu-match-1 ((,class :inherit modus-themes-subtle-cyan))) + `(anzu-match-2 ((,class :inherit modus-themes-subtle-green))) + `(anzu-match-3 ((,class :inherit modus-themes-subtle-yellow))) `(anzu-mode-line ((,class :inherit bold :foreground ,green-active))) `(anzu-mode-line-no-match ((,class :inherit bold :foreground ,red-active))) - `(anzu-replace-highlight ((,class :inherit modus-theme-refine-yellow :underline t))) - `(anzu-replace-to ((,class :inherit (modus-theme-intense-green bold)))) + `(anzu-replace-highlight ((,class :inherit modus-themes-refine-yellow :underline t))) + `(anzu-replace-to ((,class :inherit (modus-themes-intense-green bold)))) ;;;;; apropos `(apropos-function-button ((,class :inherit button ,@(modus-themes--link-color magenta-alt-other magenta-alt-other-faint)))) - `(apropos-keybinding ((,class :inherit bold :foreground ,cyan))) + `(apropos-keybinding ((,class :inherit modus-themes-key-binding))) `(apropos-misc-button ((,class :inherit button ,@(modus-themes--link-color cyan-alt-other cyan-alt-other-faint)))) - `(apropos-property ((,class :inherit modus-theme-bold :foreground ,magenta-alt))) - `(apropos-symbol ((,class :inherit modus-theme-bold :foreground ,blue-alt-other))) + `(apropos-property ((,class :inherit modus-themes-bold :foreground ,magenta-alt))) + `(apropos-symbol ((,class :inherit modus-themes-bold :foreground ,magenta))) `(apropos-user-option-button ((,class :inherit button ,@(modus-themes--link-color green-alt-other green-alt-other-faint)))) @@ -3242,25 +3393,25 @@ by virtue of calling either of `modus-themes-load-operandi' and `(apt-sources-list-type ((,class :foreground ,magenta))) `(apt-sources-list-uri ((,class :foreground ,blue))) ;;;;; artbollocks-mode - `(artbollocks-face ((,class :inherit modus-theme-lang-note))) + `(artbollocks-face ((,class :inherit modus-themes-lang-note))) `(artbollocks-lexical-illusions-face ((,class :background ,bg-alt :foreground ,red-alt :underline t))) - `(artbollocks-passive-voice-face ((,class :inherit modus-theme-lang-warning))) - `(artbollocks-weasel-words-face ((,class :inherit modus-theme-lang-error))) + `(artbollocks-passive-voice-face ((,class :inherit modus-themes-lang-warning))) + `(artbollocks-weasel-words-face ((,class :inherit modus-themes-lang-error))) ;;;;; auctex and Tex `(font-latex-bold-face ((,class :inherit bold :foreground ,fg-special-calm))) - `(font-latex-doctex-documentation-face ((,class :inherit modus-theme-slant :foreground ,fg-special-cold))) - `(font-latex-doctex-preprocessor-face ((,class :inherit modus-theme-bold :foreground ,red-alt-other))) + `(font-latex-doctex-documentation-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) + `(font-latex-doctex-preprocessor-face ((,class :inherit modus-themes-bold :foreground ,red-alt-other))) `(font-latex-italic-face ((,class :inherit italic :foreground ,fg-special-calm))) `(font-latex-math-face ((,class :foreground ,cyan-alt-other))) `(font-latex-script-char-face ((,class :foreground ,cyan-alt-other))) - `(font-latex-sectioning-0-face ((,class :inherit modus-theme-variable-pitch :foreground ,blue-nuanced-fg))) - `(font-latex-sectioning-1-face ((,class :inherit (bold modus-theme-variable-pitch) :foreground ,blue-nuanced-fg))) - `(font-latex-sectioning-2-face ((,class :inherit (bold modus-theme-variable-pitch) :foreground ,blue-nuanced-fg))) - `(font-latex-sectioning-3-face ((,class :inherit (bold modus-theme-variable-pitch) :foreground ,blue-nuanced-fg))) - `(font-latex-sectioning-4-face ((,class :inherit (bold modus-theme-variable-pitch) :foreground ,blue-nuanced-fg))) - `(font-latex-sectioning-5-face ((,class :inherit modus-theme-variable-pitch :foreground ,blue-nuanced-fg))) - `(font-latex-sedate-face ((,class :inherit modus-theme-bold :foreground ,magenta-alt-other))) - `(font-latex-slide-title-face ((,class :inherit (bold modus-theme-variable-pitch) :foreground ,cyan-nuanced-fg + `(font-latex-sectioning-0-face ((,class :inherit modus-themes-variable-pitch :foreground ,blue-nuanced-fg))) + `(font-latex-sectioning-1-face ((,class :inherit (bold modus-themes-variable-pitch) :foreground ,blue-nuanced-fg))) + `(font-latex-sectioning-2-face ((,class :inherit (bold modus-themes-variable-pitch) :foreground ,blue-nuanced-fg))) + `(font-latex-sectioning-3-face ((,class :inherit (bold modus-themes-variable-pitch) :foreground ,blue-nuanced-fg))) + `(font-latex-sectioning-4-face ((,class :inherit (bold modus-themes-variable-pitch) :foreground ,blue-nuanced-fg))) + `(font-latex-sectioning-5-face ((,class :inherit modus-themes-variable-pitch :foreground ,blue-nuanced-fg))) + `(font-latex-sedate-face ((,class :inherit modus-themes-bold :foreground ,magenta-alt-other))) + `(font-latex-slide-title-face ((,class :inherit (bold modus-themes-variable-pitch) :foreground ,cyan-nuanced-fg ,@(modus-themes--scale modus-themes-scale-4)))) `(font-latex-string-face ((,class :inherit font-lock-string-face))) `(font-latex-subscript-face ((,class :height 0.95))) @@ -3277,17 +3428,18 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; auto-dim-other-buffers `(auto-dim-other-buffers-face ((,class :background ,bg-alt))) ;;;;; avy - `(avy-background-face ((,class :background ,bg-dim :foreground ,fg-dim))) - `(avy-goto-char-timer-face ((,class :inherit (modus-theme-intense-yellow bold)))) - `(avy-lead-face ((,class :inherit (modus-theme-intense-magenta bold)))) - `(avy-lead-face-0 ((,class :inherit (modus-theme-intense-blue bold)))) - `(avy-lead-face-1 ((,class :inherit (modus-theme-intense-red bold)))) - `(avy-lead-face-2 ((,class :inherit (modus-theme-intense-green bold)))) + `(avy-background-face ((,class :background ,bg-dim :foreground ,fg-dim :extend t))) + `(avy-goto-char-timer-face ((,class :inherit (modus-themes-intense-yellow bold)))) + `(avy-lead-face ((,class :inherit (modus-themes-intense-magenta bold modus-themes-reset-soft)))) + `(avy-lead-face-0 ((,class :inherit (modus-themes-refine-cyan bold modus-themes-reset-soft)))) + `(avy-lead-face-1 ((,class :inherit (modus-themes-intense-neutral bold modus-themes-reset-soft)))) + `(avy-lead-face-2 ((,class :inherit (modus-themes-refine-red bold modus-themes-reset-soft)))) ;;;;; aw (ace-window) - `(aw-background-face ((,class :background ,bg-dim :foreground ,fg-dim))) - `(aw-key-face ((,class :inherit bold :foreground ,blue-intense))) - `(aw-leading-char-face ((,class :inherit bold :height 1.5 :slant normal :background ,bg-main :foreground ,red-intense))) - `(aw-minibuffer-leading-char-face ((,class :foreground ,magenta-active))) + `(aw-background-face ((,class :foreground ,fg-unfocused))) + `(aw-key-face ((,class :inherit modus-themes-key-binding))) + `(aw-leading-char-face ((,class :inherit (bold modus-themes-reset-soft) :height 1.5 + :foreground ,red-intense))) + `(aw-minibuffer-leading-char-face ((,class :inherit (modus-themes-intense-red bold)))) `(aw-mode-line-face ((,class :inherit bold))) ;;;;; awesome-tray `(awesome-tray-module-awesome-tab-face ((,class :inherit bold :foreground ,red-alt-other))) @@ -3307,47 +3459,47 @@ by virtue of calling either of `modus-themes-load-operandi' and `(bbdb-organization ((,class :foreground ,red-alt-other))) `(bbdb-field-name ((,class :foreground ,cyan-alt-other))) ;;;;; binder - `(binder-sidebar-highlight ((,class :inherit modus-theme-subtle-cyan))) - `(binder-sidebar-marked ((,class :inherit modus-theme-mark-sel))) - `(binder-sidebar-missing ((,class :inherit modus-theme-subtle-red))) + `(binder-sidebar-highlight ((,class :inherit modus-themes-subtle-cyan))) + `(binder-sidebar-marked ((,class :inherit modus-themes-mark-sel))) + `(binder-sidebar-missing ((,class :inherit modus-themes-subtle-red))) `(binder-sidebar-tags ((,class :foreground ,cyan))) ;;;;; bm - `(bm-face ((,class :inherit modus-theme-subtle-yellow :extend t))) - `(bm-fringe-face ((,class :inherit modus-theme-fringe-yellow))) - `(bm-fringe-persistent-face ((,class :inherit modus-theme-fringe-blue))) - `(bm-persistent-face ((,class :inherit modus-theme-intense-blue :extend t))) + `(bm-face ((,class :inherit modus-themes-subtle-yellow :extend t))) + `(bm-fringe-face ((,class :inherit modus-themes-fringe-yellow))) + `(bm-fringe-persistent-face ((,class :inherit modus-themes-fringe-blue))) + `(bm-persistent-face ((,class :inherit modus-themes-intense-blue :extend t))) ;;;;; bongo - `(bongo-album-title ((,class :foreground ,yellow-active))) + `(bongo-album-title ((,class :foreground ,fg-active))) `(bongo-artist ((,class :foreground ,magenta-active))) `(bongo-currently-playing-track ((,class :inherit bold))) - `(bongo-elapsed-track-part ((,class :inherit modus-theme-subtle-magenta :underline t))) + `(bongo-elapsed-track-part ((,class :inherit modus-themes-subtle-magenta :underline t))) `(bongo-filled-seek-bar ((,class :background ,blue-intense-bg :foreground ,fg-main))) `(bongo-marked-track ((,class :foreground ,fg-mark-alt))) `(bongo-marked-track-line ((,class :background ,bg-mark-alt))) `(bongo-played-track ((,class :foreground ,fg-unfocused :strike-through t))) - `(bongo-track-length ((,class :foreground ,fg-active))) - `(bongo-track-title ((,class :foreground ,cyan-active))) + `(bongo-track-length ((,class :foreground ,fg-alt))) + `(bongo-track-title ((,class :foreground ,blue-active))) `(bongo-unfilled-seek-bar ((,class :background ,bg-special-cold :foreground ,fg-main))) ;;;;; boon - `(boon-modeline-cmd ((,class :inherit modus-theme-active-blue))) - `(boon-modeline-ins ((,class :inherit modus-theme-active-red))) - `(boon-modeline-off ((,class :inherit modus-theme-active-yellow))) - `(boon-modeline-spc ((,class :inherit modus-theme-active-green))) + `(boon-modeline-cmd ((,class :inherit modus-themes-active-blue))) + `(boon-modeline-ins ((,class :inherit modus-themes-active-red))) + `(boon-modeline-off ((,class :inherit modus-themes-active-yellow))) + `(boon-modeline-spc ((,class :inherit modus-themes-active-green))) ;;;;; breakpoint (built-in gdb-mi.el) `(breakpoint-disabled ((,class :inherit shadow))) `(breakpoint-enabled ((,class :inherit bold :foreground ,red))) ;;;;; buffer-expose `(buffer-expose-ace-char-face ((,class :inherit bold :foreground ,red-active))) `(buffer-expose-mode-line-face ((,class :foreground ,cyan-active))) - `(buffer-expose-selected-face ((,class :inherit modus-theme-special-mild))) + `(buffer-expose-selected-face ((,class :inherit modus-themes-special-mild))) ;;;;; calendar and diary - `(calendar-month-header ((,class :inherit modus-theme-pseudo-header))) + `(calendar-month-header ((,class :inherit modus-themes-pseudo-header))) `(calendar-today ((,class :inherit bold :underline t))) - `(calendar-weekday-header ((,class :inherit shadow))) - `(calendar-weekend-header ((,class :inherit shadow))) - `(diary ((,class :background ,green-nuanced-bg :foreground ,green-alt-other))) + `(calendar-weekday-header ((,class :foreground ,fg-unfocused))) + `(calendar-weekend-header ((,class :foreground ,fg-unfocused))) + `(diary ((,class :background ,blue-nuanced-bg :foreground ,blue-alt-other))) `(diary-anniversary ((,class :foreground ,red-alt-other))) - `(diary-time ((,class :foreground ,blue-alt))) + `(diary-time ((,class :foreground ,cyan))) `(holiday ((,class :background ,magenta-nuanced-bg :foreground ,magenta-alt))) ;;;;; calfw `(cfw:face-annotation ((,class :foreground ,fg-special-warm))) @@ -3360,9 +3512,9 @@ by virtue of calling either of `modus-themes-load-operandi' and `(cfw:face-holiday ((,class :foreground ,magenta-alt-other))) `(cfw:face-periods ((,class :foreground ,cyan-alt-other))) `(cfw:face-saturday ((,class :inherit bold :foreground ,cyan-alt-other))) - `(cfw:face-select ((,class :inherit modus-theme-intense-blue))) + `(cfw:face-select ((,class :inherit modus-themes-intense-blue))) `(cfw:face-sunday ((,class :inherit bold :foreground ,cyan-alt-other))) - `(cfw:face-title ((,class :inherit modus-theme-variable-pitch + `(cfw:face-title ((,class :inherit modus-themes-variable-pitch :foreground ,fg-special-cold ,@(modus-themes--scale modus-themes-scale-5)))) `(cfw:face-today ((,class :background ,bg-inactive))) @@ -3372,7 +3524,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(cfw:face-toolbar-button-on ((,class :inherit bold :background ,blue-nuanced-bg :foreground ,blue-alt))) ;;;;; centaur-tabs - `(centaur-tabs-active-bar-face ((,class :background ,fg-tab-active))) + `(centaur-tabs-active-bar-face ((,class :background ,fg-tab-accent))) `(centaur-tabs-close-mouse-face ((,class :inherit bold :foreground ,red-active :underline t))) `(centaur-tabs-close-selected ((,class :inherit centaur-tabs-selected))) `(centaur-tabs-close-unselected ((,class :inherit centaur-tabs-unselected))) @@ -3403,7 +3555,7 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; cider `(cider-debug-code-overlay-face ((,class :background ,bg-alt))) `(cider-debug-prompt-face ((,class :foreground ,magenta-alt :underline t))) - `(cider-deprecated-face ((,class :inherit modus-theme-refine-yellow))) + `(cider-deprecated-face ((,class :inherit modus-themes-refine-yellow))) `(cider-docview-emphasis-face ((,class :inherit italic :foreground ,fg-special-cold))) `(cider-docview-literal-face ((,class :foreground ,blue-alt))) `(cider-docview-strong-face ((,class :inherit bold :foreground ,fg-special-cold))) @@ -3416,7 +3568,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(cider-instrumented-face ((,class :box (:line-width -1 :color ,red :style nil) :background ,bg-dim))) `(cider-reader-conditional-face ((,class :inherit italic :foreground ,fg-special-warm))) `(cider-repl-input-face ((,class :inherit bold))) - `(cider-repl-prompt-face ((,class :foreground ,cyan-alt-other))) + `(cider-repl-prompt-face ((,class :inherit comint-highlight-prompt))) `(cider-repl-stderr-face ((,class :inherit bold :foreground ,red))) `(cider-repl-stdout-face ((,class :foreground ,blue))) `(cider-result-overlay-face ((,class :box (:line-width -1 :color ,blue :style nil) :background ,bg-dim))) @@ -3430,15 +3582,15 @@ by virtue of calling either of `modus-themes-load-operandi' and `(cider-stacktrace-promoted-button-face ((,class :box (:line-width 3 :color ,fg-alt :style released-button) :foreground ,red))) `(cider-stacktrace-suppressed-button-face ((,class :box (:line-width 3 :color ,fg-alt :style pressed-button) :background ,bg-alt :foreground ,fg-alt))) - `(cider-test-error-face ((,class :inherit modus-theme-subtle-red))) - `(cider-test-failure-face ((,class :inherit (modus-theme-intense-red bold)))) - `(cider-test-success-face ((,class :inherit modus-theme-intense-green))) + `(cider-test-error-face ((,class :inherit modus-themes-subtle-red))) + `(cider-test-failure-face ((,class :inherit (modus-themes-intense-red bold)))) + `(cider-test-success-face ((,class :inherit modus-themes-intense-green))) `(cider-traced-face ((,class :box (:line-width -1 :color ,cyan :style nil) :background ,bg-dim))) `(cider-warning-highlight-face ((,class :foreground ,yellow :underline t))) ;;;;; circe (and lui) `(circe-fool-face ((,class :inherit shadow))) `(circe-highlight-nick-face ((,class :inherit bold :foreground ,blue))) - `(circe-prompt-face ((,class :inherit bold :foreground ,cyan-alt-other))) + `(circe-prompt-face ((,class :inherit comint-highlight-prompt))) `(circe-server-face ((,class :foreground ,fg-unfocused))) `(lui-button-face ((,class :inherit button))) `(lui-highlight-face ((,class :foreground ,magenta-alt))) @@ -3447,8 +3599,8 @@ by virtue of calling either of `modus-themes-load-operandi' and `(color-rg-font-lock-column-number ((,class :foreground ,magenta-alt-other))) `(color-rg-font-lock-command ((,class :inherit bold :foreground ,fg-main))) `(color-rg-font-lock-file ((,class :inherit bold :foreground ,fg-special-cold))) - `(color-rg-font-lock-flash ((,class :inherit modus-theme-intense-blue))) - `(color-rg-font-lock-function-location ((,class :inherit modus-theme-special-calm))) + `(color-rg-font-lock-flash ((,class :inherit modus-themes-intense-blue))) + `(color-rg-font-lock-function-location ((,class :inherit modus-themes-special-calm))) `(color-rg-font-lock-header-line-directory ((,class :foreground ,blue-active))) `(color-rg-font-lock-header-line-edit-mode ((,class :foreground ,magenta-active))) `(color-rg-font-lock-header-line-keyword ((,class :foreground ,green-active))) @@ -3456,42 +3608,42 @@ by virtue of calling either of `modus-themes-load-operandi' and `(color-rg-font-lock-line-number ((,class :foreground ,fg-special-warm))) `(color-rg-font-lock-mark-changed ((,class :inherit bold :foreground ,blue))) `(color-rg-font-lock-mark-deleted ((,class :inherit bold :foreground ,red))) - `(color-rg-font-lock-match ((,class :inherit modus-theme-special-calm))) + `(color-rg-font-lock-match ((,class :inherit modus-themes-special-calm))) `(color-rg-font-lock-position-splitter ((,class :inherit shadow))) ;;;;; column-enforce-mode - `(column-enforce-face ((,class :inherit modus-theme-refine-yellow))) + `(column-enforce-face ((,class :inherit modus-themes-refine-yellow))) ;;;;; company-mode `(company-echo-common ((,class :foreground ,magenta-alt-other))) `(company-preview ((,class :background ,bg-dim :foreground ,fg-dim))) `(company-preview-common ((,class :foreground ,blue-alt))) - `(company-preview-search ((,class :inherit modus-theme-special-calm))) + `(company-preview-search ((,class :inherit modus-themes-special-calm))) `(company-scrollbar-bg ((,class :background ,bg-active))) `(company-scrollbar-fg ((,class :background ,fg-active))) - `(company-template-field ((,class :inherit modus-theme-intense-magenta))) + `(company-template-field ((,class :inherit modus-themes-intense-magenta))) `(company-tooltip ((,class :background ,bg-alt :foreground ,fg-alt))) - `(company-tooltip-annotation ((,class :inherit modus-theme-slant :foreground ,fg-special-cold))) + `(company-tooltip-annotation ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) `(company-tooltip-annotation-selection ((,class :inherit bold :foreground ,fg-main))) `(company-tooltip-common ((,class :inherit bold :foreground ,blue-alt))) `(company-tooltip-common-selection ((,class :foreground ,fg-main))) - `(company-tooltip-mouse ((,class :inherit modus-theme-intense-blue))) - `(company-tooltip-search ((,class :inherit (modus-theme-refine-cyan bold)))) - `(company-tooltip-search-selection ((,class :inherit (modus-theme-intense-green bold) :underline t))) - `(company-tooltip-selection ((,class :inherit (modus-theme-subtle-cyan bold)))) + `(company-tooltip-mouse ((,class :inherit modus-themes-intense-blue))) + `(company-tooltip-search ((,class :inherit (modus-themes-refine-cyan bold)))) + `(company-tooltip-search-selection ((,class :inherit (modus-themes-intense-green bold) :underline t))) + `(company-tooltip-selection ((,class :inherit (modus-themes-subtle-cyan bold)))) ;;;;; company-posframe `(company-posframe-active-backend-name ((,class :inherit bold :background ,bg-active :foreground ,blue-active))) `(company-posframe-inactive-backend-name ((,class :background ,bg-active :foreground ,fg-active))) `(company-posframe-metadata ((,class :background ,bg-inactive :foreground ,fg-inactive))) ;;;;; compilation feedback `(compilation-column-number ((,class :foreground ,magenta-alt-other))) - `(compilation-error ((,class :inherit modus-theme-bold :foreground ,red))) - `(compilation-info ((,class :inherit modus-theme-bold :foreground ,fg-special-cold))) + `(compilation-error ((,class :inherit modus-themes-bold :foreground ,red))) + `(compilation-info ((,class :inherit modus-themes-bold :foreground ,fg-special-cold))) `(compilation-line-number ((,class :foreground ,fg-special-warm))) - `(compilation-mode-line-exit ((,class :inherit modus-theme-bold :foreground ,blue-active))) - `(compilation-mode-line-fail ((,class :inherit modus-theme-bold :foreground ,red-active))) - `(compilation-mode-line-run ((,class :inherit modus-theme-bold :foreground ,magenta-active))) - `(compilation-warning ((,class :inherit modus-theme-bold :foreground ,yellow))) + `(compilation-mode-line-exit ((,class :inherit modus-themes-bold :foreground ,blue-active))) + `(compilation-mode-line-fail ((,class :inherit modus-themes-bold :foreground ,red-active))) + `(compilation-mode-line-run ((,class :inherit modus-themes-bold :foreground ,magenta-active))) + `(compilation-warning ((,class :inherit modus-themes-bold :foreground ,yellow))) ;;;;; completions - `(completions-annotations ((,class :inherit modus-theme-slant :foreground ,cyan-faint))) + `(completions-annotations ((,class :inherit modus-themes-slant :foreground ,cyan-faint))) `(completions-common-part ((,class ,@(modus-themes--standard-completions blue-alt blue-nuanced-bg cyan-refine-bg cyan-refine-fg)))) @@ -3505,17 +3657,22 @@ by virtue of calling either of `modus-themes-load-operandi' and `(consult-bookmark ((,class :foreground ,blue))) `(consult-file ((,class :foreground ,fg-special-cold))) `(consult-imenu-prefix ((,class :inherit shadow))) - `(consult-key ((,class :inherit modus-themes-bold :foreground ,magenta-alt-other))) + `(consult-key ((,class :inherit modus-themes-key-binding))) `(consult-line-number ((,class :foreground ,fg-special-warm))) `(consult-line-number-prefix ((,class :foreground ,fg-unfocused))) `(consult-narrow-indicator ((,class :foreground ,magenta-alt))) - `(consult-preview-cursor ((,class :inherit modus-theme-intense-blue))) - `(consult-preview-error ((,class :inherit modus-theme-intense-red))) + `(consult-preview-cursor ((,class :inherit modus-themes-intense-blue))) + `(consult-preview-error ((,class :inherit modus-themes-intense-red))) `(consult-preview-line ((,class :background ,bg-hl-alt-intense))) +;;;;; corfu + `(corfu-background ((,class :background ,bg-alt :foreground ,fg-alt))) + `(corfu-current ((,class :inherit bold :background ,cyan-subtle-bg))) + `(corfu-bar ((,class :background ,fg-alt :foreground ,fg-alt))) + `(corfu-border ((,class :background ,bg-active :foreground ,bg-region))) ;;;;; counsel `(counsel-active-mode ((,class :foreground ,magenta-alt-other))) `(counsel-application-name ((,class :foreground ,red-alt-other))) - `(counsel-key-binding ((,class :inherit bold :foreground ,blue-alt-other))) + `(counsel-key-binding ((,class :inherit modus-themes-key-binding))) `(counsel-outline-1 ((,class :inherit org-level-1))) `(counsel-outline-2 ((,class :inherit org-level-2))) `(counsel-outline-3 ((,class :inherit org-level-3))) @@ -3525,7 +3682,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(counsel-outline-7 ((,class :inherit org-level-7))) `(counsel-outline-8 ((,class :inherit org-level-8))) `(counsel-outline-default ((,class :foreground ,fg-main))) - `(counsel-variable-documentation ((,class :inherit modus-theme-slant :foreground ,yellow-alt-other))) + `(counsel-variable-documentation ((,class :inherit modus-themes-slant :foreground ,yellow-alt-other))) ;;;;; counsel-css `(counsel-css-selector-depth-face-1 ((,class :foreground ,blue))) `(counsel-css-selector-depth-face-2 ((,class :foreground ,cyan))) @@ -3554,9 +3711,9 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; csv-mode `(csv-separator-face ((,class :background ,bg-special-cold :foreground ,fg-main))) ;;;;; ctrlf - `(ctrlf-highlight-active ((,class :inherit (modus-theme-intense-green bold)))) - `(ctrlf-highlight-line ((,class :inherit modus-theme-hl-line))) - `(ctrlf-highlight-passive ((,class :inherit modus-theme-refine-cyan))) + `(ctrlf-highlight-active ((,class :inherit (modus-themes-intense-green bold)))) + `(ctrlf-highlight-line ((,class :inherit modus-themes-hl-line))) + `(ctrlf-highlight-passive ((,class :inherit modus-themes-refine-cyan))) ;;;;; custom (M-x customize) `(custom-button ((,class :box (:line-width 2 :color nil :style released-button) :background ,bg-active :foreground ,fg-main))) @@ -3564,18 +3721,18 @@ by virtue of calling either of `modus-themes-load-operandi' and :background ,bg-active :foreground ,fg-active))) `(custom-button-pressed ((,class :box (:line-width 2 :color nil :style pressed-button) :background ,bg-active :foreground ,fg-main))) - `(custom-changed ((,class :inherit modus-theme-subtle-cyan))) + `(custom-changed ((,class :inherit modus-themes-subtle-cyan))) `(custom-comment ((,class :inherit shadow))) `(custom-comment-tag ((,class :background ,bg-alt :foreground ,yellow-alt-other))) `(custom-face-tag ((,class :inherit bold :foreground ,blue-intense))) `(custom-group-tag ((,class :inherit bold :foreground ,green-intense))) - `(custom-group-tag-1 ((,class :inherit modus-theme-special-warm))) - `(custom-invalid ((,class :inherit (modus-theme-intense-red bold)))) - `(custom-modified ((,class :inherit modus-theme-subtle-cyan))) - `(custom-rogue ((,class :inherit modus-theme-refine-magenta))) + `(custom-group-tag-1 ((,class :inherit modus-themes-special-warm))) + `(custom-invalid ((,class :inherit (modus-themes-intense-red bold)))) + `(custom-modified ((,class :inherit modus-themes-subtle-cyan))) + `(custom-rogue ((,class :inherit modus-themes-refine-magenta))) `(custom-set ((,class :foreground ,blue-alt))) `(custom-state ((,class :foreground ,cyan-alt-other))) - `(custom-themed ((,class :inherit modus-theme-subtle-blue))) + `(custom-themed ((,class :inherit modus-themes-subtle-blue))) `(custom-variable-tag ((,class :inherit bold :foreground ,cyan))) ;;;;; dap-mode `(dap-mouse-eval-thing-face ((,class :box (:line-width -1 :color ,blue-active :style nil) @@ -3587,7 +3744,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(dap-ui-locals-scope-face ((,class :inherit bold :foreground ,magenta :underline t))) `(dap-ui-locals-variable-face ((,class :inherit bold :foreground ,cyan))) `(dap-ui-locals-variable-leaf-face ((,class :inherit italic :foreground ,cyan-alt-other))) - `(dap-ui-marker-face ((,class :inherit modus-theme-subtle-blue))) + `(dap-ui-marker-face ((,class :inherit modus-themes-subtle-blue))) `(dap-ui-sessions-stack-frame-face ((,class :inherit bold :foreground ,magenta-alt))) `(dap-ui-sessions-terminated-active-face ((,class :inherit bold :foreground ,fg-alt))) `(dap-ui-sessions-terminated-face ((,class :inherit shadow))) @@ -3599,7 +3756,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(dashboard-text-banner ((,class :foreground ,fg-dim))) ;;;;; deadgrep `(deadgrep-filename-face ((,class :inherit bold :foreground ,fg-special-cold))) - `(deadgrep-match-face ((,class :inherit modus-theme-special-calm))) + `(deadgrep-match-face ((,class :inherit modus-themes-special-calm))) `(deadgrep-meta-face ((,class :inherit shadow))) `(deadgrep-regexp-metachar-face ((,class :inherit bold :foreground ,yellow-intense))) `(deadgrep-search-term-face ((,class :inherit bold :foreground ,green-intense))) @@ -3620,11 +3777,11 @@ by virtue of calling either of `modus-themes-load-operandi' and `(define-word-face-1 ((,class :foreground ,yellow))) `(define-word-face-2 ((,class :foreground ,fg-main))) ;;;;; deft - `(deft-filter-string-error-face ((,class :inherit modus-theme-refine-red))) + `(deft-filter-string-error-face ((,class :inherit modus-themes-refine-red))) `(deft-filter-string-face ((,class :foreground ,green-intense))) `(deft-header-face ((,class :inherit bold :foreground ,fg-special-warm))) `(deft-separator-face ((,class :inherit shadow))) - `(deft-summary-face ((,class :inherit modus-theme-slant :foreground ,fg-alt))) + `(deft-summary-face ((,class :inherit modus-themes-slant :foreground ,fg-alt))) `(deft-time-face ((,class :foreground ,fg-special-cold))) `(deft-title-face ((,class :inherit bold :foreground ,fg-main))) ;;;;; dictionary @@ -3633,34 +3790,34 @@ by virtue of calling either of `modus-themes-load-operandi' and `(dictionary-word-definition-face (())) `(dictionary-word-entry-face ((,class :inherit font-lock-comment-face))) ;;;;; diff-hl - `(diff-hl-change ((,class :inherit modus-theme-fringe-yellow))) - `(diff-hl-delete ((,class :inherit modus-theme-fringe-red))) + `(diff-hl-change ((,class :inherit modus-themes-fringe-yellow))) + `(diff-hl-delete ((,class :inherit modus-themes-fringe-red))) `(diff-hl-dired-change ((,class :inherit diff-hl-change))) `(diff-hl-dired-delete ((,class :inherit diff-hl-delete))) `(diff-hl-dired-ignored ((,class :inherit dired-ignored))) `(diff-hl-dired-insert ((,class :inherit diff-hl-insert))) `(diff-hl-dired-unknown ((,class :inherit dired-ignored))) - `(diff-hl-insert ((,class :inherit modus-theme-fringe-green))) - `(diff-hl-reverted-hunk-highlight ((,class :inherit (modus-theme-active-magenta bold)))) + `(diff-hl-insert ((,class :inherit modus-themes-fringe-green))) + `(diff-hl-reverted-hunk-highlight ((,class :inherit (modus-themes-active-magenta bold)))) ;;;;; diff-mode - `(diff-added ((,class :inherit modus-theme-diff-added))) - `(diff-changed ((,class :inherit modus-theme-diff-changed :extend t))) + `(diff-added ((,class :inherit modus-themes-diff-added))) + `(diff-changed ((,class :inherit modus-themes-diff-changed :extend t))) `(diff-context ((,class ,@(modus-themes--diff-text fg-main fg-unfocused)))) - `(diff-error ((,class :inherit modus-theme-intense-red))) + `(diff-error ((,class :inherit modus-themes-intense-red))) `(diff-file-header ((,class :inherit (bold diff-header)))) - `(diff-function ((,class :inherit modus-theme-diff-heading))) + `(diff-function ((,class :inherit modus-themes-diff-heading))) `(diff-header ((,class ,@(modus-themes--diff-text cyan-faint fg-main)))) - `(diff-hunk-header ((,class :inherit (bold modus-theme-diff-heading)))) + `(diff-hunk-header ((,class :inherit (bold modus-themes-diff-heading)))) `(diff-index ((,class :inherit bold :foreground ,blue-alt))) `(diff-indicator-added ((,class :inherit (diff-added bold) :foreground ,@(modus-themes--diff-deuteran blue green)))) `(diff-indicator-changed ((,class :inherit (diff-changed bold) :foreground ,yellow))) `(diff-indicator-removed ((,class :inherit (diff-removed bold) :foreground ,red))) - `(diff-nonexistent ((,class :inherit (modus-theme-neutral bold)))) - `(diff-refine-added ((,class :inherit modus-theme-diff-refine-added))) - `(diff-refine-changed ((,class :inherit modus-theme-diff-refine-changed))) - `(diff-refine-removed ((,class :inherit modus-theme-diff-refine-removed))) - `(diff-removed ((,class :inherit modus-theme-diff-removed))) + `(diff-nonexistent ((,class :inherit (modus-themes-neutral bold)))) + `(diff-refine-added ((,class :inherit modus-themes-diff-refine-added))) + `(diff-refine-changed ((,class :inherit modus-themes-diff-refine-changed))) + `(diff-refine-removed ((,class :inherit modus-themes-diff-refine-removed))) + `(diff-removed ((,class :inherit modus-themes-diff-removed))) ;;;;; dim-autoload `(dim-autoload-cookie-line ((,class :inherit font-lock-comment-face))) ;;;;; dir-treeview @@ -3680,7 +3837,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(dir-treeview-image-icon-face ((,class :inherit dir-treeview-default-icon-face :foreground ,green-alt))) `(dir-treeview-indent-face ((,class :inherit shadow))) `(dir-treeview-label-mouse-face ((,class :inherit highlight))) - `(dir-treeview-start-dir-face ((,class :inherit modus-theme-pseudo-header))) + `(dir-treeview-start-dir-face ((,class :inherit modus-themes-pseudo-header))) `(dir-treeview-symlink-face ((,class :inherit button ,@(modus-themes--link-color cyan cyan-faint)))) @@ -3689,27 +3846,27 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; dired `(dired-broken-symlink ((,class :inherit button :foreground ,red))) `(dired-directory ((,class :foreground ,blue))) - `(dired-flagged ((,class :inherit modus-theme-mark-del))) - `(dired-header ((,class :inherit modus-theme-pseudo-header))) + `(dired-flagged ((,class :inherit modus-themes-mark-del))) + `(dired-header ((,class :inherit modus-themes-pseudo-header))) `(dired-ignored ((,class :inherit shadow))) - `(dired-mark ((,class :inherit modus-theme-mark-symbol))) - `(dired-marked ((,class :inherit modus-theme-mark-sel))) + `(dired-mark ((,class :inherit modus-themes-mark-symbol))) + `(dired-marked ((,class :inherit modus-themes-mark-sel))) `(dired-perm-write ((,class :foreground ,fg-special-warm))) `(dired-symlink ((,class :inherit button ,@(modus-themes--link-color cyan-alt cyan-alt-faint)))) `(dired-warning ((,class :inherit bold :foreground ,yellow))) ;;;;; dired-async - `(dired-async-failures ((,class :inherit modus-theme-bold :foreground ,red-active))) - `(dired-async-message ((,class :inherit modus-theme-bold :foreground ,green-active))) - `(dired-async-mode-message ((,class :inherit modus-theme-bold :foreground ,cyan-active))) + `(dired-async-failures ((,class :inherit bold :foreground ,red-active))) + `(dired-async-message ((,class :inherit bold :foreground ,blue-active))) + `(dired-async-mode-message ((,class :inherit bold :foreground ,cyan-active))) ;;;;; dired-git `(dired-git-branch-else ((,class :inherit bold :foreground ,magenta-alt))) `(dired-git-branch-master ((,class :inherit bold :foreground ,magenta-alt-other))) ;;;;; dired-git-info `(dgi-commit-message-face ((,class :foreground ,fg-special-mild))) ;;;;; dired-narrow - `(dired-narrow-blink ((,class :inherit (modus-theme-subtle-cyan bold)))) + `(dired-narrow-blink ((,class :inherit (modus-themes-subtle-cyan bold)))) ;;;;; dired-subtree ;; remove backgrounds from dired-subtree faces, else they break ;; dired-{flagged,marked} and any other face that sets a background @@ -3727,21 +3884,21 @@ by virtue of calling either of `modus-themes-load-operandi' and `(diredc-face-chmod-font-lock-read ((,class :foreground ,fg-main))) `(diredc-face-chmod-font-lock-write ((,class :foreground ,cyan))) ;;;;; diredfl - `(diredfl-autofile-name ((,class :inherit modus-theme-special-cold))) + `(diredfl-autofile-name ((,class :inherit modus-themes-special-cold))) `(diredfl-compressed-file-name ((,class :foreground ,fg-special-warm))) `(diredfl-compressed-file-suffix ((,class :foreground ,red-alt))) `(diredfl-date-time ((,class :foreground ,cyan-alt-other))) - `(diredfl-deletion ((,class :inherit modus-theme-mark-del))) - `(diredfl-deletion-file-name ((,class :inherit modus-theme-mark-del))) - `(diredfl-dir-heading ((,class :inherit modus-theme-pseudo-header))) + `(diredfl-deletion ((,class :inherit modus-themes-mark-del))) + `(diredfl-deletion-file-name ((,class :inherit modus-themes-mark-del))) + `(diredfl-dir-heading ((,class :inherit modus-themes-pseudo-header))) `(diredfl-dir-name ((,class :inherit dired-directory))) `(diredfl-dir-priv ((,class :foreground ,blue-alt))) `(diredfl-exec-priv ((,class :foreground ,magenta))) `(diredfl-executable-tag ((,class :foreground ,magenta-alt))) `(diredfl-file-name ((,class :foreground ,fg-main))) `(diredfl-file-suffix ((,class :foreground ,cyan))) - `(diredfl-flag-mark ((,class :inherit modus-theme-mark-sel))) - `(diredfl-flag-mark-line ((,class :inherit modus-theme-mark-sel))) + `(diredfl-flag-mark ((,class :inherit modus-themes-mark-sel))) + `(diredfl-flag-mark-line ((,class :inherit modus-themes-mark-sel))) `(diredfl-ignored-file-name ((,class :inherit shadow))) `(diredfl-link-priv ((,class :foreground ,blue-alt-other))) `(diredfl-no-priv ((,class :inherit shadow))) @@ -3750,24 +3907,24 @@ by virtue of calling either of `modus-themes-load-operandi' and `(diredfl-rare-priv ((,class :foreground ,red-alt))) `(diredfl-read-priv ((,class :foreground ,fg-main))) `(diredfl-symlink ((,class :inherit dired-symlink))) - `(diredfl-tagged-autofile-name ((,class :inherit modus-theme-refine-magenta))) + `(diredfl-tagged-autofile-name ((,class :inherit modus-themes-refine-magenta))) `(diredfl-write-priv ((,class :foreground ,cyan))) ;;;;; dired+ - `(diredp-autofile-name ((,class :inherit modus-theme-special-cold))) + `(diredp-autofile-name ((,class :inherit modus-themes-special-cold))) `(diredp-compressed-file-name ((,class :foreground ,fg-special-warm))) `(diredp-compressed-file-suffix ((,class :foreground ,red-alt))) `(diredp-date-time ((,class :foreground ,cyan-alt-other))) - `(diredp-deletion ((,class :inherit modus-theme-mark-del))) - `(diredp-deletion-file-name ((,class :inherit modus-theme-mark-del))) - `(diredp-dir-heading ((,class :inherit modus-theme-pseudo-header))) + `(diredp-deletion ((,class :inherit modus-themes-mark-del))) + `(diredp-deletion-file-name ((,class :inherit modus-themes-mark-del))) + `(diredp-dir-heading ((,class :inherit modus-themes-pseudo-header))) `(diredp-dir-name ((,class :inherit dired-directory))) `(diredp-dir-priv ((,class :foreground ,blue-alt))) `(diredp-exec-priv ((,class :foreground ,magenta))) `(diredp-executable-tag ((,class :foreground ,magenta-alt))) `(diredp-file-name ((,class :foreground ,fg-main))) `(diredp-file-suffix ((,class :foreground ,cyan))) - `(diredp-flag-mark ((,class :inherit modus-theme-mark-sel))) - `(diredp-flag-mark-line ((,class :inherit modus-theme-mark-sel))) + `(diredp-flag-mark ((,class :inherit modus-themes-mark-sel))) + `(diredp-flag-mark-line ((,class :inherit modus-themes-mark-sel))) `(diredp-ignored-file-name ((,class :inherit shadow))) `(diredp-link-priv ((,class :foreground ,blue-alt-other))) `(diredp-mode-line-flagged ((,class :foreground ,red-active))) @@ -3779,7 +3936,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(diredp-rare-priv ((,class :foreground ,red-alt))) `(diredp-read-priv ((,class :foreground ,fg-main))) `(diredp-symlink ((,class :inherit dired-symlink))) - `(diredp-tagged-autofile-name ((,class :inherit modus-theme-refine-magenta))) + `(diredp-tagged-autofile-name ((,class :inherit modus-themes-refine-magenta))) `(diredp-write-priv ((,class :foreground ,cyan))) ;;;;; disk-usage `(disk-usage-children ((,class :foreground ,yellow))) @@ -3791,7 +3948,7 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; display-fill-column-indicator-mode `(fill-column-indicator ((,class :foreground ,bg-active))) ;;;;; doom-modeline - `(doom-modeline-bar ((,class :inherit modus-theme-active-blue))) + `(doom-modeline-bar ((,class :inherit modus-themes-active-blue))) `(doom-modeline-bar-inactive ((,class :background ,fg-inactive :foreground ,bg-main))) `(doom-modeline-battery-charging ((,class :foreground ,green-active))) `(doom-modeline-battery-critical ((,class :inherit bold :foreground ,red-active))) @@ -3820,7 +3977,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(doom-modeline-lsp-error ((,class :inherit bold :foreground ,red-active))) `(doom-modeline-lsp-success ((,class :inherit bold :foreground ,green-active))) `(doom-modeline-lsp-warning ((,class :inherit bold :foreground ,yellow-active))) - `(doom-modeline-panel ((,class :inherit modus-theme-active-blue))) + `(doom-modeline-panel ((,class :inherit modus-themes-active-blue))) `(doom-modeline-persp-buffer-not-in-persp ((,class :inherit italic :foreground ,yellow-active))) `(doom-modeline-persp-name ((,class :foreground ,fg-active))) `(doom-modeline-project-dir ((,class :inherit bold :foreground ,blue-active))) @@ -3830,13 +3987,13 @@ by virtue of calling either of `modus-themes-load-operandi' and `(doom-modeline-urgent ((,class :inherit bold :foreground ,red-active))) `(doom-modeline-warning ((,class :inherit bold :foreground ,yellow-active))) ;;;;; dynamic-ruler - `(dynamic-ruler-negative-face ((,class :inherit modus-theme-intense-neutral))) - `(dynamic-ruler-positive-face ((,class :inherit modus-theme-intense-yellow))) + `(dynamic-ruler-negative-face ((,class :inherit modus-themes-intense-neutral))) + `(dynamic-ruler-positive-face ((,class :inherit modus-themes-intense-yellow))) ;;;;; easy-jekyll `(easy-jekyll-help-face ((,class :background ,bg-dim :foreground ,cyan-alt-other))) ;;;;; easy-kill - `(easy-kill-origin ((,class :inherit modus-theme-subtle-red))) - `(easy-kill-selection ((,class :inherit modus-theme-subtle-yellow))) + `(easy-kill-origin ((,class :inherit modus-themes-subtle-red))) + `(easy-kill-selection ((,class :inherit modus-themes-subtle-yellow))) ;;;;; ebdb `(ebdb-address-default ((,class :foreground ,fg-special-calm))) `(ebdb-defunct ((,class :inherit shadow))) @@ -3850,46 +4007,32 @@ by virtue of calling either of `modus-themes-load-operandi' and `(ebdb-phone-default ((,class :foreground ,cyan))) `(eieio-custom-slot-tag-face ((,class :foreground ,red-alt))) ;;;;; ediff - ;; NOTE: here we break from the pattern of inheriting from the - ;; modus-theme-diff-* faces. - `(ediff-current-diff-A ((,class ,@(modus-themes--diff - bg-dim red - bg-diff-removed fg-diff-removed - red-nuanced-bg red-faint)))) + `(ediff-current-diff-A ((,class :inherit modus-themes-diff-removed))) `(ediff-current-diff-Ancestor ((,class ,@(modus-themes--diff - bg-dim fg-special-cold + bg-alt fg-special-cold bg-special-cold fg-special-cold blue-nuanced-bg blue)))) - `(ediff-current-diff-B ((,class ,@(modus-themes--diff - bg-dim green - bg-diff-added fg-diff-added - green-nuanced-bg green-faint - bg-diff-added-deuteran fg-diff-added-deuteran)))) - `(ediff-current-diff-C ((,class ,@(modus-themes--diff - bg-dim yellow - bg-diff-changed fg-diff-changed - yellow-nuanced-bg yellow-faint)))) - `(ediff-even-diff-A ((,class :background ,bg-diff-neutral-1 :foreground ,fg-diff-neutral-1))) - `(ediff-even-diff-Ancestor ((,class :background ,bg-diff-neutral-2 :foreground ,fg-diff-neutral-1))) - `(ediff-even-diff-B ((,class :background ,bg-diff-neutral-1 :foreground ,fg-diff-neutral-1))) - `(ediff-even-diff-C ((,class :background ,bg-diff-neutral-2 :foreground ,fg-diff-neutral-2))) - `(ediff-fine-diff-A ((,class :background ,bg-diff-focus-removed :foreground ,fg-diff-focus-removed))) - `(ediff-fine-diff-Ancestor ((,class :inherit modus-theme-refine-cyan))) - `(ediff-fine-diff-B - ((,class :background ,@(modus-themes--diff-deuteran bg-diff-focus-added-deuteran bg-diff-focus-added) - :foreground ,@(modus-themes--diff-deuteran fg-diff-focus-added-deuteran fg-diff-focus-added)))) - `(ediff-fine-diff-C ((,class :background ,bg-diff-focus-changed :foreground ,fg-diff-focus-changed))) - `(ediff-odd-diff-A ((,class :background ,bg-diff-neutral-2 :foreground ,fg-diff-neutral-2))) - `(ediff-odd-diff-Ancestor ((,class :background ,bg-diff-neutral-0 :foreground ,fg-diff-neutral-0))) - `(ediff-odd-diff-B ((,class :background ,bg-diff-neutral-2 :foreground ,fg-diff-neutral-2))) - `(ediff-odd-diff-C ((,class :background ,bg-diff-neutral-1 :foreground ,fg-diff-neutral-1))) + `(ediff-current-diff-B ((,class :inherit modus-themes-diff-added))) + `(ediff-current-diff-C ((,class :inherit modus-themes-diff-changed))) + `(ediff-even-diff-A ((,class :background ,bg-alt))) + `(ediff-even-diff-Ancestor ((,class :background ,bg-alt))) + `(ediff-even-diff-B ((,class :background ,bg-alt))) + `(ediff-even-diff-C ((,class :background ,bg-alt))) + `(ediff-fine-diff-A ((,class :inherit modus-themes-diff-refine-removed))) + `(ediff-fine-diff-Ancestor ((,class :inherit modus-themes-refine-cyan))) + `(ediff-fine-diff-B ((,class :inherit modus-themes-diff-refine-added))) + `(ediff-fine-diff-C ((,class :inherit modus-themes-diff-refine-changed))) + `(ediff-odd-diff-A ((,class :inherit ediff-even-diff-A))) + `(ediff-odd-diff-Ancestor ((,class :inherit ediff-even-diff-Ancestor))) + `(ediff-odd-diff-B ((,class :inherit ediff-even-diff-B))) + `(ediff-odd-diff-C ((,class :inherit ediff-even-diff-C))) ;;;;; eglot - `(eglot-mode-line ((,class :inherit modus-theme-bold :foreground ,magenta-active))) + `(eglot-mode-line ((,class :inherit modus-themes-bold :foreground ,magenta-active))) ;;;;; el-search `(el-search-highlight-in-prompt-face ((,class :inherit bold :foreground ,magenta-alt))) - `(el-search-match ((,class :inherit modus-theme-intense-green))) - `(el-search-other-match ((,class :inherit modus-theme-special-mild))) - `(el-search-occur-match ((,class :inherit modus-theme-special-calm))) + `(el-search-match ((,class :inherit modus-themes-intense-green))) + `(el-search-other-match ((,class :inherit modus-themes-special-mild))) + `(el-search-occur-match ((,class :inherit modus-themes-special-calm))) ;;;;; eldoc ;; NOTE: see https://github.com/purcell/package-lint/issues/187 (list 'eldoc-highlight-function-argument `((,class :inherit bold :foreground ,blue-alt-other))) @@ -3916,17 +4059,19 @@ by virtue of calling either of `modus-themes-load-operandi' and `(elfeed-score-error-level-face ((,class :foreground ,red))) `(elfeed-score-info-level-face ((,class :foreground ,cyan))) `(elfeed-score-warn-level-face ((,class :foreground ,yellow))) +;;;;; embark + `(embark-keybinding ((,class :inherit modus-themes-key-binding))) ;;;;; emms `(emms-playlist-track-face ((,class :foreground ,blue))) `(emms-playlist-selected-face ((,class :inherit bold :foreground ,magenta))) -;;;;; enhanced-ruby-mode - `(enh-ruby-heredoc-delimiter-face ((,class :foreground ,blue-alt-other))) +;;;;; enh-ruby-mode (enhanced-ruby-mode) + `(enh-ruby-heredoc-delimiter-face ((,class :inherit font-lock-constant-face))) `(enh-ruby-op-face ((,class :foreground ,fg-main))) - `(enh-ruby-regexp-delimiter-face ((,class :foreground ,green))) - `(enh-ruby-regexp-face ((,class :foreground ,magenta))) - `(enh-ruby-string-delimiter-face ((,class :foreground ,blue-alt))) - `(erm-syn-errline ((,class :foreground ,red :underline t))) - `(erm-syn-warnline ((,class :foreground ,yellow :underline t))) + `(enh-ruby-regexp-delimiter-face ((,class :inherit font-lock-regexp-grouping-construct))) + `(enh-ruby-regexp-face ((,class :inherit font-lock-string-face))) + `(enh-ruby-string-delimiter-face ((,class :inherit font-lock-string-face))) + `(erm-syn-errline ((,class :inherit modus-themes-lang-error))) + `(erm-syn-warnline ((,class :inherit modus-themes-lang-warning))) ;;;;; epa `(epa-field-body ((,class :foreground ,fg-main))) `(epa-field-name ((,class :inherit bold :foreground ,fg-dim))) @@ -3951,7 +4096,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(erc-button ((,class :inherit button))) `(erc-command-indicator-face ((,class :inherit bold :foreground ,cyan-alt))) `(erc-current-nick-face ((,class :foreground ,magenta-alt-other))) - `(erc-dangerous-host-face ((,class :inherit modus-theme-intense-red))) + `(erc-dangerous-host-face ((,class :inherit modus-themes-intense-red))) `(erc-direct-msg-face ((,class :foreground ,magenta))) `(erc-error-face ((,class :inherit bold :foreground ,red))) `(erc-fool-face ((,class :foreground ,fg-inactive))) @@ -3966,7 +4111,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(erc-nick-prefix-face ((,class :inherit erc-nick-default-face))) `(erc-notice-face ((,class :foreground ,fg-unfocused))) `(erc-pal-face ((,class :inherit bold :foreground ,red-alt))) - `(erc-prompt-face ((,class :inherit bold :foreground ,cyan-alt-other))) + `(erc-prompt-face ((,class :inherit comint-highlight-prompt))) `(erc-timestamp-face ((,class :foreground ,blue-nuanced-fg))) `(erc-underline-face ((,class :underline t))) `(bg:erc-color-face0 ((,class :background "white"))) @@ -4005,15 +4150,15 @@ by virtue of calling either of `modus-themes-load-operandi' and `(eros-result-overlay-face ((,class :box (:line-width -1 :color ,blue) :background ,bg-dim :foreground ,fg-dim))) ;;;;; ert - `(ert-test-result-expected ((,class :inherit modus-theme-intense-green))) - `(ert-test-result-unexpected ((,class :inherit modus-theme-intense-red))) + `(ert-test-result-expected ((,class :inherit modus-themes-intense-green))) + `(ert-test-result-unexpected ((,class :inherit modus-themes-intense-red))) ;;;;; eshell `(eshell-ls-archive ((,class :inherit bold :foreground ,cyan-alt))) `(eshell-ls-backup ((,class :foreground ,yellow-alt))) `(eshell-ls-clutter ((,class :foreground ,red-alt))) `(eshell-ls-directory ((,class :inherit bold :foreground ,blue-alt))) `(eshell-ls-executable ((,class :foreground ,magenta-alt))) - `(eshell-ls-missing ((,class :inherit modus-theme-intense-red))) + `(eshell-ls-missing ((,class :inherit modus-themes-intense-red))) `(eshell-ls-product ((,class :foreground ,fg-special-warm))) `(eshell-ls-readonly ((,class :foreground ,fg-special-cold))) `(eshell-ls-special ((,class :inherit bold :foreground ,magenta))) @@ -4021,7 +4166,7 @@ by virtue of calling either of `modus-themes-load-operandi' and ,@(modus-themes--link-color cyan cyan-faint)))) `(eshell-ls-unreadable ((,class :background ,bg-inactive :foreground ,fg-inactive))) - `(eshell-prompt ((,class :inherit modus-theme-bold + `(eshell-prompt ((,class :inherit modus-themes-bold ,@(modus-themes--prompt green-alt-other green-nuanced-bg green-alt @@ -4043,16 +4188,16 @@ by virtue of calling either of `modus-themes-load-operandi' and `(eshell-git-prompt-robyrussell-git-dirty-face ((,class :foreground ,yellow))) `(eshell-git-prompt-robyrussell-git-face ((,class :foreground ,blue))) ;;;;; eshell-prompt-extras (epe) - `(epe-dir-face ((,class :inherit modus-theme-bold :foreground ,blue))) + `(epe-dir-face ((,class :inherit modus-themes-bold :foreground ,blue))) `(epe-git-dir-face ((,class :foreground ,red-alt-other))) `(epe-git-face ((,class :foreground ,cyan-alt))) `(epe-pipeline-delimiter-face ((,class :foreground ,green-alt))) `(epe-pipeline-host-face ((,class :foreground ,blue))) `(epe-pipeline-time-face ((,class :foreground ,fg-special-warm))) `(epe-pipeline-user-face ((,class :foreground ,magenta))) - `(epe-remote-face ((,class :inherit modus-theme-slant :foreground ,fg-alt))) + `(epe-remote-face ((,class :inherit modus-themes-slant :foreground ,fg-alt))) `(epe-status-face ((,class :foreground ,magenta-alt-other))) - `(epe-venv-face ((,class :inherit modus-theme-slant :foreground ,fg-alt))) + `(epe-venv-face ((,class :inherit modus-themes-slant :foreground ,fg-alt))) ;;;;; eshell-syntax-highlighting `(eshell-syntax-highlighting-alias-face ((,class :foreground ,cyan))) `(eshell-syntax-highlighting-comment-face ((,class :inherit shadow))) @@ -4065,103 +4210,104 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; evil-mode `(evil-ex-commands ((,class :foreground ,magenta-alt-other))) `(evil-ex-info ((,class :foreground ,cyan-alt-other))) - `(evil-ex-lazy-highlight ((,class :inherit modus-theme-refine-cyan))) - `(evil-ex-search ((,class :inherit modus-theme-intense-green))) - `(evil-ex-substitute-matches ((,class :inherit modus-theme-refine-yellow :underline t))) - `(evil-ex-substitute-replacement ((,class :inherit (modus-theme-intense-green bold)))) + `(evil-ex-lazy-highlight ((,class :inherit modus-themes-refine-cyan))) + `(evil-ex-search ((,class :inherit modus-themes-intense-green))) + `(evil-ex-substitute-matches ((,class :inherit modus-themes-refine-yellow :underline t))) + `(evil-ex-substitute-replacement ((,class :inherit (modus-themes-intense-green bold)))) ;;;;; evil-goggles - `(evil-goggles-change-face ((,class :inherit modus-theme-refine-yellow))) - `(evil-goggles-commentary-face ((,class :inherit (modus-theme-subtle-neutral modus-theme-slant)))) - `(evil-goggles-default-face ((,class :inherit modus-theme-subtle-neutral))) - `(evil-goggles-delete-face ((,class :inherit modus-theme-refine-red))) + `(evil-goggles-change-face ((,class :inherit modus-themes-refine-yellow))) + `(evil-goggles-commentary-face ((,class :inherit (modus-themes-subtle-neutral modus-themes-slant)))) + `(evil-goggles-default-face ((,class :inherit modus-themes-subtle-neutral))) + `(evil-goggles-delete-face ((,class :inherit modus-themes-refine-red))) `(evil-goggles-fill-and-move-face ((,class :inherit evil-goggles-default-face))) `(evil-goggles-indent-face ((,class :inherit evil-goggles-default-face))) - `(evil-goggles-join-face ((,class :inherit modus-theme-subtle-green))) + `(evil-goggles-join-face ((,class :inherit modus-themes-subtle-green))) `(evil-goggles-nerd-commenter-face ((,class :inherit evil-goggles-commentary-face))) - `(evil-goggles-paste-face ((,class :inherit modus-theme-subtle-cyan))) - `(evil-goggles-record-macro-face ((,class :inherit modus-theme-special-cold))) - `(evil-goggles-replace-with-register-face ((,class :inherit modus-theme-refine-magenta))) - `(evil-goggles-set-marker-face ((,class :inherit modus-theme-intense-magenta))) + `(evil-goggles-paste-face ((,class :inherit modus-themes-subtle-cyan))) + `(evil-goggles-record-macro-face ((,class :inherit modus-themes-special-cold))) + `(evil-goggles-replace-with-register-face ((,class :inherit modus-themes-refine-magenta))) + `(evil-goggles-set-marker-face ((,class :inherit modus-themes-intense-magenta))) `(evil-goggles-shift-face ((,class :inherit evil-goggles-default-face))) `(evil-goggles-surround-face ((,class :inherit evil-goggles-default-face))) - `(evil-goggles-yank-face ((,class :inherit modus-theme-subtle-blue))) + `(evil-goggles-yank-face ((,class :inherit modus-themes-subtle-blue))) ;;;;; evil-snipe - `(evil-snipe-first-match-face ((,class :inherit (bold modus-theme-intense-blue)))) - `(evil-snipe-matches-face ((,class :inherit modus-theme-refine-magenta))) + `(evil-snipe-first-match-face ((,class :inherit (bold modus-themes-intense-blue)))) + `(evil-snipe-matches-face ((,class :inherit modus-themes-refine-magenta))) ;;;;; evil-visual-mark-mode - `(evil-visual-mark-face ((,class :inherit modus-theme-intense-magenta))) + `(evil-visual-mark-face ((,class :inherit modus-themes-intense-magenta))) ;;;;; eww - `(eww-invalid-certificate ((,class :foreground ,red-active))) - `(eww-valid-certificate ((,class :foreground ,green-active))) - `(eww-form-checkbox ((,class :box (:line-width 1 :color ,fg-inactive :style released-button) :background ,bg-inactive :foreground ,fg-main))) - `(eww-form-file ((,class :box (:line-width 1 :color ,fg-inactive :style released-button) :background ,bg-active :foreground ,fg-main))) - `(eww-form-select ((,class :inherit eww-form-checkbox))) - `(eww-form-submit ((,class :inherit eww-form-file))) - `(eww-form-text ((,class :box (:line-width 1 :color ,fg-inactive :style none) :background ,bg-active :foreground ,fg-active))) - `(eww-form-textarea ((,class :background ,bg-alt :foreground ,fg-main))) + `(eww-invalid-certificate ((,class :foreground ,red-faint))) + `(eww-valid-certificate ((,class :foreground ,blue-faint))) + `(eww-form-checkbox ((,class :inherit eww-form-text))) + `(eww-form-file ((,class :inherit eww-form-submit))) + `(eww-form-select ((,class :inherit eww-form-submit))) + `(eww-form-submit ((,class :box (:line-width 2 :style released-button) + :background ,bg-active))) + `(eww-form-text ((,class :box ,bg-active :background ,bg-alt))) + `(eww-form-textarea ((,class :background ,bg-alt))) ;;;;; eyebrowse `(eyebrowse-mode-line-active ((,class :inherit bold :foreground ,blue-active))) ;;;;; fancy-dabbrev `(fancy-dabbrev-menu-face ((,class :background ,bg-alt :foreground ,fg-alt))) `(fancy-dabbrev-preview-face ((,class :inherit shadow :underline t))) - `(fancy-dabbrev-selection-face ((,class :inherit (modus-theme-intense-cyan bold)))) + `(fancy-dabbrev-selection-face ((,class :inherit (modus-themes-intense-cyan bold)))) ;;;;; flycheck - `(flycheck-error ((,class :inherit modus-theme-lang-error))) + `(flycheck-error ((,class :inherit modus-themes-lang-error))) `(flycheck-error-list-checker-name ((,class :foreground ,magenta-active))) `(flycheck-error-list-column-number ((,class :foreground ,fg-special-cold))) - `(flycheck-error-list-error ((,class :inherit modus-theme-bold :foreground ,red))) + `(flycheck-error-list-error ((,class :inherit modus-themes-bold :foreground ,red))) `(flycheck-error-list-filename ((,class :foreground ,blue))) - `(flycheck-error-list-highlight ((,class :inherit modus-theme-hl-line))) + `(flycheck-error-list-highlight ((,class :inherit modus-themes-hl-line))) `(flycheck-error-list-id ((,class :foreground ,magenta-alt-other))) `(flycheck-error-list-id-with-explainer ((,class :inherit flycheck-error-list-id :box t))) `(flycheck-error-list-info ((,class :foreground ,cyan))) `(flycheck-error-list-line-number ((,class :foreground ,fg-special-warm))) `(flycheck-error-list-warning ((,class :foreground ,yellow))) - `(flycheck-fringe-error ((,class :inherit modus-theme-fringe-red))) - `(flycheck-fringe-info ((,class :inherit modus-theme-fringe-cyan))) - `(flycheck-fringe-warning ((,class :inherit modus-theme-fringe-yellow))) - `(flycheck-info ((,class :inherit modus-theme-lang-note))) + `(flycheck-fringe-error ((,class :inherit modus-themes-fringe-red))) + `(flycheck-fringe-info ((,class :inherit modus-themes-fringe-cyan))) + `(flycheck-fringe-warning ((,class :inherit modus-themes-fringe-yellow))) + `(flycheck-info ((,class :inherit modus-themes-lang-note))) `(flycheck-verify-select-checker ((,class :box (:line-width 1 :color nil :style released-button)))) - `(flycheck-warning ((,class :inherit modus-theme-lang-warning))) + `(flycheck-warning ((,class :inherit modus-themes-lang-warning))) ;;;;; flycheck-color-mode-line `(flycheck-color-mode-line-error-face ((,class :inherit flycheck-fringe-error))) `(flycheck-color-mode-line-info-face ((,class :inherit flycheck-fringe-info))) `(flycheck-color-mode-line-running-face ((,class :inherit italic :foreground ,fg-inactive))) `(flycheck-color-mode-line-info-face ((,class :inherit flycheck-fringe-warning))) ;;;;; flycheck-indicator - `(flycheck-indicator-disabled ((,class :inherit modus-theme-slant :foreground ,fg-inactive))) - `(flycheck-indicator-error ((,class :inherit modus-theme-bold :foreground ,red-active))) - `(flycheck-indicator-info ((,class :inherit modus-theme-bold :foreground ,blue-active))) - `(flycheck-indicator-running ((,class :inherit modus-theme-bold :foreground ,magenta-active))) - `(flycheck-indicator-success ((,class :inherit modus-theme-bold :foreground ,green-active))) - `(flycheck-indicator-warning ((,class :inherit modus-theme-bold :foreground ,yellow-active))) + `(flycheck-indicator-disabled ((,class :inherit modus-themes-slant :foreground ,fg-inactive))) + `(flycheck-indicator-error ((,class :inherit modus-themes-bold :foreground ,red-active))) + `(flycheck-indicator-info ((,class :inherit modus-themes-bold :foreground ,blue-active))) + `(flycheck-indicator-running ((,class :inherit modus-themes-bold :foreground ,magenta-active))) + `(flycheck-indicator-success ((,class :inherit modus-themes-bold :foreground ,green-active))) + `(flycheck-indicator-warning ((,class :inherit modus-themes-bold :foreground ,yellow-active))) ;;;;; flycheck-posframe `(flycheck-posframe-background-face ((,class :background ,bg-alt))) `(flycheck-posframe-border-face ((,class :inherit shadow))) `(flycheck-posframe-error-face ((,class :inherit bold :foreground ,red))) - `(flycheck-posframe-face ((,class :inherit modus-theme-slant :foreground ,fg-main))) + `(flycheck-posframe-face ((,class :inherit modus-themes-slant :foreground ,fg-main))) `(flycheck-posframe-info-face ((,class :inherit bold :foreground ,cyan))) `(flycheck-posframe-warning-face ((,class :inherit bold :foreground ,yellow))) ;;;;; flymake - `(flymake-error ((,class :inherit modus-theme-lang-error))) - `(flymake-note ((,class :inherit modus-theme-lang-note))) - `(flymake-warning ((,class :inherit modus-theme-lang-warning))) + `(flymake-error ((,class :inherit modus-themes-lang-error))) + `(flymake-note ((,class :inherit modus-themes-lang-note))) + `(flymake-warning ((,class :inherit modus-themes-lang-warning))) ;;;;; flyspell - `(flyspell-duplicate ((,class :inherit modus-theme-lang-warning))) - `(flyspell-incorrect ((,class :inherit modus-theme-lang-error))) + `(flyspell-duplicate ((,class :inherit modus-themes-lang-warning))) + `(flyspell-incorrect ((,class :inherit modus-themes-lang-error))) ;;;;; flyspell-correct - `(flyspell-correct-highlight-face ((,class :inherit modus-theme-refine-green))) + `(flyspell-correct-highlight-face ((,class :inherit modus-themes-refine-green))) ;;;;; flx `(flx-highlight-face ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-magenta - 'modus-theme-intense-magenta - 'modus-theme-nuanced-magenta + 'modus-themes-subtle-magenta + 'modus-themes-intense-magenta + 'modus-themes-nuanced-magenta magenta-alt 'bold)))) ;;;;; freeze-it `(freeze-it-show ((,class :background ,bg-dim :foreground ,fg-special-warm))) ;;;;; frog-menu - `(frog-menu-action-keybinding-face ((,class :foreground ,blue-alt-other))) + `(frog-menu-action-keybinding-face ((,class :inherit modus-themes-key-binding))) `(frog-menu-actions-face ((,class :foreground ,magenta))) `(frog-menu-border ((,class :background ,bg-active))) `(frog-menu-candidates-face ((,class :foreground ,fg-main))) @@ -4170,27 +4316,27 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; focus `(focus-unfocused ((,class :foreground ,fg-unfocused))) ;;;;; fold-this - `(fold-this-overlay ((,class :inherit modus-theme-special-mild))) + `(fold-this-overlay ((,class :inherit modus-themes-special-mild))) ;;;;; font-lock - `(font-lock-builtin-face ((,class :inherit modus-theme-bold + `(font-lock-builtin-face ((,class :inherit modus-themes-bold ,@(modus-themes--syntax-extra magenta-alt magenta-alt-faint blue-alt)))) `(font-lock-comment-delimiter-face ((,class :inherit font-lock-comment-face))) - `(font-lock-comment-face ((,class :inherit modus-theme-slant + `(font-lock-comment-face ((,class :inherit modus-themes-slant ,@(modus-themes--syntax-comment fg-alt fg-comment-yellow)))) `(font-lock-constant-face ((,class ,@(modus-themes--syntax-extra blue-alt-other blue-alt-other-faint magenta-alt-other)))) - `(font-lock-doc-face ((,class :inherit modus-theme-slant + `(font-lock-doc-face ((,class :inherit modus-themes-slant ,@(modus-themes--syntax-docstring fg-docstring green-alt-other-faint green-alt-other-faint magenta-nuanced-fg)))) `(font-lock-function-name-face ((,class ,@(modus-themes--syntax-extra magenta magenta-faint magenta-alt)))) - `(font-lock-keyword-face ((,class :inherit modus-theme-bold + `(font-lock-keyword-face ((,class :inherit modus-themes-bold ,@(modus-themes--syntax-extra magenta-alt-other magenta-alt-other-faint cyan-alt-other)))) - `(font-lock-negation-char-face ((,class :inherit modus-theme-bold + `(font-lock-negation-char-face ((,class :inherit modus-themes-bold ,@(modus-themes--syntax-foreground yellow yellow-faint)))) `(font-lock-preprocessor-face ((,class ,@(modus-themes--syntax-foreground @@ -4205,12 +4351,12 @@ by virtue of calling either of `modus-themes-load-operandi' and red magenta-alt)))) `(font-lock-string-face ((,class ,@(modus-themes--syntax-string blue-alt blue-alt-faint green green-alt)))) - `(font-lock-type-face ((,class :inherit modus-theme-bold + `(font-lock-type-face ((,class :inherit modus-themes-bold ,@(modus-themes--syntax-extra cyan-alt-other cyan-alt-faint cyan-alt)))) `(font-lock-variable-name-face ((,class ,@(modus-themes--syntax-extra cyan cyan-faint blue-alt-faint)))) - `(font-lock-warning-face ((,class :inherit modus-theme-bold + `(font-lock-warning-face ((,class :inherit modus-themes-bold ,@(modus-themes--syntax-foreground yellow-active yellow-alt-faint)))) ;;;;; forge @@ -4219,26 +4365,26 @@ by virtue of calling either of `modus-themes-load-operandi' and `(forge-topic-closed ((,class :inherit shadow))) `(forge-topic-merged ((,class :inherit shadow))) `(forge-topic-open ((,class :foreground ,fg-special-mild))) - `(forge-topic-unmerged ((,class :inherit modus-theme-slant :foreground ,magenta))) + `(forge-topic-unmerged ((,class :inherit modus-themes-slant :foreground ,magenta))) `(forge-topic-unread ((,class :inherit bold :foreground ,fg-main))) ;;;;; fountain-mode `(fountain-character ((,class :foreground ,blue-alt-other))) - `(fountain-comment ((,class :inherit modus-theme-slant :foreground ,fg-alt))) + `(fountain-comment ((,class :inherit modus-themes-slant :foreground ,fg-alt))) `(fountain-dialog ((,class :foreground ,blue-alt))) `(fountain-metadata-key ((,class :foreground ,green-alt-other))) `(fountain-metadata-value ((,class :foreground ,blue))) `(fountain-non-printing ((,class :inherit shadow))) - `(fountain-note ((,class :inherit modus-theme-slant :foreground ,yellow))) + `(fountain-note ((,class :inherit modus-themes-slant :foreground ,yellow))) `(fountain-page-break ((,class :inherit bold :foreground ,red-alt))) `(fountain-page-number ((,class :inherit bold :foreground ,red-alt-other))) `(fountain-paren ((,class :foreground ,cyan))) `(fountain-scene-heading ((,class :inherit bold :foreground ,blue-nuanced-fg))) - `(fountain-section-heading ((,class :inherit modus-theme-heading-1))) - `(fountain-section-heading-1 ((,class :inherit modus-theme-heading-1))) - `(fountain-section-heading-2 ((,class :inherit modus-theme-heading-2))) - `(fountain-section-heading-3 ((,class :inherit modus-theme-heading-3))) - `(fountain-section-heading-4 ((,class :inherit modus-theme-heading-4))) - `(fountain-section-heading-5 ((,class :inherit modus-theme-heading-5))) + `(fountain-section-heading ((,class :inherit modus-themes-heading-1))) + `(fountain-section-heading-1 ((,class :inherit modus-themes-heading-1))) + `(fountain-section-heading-2 ((,class :inherit modus-themes-heading-2))) + `(fountain-section-heading-3 ((,class :inherit modus-themes-heading-3))) + `(fountain-section-heading-4 ((,class :inherit modus-themes-heading-4))) + `(fountain-section-heading-5 ((,class :inherit modus-themes-heading-5))) `(fountain-synopsis ((,class :foreground ,cyan-alt))) `(fountain-trans ((,class :foreground ,yellow-alt-other))) ;;;;; geiser @@ -4255,40 +4401,40 @@ by virtue of calling either of `modus-themes-load-operandi' and `(geiser-font-lock-xref-link ((,class :inherit button))) ;;;;; git-commit `(git-commit-comment-action ((,class :inherit font-lock-comment-face))) - `(git-commit-comment-branch-local ((,class :inherit modus-theme-slant :foreground ,blue-alt))) - `(git-commit-comment-branch-remote ((,class :inherit modus-theme-slant :foreground ,magenta-alt))) - `(git-commit-comment-detached ((,class :inherit modus-theme-slant :foreground ,cyan-alt))) - `(git-commit-comment-file ((,class :inherit modus-theme-slant + `(git-commit-comment-branch-local ((,class :inherit modus-themes-slant :foreground ,blue-alt))) + `(git-commit-comment-branch-remote ((,class :inherit modus-themes-slant :foreground ,magenta-alt))) + `(git-commit-comment-detached ((,class :inherit modus-themes-slant :foreground ,cyan-alt))) + `(git-commit-comment-file ((,class :inherit modus-themes-slant ,@(modus-themes--syntax-comment fg-special-cold red-nuanced-fg)))) - `(git-commit-comment-heading ((,class :inherit (bold modus-theme-slant) + `(git-commit-comment-heading ((,class :inherit (bold modus-themes-slant) ,@(modus-themes--syntax-comment fg-dim fg-special-warm)))) `(git-commit-keyword ((,class :foreground ,magenta))) `(git-commit-known-pseudo-header ((,class :foreground ,cyan-alt-other))) - `(git-commit-nonempty-second-line ((,class :inherit modus-theme-refine-yellow))) - `(git-commit-overlong-summary ((,class :inherit modus-theme-refine-yellow))) + `(git-commit-nonempty-second-line ((,class :inherit modus-themes-refine-yellow))) + `(git-commit-overlong-summary ((,class :inherit modus-themes-refine-yellow))) `(git-commit-pseudo-header ((,class :foreground ,blue))) `(git-commit-summary ((,class :inherit bold :foreground ,cyan))) ;;;;; git-gutter - `(git-gutter:added ((,class :inherit modus-theme-fringe-green))) - `(git-gutter:deleted ((,class :inherit modus-theme-fringe-red))) - `(git-gutter:modified ((,class :inherit modus-theme-fringe-yellow))) - `(git-gutter:separator ((,class :inherit modus-theme-fringe-cyan))) - `(git-gutter:unchanged ((,class :inherit modus-theme-fringe-magenta))) + `(git-gutter:added ((,class :inherit modus-themes-fringe-green))) + `(git-gutter:deleted ((,class :inherit modus-themes-fringe-red))) + `(git-gutter:modified ((,class :inherit modus-themes-fringe-yellow))) + `(git-gutter:separator ((,class :inherit modus-themes-fringe-cyan))) + `(git-gutter:unchanged ((,class :inherit modus-themes-fringe-magenta))) ;;;;; git-gutter-fr - `(git-gutter-fr:added ((,class :inherit modus-theme-fringe-green))) - `(git-gutter-fr:deleted ((,class :inherit modus-theme-fringe-red))) - `(git-gutter-fr:modified ((,class :inherit modus-theme-fringe-yellow))) + `(git-gutter-fr:added ((,class :inherit modus-themes-fringe-green))) + `(git-gutter-fr:deleted ((,class :inherit modus-themes-fringe-red))) + `(git-gutter-fr:modified ((,class :inherit modus-themes-fringe-yellow))) ;;;;; git-{gutter,fringe}+ - `(git-gutter+-added ((,class :inherit modus-theme-fringe-green))) - `(git-gutter+-deleted ((,class :inherit modus-theme-fringe-red))) - `(git-gutter+-modified ((,class :inherit modus-theme-fringe-yellow))) - `(git-gutter+-separator ((,class :inherit modus-theme-fringe-cyan))) - `(git-gutter+-unchanged ((,class :inherit modus-theme-fringe-magenta))) - `(git-gutter-fr+-added ((,class :inherit modus-theme-fringe-green))) - `(git-gutter-fr+-deleted ((,class :inherit modus-theme-fringe-red))) - `(git-gutter-fr+-modified ((,class :inherit modus-theme-fringe-yellow))) + `(git-gutter+-added ((,class :inherit modus-themes-fringe-green))) + `(git-gutter+-deleted ((,class :inherit modus-themes-fringe-red))) + `(git-gutter+-modified ((,class :inherit modus-themes-fringe-yellow))) + `(git-gutter+-separator ((,class :inherit modus-themes-fringe-cyan))) + `(git-gutter+-unchanged ((,class :inherit modus-themes-fringe-magenta))) + `(git-gutter-fr+-added ((,class :inherit modus-themes-fringe-green))) + `(git-gutter-fr+-deleted ((,class :inherit modus-themes-fringe-red))) + `(git-gutter-fr+-modified ((,class :inherit modus-themes-fringe-yellow))) ;;;;; git-lens `(git-lens-added ((,class :inherit bold :foreground ,green))) `(git-lens-deleted ((,class :inherit bold :foreground ,red))) @@ -4296,10 +4442,10 @@ by virtue of calling either of `modus-themes-load-operandi' and `(git-lens-modified ((,class :inherit bold :foreground ,yellow))) `(git-lens-renamed ((,class :inherit bold :foreground ,magenta))) ;;;;; git-rebase - `(git-rebase-comment-hash ((,class :inherit modus-theme-slant + `(git-rebase-comment-hash ((,class :inherit modus-themes-slant ,@(modus-themes--syntax-comment fg-special-cold red-nuanced-fg)))) - `(git-rebase-comment-heading ((,class :inherit (bold modus-theme-slant) + `(git-rebase-comment-heading ((,class :inherit (bold modus-themes-slant) ,@(modus-themes--syntax-comment fg-dim fg-special-warm)))) `(git-rebase-description ((,class :foreground ,fg-main))) @@ -4328,7 +4474,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(gnus-cite-attribution ((,class :inherit italic :foreground ,fg-main))) `(gnus-emphasis-bold ((,class :inherit bold))) `(gnus-emphasis-bold-italic ((,class :inherit bold-italic))) - `(gnus-emphasis-highlight-words ((,class :inherit modus-theme-refine-yellow))) + `(gnus-emphasis-highlight-words ((,class :inherit modus-themes-refine-yellow))) `(gnus-emphasis-italic ((,class :inherit italic))) `(gnus-emphasis-underline-bold ((,class :inherit gnus-emphasis-bold :underline t))) `(gnus-emphasis-underline-bold-italic ((,class :inherit gnus-emphasis-bold-italic :underline t))) @@ -4363,13 +4509,13 @@ by virtue of calling either of `modus-themes-load-operandi' and `(gnus-server-agent ((,class :inherit bold :foreground ,cyan))) `(gnus-server-closed ((,class :inherit bold :foreground ,magenta))) `(gnus-server-cloud ((,class :inherit bold :foreground ,cyan-alt))) - `(gnus-server-cloud-host ((,class :inherit modus-theme-refine-cyan))) + `(gnus-server-cloud-host ((,class :inherit modus-themes-refine-cyan))) `(gnus-server-denied ((,class :inherit bold :foreground ,red))) `(gnus-server-offline ((,class :inherit bold :foreground ,yellow))) `(gnus-server-opened ((,class :inherit bold :foreground ,green))) `(gnus-signature ((,class :inherit italic :foreground ,fg-special-cold))) `(gnus-splash ((,class :inherit shadow))) - `(gnus-summary-cancelled ((,class :inherit modus-theme-mark-alt))) + `(gnus-summary-cancelled ((,class :inherit modus-themes-mark-alt :extend t))) `(gnus-summary-high-ancient ((,class :inherit bold :foreground ,fg-alt))) `(gnus-summary-high-read ((,class :inherit bold :foreground ,fg-special-cold))) `(gnus-summary-high-ticked ((,class :inherit bold :foreground ,red-alt-other))) @@ -4385,11 +4531,11 @@ by virtue of calling either of `modus-themes-load-operandi' and `(gnus-summary-normal-ticked ((,class :foreground ,red-alt-other))) `(gnus-summary-normal-undownloaded ((,class :foreground ,yellow))) `(gnus-summary-normal-unread ((,class :foreground ,fg-main))) - `(gnus-summary-selected ((,class :inherit modus-theme-subtle-blue))) + `(gnus-summary-selected ((,class :inherit modus-themes-subtle-blue :extend t))) ;;;;; golden-ratio-scroll-screen `(golden-ratio-scroll-highlight-line-face ((,class :background ,cyan-subtle-bg :foreground ,fg-main))) ;;;;; helm - `(helm-M-x-key ((,class :inherit bold :foreground ,magenta-alt-other))) + `(helm-M-x-key ((,class :inherit modus-themes-key-binding))) `(helm-action ((,class :underline t))) `(helm-bookmark-addressbook ((,class :foreground ,green-alt))) `(helm-bookmark-directory ((,class :inherit bold :foreground ,blue))) @@ -4418,9 +4564,9 @@ by virtue of calling either of `modus-themes-load-operandi' and `(helm-etags-file ((,class :foreground ,fg-dim :underline t))) `(helm-ff-backup-file ((,class :inherit shadow))) `(helm-ff-denied ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-red - 'modus-theme-intense-red - 'modus-theme-nuanced-red + 'modus-themes-subtle-red + 'modus-themes-intense-red + 'modus-themes-nuanced-red red)))) `(helm-ff-directory ((,class :inherit helm-buffer-directory))) `(helm-ff-dirs ((,class :inherit bold :foreground ,blue-alt-other))) @@ -4433,20 +4579,20 @@ by virtue of calling either of `modus-themes-load-operandi' and ,@(modus-themes--link-color red red-faint)))) `(helm-ff-pipe ((,class ,@(modus-themes--extra-completions - 'modus-theme-refine-magenta - 'modus-theme-subtle-magenta - 'modus-theme-nuanced-magenta + 'modus-themes-refine-magenta + 'modus-themes-subtle-magenta + 'modus-themes-nuanced-magenta magenta)))) `(helm-ff-prefix ((,class ,@(modus-themes--extra-completions - 'modus-theme-refine-yellow - 'modus-theme-subtle-yellow - 'modus-theme-nuanced-yellow + 'modus-themes-refine-yellow + 'modus-themes-subtle-yellow + 'modus-themes-nuanced-yellow yellow-alt-other)))) `(helm-ff-socket ((,class :foreground ,red-alt-other))) `(helm-ff-suid ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-red - 'modus-theme-refine-red - 'modus-theme-nuanced-yellow + 'modus-themes-subtle-red + 'modus-themes-refine-red + 'modus-themes-nuanced-yellow red-alt)))) `(helm-ff-symlink ((,class :inherit button ,@(modus-themes--link-color @@ -4457,59 +4603,59 @@ by virtue of calling either of `modus-themes-load-operandi' and `(helm-grep-file ((,class :inherit bold :foreground ,fg-special-cold))) `(helm-grep-finish ((,class :foreground ,green-active))) `(helm-grep-lineno ((,class :foreground ,fg-special-warm))) - `(helm-grep-match ((,class :inherit modus-theme-special-calm))) + `(helm-grep-match ((,class :inherit modus-themes-special-calm))) `(helm-header ((,class :inherit bold :foreground ,fg-special-cold))) `(helm-header-line-left-margin ((,class :inherit bold :foreground ,yellow-intense))) `(helm-history-deleted ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-red - 'modus-theme-intense-red - 'modus-theme-nuanced-red + 'modus-themes-subtle-red + 'modus-themes-intense-red + 'modus-themes-nuanced-red red 'bold)))) `(helm-history-remote ((,class :foreground ,red-alt-other))) `(helm-lisp-completion-info ((,class :foreground ,fg-special-warm))) `(helm-lisp-show-completion ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-yellow - 'modus-theme-refine-yellow - 'modus-theme-nuanced-yellow + 'modus-themes-subtle-yellow + 'modus-themes-refine-yellow + 'modus-themes-nuanced-yellow yellow 'bold)))) `(helm-locate-finish ((,class :foreground ,green-active))) `(helm-match ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-cyan - 'modus-theme-refine-cyan - 'modus-theme-nuanced-cyan + 'modus-themes-subtle-cyan + 'modus-themes-refine-cyan + 'modus-themes-nuanced-cyan cyan 'bold)))) `(helm-match-item ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-neutral - 'modus-theme-subtle-cyan - 'modus-theme-nuanced-cyan + 'modus-themes-subtle-neutral + 'modus-themes-subtle-cyan + 'modus-themes-nuanced-cyan cyan-alt-other)))) `(helm-minibuffer-prompt ((,class :inherit minibuffer-prompt))) `(helm-moccur-buffer ((,class :inherit button ,@(modus-themes--link-color cyan-alt-other cyan-alt-other-faint)))) `(helm-mode-prefix ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-magenta - 'modus-theme-intense-magenta - 'modus-theme-nuanced-magenta + 'modus-themes-subtle-magenta + 'modus-themes-intense-magenta + 'modus-themes-nuanced-magenta magenta-alt 'bold)))) `(helm-non-file-buffer ((,class :inherit shadow))) `(helm-prefarg ((,class :foreground ,red-active))) `(helm-resume-need-update ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-magenta - 'modus-theme-refine-magenta - 'modus-theme-nuanced-magenta + 'modus-themes-subtle-magenta + 'modus-themes-refine-magenta + 'modus-themes-nuanced-magenta magenta-alt-other)))) `(helm-selection ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-blue - 'modus-theme-refine-blue - 'modus-theme-special-cold + 'modus-themes-subtle-blue + 'modus-themes-refine-blue + 'modus-themes-special-cold nil 'bold)))) - `(helm-selection-line ((,class :inherit modus-theme-special-cold))) + `(helm-selection-line ((,class :inherit modus-themes-special-cold))) `(helm-separator ((,class :foreground ,fg-special-mild))) `(helm-time-zone-current ((,class :foreground ,green))) `(helm-time-zone-home ((,class :foreground ,magenta))) @@ -4517,7 +4663,7 @@ by virtue of calling either of `modus-themes-load-operandi' and ,@(modus-themes--scale modus-themes-scale-4)))) `(helm-top-columns ((,class :inherit helm-header))) `(helm-ucs-char ((,class :foreground ,yellow-alt-other))) - `(helm-visible-mark ((,class :inherit modus-theme-subtle-cyan))) + `(helm-visible-mark ((,class :inherit modus-themes-subtle-cyan))) ;;;;; helm-ls-git `(helm-ls-git-added-copied-face ((,class :foreground ,green-intense))) `(helm-ls-git-added-modified-face ((,class :foreground ,yellow-intense))) @@ -4530,16 +4676,16 @@ by virtue of calling either of `modus-themes-load-operandi' and `(helm-ls-git-untracked-face ((,class :foreground ,fg-special-cold))) ;;;;; helm-switch-shell `(helm-switch-shell-new-shell-face ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-magenta - 'modus-theme-refine-magenta - 'modus-theme-nuanced-magenta + 'modus-themes-subtle-magenta + 'modus-themes-refine-magenta + 'modus-themes-nuanced-magenta magenta-alt-other 'bold)))) ;;;;; helm-xref `(helm-xref-file-name ((,class :inherit bold :foreground ,fg-special-cold))) `(helm-xref-file-name ((,class :foreground ,fg-special-warm))) ;;;;; helpful - `(helpful-heading ((,class :inherit modus-theme-heading-1))) + `(helpful-heading ((,class :inherit modus-themes-heading-1))) ;;;;; highlight region or ad-hoc regexp `(hi-aquamarine ((,class :background ,cyan-subtle-bg :foreground ,fg-main))) `(hi-black-b ((,class :inherit bold :background ,fg-main :foreground ,bg-main))) @@ -4553,10 +4699,11 @@ by virtue of calling either of `modus-themes-load-operandi' and `(hi-red-b ((,class :inherit bold :background ,red-intense-bg :foreground ,fg-main))) `(hi-salmon ((,class :background ,red-subtle-bg :foreground ,fg-main))) `(hi-yellow ((,class :background ,yellow-subtle-bg :foreground ,fg-main))) - `(highlight ((,class :inherit modus-theme-subtle-blue))) - `(highlight-changes ((,class :foreground ,yellow-alt-other))) - `(highlight-changes-delete ((,class :foreground ,red-alt-other :underline t))) - `(hl-line ((,class :inherit modus-theme-hl-line))) + `(highlight ((,class :inherit modus-themes-subtle-blue))) + `(highlight-changes ((,class :foreground ,red-alt :underline nil))) + `(highlight-changes-delete ((,class :background ,red-nuanced-bg + :foreground ,red :underline t))) + `(hl-line ((,class :inherit modus-themes-hl-line))) ;;;;; highlight-blocks `(highlight-blocks-depth-1-face ((,class :background ,bg-dim :foreground ,fg-main))) `(highlight-blocks-depth-2-face ((,class :background ,bg-alt :foreground ,fg-main))) @@ -4578,12 +4725,12 @@ by virtue of calling either of `modus-themes-load-operandi' and `(hes-escape-backslash-face ((,class :inherit bold :foreground ,fg-escape-char-construct))) `(hes-escape-sequence-face ((,class :inherit bold :foreground ,fg-escape-char-backslash))) ;;;;; highlight-indentation - `(highlight-indentation-face ((,class :inherit modus-theme-hl-line))) + `(highlight-indentation-face ((,class :inherit modus-themes-hl-line))) `(highlight-indentation-current-column-face ((,class :background ,bg-active))) ;;;;; highlight-numbers `(highlight-numbers-number ((,class :foreground ,blue-alt-other))) ;;;;; highlight-symbol - `(highlight-symbol-face ((,class :inherit modus-theme-special-mild))) + `(highlight-symbol-face ((,class :inherit modus-themes-special-mild))) ;;;;; highlight-thing `(highlight-thing ((,class :background ,bg-alt :foreground ,cyan))) ;;;;; hl-defined @@ -4593,7 +4740,7 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; hl-fill-column `(hl-fill-column-face ((,class :background ,bg-active :foreground ,fg-active))) ;;;;; hl-todo - `(hl-todo ((,class :inherit (bold modus-theme-slant) :foreground ,red-alt-other))) + `(hl-todo ((,class :inherit (bold modus-themes-slant) :foreground ,red-alt-other))) ;;;;; hydra `(hydra-face-amaranth ((,class :inherit bold :foreground ,yellow))) `(hydra-face-blue ((,class :inherit bold :foreground ,blue-alt))) @@ -4623,7 +4770,7 @@ by virtue of calling either of `modus-themes-load-operandi' and magenta bg-alt bg-active fg-main)))) `(ido-incomplete-regexp ((,class :inherit error))) - `(ido-indicator ((,class :inherit modus-theme-subtle-yellow))) + `(ido-indicator ((,class :inherit modus-themes-subtle-yellow))) `(ido-only-match ((,class :inherit bold ,@(modus-themes--standard-completions green green-nuanced-bg @@ -4631,8 +4778,8 @@ by virtue of calling either of `modus-themes-load-operandi' and `(ido-subdir ((,class :foreground ,blue))) `(ido-virtual ((,class :foreground ,fg-special-warm))) ;;;;; iedit - `(iedit-occurrence ((,class :inherit modus-theme-refine-blue))) - `(iedit-read-only-occurrence ((,class :inherit modus-theme-intense-yellow))) + `(iedit-occurrence ((,class :inherit modus-themes-refine-blue))) + `(iedit-read-only-occurrence ((,class :inherit modus-themes-intense-yellow))) ;;;;; iflipb `(iflipb-current-buffer-face ((,class :inherit bold :foreground ,cyan-alt))) `(iflipb-other-buffer-face ((,class :inherit shadow))) @@ -4648,10 +4795,10 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; indium `(indium-breakpoint-face ((,class :foreground ,red-active))) `(indium-frame-url-face ((,class :inherit button :foreground ,fg-alt))) - `(indium-keyword-face ((,class :foreground ,magenta-alt-other))) - `(indium-litable-face ((,class :inherit modus-theme-slant :foreground ,fg-special-warm))) - `(indium-repl-error-face ((,class :inherit bold :foreground ,red))) - `(indium-repl-prompt-face ((,class :foreground ,cyan-alt-other))) + `(indium-keyword-face ((,class :inherit font-lock-keyword-face))) + `(indium-litable-face ((,class :inherit modus-themes-slant :foreground ,fg-special-warm))) + `(indium-repl-error-face ((,class :inherit error))) + `(indium-repl-prompt-face ((,class :inherit comint-highlight-prompt))) `(indium-repl-stdout-face ((,class :foreground ,fg-main))) ;;;;; info `(Info-quoted ((,class ,@(modus-themes--mixed-fonts) ; the capitalization is canonical @@ -4659,16 +4806,16 @@ by virtue of calling either of `modus-themes-load-operandi' and `(info-header-node ((,class :inherit bold :foreground ,fg-alt))) `(info-header-xref ((,class :foreground ,blue-active))) `(info-index-match ((,class :inherit match))) - `(info-menu-header ((,class :inherit modus-theme-heading-3))) + `(info-menu-header ((,class :inherit modus-themes-heading-3))) `(info-menu-star ((,class :foreground ,red))) `(info-node ((,class :inherit bold))) - `(info-title-1 ((,class :inherit modus-theme-heading-1))) - `(info-title-2 ((,class :inherit modus-theme-heading-2))) - `(info-title-3 ((,class :inherit modus-theme-heading-3))) - `(info-title-4 ((,class :inherit modus-theme-heading-4))) + `(info-title-1 ((,class :inherit modus-themes-heading-1))) + `(info-title-2 ((,class :inherit modus-themes-heading-2))) + `(info-title-3 ((,class :inherit modus-themes-heading-3))) + `(info-title-4 ((,class :inherit modus-themes-heading-4))) ;;;;; info-colors `(info-colors-lisp-code-block ((,class :inherit fixed-pitch))) - `(info-colors-ref-item-command ((,class :foreground ,magenta))) + `(info-colors-ref-item-command ((,class :inherit font-lock-function-name-face))) `(info-colors-ref-item-constant ((,class :inherit font-lock-constant-face))) `(info-colors-ref-item-function ((,class :inherit font-lock-function-name-face))) `(info-colors-ref-item-macro ((,class :inherit font-lock-keyword-face))) @@ -4688,35 +4835,35 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; ioccur `(ioccur-cursor ((,class :foreground ,fg-main))) `(ioccur-invalid-regexp ((,class :foreground ,red))) - `(ioccur-match-face ((,class :inherit modus-theme-special-calm))) - `(ioccur-match-overlay-face ((,class :inherit modus-theme-special-cold :extend t))) + `(ioccur-match-face ((,class :inherit modus-themes-special-calm))) + `(ioccur-match-overlay-face ((,class :inherit modus-themes-special-cold :extend t))) `(ioccur-num-line-face ((,class :foreground ,fg-special-warm))) - `(ioccur-overlay-face ((,class :inherit modus-theme-refine-blue :extend t))) - `(ioccur-regexp-face ((,class :inherit (modus-theme-intense-magenta bold)))) + `(ioccur-overlay-face ((,class :inherit modus-themes-refine-blue :extend t))) + `(ioccur-regexp-face ((,class :inherit (modus-themes-intense-magenta bold)))) `(ioccur-title-face ((,class :inherit bold :foreground ,red-alt ,@(modus-themes--scale modus-themes-scale-4)))) ;;;;; isearch, occur, and the like - `(isearch ((,class :inherit (modus-theme-intense-green bold)))) - `(isearch-fail ((,class :inherit modus-theme-refine-red))) - `(isearch-group-1 ((,class :inherit modus-theme-intense-blue))) - `(isearch-group-2 ((,class :inherit modus-theme-intense-magenta))) - `(lazy-highlight ((,class :inherit modus-theme-refine-cyan))) - `(match ((,class :inherit modus-theme-special-calm))) - `(query-replace ((,class :inherit (modus-theme-intense-yellow bold)))) + `(isearch ((,class :inherit (modus-themes-intense-green bold)))) + `(isearch-fail ((,class :inherit modus-themes-refine-red))) + `(isearch-group-1 ((,class :inherit modus-themes-intense-blue))) + `(isearch-group-2 ((,class :inherit modus-themes-intense-magenta))) + `(lazy-highlight ((,class :inherit modus-themes-refine-cyan))) + `(match ((,class :inherit modus-themes-special-calm))) + `(query-replace ((,class :inherit (modus-themes-intense-yellow bold)))) ;;;;; isl (isearch-light) - `(isl-line ((,class :inherit modus-theme-subtle-green))) - `(isl-match ((,class :inherit modus-theme-refine-cyan))) - `(isl-number ((,class :inherit modus-theme-bold :foreground ,green-active))) - `(isl-on ((,class :inherit (bold modus-theme-intense-green)))) - `(isl-string ((,class :inherit modus-theme-bold :foreground ,cyan-active))) + `(isl-line ((,class :inherit modus-themes-subtle-green))) + `(isl-match ((,class :inherit modus-themes-refine-cyan))) + `(isl-number ((,class :inherit modus-themes-bold :foreground ,green-active))) + `(isl-on ((,class :inherit (bold modus-themes-intense-green)))) + `(isl-string ((,class :inherit modus-themes-bold :foreground ,cyan-active))) ;;;;; ivy `(ivy-action ((,class :inherit bold :foreground ,red-alt))) `(ivy-completions-annotations ((,class :inherit completions-annotations))) `(ivy-confirm-face ((,class :foreground ,cyan))) `(ivy-current-match ((,class ,@(modus-themes--extra-completions - 'modus-theme-refine-cyan - 'modus-theme-intense-cyan - 'modus-theme-special-cold + 'modus-themes-refine-cyan + 'modus-themes-intense-cyan + 'modus-themes-special-cold nil 'bold)))) `(ivy-cursor ((,class :background ,fg-main :foreground ,bg-main))) @@ -4725,36 +4872,36 @@ by virtue of calling either of `modus-themes-load-operandi' and `(ivy-highlight-face ((,class :foreground ,magenta))) `(ivy-match-required-face ((,class :inherit error))) `(ivy-minibuffer-match-face-1 ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-neutral - 'modus-theme-intense-neutral - 'modus-theme-nuanced-cyan + 'modus-themes-subtle-neutral + 'modus-themes-intense-neutral + 'modus-themes-nuanced-cyan fg-alt)))) `(ivy-minibuffer-match-face-2 ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-green - 'modus-theme-refine-green - 'modus-theme-nuanced-green + 'modus-themes-subtle-green + 'modus-themes-refine-green + 'modus-themes-nuanced-green green-alt-other 'bold)))) `(ivy-minibuffer-match-face-3 ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-blue - 'modus-theme-refine-blue - 'modus-theme-nuanced-blue + 'modus-themes-subtle-blue + 'modus-themes-refine-blue + 'modus-themes-nuanced-blue blue-alt-other 'bold)))) `(ivy-minibuffer-match-face-4 ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-magenta - 'modus-theme-refine-magenta - 'modus-theme-nuanced-magenta + 'modus-themes-subtle-magenta + 'modus-themes-refine-magenta + 'modus-themes-nuanced-magenta magenta-alt-other 'bold)))) `(ivy-minibuffer-match-highlight ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-cyan - 'modus-theme-intense-cyan - 'modus-theme-nuanced-cyan + 'modus-themes-subtle-cyan + 'modus-themes-intense-cyan + 'modus-themes-nuanced-cyan cyan-alt-other 'bold)))) - `(ivy-modified-buffer ((,class :inherit modus-theme-slant :foreground ,yellow))) - `(ivy-modified-outside-buffer ((,class :inherit modus-theme-slant :foreground ,yellow-alt))) + `(ivy-modified-buffer ((,class :inherit modus-themes-slant :foreground ,yellow))) + `(ivy-modified-outside-buffer ((,class :inherit modus-themes-slant :foreground ,yellow-alt))) `(ivy-org ((,class :foreground ,cyan-alt-other))) `(ivy-prompt-match ((,class :inherit ivy-current-match))) `(ivy-remote ((,class :foreground ,magenta))) @@ -4762,9 +4909,9 @@ by virtue of calling either of `modus-themes-load-operandi' and `(ivy-subdir ((,class :foreground ,blue-alt-other))) `(ivy-virtual ((,class :foreground ,magenta-alt-other))) `(ivy-yanked-word ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-blue - 'modus-theme-refine-blue - 'modus-theme-nuanced-blue + 'modus-themes-subtle-blue + 'modus-themes-refine-blue + 'modus-themes-nuanced-blue blue-alt)))) ;;;;; ivy-posframe `(ivy-posframe ((,class :background ,bg-dim :foreground ,fg-main))) @@ -4773,55 +4920,51 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; jira (org-jira) `(jiralib-comment-face ((,class :background ,bg-alt))) `(jiralib-comment-header-face ((,class :inherit bold))) - `(jiralib-issue-info-face ((,class :inherit modus-theme-special-warm))) - `(jiralib-issue-info-header-face ((,class :inherit (modus-theme-special-warm bold)))) + `(jiralib-issue-info-face ((,class :inherit modus-themes-special-warm))) + `(jiralib-issue-info-header-face ((,class :inherit (modus-themes-special-warm bold)))) `(jiralib-issue-summary-face ((,class :inherit bold))) `(jiralib-link-filter-face ((,class :underline t))) `(jiralib-link-issue-face ((,class :underline t))) `(jiralib-link-project-face ((,class :underline t))) ;;;;; journalctl-mode - `(journalctl-error-face ((,class :inherit bold :foreground ,red))) - `(journalctl-finished-face ((,class :inherit bold :foreground ,green))) + `(journalctl-error-face ((,class :inherit error))) + `(journalctl-finished-face ((,class :inherit success))) `(journalctl-host-face ((,class :foreground ,blue))) `(journalctl-process-face ((,class :foreground ,cyan-alt-other))) `(journalctl-starting-face ((,class :foreground ,green))) `(journalctl-timestamp-face ((,class :foreground ,fg-special-cold))) - `(journalctl-warning-face ((,class :inherit bold :foreground ,yellow))) + `(journalctl-warning-face ((,class :inherit warning))) ;;;;; js2-mode - `(js2-error ((,class :foreground ,red))) - `(js2-external-variable ((,class :foreground ,cyan-alt-other))) - `(js2-function-call ((,class :foreground ,magenta))) - `(js2-function-param ((,class :foreground ,blue))) - `(js2-instance-member ((,class :foreground ,magenta-alt-other))) + `(js2-error ((,class :inherit modus-themes-lang-error))) + `(js2-external-variable ((,class :inherit font-lock-variable-name-face))) + `(js2-function-call ((,class :inherit font-lock-function-name-face))) + `(js2-function-param ((,class :inherit font-lock-constant-face))) + `(js2-instance-member ((,class :inherit font-lock-keyword-face))) `(js2-jsdoc-html-tag-delimiter ((,class :foreground ,fg-main))) - `(js2-jsdoc-html-tag-name ((,class :foreground ,cyan))) - `(js2-jsdoc-tag ((,class :foreground ,fg-special-calm))) - `(js2-jsdoc-type ((,class :foreground ,fg-special-cold))) - `(js2-jsdoc-value ((,class :foreground ,fg-special-warm))) + `(js2-jsdoc-html-tag-name ((,class :inherit font-lock-function-name-face))) + `(js2-jsdoc-tag ((,class :inherit (font-lock-builtin-face font-lock-comment-face) :weight normal))) + `(js2-jsdoc-type ((,class :inherit (font-lock-type-face font-lock-comment-face) :weight normal))) + `(js2-jsdoc-value ((,class :inherit (font-lock-constant-face font-lock-comment-face) :weight normal))) `(js2-object-property ((,class :foreground ,fg-main))) `(js2-object-property-access ((,class :foreground ,fg-main))) - `(js2-private-function-call ((,class :foreground ,green-alt-other))) - `(js2-private-member ((,class :foreground ,fg-special-mild))) - `(js2-warning ((,class :foreground ,yellow-alt :underline t))) + `(js2-private-function-call ((,class :inherit font-lock-preprocessor-face))) + `(js2-private-member ((,class :inherit font-lock-warning-face))) + `(js2-warning ((,class :inherit modus-themes-lang-warning))) ;;;;; julia - `(julia-macro-face ((,class :inherit modus-theme-bold :foreground ,magenta))) - `(julia-quoted-symbol-face ((,class :foreground ,blue-alt-other))) + `(julia-macro-face ((,class :inherit font-lock-builtin-face))) + `(julia-quoted-symbol-face ((,class :inherit font-lock-constant-face))) ;;;;; jupyter `(jupyter-eval-overlay ((,class :inherit bold :foreground ,blue))) `(jupyter-repl-input-prompt ((,class :foreground ,cyan-alt-other))) `(jupyter-repl-output-prompt ((,class :foreground ,magenta-alt-other))) - `(jupyter-repl-traceback ((,class :inherit modus-theme-intense-red))) + `(jupyter-repl-traceback ((,class :inherit modus-themes-intense-red))) ;;;;; kaocha-runner `(kaocha-runner-error-face ((,class :foreground ,red))) `(kaocha-runner-success-face ((,class :foreground ,green))) `(kaocha-runner-warning-face ((,class :foreground ,yellow))) ;;;;; keycast `(keycast-command ((,class :inherit bold :foreground ,blue-active))) - `(keycast-key ((,class ,@(modus-themes--mode-line-attrs - bg-main blue-active - bg-main blue-active - blue-active blue-intense - 'alt-style -3)))) + `(keycast-key ((,class :background ,blue-active :foreground ,bg-main))) ;;;;; line numbers (display-line-numbers-mode and global variant) `(line-number ((,class :inherit default @@ -4844,27 +4987,24 @@ by virtue of calling either of `modus-themes-load-operandi' and fg-alt bg-inactive fg-inactive)))) ;;;;; lsp-mode - `(lsp-face-highlight-read ((,class :inherit modus-theme-subtle-blue :underline t))) - `(lsp-face-highlight-textual ((,class :inherit modus-theme-subtle-blue))) - `(lsp-face-highlight-write ((,class :inherit (modus-theme-refine-blue bold)))) + `(lsp-face-highlight-read ((,class :inherit modus-themes-subtle-blue :underline t))) + `(lsp-face-highlight-textual ((,class :inherit modus-themes-subtle-blue))) + `(lsp-face-highlight-write ((,class :inherit (modus-themes-refine-blue bold)))) `(lsp-face-semhl-constant ((,class :foreground ,blue-alt-other))) - `(lsp-face-semhl-deprecated - ((,(append '((supports :underline (:style wave))) class) - :foreground ,yellow :underline (:style wave)) - (,class :foreground ,yellow :underline t))) + `(lsp-face-semhl-deprecated ((,class :inherit modus-themes-lang-warning))) `(lsp-face-semhl-enummember ((,class :foreground ,blue-alt-other))) `(lsp-face-semhl-field ((,class :foreground ,cyan-alt))) - `(lsp-face-semhl-field-static ((,class :inherit modus-theme-slant :foreground ,cyan-alt))) + `(lsp-face-semhl-field-static ((,class :inherit modus-themes-slant :foreground ,cyan-alt))) `(lsp-face-semhl-function ((,class :foreground ,magenta))) `(lsp-face-semhl-method ((,class :foreground ,magenta))) - `(lsp-face-semhl-namespace ((,class :inherit modus-theme-bold :foreground ,magenta-alt))) + `(lsp-face-semhl-namespace ((,class :inherit modus-themes-bold :foreground ,magenta-alt))) `(lsp-face-semhl-preprocessor ((,class :foreground ,red-alt-other))) - `(lsp-face-semhl-static-method ((,class :inherit modus-theme-slant :foreground ,magenta))) + `(lsp-face-semhl-static-method ((,class :inherit modus-themes-slant :foreground ,magenta))) `(lsp-face-semhl-type-class ((,class :foreground ,magenta-alt))) `(lsp-face-semhl-type-enum ((,class :foreground ,magenta-alt))) - `(lsp-face-semhl-type-primitive ((,class :inherit modus-theme-slant :foreground ,magenta-alt))) - `(lsp-face-semhl-type-template ((,class :inherit modus-theme-slant :foreground ,magenta-alt))) - `(lsp-face-semhl-type-typedef ((,class :inherit modus-theme-slant :foreground ,magenta-alt))) + `(lsp-face-semhl-type-primitive ((,class :inherit modus-themes-slant :foreground ,magenta-alt))) + `(lsp-face-semhl-type-template ((,class :inherit modus-themes-slant :foreground ,magenta-alt))) + `(lsp-face-semhl-type-typedef ((,class :inherit modus-themes-slant :foreground ,magenta-alt))) `(lsp-face-semhl-variable ((,class :foreground ,cyan))) `(lsp-face-semhl-variable-local ((,class :foreground ,cyan))) `(lsp-face-semhl-variable-parameter ((,class :foreground ,cyan-alt-other))) @@ -4876,11 +5016,11 @@ by virtue of calling either of `modus-themes-load-operandi' and `(lsp-ui-peek-filename ((,class :foreground ,fg-special-warm))) `(lsp-ui-peek-footer ((,class :background ,bg-header :foreground ,fg-header))) `(lsp-ui-peek-header ((,class :background ,bg-header :foreground ,fg-header))) - `(lsp-ui-peek-highlight ((,class :inherit modus-theme-subtle-blue))) + `(lsp-ui-peek-highlight ((,class :inherit modus-themes-subtle-blue))) `(lsp-ui-peek-line-number ((,class :inherit shadow))) `(lsp-ui-peek-list ((,class :background ,bg-dim))) `(lsp-ui-peek-peek ((,class :background ,bg-alt))) - `(lsp-ui-peek-selection ((,class :inherit modus-theme-subtle-cyan))) + `(lsp-ui-peek-selection ((,class :inherit modus-themes-subtle-cyan))) `(lsp-ui-sideline-code-action ((,class :foreground ,yellow))) `(lsp-ui-sideline-current-symbol ((,class :inherit bold :height 0.99 :box (:line-width -1 :style nil) :foreground ,fg-main))) `(lsp-ui-sideline-symbol ((,class :inherit bold :height 0.99 :box (:line-width -1 :style nil) :foreground ,fg-alt))) @@ -4899,11 +5039,11 @@ by virtue of calling either of `modus-themes-load-operandi' and `(magit-bisect-good ((,class :foreground ,green-alt-other))) `(magit-bisect-skip ((,class :foreground ,yellow-alt-other))) `(magit-blame-date ((,class :foreground ,blue))) - `(magit-blame-dimmed ((,class :inherit shadow))) + `(magit-blame-dimmed ((,class :inherit (shadow modus-themes-reset-hard)))) `(magit-blame-hash ((,class :foreground ,fg-special-warm))) - `(magit-blame-heading ((,class :background ,bg-alt))) - `(magit-blame-highlight ((,class :inherit modus-theme-nuanced-cyan))) - `(magit-blame-margin ((,class :inherit magit-blame-highlight))) + `(magit-blame-heading ((,class :inherit modus-themes-reset-hard :background ,bg-alt :extend t))) + `(magit-blame-highlight ((,class :inherit modus-themes-nuanced-cyan))) + `(magit-blame-margin ((,class :inherit (magit-blame-highlight modus-themes-reset-hard)))) `(magit-blame-name ((,class :foreground ,magenta-alt-other))) `(magit-blame-summary ((,class :foreground ,cyan-alt-other))) `(magit-branch-current ((,class :foreground ,blue-alt-other :box t))) @@ -4914,7 +5054,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(magit-cherry-equivalent ((,class :background ,bg-main :foreground ,magenta-intense))) `(magit-cherry-unmatched ((,class :background ,bg-main :foreground ,cyan-intense))) ;; NOTE: here we break from the pattern of inheriting from the - ;; modus-theme-diff-* faces, though only for the standard actions, + ;; modus-themes-diff-* faces, though only for the standard actions, ;; not the highlighted ones. This is because Magit's interaction ;; model relies on highlighting the current diff hunk. `(magit-diff-added ((,class ,@(modus-themes--diff @@ -4922,37 +5062,37 @@ by virtue of calling either of `modus-themes-load-operandi' and bg-diff-added fg-diff-added green-nuanced-bg fg-diff-added bg-diff-added-deuteran fg-diff-added-deuteran)))) - `(magit-diff-added-highlight ((,class :inherit modus-theme-diff-focus-added))) + `(magit-diff-added-highlight ((,class :inherit modus-themes-diff-focus-added))) `(magit-diff-base ((,class ,@(modus-themes--diff bg-main yellow bg-diff-changed fg-diff-changed yellow-nuanced-bg fg-diff-changed)))) - `(magit-diff-base-highlight ((,class :inherit modus-theme-diff-focus-changed))) + `(magit-diff-base-highlight ((,class :inherit modus-themes-diff-focus-changed))) `(magit-diff-context ((,class :foreground ,fg-unfocused))) `(magit-diff-context-highlight ((,class ,@(modus-themes--diff bg-dim fg-dim bg-inactive fg-inactive bg-dim fg-alt)))) `(magit-diff-file-heading ((,class :inherit bold :foreground ,fg-special-cold))) - `(magit-diff-file-heading-highlight ((,class :inherit (modus-theme-special-cold bold)))) - `(magit-diff-file-heading-selection ((,class :inherit modus-theme-refine-cyan))) + `(magit-diff-file-heading-highlight ((,class :inherit (modus-themes-special-cold bold)))) + `(magit-diff-file-heading-selection ((,class :inherit modus-themes-refine-cyan))) ;; NOTE: here we break from the pattern of inheriting from the - ;; modus-theme-diff-* faces. + ;; modus-themes-diff-* faces. `(magit-diff-hunk-heading ((,class :inherit bold :background ,bg-active :foreground ,fg-inactive))) `(magit-diff-hunk-heading-highlight ((,class :inherit bold :background ,@(modus-themes--diff-deuteran bg-region bg-diff-heading) :foreground ,@(modus-themes--diff-deuteran fg-main fg-diff-heading)))) - `(magit-diff-hunk-heading-selection ((,class :inherit modus-theme-refine-blue))) + `(magit-diff-hunk-heading-selection ((,class :inherit modus-themes-refine-blue))) `(magit-diff-hunk-region ((,class :inherit bold))) `(magit-diff-lines-boundary ((,class :background ,fg-main))) - `(magit-diff-lines-heading ((,class :inherit modus-theme-refine-magenta))) + `(magit-diff-lines-heading ((,class :inherit modus-themes-refine-magenta))) `(magit-diff-removed ((,class ,@(modus-themes--diff bg-main red bg-diff-removed fg-diff-removed red-nuanced-bg fg-diff-removed)))) - `(magit-diff-removed-highlight ((,class :inherit modus-theme-diff-focus-removed))) + `(magit-diff-removed-highlight ((,class :inherit modus-themes-diff-focus-removed))) `(magit-diffstat-added ((,class :foreground ,@(modus-themes--diff-deuteran blue green)))) `(magit-diffstat-removed ((,class :foreground ,red))) `(magit-dimmed ((,class :foreground ,fg-unfocused))) @@ -4960,7 +5100,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(magit-hash ((,class :inherit shadow))) `(magit-head ((,class :inherit magit-branch-local))) `(magit-header-line ((,class :inherit bold :foreground ,magenta-active))) - `(magit-header-line-key ((,class :inherit bold :foreground ,blue-active))) + `(magit-header-line-key ((,class :inherit modus-themes-key-binding))) `(magit-header-line-log-select ((,class :inherit bold :foreground ,fg-main))) `(magit-keyword ((,class :foreground ,magenta))) `(magit-keyword-squash ((,class :inherit bold :foreground ,yellow-alt-other))) @@ -4986,7 +5126,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(magit-refname-wip ((,class :inherit shadow))) `(magit-section ((,class :background ,bg-dim :foreground ,fg-main))) `(magit-section-heading ((,class :inherit bold :foreground ,cyan))) - `(magit-section-heading-selection ((,class :inherit (modus-theme-refine-cyan bold)))) + `(magit-section-heading-selection ((,class :inherit (modus-themes-refine-cyan bold)))) `(magit-section-highlight ((,class :background ,bg-alt))) `(magit-sequence-done ((,class :foreground ,green-alt))) `(magit-sequence-drop ((,class :foreground ,red-alt))) @@ -5011,16 +5151,22 @@ by virtue of calling either of `modus-themes-load-operandi' and `(makefile-space ((,class :background ,magenta-nuanced-bg))) ;;;;; man `(Man-overstrike ((,class :inherit bold :foreground ,magenta))) - `(Man-reverse ((,class :inherit modus-theme-subtle-magenta))) + `(Man-reverse ((,class :inherit modus-themes-subtle-magenta))) `(Man-underline ((,class :foreground ,cyan :underline t))) ;;;;; marginalia `(marginalia-archive ((,class :foreground ,green-nuanced-fg))) `(marginalia-date ((,class :foreground ,blue-nuanced-fg))) `(marginalia-char ((,class :foreground ,red-active))) - `(marginalia-documentation ((,class :foreground ,fg-special-cold :inherit modus-theme-slant))) + `(marginalia-documentation ((,class :foreground ,fg-special-cold :inherit modus-themes-slant))) `(marginalia-file-modes ((,class :inherit shadow))) `(marginalia-file-name ((,class :foreground ,fg-special-mild))) `(marginalia-file-owner ((,class :foreground ,red-nuanced-fg))) + ;; Here we make an exception of not applying the bespoke + ;; `modus-themes-key-binding' for two reasons: (1) completion + ;; highlights can be fairly intense, so we do not want more + ;; components to compete with them for attention, (2) the + ;; `marginalia-key' may not be used for key bindings specifically, + ;; so we might end up applying styles in places we should not. `(marginalia-key ((,class :foreground ,magenta-active))) `(marginalia-mode ((,class :foreground ,cyan-active))) `(marginalia-modified ((,class :foreground ,yellow-active))) @@ -5030,21 +5176,21 @@ by virtue of calling either of `modus-themes-load-operandi' and `(marginalia-variable ((,class :foreground ,yellow-nuanced-fg))) `(marginalia-version ((,class :foreground ,cyan-active))) ;;;;; markdown-mode - `(markdown-blockquote-face ((,class :inherit modus-theme-slant :foreground ,fg-special-cold))) + `(markdown-blockquote-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) `(markdown-bold-face ((,class :inherit bold))) `(markdown-code-face ((,class ,@(modus-themes--mixed-fonts) :background ,bg-dim :extend t))) `(markdown-comment-face ((,class :inherit font-lock-comment-face))) `(markdown-footnote-marker-face ((,class :inherit bold :foreground ,cyan-alt))) - `(markdown-footnote-text-face ((,class :inherit modus-theme-slant :foreground ,fg-main))) + `(markdown-footnote-text-face ((,class :inherit modus-themes-slant :foreground ,fg-main))) `(markdown-gfm-checkbox-face ((,class :foreground ,cyan-alt-other))) - `(markdown-header-delimiter-face ((,class :inherit modus-theme-bold :foreground ,fg-dim))) + `(markdown-header-delimiter-face ((,class :inherit modus-themes-bold :foreground ,fg-dim))) `(markdown-header-face ((t nil))) - `(markdown-header-face-1 ((,class :inherit modus-theme-heading-1))) - `(markdown-header-face-2 ((,class :inherit modus-theme-heading-2))) - `(markdown-header-face-3 ((,class :inherit modus-theme-heading-3))) - `(markdown-header-face-4 ((,class :inherit modus-theme-heading-4))) - `(markdown-header-face-5 ((,class :inherit modus-theme-heading-5))) - `(markdown-header-face-6 ((,class :inherit modus-theme-heading-6))) + `(markdown-header-face-1 ((,class :inherit modus-themes-heading-1))) + `(markdown-header-face-2 ((,class :inherit modus-themes-heading-2))) + `(markdown-header-face-3 ((,class :inherit modus-themes-heading-3))) + `(markdown-header-face-4 ((,class :inherit modus-themes-heading-4))) + `(markdown-header-face-5 ((,class :inherit modus-themes-heading-5))) + `(markdown-header-face-6 ((,class :inherit modus-themes-heading-6))) `(markdown-header-rule-face ((,class :inherit bold :foreground ,fg-special-warm))) `(markdown-hr-face ((,class :inherit bold :foreground ,fg-special-warm))) `(markdown-html-attr-name-face ((,class ,@(modus-themes--mixed-fonts) @@ -5065,9 +5211,9 @@ by virtue of calling either of `modus-themes-load-operandi' and `(markdown-language-keyword-face ((,class ,@(modus-themes--mixed-fonts) :background ,bg-alt :foreground ,fg-alt))) - `(markdown-line-break-face ((,class :inherit modus-theme-refine-cyan :underline t))) + `(markdown-line-break-face ((,class :inherit modus-themes-refine-cyan :underline t))) `(markdown-link-face ((,class :inherit button))) - `(markdown-link-title-face ((,class :inherit modus-theme-slant :foreground ,fg-special-cold))) + `(markdown-link-title-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) `(markdown-list-face ((,class :foreground ,fg-dim))) `(markdown-markup-face ((,class :inherit shadow))) `(markdown-math-face ((,class :foreground ,magenta-alt-other))) @@ -5090,13 +5236,13 @@ by virtue of calling either of `modus-themes-load-operandi' and `(markup-command-face ((,class :foreground ,fg-inactive))) `(markup-comment-face ((,class :inherit font-lock-comment-face))) `(markup-complex-replacement-face ((,class :box (:line-width 2 :color nil :style released-button) - :inherit modus-theme-refine-magenta))) + :inherit modus-themes-refine-magenta))) `(markup-emphasis-face ((,class :inherit italic :foreground ,fg-special-cold))) `(markup-error-face ((,class :inherit bold :foreground ,red))) `(markup-gen-face ((,class :foreground ,magenta-alt))) `(markup-internal-reference-face ((,class :inherit button :foreground ,fg-alt))) `(markup-italic-face ((,class :inherit italic :foreground ,fg-special-cold))) - `(markup-list-face ((,class :inherit modus-theme-special-calm))) + `(markup-list-face ((,class :inherit modus-themes-special-calm))) `(markup-meta-face ((,class :foreground ,fg-inactive))) `(markup-meta-hide-face ((,class :inherit shadow))) `(markup-passthrough-face ((,class :inherit fixed-pitch :foreground ,cyan))) @@ -5107,9 +5253,9 @@ by virtue of calling either of `modus-themes-load-operandi' and `(markup-strong-face ((,class :inherit bold :foreground ,red-nuanced-fg))) `(markup-subscript-face ((,class :height 0.8 :foreground ,fg-special-cold))) `(markup-superscript-face ((,class :height 0.8 :foreground ,fg-special-cold))) - `(markup-table-cell-face ((,class :inherit modus-theme-special-cold))) - `(markup-table-face ((,class :inherit modus-theme-subtle-cyan))) - `(markup-table-row-face ((,class :inherit modus-theme-subtle-cyan))) + `(markup-table-cell-face ((,class :inherit modus-themes-special-cold))) + `(markup-table-face ((,class :inherit modus-themes-subtle-cyan))) + `(markup-table-row-face ((,class :inherit modus-themes-subtle-cyan))) `(markup-title-0-face ((,class :height 3.0 :foreground ,blue-nuanced-fg))) `(markup-title-1-face ((,class :height 2.4 :foreground ,blue-nuanced-fg))) `(markup-title-2-face ((,class :height 1.8 :foreground ,blue-nuanced-fg))) @@ -5117,7 +5263,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(markup-title-4-face ((,class :height 1.2 :foreground ,blue-nuanced-fg))) `(markup-title-5-face ((,class :height 1.2 :foreground ,blue-nuanced-fg :underline t))) `(markup-value-face ((,class :foreground ,fg-inactive))) - `(markup-verbatim-face ((,class :inherit modus-theme-special-mild))) + `(markup-verbatim-face ((,class :inherit modus-themes-special-mild))) ;;;;; mentor `(mentor-download-message ((,class :foreground ,fg-special-warm))) `(mentor-download-name ((,class :foreground ,fg-special-cold))) @@ -5126,7 +5272,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(mentor-download-speed-down ((,class :foreground ,cyan-alt))) `(mentor-download-speed-up ((,class :foreground ,red-alt))) `(mentor-download-state ((,class :foreground ,yellow-alt))) - `(mentor-highlight-face ((,class :inherit modus-theme-subtle-blue))) + `(mentor-highlight-face ((,class :inherit modus-themes-subtle-blue))) `(mentor-tracker-name ((,class :foreground ,magenta-alt))) ;;;;; messages `(message-cited-text-1 ((,class :foreground ,blue-faint))) @@ -5141,7 +5287,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(message-header-to ((,class :inherit bold :foreground ,magenta-alt-other))) `(message-header-xheader ((,class :foreground ,blue-alt))) `(message-mml ((,class :foreground ,yellow))) - `(message-separator ((,class :inherit modus-theme-intense-neutral))) + `(message-separator ((,class :inherit modus-themes-intense-neutral))) ;;;;; minibuffer-line `(minibuffer-line ((,class :foreground ,fg-main))) ;;;;; minimap @@ -5159,14 +5305,19 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; modeline `(mode-line ((,class ,@(modus-themes--variable-pitch-ui) ,@(modus-themes--mode-line-attrs - fg-active bg-active fg-dim bg-active - fg-alt bg-active 'alt-style nil bg-main)))) + fg-active bg-active + fg-dim bg-active + fg-main bg-active-accent + fg-alt bg-active + 'alt-style nil bg-main)))) `(mode-line-buffer-id ((,class :inherit bold))) `(mode-line-emphasis ((,class :inherit bold :foreground ,blue-active))) - `(mode-line-highlight ((,class :inherit modus-theme-active-blue :box (:line-width -1 :style pressed-button)))) + `(mode-line-highlight ((,class :inherit modus-themes-active-blue :box (:line-width -1 :style pressed-button)))) `(mode-line-inactive ((,class ,@(modus-themes--variable-pitch-ui) ,@(modus-themes--mode-line-attrs - fg-inactive bg-inactive fg-alt bg-dim + fg-inactive bg-inactive + fg-alt bg-dim + fg-inactive bg-inactive bg-region bg-active)))) ;;;;; mood-line `(mood-line-modified ((,class :foreground ,magenta-active))) @@ -5189,28 +5340,28 @@ by virtue of calling either of `modus-themes-load-operandi' and `(mu4e-cited-6-face ((,class :foreground ,magenta))) `(mu4e-cited-7-face ((,class :foreground ,green-alt))) `(mu4e-compose-header-face ((,class :inherit mu4e-compose-separator-face))) - `(mu4e-compose-separator-face ((,class :inherit modus-theme-intense-neutral))) + `(mu4e-compose-separator-face ((,class :inherit modus-themes-intense-neutral))) `(mu4e-contact-face ((,class :inherit message-header-to))) `(mu4e-context-face ((,class :foreground ,blue-active))) `(mu4e-draft-face ((,class :foreground ,magenta-alt))) `(mu4e-flagged-face ((,class :foreground ,red-alt))) - `(mu4e-footer-face ((,class :inherit modus-theme-slant :foreground ,fg-special-cold))) + `(mu4e-footer-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) `(mu4e-forwarded-face ((,class :foreground ,magenta-alt-other))) `(mu4e-header-face ((,class :inherit shadow))) - `(mu4e-header-highlight-face ((,class :inherit modus-theme-hl-line))) + `(mu4e-header-highlight-face ((,class :inherit modus-themes-hl-line))) `(mu4e-header-key-face ((,class :inherit message-header-name))) `(mu4e-header-marks-face ((,class :inherit mu4e-special-header-value-face))) `(mu4e-header-title-face ((,class :foreground ,fg-special-mild))) `(mu4e-header-value-face ((,class :inherit message-header-other))) - `(mu4e-highlight-face ((,class :inherit bold :foreground ,blue-alt-other))) + `(mu4e-highlight-face ((,class :inherit modus-themes-key-binding))) `(mu4e-link-face ((,class :inherit button))) `(mu4e-modeline-face ((,class :foreground ,magenta-active))) - `(mu4e-moved-face ((,class :inherit modus-theme-slant :foreground ,yellow))) + `(mu4e-moved-face ((,class :inherit modus-themes-slant :foreground ,yellow))) `(mu4e-ok-face ((,class :inherit bold :foreground ,green))) - `(mu4e-region-code ((,class :inherit modus-theme-special-calm))) + `(mu4e-region-code ((,class :inherit modus-themes-special-calm))) `(mu4e-replied-face ((,class :foreground ,blue))) `(mu4e-special-header-value-face ((,class :inherit message-header-subject))) - `(mu4e-system-face ((,class :inherit modus-theme-slant :foreground ,fg-mark-del))) + `(mu4e-system-face ((,class :inherit modus-themes-slant :foreground ,fg-mark-del))) `(mu4e-title-face ((,class :foreground ,fg-main))) `(mu4e-trashed-face ((,class :foreground ,red))) `(mu4e-unread-face ((,class :inherit bold))) @@ -5218,7 +5369,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(mu4e-view-body-face ((,class :foreground ,fg-main))) `(mu4e-warning-face ((,class :inherit warning))) ;;;;; mu4e-conversation - `(mu4e-conversation-header ((,class :inherit modus-theme-special-cold))) + `(mu4e-conversation-header ((,class :inherit modus-themes-special-cold))) `(mu4e-conversation-sender-1 ((,class :foreground ,fg-special-warm))) `(mu4e-conversation-sender-2 ((,class :foreground ,fg-special-cold))) `(mu4e-conversation-sender-3 ((,class :foreground ,fg-special-mild))) @@ -5250,20 +5401,20 @@ by virtue of calling either of `modus-themes-load-operandi' and `(neo-vc-needs-merge-face ((,class :foreground ,magenta-alt))) `(neo-vc-needs-update-face ((,class :underline t))) `(neo-vc-removed-face ((,class :strike-through t))) - `(neo-vc-unlocked-changes-face ((,class :inherit modus-theme-refine-blue))) + `(neo-vc-unlocked-changes-face ((,class :inherit modus-themes-refine-blue))) `(neo-vc-up-to-date-face ((,class :inherit shadow))) `(neo-vc-user-face ((,class :foreground ,magenta))) ;;;;; no-emoji `(no-emoji ((,class :foreground ,cyan))) ;;;;; notmuch - `(notmuch-crypto-decryption ((,class :inherit modus-theme-refine-magenta))) + `(notmuch-crypto-decryption ((,class :inherit modus-themes-special-mild))) `(notmuch-crypto-part-header ((,class :foreground ,magenta-alt-other))) - `(notmuch-crypto-signature-bad ((,class :inherit modus-theme-intense-red))) - `(notmuch-crypto-signature-good ((,class :inherit modus-theme-refine-green))) - `(notmuch-crypto-signature-good-key ((,class :inherit modus-theme-refine-yellow))) - `(notmuch-crypto-signature-unknown ((,class :inherit modus-theme-refine-red))) + `(notmuch-crypto-signature-bad ((,class :inherit modus-themes-intense-red))) + `(notmuch-crypto-signature-good ((,class :inherit modus-themes-refine-blue))) + `(notmuch-crypto-signature-good-key ((,class :inherit modus-themes-refine-cyan))) + `(notmuch-crypto-signature-unknown ((,class :inherit modus-themes-refine-red))) `(notmuch-hello-logo-background ((,class :background "gray50"))) - `(notmuch-message-summary-face ((,class :inherit modus-theme-nuanced-cyan))) + `(notmuch-message-summary-face ((,class :inherit modus-themes-nuanced-cyan))) `(notmuch-search-count ((,class :inherit shadow))) `(notmuch-search-date ((,class :foreground ,cyan))) `(notmuch-search-flagged-face ((,class :foreground ,red-alt))) @@ -5271,14 +5422,8 @@ by virtue of calling either of `modus-themes-load-operandi' and `(notmuch-search-non-matching-authors ((,class :inherit shadow))) `(notmuch-search-subject ((,class :foreground ,fg-dim))) `(notmuch-search-unread-face ((,class :inherit bold))) - `(notmuch-tag-added - ((,(append '((supports :underline (:style wave))) class) - :underline (:color ,green :style wave)) - (,class :foreground ,green :underline t))) - `(notmuch-tag-deleted - ((,(append '((supports :underline (:style wave))) class) - :underline (:color ,red :style wave)) - (,class :foreground ,red :underline t))) + `(notmuch-tag-added ((,class :inherit modus-themes-lang-note))) + `(notmuch-tag-deleted ((,class :inherit modus-themes-lang-error))) `(notmuch-tag-face ((,class :inherit bold :foreground ,blue-alt))) `(notmuch-tag-flagged ((,class :foreground ,red-alt))) `(notmuch-tag-unread ((,class :foreground ,magenta-alt))) @@ -5300,15 +5445,15 @@ by virtue of calling either of `modus-themes-load-operandi' and `(nxml-cdata-section-CDATA ((,class :inherit error))) `(nxml-cdata-section-delimiter ((,class :inherit error))) `(nxml-char-ref-delimiter ((,class :foreground ,fg-special-mild))) - `(nxml-char-ref-number ((,class :inherit modus-theme-bold :foreground ,fg-special-mild))) - `(nxml-delimited-data ((,class :inherit modus-theme-slant :foreground ,fg-special-cold))) + `(nxml-char-ref-number ((,class :inherit modus-themes-bold :foreground ,fg-special-mild))) + `(nxml-delimited-data ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) `(nxml-delimiter ((,class :foreground ,fg-dim))) `(nxml-element-colon ((,class :foreground ,fg-main))) `(nxml-element-local-name ((,class :inherit font-lock-function-name-face))) `(nxml-element-prefix ((,class :inherit font-lock-builtin-face))) `(nxml-entity-ref-delimiter ((,class :foreground ,fg-special-mild))) - `(nxml-entity-ref-name ((,class :inherit modus-theme-bold :foreground ,fg-special-mild))) - `(nxml-glyph ((,class :inherit modus-theme-intense-neutral))) + `(nxml-entity-ref-name ((,class :inherit modus-themes-bold :foreground ,fg-special-mild))) + `(nxml-glyph ((,class :inherit modus-themes-intense-neutral))) `(nxml-hash ((,class :inherit (bold font-lock-string-face)))) `(nxml-heading ((,class :inherit bold))) `(nxml-name ((,class :inherit font-lock-builtin-face))) @@ -5316,11 +5461,10 @@ by virtue of calling either of `modus-themes-load-operandi' and `(nxml-namespace-attribute-prefix ((,class :inherit font-lock-variable-name-face))) `(nxml-processing-instruction-target ((,class :inherit font-lock-keyword-face))) `(nxml-prolog-keyword ((,class :inherit font-lock-keyword-face))) - `(nxml-ref ((,class :inherit modus-theme-bold :foreground ,fg-special-mild))) + `(nxml-ref ((,class :inherit modus-themes-bold :foreground ,fg-special-mild))) `(rng-error ((,class :inherit error))) ;;;;; objed - `(objed-hl ((,class :background ,(if modus-themes-intense-hl-line - bg-hl-alt-intense bg-hl-alt)))) + `(objed-hl ((,class :background ,(if modus-themes-hl-line bg-hl-alt-intense bg-hl-alt)))) `(objed-mark ((,class :background ,bg-active))) `(objed-mode-line ((,class :foreground ,cyan-active))) ;;;;; orderless @@ -5343,7 +5487,7 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; org `(org-agenda-calendar-event ((,class :foreground ,fg-main))) `(org-agenda-calendar-sexp ((,class :foreground ,cyan-alt))) - `(org-agenda-clocking ((,class :inherit modus-theme-special-cold :extend t))) + `(org-agenda-clocking ((,class :inherit modus-themes-special-cold :extend t))) `(org-agenda-column-dateline ((,class :background ,bg-alt))) `(org-agenda-current-time ((,class :inherit bold :foreground ,blue-alt-other))) `(org-agenda-date ((,class :foreground ,cyan))) @@ -5372,9 +5516,9 @@ by virtue of calling either of `modus-themes-load-operandi' and :background ,bg-inactive :foreground ,fg-active))) `(org-checkbox-statistics-done ((,class :inherit org-done))) `(org-checkbox-statistics-todo ((,class :inherit org-todo))) - `(org-clock-overlay ((,class :inherit modus-theme-special-cold))) + `(org-clock-overlay ((,class :inherit modus-themes-special-cold))) `(org-code ((,class ,@(modus-themes--mixed-fonts) - :background ,red-nuanced-bg :foreground ,magenta))) + :background ,magenta-nuanced-bg :foreground ,magenta-nuanced-fg))) `(org-column ((,class :background ,bg-alt))) `(org-column-title ((,class :inherit bold :underline t :background ,bg-alt))) `(org-date ((,class :inherit ,(if modus-themes-no-mixed-fonts @@ -5383,11 +5527,11 @@ by virtue of calling either of `modus-themes-load-operandi' and ,@(modus-themes--link-color cyan cyan-faint)))) `(org-date-selected ((,class :inherit bold :foreground ,blue-alt :inverse-video t))) - `(org-dispatcher-highlight ((,class :inherit (bold modus-theme-mark-alt)))) + `(org-dispatcher-highlight ((,class :inherit (bold modus-themes-mark-alt)))) `(org-document-info ((,class :foreground ,fg-special-cold))) `(org-document-info-keyword ((,class ,@(modus-themes--mixed-fonts) :foreground ,fg-alt))) - `(org-document-title ((,class :inherit (bold modus-theme-variable-pitch) :foreground ,fg-special-cold + `(org-document-title ((,class :inherit (bold modus-themes-variable-pitch) :foreground ,fg-special-cold ,@(modus-themes--scale modus-themes-scale-5)))) `(org-done ((,class :foreground ,green))) `(org-drawer ((,class ,@(modus-themes--mixed-fonts) @@ -5430,32 +5574,30 @@ by virtue of calling either of `modus-themes-load-operandi' and green-graph-1-bg green-graph-0-bg green-graph-1-bg)))) - `(org-headline-done ((,class :inherit modus-theme-variable-pitch :foreground ,green-nuanced-fg))) - `(org-headline-todo ((,class :inherit modus-theme-variable-pitch :foreground ,red-nuanced-fg))) + `(org-headline-done ((,class :inherit modus-themes-variable-pitch :foreground ,green-nuanced-fg))) + `(org-headline-todo ((,class :inherit modus-themes-variable-pitch :foreground ,red-nuanced-fg))) `(org-hide ((,class :foreground ,bg-main))) `(org-indent ((,class :inherit (fixed-pitch org-hide)))) `(org-latex-and-related ((,class :foreground ,magenta-refine-fg))) - `(org-level-1 ((,class :inherit modus-theme-heading-1))) - `(org-level-2 ((,class :inherit modus-theme-heading-2))) - `(org-level-3 ((,class :inherit modus-theme-heading-3))) - `(org-level-4 ((,class :inherit modus-theme-heading-4))) - `(org-level-5 ((,class :inherit modus-theme-heading-5))) - `(org-level-6 ((,class :inherit modus-theme-heading-6))) - `(org-level-7 ((,class :inherit modus-theme-heading-7))) - `(org-level-8 ((,class :inherit modus-theme-heading-8))) + `(org-level-1 ((,class :inherit modus-themes-heading-1))) + `(org-level-2 ((,class :inherit modus-themes-heading-2))) + `(org-level-3 ((,class :inherit modus-themes-heading-3))) + `(org-level-4 ((,class :inherit modus-themes-heading-4))) + `(org-level-5 ((,class :inherit modus-themes-heading-5))) + `(org-level-6 ((,class :inherit modus-themes-heading-6))) + `(org-level-7 ((,class :inherit modus-themes-heading-7))) + `(org-level-8 ((,class :inherit modus-themes-heading-8))) `(org-link ((,class :inherit button))) `(org-list-dt ((,class :inherit bold))) `(org-macro ((,class ,@(modus-themes--mixed-fonts) - :background ,blue-nuanced-bg :foreground ,magenta-alt-other))) + :background ,cyan-nuanced-bg :foreground ,cyan-nuanced-fg))) `(org-meta-line ((,class ,@(modus-themes--mixed-fonts) :foreground ,fg-alt))) `(org-mode-line-clock ((,class :foreground ,fg-main))) - `(org-mode-line-clock-overrun ((,class :inherit modus-theme-active-red))) + `(org-mode-line-clock-overrun ((,class :inherit modus-themes-active-red))) `(org-priority ((,class :foreground ,magenta))) `(org-property-value ((,class ,@(modus-themes--mixed-fonts) :foreground ,fg-special-cold))) - `(org-quote ((,class :inherit modus-theme-slant - ,@(modus-themes--org-block bg-dim) - :foreground ,fg-special-cold))) + `(org-quote ((,class ,@(modus-themes--org-block bg-dim)))) `(org-scheduled ((,class :foreground ,magenta-alt))) `(org-scheduled-previously ((,class :foreground ,yellow-alt-other))) `(org-scheduled-today ((,class :foreground ,magenta-alt-other))) @@ -5464,7 +5606,7 @@ by virtue of calling either of `modus-themes-load-operandi' and :foreground ,fg-alt))) `(org-table ((,class ,@(modus-themes--mixed-fonts) :foreground ,fg-special-cold))) - `(org-table-header ((,class :inherit (fixed-pitch modus-theme-intense-neutral)))) + `(org-table-header ((,class :inherit (fixed-pitch modus-themes-intense-neutral)))) `(org-tag ((,class :foreground ,magenta-nuanced-fg))) `(org-tag-group ((,class :inherit bold :foreground ,cyan-nuanced-fg))) `(org-target ((,class :underline t))) @@ -5477,8 +5619,8 @@ by virtue of calling either of `modus-themes-load-operandi' and `(org-verse ((,class :inherit org-quote))) `(org-warning ((,class :inherit bold :foreground ,red-alt-other))) ;;;;; org-journal - `(org-journal-calendar-entry-face ((,class :inherit modus-theme-slant :foreground ,yellow-alt-other))) - `(org-journal-calendar-scheduled-face ((,class :inherit modus-theme-slant :foreground ,red-alt-other))) + `(org-journal-calendar-entry-face ((,class :inherit modus-themes-slant :foreground ,yellow-alt-other))) + `(org-journal-calendar-scheduled-face ((,class :inherit modus-themes-slant :foreground ,red-alt-other))) `(org-journal-highlight ((,class :foreground ,magenta-alt))) ;;;;; org-noter `(org-noter-no-notes-exist-face ((,class :inherit bold :foreground ,red-active))) @@ -5507,27 +5649,27 @@ by virtue of calling either of `modus-themes-load-operandi' and `(org-superstar-item ((,class :foreground ,fg-main))) `(org-superstar-leading ((,class :foreground ,fg-whitespace))) ;;;;; org-table-sticky-header - `(org-table-sticky-header-face ((,class :inherit modus-theme-intense-neutral))) + `(org-table-sticky-header-face ((,class :inherit modus-themes-intense-neutral))) ;;;;; org-tree-slide `(org-tree-slide-header-overlay-face - ((,class :inherit (bold modus-theme-variable-pitch) :background ,bg-main + ((,class :inherit (bold modus-themes-variable-pitch) :background ,bg-main :foreground ,fg-special-cold :overline nil ,@(modus-themes--scale modus-themes-scale-5)))) ;;;;; org-treescope - `(org-treescope-faces--markerinternal-midday ((,class :inherit modus-theme-intense-blue))) - `(org-treescope-faces--markerinternal-range ((,class :inherit modus-theme-special-mild))) + `(org-treescope-faces--markerinternal-midday ((,class :inherit modus-themes-intense-blue))) + `(org-treescope-faces--markerinternal-range ((,class :inherit modus-themes-special-mild))) ;;;;; origami `(origami-fold-header-face ((,class :background ,bg-dim :foreground ,fg-dim :box t))) `(origami-fold-replacement-face ((,class :background ,bg-alt :foreground ,fg-alt))) ;;;;; outline-mode - `(outline-1 ((,class :inherit modus-theme-heading-1))) - `(outline-2 ((,class :inherit modus-theme-heading-2))) - `(outline-3 ((,class :inherit modus-theme-heading-3))) - `(outline-4 ((,class :inherit modus-theme-heading-4))) - `(outline-5 ((,class :inherit modus-theme-heading-5))) - `(outline-6 ((,class :inherit modus-theme-heading-6))) - `(outline-7 ((,class :inherit modus-theme-heading-7))) - `(outline-8 ((,class :inherit modus-theme-heading-8))) + `(outline-1 ((,class :inherit modus-themes-heading-1))) + `(outline-2 ((,class :inherit modus-themes-heading-2))) + `(outline-3 ((,class :inherit modus-themes-heading-3))) + `(outline-4 ((,class :inherit modus-themes-heading-4))) + `(outline-5 ((,class :inherit modus-themes-heading-5))) + `(outline-6 ((,class :inherit modus-themes-heading-6))) + `(outline-7 ((,class :inherit modus-themes-heading-7))) + `(outline-8 ((,class :inherit modus-themes-heading-8))) ;;;;; outline-minor-faces `(outline-minor-0 ((,class :background ,bg-alt))) ;;;;; package (M-x list-packages) @@ -5538,7 +5680,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(package-status-available ((,class :foreground ,fg-special-mild))) `(package-status-built-in ((,class :foreground ,magenta))) `(package-status-dependency ((,class :foreground ,magenta-alt-other))) - `(package-status-disabled ((,class :inherit modus-theme-subtle-red))) + `(package-status-disabled ((,class :inherit modus-themes-subtle-red))) `(package-status-external ((,class :foreground ,cyan-alt-other))) `(package-status-held ((,class :foreground ,yellow-alt))) `(package-status-incompat ((,class :inherit bold :foreground ,yellow))) @@ -5547,14 +5689,20 @@ by virtue of calling either of `modus-themes-load-operandi' and `(package-status-unsigned ((,class :inherit bold :foreground ,red-alt))) ;;;;; page-break-lines `(page-break-lines ((,class :inherit default :foreground ,fg-window-divider-outer))) +;;;;; pandoc-mode + `(pandoc-citation-key-face ((,class :background ,bg-dim :foreground ,magenta-alt))) + `(pandoc-directive-@@-face ((,class :background ,bg-dim :foreground ,blue-alt-other))) + `(pandoc-directive-braces-face ((,class :foreground ,blue-alt-other))) + `(pandoc-directive-contents-face ((,class :foreground ,cyan-alt-other))) + `(pandoc-directive-type-face ((,class :foreground ,magenta))) ;;;;; paradox `(paradox-archive-face ((,class :foreground ,fg-special-mild))) `(paradox-comment-face ((,class :inherit font-lock-comment-face))) - `(paradox-commit-tag-face ((,class :inherit modus-theme-refine-magenta :box t))) + `(paradox-commit-tag-face ((,class :inherit modus-themes-refine-magenta :box t))) `(paradox-description-face ((,class :foreground ,fg-special-cold))) `(paradox-description-face-multiline ((,class :foreground ,fg-special-cold))) - `(paradox-download-face ((,class :inherit modus-theme-bold :foreground ,blue-alt-other))) - `(paradox-highlight-face ((,class :inherit modus-theme-bold :foreground ,cyan-alt-other))) + `(paradox-download-face ((,class :inherit modus-themes-bold :foreground ,blue-alt-other))) + `(paradox-highlight-face ((,class :inherit modus-themes-bold :foreground ,cyan-alt-other))) `(paradox-homepage-button-face ((,class :foreground ,magenta-alt-other :underline t))) `(paradox-mode-line-face ((,class :inherit bold :foreground ,cyan-active))) `(paradox-name-face ((,class :foreground ,blue :underline t))) @@ -5563,7 +5711,7 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; paren-face `(parenthesis ((,class :foreground ,fg-unfocused))) ;;;;; parrot - `(parrot-rotate-rotation-highlight-face ((,class :inherit modus-theme-refine-magenta))) + `(parrot-rotate-rotation-highlight-face ((,class :inherit modus-themes-refine-magenta))) ;;;;; pass `(pass-mode-directory-face ((,class :inherit bold :foreground ,fg-special-cold))) `(pass-mode-entry-face ((,class :background ,bg-main :foreground ,fg-main))) @@ -5573,7 +5721,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(pdf-occur-document-face ((,class :inherit shadow))) `(pdf-occur-page-face ((,class :inherit shadow))) ;;;;; persp-mode - `(persp-face-lighter-buffer-not-in-persp ((,class :inherit modus-theme-intense-red))) + `(persp-face-lighter-buffer-not-in-persp ((,class :inherit modus-themes-intense-red))) `(persp-face-lighter-default ((,class :inherit bold :foreground ,blue-active))) `(persp-face-lighter-nil-persp ((,class :inherit bold :foreground ,fg-active))) ;;;;; perspective @@ -5582,30 +5730,30 @@ by virtue of calling either of `modus-themes-load-operandi' and `(phi-grep-heading-face ((,class :inherit bold :foreground ,red-alt ,@(modus-themes--scale modus-themes-scale-4)))) `(phi-grep-line-number-face ((,class :foreground ,fg-special-warm))) - `(phi-grep-match-face ((,class :inherit modus-theme-special-calm))) - `(phi-grep-modified-face ((,class :inherit modus-theme-refine-yellow))) - `(phi-grep-overlay-face ((,class :inherit modus-theme-refine-blue))) + `(phi-grep-match-face ((,class :inherit modus-themes-special-calm))) + `(phi-grep-modified-face ((,class :inherit modus-themes-refine-yellow))) + `(phi-grep-overlay-face ((,class :inherit modus-themes-refine-blue))) ;;;;; phi-search - `(phi-replace-preview-face ((,class :inherit modus-theme-intense-magenta))) - `(phi-search-failpart-face ((,class :inherit modus-theme-refine-red))) - `(phi-search-match-face ((,class :inherit modus-theme-refine-cyan))) - `(phi-search-selection-face ((,class :inherit (modus-theme-intense-green bold)))) + `(phi-replace-preview-face ((,class :inherit modus-themes-intense-magenta))) + `(phi-search-failpart-face ((,class :inherit modus-themes-refine-red))) + `(phi-search-match-face ((,class :inherit modus-themes-refine-cyan))) + `(phi-search-selection-face ((,class :inherit (modus-themes-intense-green bold)))) ;;;;; pkgbuild-mode - `(pkgbuild-error-face ((,class :inherit modus-theme-lang-error))) + `(pkgbuild-error-face ((,class :inherit modus-themes-lang-error))) ;;;;; pomidor `(pomidor-break-face ((,class :foreground ,blue-alt-other))) `(pomidor-overwork-face ((,class :foreground ,red-alt-other))) - `(pomidor-skip-face ((,class :inherit modus-theme-slant :foreground ,fg-alt))) + `(pomidor-skip-face ((,class :inherit modus-themes-slant :foreground ,fg-alt))) `(pomidor-work-face ((,class :foreground ,green-alt-other))) ;;;;; popup `(popup-face ((,class :background ,bg-alt :foreground ,fg-main))) - `(popup-isearch-match ((,class :inherit (modus-theme-refine-cyan bold)))) - `(popup-menu-mouse-face ((,class :inherit modus-theme-intense-blue))) - `(popup-menu-selection-face ((,class :inherit (modus-theme-subtle-cyan bold)))) + `(popup-isearch-match ((,class :inherit (modus-themes-refine-cyan bold)))) + `(popup-menu-mouse-face ((,class :inherit modus-themes-intense-blue))) + `(popup-menu-selection-face ((,class :inherit (modus-themes-subtle-cyan bold)))) `(popup-scroll-bar-background-face ((,class :background ,bg-active))) `(popup-scroll-bar-foreground-face ((,class :foreground ,fg-active))) `(popup-summary-face ((,class :background ,bg-active :foreground ,fg-inactive))) - `(popup-tip-face ((,class :inherit modus-theme-refine-yellow))) + `(popup-tip-face ((,class :inherit modus-themes-refine-yellow))) ;;;;; powerline `(powerline-active0 ((,class :background ,bg-main :foreground ,blue-faint :inverse-video t))) `(powerline-active1 ((,class :background ,blue-nuanced-bg :foreground ,blue-nuanced-fg))) @@ -5615,16 +5763,16 @@ by virtue of calling either of `modus-themes-load-operandi' and `(powerline-inactive2 ((,class :background ,bg-inactive :foreground ,fg-inactive))) ;;;;; powerline-evil `(powerline-evil-base-face ((,class :background ,fg-main :foreground ,bg-main))) - `(powerline-evil-emacs-face ((,class :inherit modus-theme-active-magenta))) - `(powerline-evil-insert-face ((,class :inherit modus-theme-active-green))) - `(powerline-evil-motion-face ((,class :inherit modus-theme-active-blue))) + `(powerline-evil-emacs-face ((,class :inherit modus-themes-active-magenta))) + `(powerline-evil-insert-face ((,class :inherit modus-themes-active-green))) + `(powerline-evil-motion-face ((,class :inherit modus-themes-active-blue))) `(powerline-evil-normal-face ((,class :background ,fg-alt :foreground ,bg-main))) - `(powerline-evil-operator-face ((,class :inherit modus-theme-active-yellow))) - `(powerline-evil-replace-face ((,class :inherit modus-theme-active-red))) - `(powerline-evil-visual-face ((,class :inherit modus-theme-active-cyan))) + `(powerline-evil-operator-face ((,class :inherit modus-themes-active-yellow))) + `(powerline-evil-replace-face ((,class :inherit modus-themes-active-red))) + `(powerline-evil-visual-face ((,class :inherit modus-themes-active-cyan))) ;;;;; proced - `(proced-mark ((,class :inherit modus-theme-mark-symbol))) - `(proced-marked ((,class :inherit modus-theme-mark-alt))) + `(proced-mark ((,class :inherit modus-themes-mark-symbol))) + `(proced-marked ((,class :inherit modus-themes-mark-alt))) `(proced-sort-header ((,class :inherit bold :foreground ,fg-special-calm :underline t))) ;;;;; prodigy `(prodigy-green-face ((,class :foreground ,green))) @@ -5635,19 +5783,19 @@ by virtue of calling either of `modus-themes-load-operandi' and `(quick-peek-border-face ((,class :background ,fg-window-divider-inner :height 1))) `(quick-peek-padding-face ((,class :background ,bg-alt :height 0.15))) ;;;;; racket-mode - `(racket-debug-break-face ((,class :inherit modus-theme-intense-red))) + `(racket-debug-break-face ((,class :inherit modus-themes-intense-red))) `(racket-debug-locals-face ((,class :box (:line-width -1 :color nil) :foreground ,green-alt-other))) `(racket-debug-result-face ((,class :inherit bold :box (:line-width -1 :color nil) :foreground ,green))) `(racket-here-string-face ((,class :foreground ,blue-alt))) `(racket-keyword-argument-face ((,class :foreground ,red-alt))) - `(racket-logger-config-face ((,class :inherit modus-theme-slant :foreground ,fg-alt))) + `(racket-logger-config-face ((,class :inherit modus-themes-slant :foreground ,fg-alt))) `(racket-logger-debug-face ((,class :foreground ,blue-alt-other))) `(racket-logger-info-face ((,class :foreground ,fg-lang-note))) - `(racket-logger-topic-face ((,class :inherit modus-theme-slant :foreground ,magenta))) + `(racket-logger-topic-face ((,class :inherit modus-themes-slant :foreground ,magenta))) `(racket-selfeval-face ((,class :foreground ,green-alt))) - `(racket-xp-error-face ((,class :inherit modus-theme-lang-error))) + `(racket-xp-error-face ((,class :inherit modus-themes-lang-error))) ;;;;; rainbow-blocks `(rainbow-blocks-depth-1-face ((,class :foreground ,magenta-alt-other))) `(rainbow-blocks-depth-2-face ((,class :foreground ,blue))) @@ -5687,8 +5835,8 @@ by virtue of calling either of `modus-themes-load-operandi' and `(rainbow-delimiters-depth-7-face ((,class :foreground ,red-intense))) `(rainbow-delimiters-depth-8-face ((,class :foreground ,blue-intense))) `(rainbow-delimiters-depth-9-face ((,class :foreground ,yellow-intense))) - `(rainbow-delimiters-mismatched-face ((,class :inherit (bold modus-theme-refine-yellow)))) - `(rainbow-delimiters-unmatched-face ((,class :inherit (bold modus-theme-refine-red)))) + `(rainbow-delimiters-mismatched-face ((,class :inherit (bold modus-themes-refine-yellow)))) + `(rainbow-delimiters-unmatched-face ((,class :inherit (bold modus-themes-refine-red)))) ;;;;; rcirc `(rcirc-bright-nick ((,class :inherit bold :foreground ,magenta-alt))) `(rcirc-dim-nick ((,class :inherit shadow))) @@ -5696,7 +5844,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(rcirc-nick-in-message ((,class :foreground ,magenta-alt-other))) `(rcirc-nick-in-message-full-line ((,class :inherit bold :foreground ,fg-special-mild))) `(rcirc-other-nick ((,class :inherit bold :foreground ,fg-special-cold))) - `(rcirc-prompt ((,class :inherit bold :foreground ,cyan-alt-other))) + `(rcirc-prompt ((,class :inherit comint-highlight-prompt))) `(rcirc-server ((,class :foreground ,fg-unfocused))) `(rcirc-timestamp ((,class :foreground ,blue-nuanced-fg))) `(rcirc-url ((,class :foreground ,blue :underline t))) @@ -5704,10 +5852,10 @@ by virtue of calling either of `modus-themes-load-operandi' and `(recursion-indicator-general ((,class :foreground ,blue-active))) `(recursion-indicator-minibuffer ((,class :foreground ,red-active))) ;;;;; regexp-builder (re-builder) - `(reb-match-0 ((,class :inherit modus-theme-refine-cyan))) - `(reb-match-1 ((,class :inherit modus-theme-subtle-magenta))) - `(reb-match-2 ((,class :inherit modus-theme-subtle-green))) - `(reb-match-3 ((,class :inherit modus-theme-refine-yellow))) + `(reb-match-0 ((,class :inherit modus-themes-refine-cyan))) + `(reb-match-1 ((,class :inherit modus-themes-subtle-magenta))) + `(reb-match-2 ((,class :inherit modus-themes-subtle-green))) + `(reb-match-3 ((,class :inherit modus-themes-refine-yellow))) `(reb-regexp-grouping-backslash ((,class :inherit font-lock-regexp-grouping-backslash))) `(reb-regexp-grouping-construct ((,class :inherit font-lock-regexp-grouping-construct))) ;;;;; rg (rg.el) @@ -5718,7 +5866,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(rg-filename-face ((,class :inherit bold :foreground ,fg-special-cold))) `(rg-line-number-face ((,class :foreground ,fg-special-warm))) `(rg-literal-face ((,class :foreground ,blue-alt))) - `(rg-match-face ((,class :inherit modus-theme-special-calm))) + `(rg-match-face ((,class :inherit modus-themes-special-calm))) `(rg-regexp-face ((,class :foreground ,magenta-active))) `(rg-toggle-off-face ((,class :inherit bold :foreground ,fg-inactive))) `(rg-toggle-on-face ((,class :inherit bold :foreground ,cyan-active))) @@ -5727,7 +5875,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(ripgrep-context-face ((,class :foreground ,fg-unfocused))) `(ripgrep-error-face ((,class :inherit bold :foreground ,red))) `(ripgrep-hit-face ((,class :foreground ,cyan))) - `(ripgrep-match-face ((,class :inherit modus-theme-special-calm))) + `(ripgrep-match-face ((,class :inherit modus-themes-special-calm))) ;;;;; rmail `(rmail-header-name ((,class :foreground ,cyan-alt-other))) `(rmail-highlight ((,class :inherit bold :foreground ,magenta-alt))) @@ -5753,29 +5901,30 @@ by virtue of calling either of `modus-themes-load-operandi' and `(sallet-buffer-size ((,class :foreground ,fg-special-calm))) `(sallet-buffer-special ((,class :foreground ,magenta-alt-other))) `(sallet-flx-match ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-cyan - 'modus-theme-refine-cyan - 'modus-theme-nuanced-cyan + 'modus-themes-subtle-cyan + 'modus-themes-refine-cyan + 'modus-themes-nuanced-cyan cyan-alt-other)))) `(sallet-recentf-buffer-name ((,class :foreground ,blue-nuanced-fg))) `(sallet-recentf-file-path ((,class :foreground ,fg-special-mild))) `(sallet-regexp-match ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-magenta - 'modus-theme-refine-magenta - 'modus-theme-nuanced-magenta + 'modus-themes-subtle-magenta + 'modus-themes-refine-magenta + 'modus-themes-nuanced-magenta magenta-alt-other)))) `(sallet-source-header ((,class :inherit bold :foreground ,red-alt ,@(modus-themes--scale modus-themes-scale-4)))) `(sallet-substring-match ((,class ,@(modus-themes--extra-completions - 'modus-theme-subtle-blue - 'modus-theme-refine-blue - 'modus-theme-nuanced-blue + 'modus-themes-subtle-blue + 'modus-themes-refine-blue + 'modus-themes-nuanced-blue blue-alt-other)))) ;;;;; selectrum -;; NOTE 2021-02-22: The `selectrum-primary-highlight' and -;; `selectrum-secondary-highlight' are deprecated upstream in favour of -;; their selectrum-prescient counterparts. We shall remove those faces -;; from the themes once we are certain that they are no longer relevant. + ;; NOTE 2021-02-22: The `selectrum-primary-highlight' and + ;; `selectrum-secondary-highlight' are deprecated upstream in favour + ;; of their selectrum-prescient counterparts. We shall remove those + ;; faces from the themes once we are certain that they are no longer + ;; relevant. `(selectrum-current-candidate ((,class :inherit bold :foreground ,fg-main :background ,@(pcase modus-themes-completions @@ -5791,6 +5940,10 @@ by virtue of calling either of `modus-themes-load-operandi' and ,@(modus-themes--standard-completions cyan-alt-other cyan-nuanced-bg cyan-refine-bg cyan-refine-fg)))) + `(selectrum-quick-keys-highlight + ((,class :inherit modus-themes-refine-red))) + `(selectrum-quick-keys-match + ((,class :inherit (bold modus-themes-intense-green)))) ;;;;; selectrum-prescient `(selectrum-prescient-primary-highlight ((,class :inherit bold @@ -5804,40 +5957,37 @@ by virtue of calling either of `modus-themes-load-operandi' and cyan-refine-bg cyan-refine-fg)))) ;;;;; semantic `(semantic-complete-inline-face ((,class :foreground ,fg-special-warm :underline t))) - `(semantic-decoration-on-fileless-includes ((,class :inherit modus-theme-refine-green))) - `(semantic-decoration-on-private-members-face ((,class :inherit modus-theme-refine-cyan))) + `(semantic-decoration-on-fileless-includes ((,class :inherit modus-themes-refine-green))) + `(semantic-decoration-on-private-members-face ((,class :inherit modus-themes-refine-cyan))) `(semantic-decoration-on-protected-members-face ((,class :background ,bg-dim))) - `(semantic-decoration-on-unknown-includes ((,class :inherit modus-theme-refine-red))) - `(semantic-decoration-on-unparsed-includes ((,class :inherit modus-theme-refine-yellow))) + `(semantic-decoration-on-unknown-includes ((,class :inherit modus-themes-refine-red))) + `(semantic-decoration-on-unparsed-includes ((,class :inherit modus-themes-refine-yellow))) `(semantic-highlight-edits-face ((,class :background ,bg-alt))) `(semantic-highlight-func-current-tag-face ((,class :background ,bg-alt))) - `(semantic-idle-symbol-highlight ((,class :inherit modus-theme-special-mild))) + `(semantic-idle-symbol-highlight ((,class :inherit modus-themes-special-mild))) `(semantic-tag-boundary-face ((,class :overline ,blue-intense))) `(semantic-unmatched-syntax-face ((,class :underline ,fg-lang-error))) ;;;;; sesman `(sesman-browser-button-face ((,class :foreground ,blue-alt-other :underline t))) - `(sesman-browser-highligh-face ((,class :inherit modus-theme-subtle-blue))) + `(sesman-browser-highligh-face ((,class :inherit modus-themes-subtle-blue))) `(sesman-buffer-face ((,class :foreground ,magenta))) `(sesman-directory-face ((,class :inherit bold :foreground ,blue))) `(sesman-project-face ((,class :inherit bold :foreground ,magenta-alt-other))) ;;;;; shell-script-mode `(sh-heredoc ((,class :foreground ,blue-alt))) - `(sh-quoted-exec ((,class :inherit modus-theme-bold :foreground ,magenta-alt))) + `(sh-quoted-exec ((,class :inherit modus-themes-bold :foreground ,magenta-alt))) ;;;;; shortdoc - `(shortdoc-heading ((,class :inherit modus-theme-pseudo-header))) + `(shortdoc-heading ((,class :inherit modus-themes-pseudo-header))) `(shortdoc-section (())) ; remove the default's variable-pitch style ;;;;; show-paren-mode `(show-paren-match ((,class ,@(modus-themes--paren bg-paren-match bg-paren-match-intense) :foreground ,fg-main))) - `(show-paren-match-expression ((,class :inherit modus-theme-special-calm))) - `(show-paren-mismatch ((,class :inherit modus-theme-intense-red))) + `(show-paren-match-expression ((,class :inherit modus-themes-special-calm))) + `(show-paren-mismatch ((,class :inherit modus-themes-intense-red))) ;;;;; shr - `(shr-abbreviation - ((,(append '((supports :underline (:style wave))) class) - :foreground ,fg-docstring :underline (:color ,fg-alt :style wave)) - (,class :foreground ,fg-docstring :underline t))) - `(shr-selected-link ((,class :inherit modus-theme-subtle-cyan))) + `(shr-abbreviation ((,class :inherit modus-themes-lang-note))) + `(shr-selected-link ((,class :inherit modus-themes-subtle-red))) ;;;;; side-notes `(side-notes ((,class :background ,bg-dim :foreground ,fg-dim))) ;;;;; sieve-mode @@ -5862,94 +6012,94 @@ by virtue of calling either of `modus-themes-load-operandi' and `(sml/name-filling ((,class :foreground ,yellow-active))) `(sml/not-modified ((,class :inherit sml/global))) `(sml/numbers-separator ((,class :inherit sml/global))) - `(sml/outside-modified ((,class :inherit modus-theme-intense-red))) + `(sml/outside-modified ((,class :inherit modus-themes-intense-red))) `(sml/position-percentage ((,class :inherit sml/global))) `(sml/prefix ((,class :foreground ,green-active))) `(sml/process ((,class :inherit sml/prefix))) `(sml/projectile ((,class :inherit sml/git))) `(sml/read-only ((,class :inherit bold :foreground ,cyan-active))) `(sml/remote ((,class :inherit sml/global))) - `(sml/sudo ((,class :inherit modus-theme-subtle-red))) + `(sml/sudo ((,class :inherit modus-themes-subtle-red))) `(sml/time ((,class :inherit sml/global))) `(sml/vc ((,class :inherit sml/git))) `(sml/vc-edited ((,class :inherit bold :foreground ,yellow-active))) ;;;;; smartparens - `(sp-pair-overlay-face ((,class :inherit modus-theme-special-warm))) - `(sp-show-pair-enclosing ((,class :inherit modus-theme-special-mild))) + `(sp-pair-overlay-face ((,class :inherit modus-themes-special-warm))) + `(sp-show-pair-enclosing ((,class :inherit modus-themes-special-mild))) `(sp-show-pair-match-face ((,class ,@(modus-themes--paren bg-paren-match bg-paren-match-intense) :foreground ,fg-main))) - `(sp-show-pair-mismatch-face ((,class :inherit modus-theme-intense-red))) + `(sp-show-pair-mismatch-face ((,class :inherit modus-themes-intense-red))) `(sp-wrap-overlay-closing-pair ((,class :inherit sp-pair-overlay-face))) `(sp-wrap-overlay-face ((,class :inherit sp-pair-overlay-face))) `(sp-wrap-overlay-opening-pair ((,class :inherit sp-pair-overlay-face))) `(sp-wrap-tag-overlay-face ((,class :inherit sp-pair-overlay-face))) ;;;;; smerge - `(smerge-base ((,class :inherit modus-theme-diff-changed))) - `(smerge-lower ((,class :inherit modus-theme-diff-added))) - `(smerge-markers ((,class :background ,bg-diff-neutral-2 :foreground ,fg-diff-neutral-2))) - `(smerge-refined-added ((,class :inherit modus-theme-diff-refine-added))) + `(smerge-base ((,class :inherit modus-themes-diff-changed))) + `(smerge-lower ((,class :inherit modus-themes-diff-added))) + `(smerge-markers ((,class :inherit modus-themes-diff-heading))) + `(smerge-refined-added ((,class :inherit modus-themes-diff-refine-added))) `(smerge-refined-changed (())) - `(smerge-refined-removed ((,class :inherit modus-theme-diff-refine-removed))) - `(smerge-upper ((,class :inherit modus-theme-diff-removed))) + `(smerge-refined-removed ((,class :inherit modus-themes-diff-refine-removed))) + `(smerge-upper ((,class :inherit modus-themes-diff-removed))) ;;;;; solaire `(solaire-default-face ((,class :inherit default :background ,bg-alt :foreground ,fg-dim))) `(solaire-line-number-face ((,class :inherit solaire-default-face :foreground ,fg-unfocused))) `(solaire-hl-line-face ((,class :background ,bg-active))) `(solaire-org-hide-face ((,class :background ,bg-alt :foreground ,bg-alt))) ;;;;; spaceline - `(spaceline-evil-emacs ((,class :inherit modus-theme-active-magenta))) - `(spaceline-evil-insert ((,class :inherit modus-theme-active-green))) - `(spaceline-evil-motion ((,class :inherit modus-theme-active-blue))) + `(spaceline-evil-emacs ((,class :inherit modus-themes-active-magenta))) + `(spaceline-evil-insert ((,class :inherit modus-themes-active-green))) + `(spaceline-evil-motion ((,class :inherit modus-themes-active-blue))) `(spaceline-evil-normal ((,class :background ,fg-alt :foreground ,bg-alt))) - `(spaceline-evil-replace ((,class :inherit modus-theme-active-red))) - `(spaceline-evil-visual ((,class :inherit modus-theme-active-cyan))) + `(spaceline-evil-replace ((,class :inherit modus-themes-active-red))) + `(spaceline-evil-visual ((,class :inherit modus-themes-active-cyan))) `(spaceline-flycheck-error ((,class :foreground ,red-active))) `(spaceline-flycheck-info ((,class :foreground ,cyan-active))) `(spaceline-flycheck-warning ((,class :foreground ,yellow-active))) - `(spaceline-highlight-face ((,class :inherit modus-theme-fringe-blue))) - `(spaceline-modified ((,class :inherit modus-theme-fringe-magenta))) + `(spaceline-highlight-face ((,class :inherit modus-themes-fringe-blue))) + `(spaceline-modified ((,class :inherit modus-themes-fringe-magenta))) `(spaceline-python-venv ((,class :foreground ,magenta-active))) - `(spaceline-read-only ((,class :inherit modus-theme-fringe-red))) - `(spaceline-unmodified ((,class :inherit modus-theme-fringe-cyan))) + `(spaceline-read-only ((,class :inherit modus-themes-fringe-red))) + `(spaceline-unmodified ((,class :inherit modus-themes-fringe-cyan))) ;;;;; speedbar `(speedbar-button-face ((,class :inherit button))) `(speedbar-directory-face ((,class :inherit bold :foreground ,blue))) `(speedbar-file-face ((,class :foreground ,fg-main))) - `(speedbar-highlight-face ((,class :inherit modus-theme-subtle-blue))) + `(speedbar-highlight-face ((,class :inherit modus-themes-subtle-blue))) `(speedbar-selected-face ((,class :inherit bold :foreground ,cyan))) - `(speedbar-separator-face ((,class :inherit modus-theme-intense-neutral))) + `(speedbar-separator-face ((,class :inherit modus-themes-intense-neutral))) `(speedbar-tag-face ((,class :foreground ,yellow-alt-other))) ;;;;; spell-fu - `(spell-fu-incorrect-face ((,class :inherit modus-theme-lang-error))) + `(spell-fu-incorrect-face ((,class :inherit modus-themes-lang-error))) ;;;;; spray `(spray-accent-face ((,class :foreground ,red-intense))) `(spray-base-face ((,class :inherit default :foreground ,fg-special-cold))) ;;;;; stripes - `(stripes ((,class :inherit modus-theme-hl-line))) + `(stripes ((,class :inherit modus-themes-hl-line))) ;;;;; success `(suggest-heading ((,class :inherit bold :foreground ,yellow-alt-other))) ;;;;; switch-window `(switch-window-background ((,class :background ,bg-dim))) `(switch-window-label ((,class :height 3.0 :foreground ,blue-intense))) ;;;;; swiper - `(swiper-background-match-face-1 ((,class :inherit modus-theme-subtle-neutral))) - `(swiper-background-match-face-2 ((,class :inherit modus-theme-refine-cyan))) - `(swiper-background-match-face-3 ((,class :inherit modus-theme-refine-magenta))) - `(swiper-background-match-face-4 ((,class :inherit modus-theme-refine-yellow))) - `(swiper-line-face ((,class :inherit modus-theme-special-cold))) - `(swiper-match-face-1 ((,class :inherit (bold modus-theme-intense-neutral)))) - `(swiper-match-face-2 ((,class :inherit (bold modus-theme-intense-green)))) - `(swiper-match-face-3 ((,class :inherit (bold modus-theme-intense-blue)))) - `(swiper-match-face-4 ((,class :inherit (bold modus-theme-intense-red)))) + `(swiper-background-match-face-1 ((,class :inherit modus-themes-subtle-neutral))) + `(swiper-background-match-face-2 ((,class :inherit modus-themes-refine-cyan))) + `(swiper-background-match-face-3 ((,class :inherit modus-themes-refine-magenta))) + `(swiper-background-match-face-4 ((,class :inherit modus-themes-refine-yellow))) + `(swiper-line-face ((,class :inherit modus-themes-special-cold))) + `(swiper-match-face-1 ((,class :inherit (bold modus-themes-intense-neutral)))) + `(swiper-match-face-2 ((,class :inherit (bold modus-themes-intense-green)))) + `(swiper-match-face-3 ((,class :inherit (bold modus-themes-intense-blue)))) + `(swiper-match-face-4 ((,class :inherit (bold modus-themes-intense-red)))) ;;;;; swoop `(swoop-face-header-format-line ((,class :inherit bold :foreground ,red-alt ,@(modus-themes--scale modus-themes-scale-3)))) `(swoop-face-line-buffer-name ((,class :inherit bold :foreground ,blue-alt ,@(modus-themes--scale modus-themes-scale-4)))) `(swoop-face-line-number ((,class :foreground ,fg-special-warm))) - `(swoop-face-target-line ((,class :inherit modus-theme-intense-blue :extend t))) - `(swoop-face-target-words ((,class :inherit modus-theme-refine-cyan))) + `(swoop-face-target-line ((,class :inherit modus-themes-intense-blue :extend t))) + `(swoop-face-target-words ((,class :inherit modus-themes-refine-cyan))) ;;;;; sx `(sx-inbox-item-type ((,class :foreground ,magenta-alt-other))) `(sx-inbox-item-type-unread ((,class :inherit (sx-inbox-item-type bold)))) @@ -5964,7 +6114,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(sx-question-list-score-upvoted ((,class :inherit (sx-question-list-score bold)))) `(sx-question-list-unread-question ((,class :inherit bold :foreground ,fg-main))) `(sx-question-mode-accepted ((,class :inherit bold :height 1.3 :foreground ,green))) - `(sx-question-mode-closed ((,class :inherit modus-theme-active-yellow :box (:line-width 2 :color nil)))) + `(sx-question-mode-closed ((,class :inherit modus-themes-active-yellow :box (:line-width 2 :color nil)))) `(sx-question-mode-closed-reason ((,class :box (:line-width 2 :color nil) :foreground ,fg-main))) `(sx-question-mode-content-face ((,class :background ,bg-dim))) `(sx-question-mode-date ((,class :foreground ,blue))) @@ -5979,15 +6129,15 @@ by virtue of calling either of `modus-themes-load-operandi' and `(sx-user-name ((,class :foreground ,blue-alt))) `(sx-user-reputation ((,class :inherit shadow))) ;;;;; symbol-overlay - `(symbol-overlay-default-face ((,class :inherit modus-theme-special-warm))) - `(symbol-overlay-face-1 ((,class :inherit modus-theme-intense-blue))) - `(symbol-overlay-face-2 ((,class :inherit modus-theme-refine-magenta))) - `(symbol-overlay-face-3 ((,class :inherit modus-theme-intense-yellow))) - `(symbol-overlay-face-4 ((,class :inherit modus-theme-intense-magenta))) - `(symbol-overlay-face-5 ((,class :inherit modus-theme-intense-red))) - `(symbol-overlay-face-6 ((,class :inherit modus-theme-refine-red))) - `(symbol-overlay-face-7 ((,class :inherit modus-theme-intense-cyan))) - `(symbol-overlay-face-8 ((,class :inherit modus-theme-refine-cyan))) + `(symbol-overlay-default-face ((,class :inherit modus-themes-special-warm))) + `(symbol-overlay-face-1 ((,class :inherit modus-themes-intense-blue))) + `(symbol-overlay-face-2 ((,class :inherit modus-themes-refine-magenta))) + `(symbol-overlay-face-3 ((,class :inherit modus-themes-intense-yellow))) + `(symbol-overlay-face-4 ((,class :inherit modus-themes-intense-magenta))) + `(symbol-overlay-face-5 ((,class :inherit modus-themes-intense-red))) + `(symbol-overlay-face-6 ((,class :inherit modus-themes-refine-red))) + `(symbol-overlay-face-7 ((,class :inherit modus-themes-intense-cyan))) + `(symbol-overlay-face-8 ((,class :inherit modus-themes-refine-cyan))) ;;;;; syslog-mode `(syslog-debug ((,class :inherit bold :foreground ,cyan-alt-other))) `(syslog-error ((,class :inherit bold :foreground ,red))) @@ -5998,6 +6148,23 @@ by virtue of calling either of `modus-themes-load-operandi' and `(syslog-ip ((,class :inherit bold :foreground ,fg-special-mild :underline t))) `(syslog-su ((,class :inherit bold :foreground ,red-alt))) `(syslog-warn ((,class :inherit bold :foreground ,yellow))) +;;;;; tab-bar-groups + `(tab-bar-groups-1 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,blue-tab))) + `(tab-bar-groups-1-group-name ((,class :inherit tab-bar-groups-1 :inverse-video t))) + `(tab-bar-groups-2 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,red-tab))) + `(tab-bar-groups-2-group-name ((,class :inherit tab-bar-groups-2 :inverse-video t))) + `(tab-bar-groups-3 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,green-tab))) + `(tab-bar-groups-3-group-name ((,class :inherit tab-bar-groups-3 :inverse-video t))) + `(tab-bar-groups-4 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,orange-tab))) + `(tab-bar-groups-4-group-name ((,class :inherit tab-bar-groups-4 :inverse-video t))) + `(tab-bar-groups-5 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,purple-tab))) + `(tab-bar-groups-5-group-name ((,class :inherit tab-bar-groups-5 :inverse-video t))) + `(tab-bar-groups-6 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,cyan-tab))) + `(tab-bar-groups-6-group-name ((,class :inherit tab-bar-groups-6 :inverse-video t))) + `(tab-bar-groups-7 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,yellow-tab))) + `(tab-bar-groups-7-group-name ((,class :inherit tab-bar-groups-7 :inverse-video t))) + `(tab-bar-groups-8 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,magenta-tab))) + `(tab-bar-groups-8-group-name ((,class :inherit tab-bar-groups-8 :inverse-video t))) ;;;;; tab-bar-mode `(tab-bar ((,class ,@(modus-themes--variable-pitch-ui) :background ,bg-tab-bar :foreground ,fg-main))) @@ -6019,6 +6186,30 @@ by virtue of calling either of `modus-themes-load-operandi' and :background ,bg-tab-inactive-alt :foreground ,fg-main))) ;;;;; table (built-in table.el) `(table-cell ((,class :background ,blue-nuanced-bg))) +;;;;; telega + ;; FIXME 2021-03-28: Some aspects of `telega' are not fully + ;; supported or have not been tested thoroughly. Please understand + ;; that I do not use that service because it requires a smartphone + ;; and I have none. Help with testing is appreciated. + `(telega-button ((,class :box t :foreground ,blue))) + `(telega-button-active ((,class :box ,blue-intense-bg :background ,blue-intense-bg :foreground ,fg-main))) + `(telega-button-highlight ((,class :inherit modus-themes-subtle-magenta))) + `(telega-chat-prompt ((,class :inherit bold))) + `(telega-entity-type-code ((,class :inherit fixed-pitch))) + `(telega-entity-type-mention ((,class :foreground ,cyan))) + `(telega-entity-type-pre ((,class :inherit fixed-pitch))) + `(telega-msg-heading ((,class :background ,bg-alt))) + `(telega-msg-self-title ((,class :inherit bold))) + `(telega-root-heading ((,class :inherit modus-themes-subtle-neutral))) + `(telega-secret-title ((,class :foreground ,magenta-alt))) + `(telega-unmuted-count ((,class :foreground ,blue-alt-other))) + `(telega-user-online-status ((,class :foreground ,cyan-active))) + `(telega-username ((,class :foreground ,cyan-alt-other))) + `(telega-webpage-chat-link ((,class :background ,bg-alt))) + `(telega-webpage-fixed ((,class :inherit fixed-pitch :height 0.85))) + `(telega-webpage-header ((,class :inherit modus-themes-variable-pitch :height 1.3))) + `(telega-webpage-preformatted ((,class :inherit fixed-pitch :background ,bg-alt))) + `(telega-webpage-subheader ((,class :inherit modus-themes-variable-pitch :height 1.15))) ;;;;; telephone-line `(telephone-line-accent-active ((,class :background ,fg-inactive :foreground ,bg-inactive))) `(telephone-line-accent-inactive ((,class :background ,bg-active :foreground ,fg-active))) @@ -6058,16 +6249,16 @@ by virtue of calling either of `modus-themes-load-operandi' and `(tomatinho-pause-face ((,class :foreground ,yellow-intense))) `(tomatinho-reset-face ((,class :inherit shadow))) ;;;;; transient - `(transient-active-infix ((,class :inherit modus-theme-special-mild))) + `(transient-active-infix ((,class :inherit modus-themes-special-mild))) `(transient-amaranth ((,class :inherit bold :foreground ,yellow))) `(transient-argument ((,class :inherit bold :foreground ,red-alt))) `(transient-blue ((,class :inherit bold :foreground ,blue))) - `(transient-disabled-suffix ((,class :inherit modus-theme-intense-red))) - `(transient-enabled-suffix ((,class :inherit modus-theme-intense-green))) + `(transient-disabled-suffix ((,class :inherit modus-themes-intense-red))) + `(transient-enabled-suffix ((,class :inherit modus-themes-intense-green))) `(transient-heading ((,class :inherit bold :foreground ,fg-main))) `(transient-inactive-argument ((,class :inherit shadow))) `(transient-inactive-value ((,class :inherit shadow))) - `(transient-key ((,class :inherit bold :foreground ,blue))) + `(transient-key ((,class :inherit modus-themes-key-binding))) `(transient-mismatched-key ((,class :underline t))) `(transient-nonstandard-key ((,class :underline t))) `(transient-pink ((,class :inherit bold :foreground ,magenta))) @@ -6077,11 +6268,11 @@ by virtue of calling either of `modus-themes-load-operandi' and `(transient-unreachable-key ((,class :foreground ,fg-unfocused))) `(transient-value ((,class :inherit bold :foreground ,magenta-alt-other))) ;;;;; trashed - `(trashed-deleted ((,class :inherit modus-theme-mark-del))) + `(trashed-deleted ((,class :inherit modus-themes-mark-del))) `(trashed-directory ((,class :foreground ,blue))) - `(trashed-mark ((,class :inherit modus-theme-mark-symbol))) - `(trashed-marked ((,class :inherit modus-theme-mark-alt))) - `(trashed-restored ((,class :inherit modus-theme-mark-sel))) + `(trashed-mark ((,class :inherit modus-themes-mark-symbol))) + `(trashed-marked ((,class :inherit modus-themes-mark-alt))) + `(trashed-restored ((,class :inherit modus-themes-mark-sel))) `(trashed-symlink ((,class :inherit button ,@(modus-themes--link-color cyan-alt cyan-alt-faint)))) @@ -6091,16 +6282,16 @@ by virtue of calling either of `modus-themes-load-operandi' and `(treemacs-file-face ((,class :foreground ,fg-main))) `(treemacs-fringe-indicator-face ((,class :foreground ,fg-main))) `(treemacs-git-added-face ((,class :foreground ,green-intense))) - `(treemacs-git-conflict-face ((,class :inherit (modus-theme-intense-red bold)))) + `(treemacs-git-conflict-face ((,class :inherit (modus-themes-intense-red bold)))) `(treemacs-git-ignored-face ((,class :inherit shadow))) `(treemacs-git-modified-face ((,class :foreground ,yellow-alt-other))) `(treemacs-git-renamed-face ((,class :foreground ,cyan-alt-other))) `(treemacs-git-unmodified-face ((,class :foreground ,fg-main))) `(treemacs-git-untracked-face ((,class :foreground ,red-alt-other))) - `(treemacs-help-column-face ((,class :inherit modus-theme-bold :foreground ,magenta-alt-other :underline t))) + `(treemacs-help-column-face ((,class :inherit modus-themes-bold :foreground ,magenta-alt-other :underline t))) `(treemacs-help-title-face ((,class :foreground ,blue-alt-other))) - `(treemacs-on-failure-pulse-face ((,class :inherit modus-theme-intense-red))) - `(treemacs-on-success-pulse-face ((,class :inherit modus-theme-intense-green))) + `(treemacs-on-failure-pulse-face ((,class :inherit modus-themes-intense-red))) + `(treemacs-on-success-pulse-face ((,class :inherit modus-themes-intense-green))) `(treemacs-root-face ((,class :inherit bold :foreground ,blue-alt-other :height 1.2 :underline t))) `(treemacs-root-remote-disconnected-face ((,class :inherit treemacs-root-remote-face :foreground ,yellow))) `(treemacs-root-remote-face ((,class :inherit treemacs-root-face :foreground ,magenta))) @@ -6111,17 +6302,17 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; tty-menu `(tty-menu-disabled-face ((,class :background ,bg-alt :foreground ,fg-alt))) `(tty-menu-enabled-face ((,class :inherit bold :background ,bg-alt :foreground ,fg-main))) - `(tty-menu-selected-face ((,class :inherit modus-theme-intense-blue))) + `(tty-menu-selected-face ((,class :inherit modus-themes-intense-blue))) ;;;;; tuareg - `(caml-types-def-face ((,class :inherit modus-theme-subtle-red))) - `(caml-types-expr-face ((,class :inherit modus-theme-subtle-green))) - `(caml-types-occ-face ((,class :inherit modus-theme-subtle-green))) - `(caml-types-scope-face ((,class :inherit modus-theme-subtle-blue))) - `(caml-types-typed-face ((,class :inherit modus-theme-subtle-magenta))) + `(caml-types-def-face ((,class :inherit modus-themes-subtle-red))) + `(caml-types-expr-face ((,class :inherit modus-themes-subtle-green))) + `(caml-types-occ-face ((,class :inherit modus-themes-subtle-green))) + `(caml-types-scope-face ((,class :inherit modus-themes-subtle-blue))) + `(caml-types-typed-face ((,class :inherit modus-themes-subtle-magenta))) `(tuareg-font-double-semicolon-face ((,class :inherit font-lock-preprocessor-face))) `(tuareg-font-lock-attribute-face ((,class :inherit font-lock-function-name-face))) `(tuareg-font-lock-constructor-face ((,class :foreground ,fg-main))) - `(tuareg-font-lock-error-face ((,class :inherit (modus-theme-intense-red bold)))) + `(tuareg-font-lock-error-face ((,class :inherit (modus-themes-intense-red bold)))) `(tuareg-font-lock-extension-node-face ((,class :background ,bg-alt :foreground ,magenta))) `(tuareg-font-lock-governing-face ((,class :inherit bold :foreground ,fg-main))) `(tuareg-font-lock-infix-extension-node-face ((,class :inherit font-lock-function-name-face))) @@ -6136,9 +6327,9 @@ by virtue of calling either of `modus-themes-load-operandi' and `(tuareg-opam-error-face ((,class :inherit error))) `(tuareg-opam-pkg-variable-name-face ((,class :inherit font-lock-variable-name-face))) ;;;;; typescript - `(typescript-jsdoc-tag ((,class :inherit modus-theme-slant :foreground ,fg-special-mild))) - `(typescript-jsdoc-type ((,class :inherit modus-theme-slant :foreground ,fg-special-calm))) - `(typescript-jsdoc-value ((,class :inherit modus-theme-slant :foreground ,fg-special-cold))) + `(typescript-jsdoc-tag ((,class :inherit (font-lock-builtin-face font-lock-comment-face) :weight normal))) + `(typescript-jsdoc-type ((,class :inherit (font-lock-type-face font-lock-comment-face) :weight normal))) + `(typescript-jsdoc-value ((,class :inherit (font-lock-constant-face font-lock-comment-face) :weight normal))) ;;;;; undo-tree `(undo-tree-visualizer-active-branch-face ((,class :inherit bold :foreground ,fg-main))) `(undo-tree-visualizer-current-face ((,class :foreground ,blue-intense))) @@ -6155,26 +6346,31 @@ by virtue of calling either of `modus-themes-load-operandi' and `(vc-dir-status-ignored ((,class :foreground ,fg-unfocused))) `(vc-dir-status-up-to-date ((,class :foreground ,cyan))) `(vc-dir-status-warning ((,class :foreground ,red))) - `(vc-conflict-state ((,class :inherit modus-theme-slant :foreground ,red-active))) + `(vc-conflict-state ((,class :inherit modus-themes-slant :foreground ,red-active))) `(vc-edited-state ((,class :foreground ,yellow-active))) `(vc-locally-added-state ((,class :foreground ,cyan-active))) `(vc-locked-state ((,class :foreground ,blue-active))) - `(vc-missing-state ((,class :inherit modus-theme-slant :foreground ,magenta-active))) - `(vc-needs-update-state ((,class :inherit modus-theme-slant :foreground ,green-active))) + `(vc-missing-state ((,class :inherit modus-themes-slant :foreground ,magenta-active))) + `(vc-needs-update-state ((,class :inherit modus-themes-slant :foreground ,green-active))) `(vc-removed-state ((,class :foreground ,red-active))) `(vc-state-base ((,class :foreground ,fg-active))) `(vc-up-to-date-state ((,class :foreground ,fg-special-cold))) ;;;;; vdiff - `(vdiff-addition-face ((,class :inherit modus-theme-diff-added))) - `(vdiff-change-face ((,class :inherit modus-theme-diff-changed))) - `(vdiff-closed-fold-face ((,class :background ,bg-diff-neutral-1 :foreground ,fg-diff-neutral-1))) - `(vdiff-refine-added ((,class :inherit modus-theme-diff-refine-added))) - `(vdiff-refine-changed ((,class :inherit modus-theme-diff-refine-changed))) - `(vdiff-subtraction-face ((,class :inherit modus-theme-diff-removed))) - `(vdiff-target-face ((,class :inherit modus-theme-intense-blue))) + `(vdiff-addition-face ((,class :inherit modus-themes-diff-added))) + `(vdiff-change-face ((,class :inherit modus-themes-diff-changed))) + `(vdiff-closed-fold-face ((,class :inherit modus-themes-diff-heading))) + `(vdiff-refine-added ((,class :inherit modus-themes-diff-refine-added))) + `(vdiff-refine-changed ((,class :inherit modus-themes-diff-refine-changed))) + `(vdiff-subtraction-face ((,class :inherit modus-themes-diff-removed))) + `(vdiff-target-face ((,class :inherit modus-themes-intense-blue))) +;;;;; vertico + `(vertico-current ((,class :inherit bold :foreground ,fg-main + :background ,@(pcase modus-themes-completions + ('opinionated (list bg-active)) + (_ (list bg-inactive)))))) ;;;;; vimish-fold `(vimish-fold-fringe ((,class :foreground ,cyan-active))) - `(vimish-fold-mouse-face ((,class :inherit modus-theme-intense-blue))) + `(vimish-fold-mouse-face ((,class :inherit modus-themes-intense-blue))) `(vimish-fold-overlay ((,class :background ,bg-alt :foreground ,fg-special-cold))) ;;;;; visible-mark `(visible-mark-active ((,class :background ,blue-intense-bg))) @@ -6183,12 +6379,12 @@ by virtue of calling either of `modus-themes-load-operandi' and `(visible-mark-forward-face1 ((,class :background ,magenta-intense-bg))) `(visible-mark-forward-face2 ((,class :background ,green-intense-bg))) ;;;;; visual-regexp - `(vr/group-0 ((,class :inherit modus-theme-intense-blue))) - `(vr/group-1 ((,class :inherit modus-theme-intense-magenta))) - `(vr/group-2 ((,class :inherit modus-theme-intense-green))) - `(vr/match-0 ((,class :inherit modus-theme-refine-yellow))) - `(vr/match-1 ((,class :inherit modus-theme-refine-yellow))) - `(vr/match-separator-face ((,class :inherit (modus-theme-intense-neutral bold)))) + `(vr/group-0 ((,class :inherit modus-themes-intense-blue))) + `(vr/group-1 ((,class :inherit modus-themes-intense-magenta))) + `(vr/group-2 ((,class :inherit modus-themes-intense-green))) + `(vr/match-0 ((,class :inherit modus-themes-refine-yellow))) + `(vr/match-1 ((,class :inherit modus-themes-refine-yellow))) + `(vr/match-separator-face ((,class :inherit (modus-themes-intense-neutral bold)))) ;;;;; volatile-highlights `(vhl/default-face ((,class :background ,bg-alt :foreground ,blue-nuanced-fg :extend t))) ;;;;; vterm @@ -6232,9 +6428,9 @@ by virtue of calling either of `modus-themes-load-operandi' and `(web-mode-css-string-face ((,class :inherit web-mode-string-face))) `(web-mode-css-variable-face ((,class :foreground ,fg-special-warm))) `(web-mode-current-column-highlight-face ((,class :background ,bg-alt))) - `(web-mode-current-element-highlight-face ((,class :inherit modus-theme-special-mild))) - `(web-mode-doctype-face ((,class :inherit modus-theme-slant :foreground ,fg-special-cold))) - `(web-mode-error-face ((,class :inherit modus-theme-intense-red))) + `(web-mode-current-element-highlight-face ((,class :inherit modus-themes-special-mild))) + `(web-mode-doctype-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) + `(web-mode-error-face ((,class :inherit modus-themes-intense-red))) `(web-mode-filter-face ((,class :inherit font-lock-function-name-face))) `(web-mode-folded-face ((,class :underline t))) `(web-mode-function-call-face ((,class :inherit font-lock-function-name-face))) @@ -6280,44 +6476,44 @@ by virtue of calling either of `modus-themes-load-operandi' and `(web-mode-warning-face ((,class :inherit font-lock-warning-face))) `(web-mode-whitespace-face ((,class :background ,bg-whitespace :foreground ,fg-whitespace))) ;;;;; wgrep - `(wgrep-delete-face ((,class :inherit modus-theme-refine-yellow))) - `(wgrep-done-face ((,class :inherit modus-theme-refine-blue))) - `(wgrep-face ((,class :inherit modus-theme-refine-green))) + `(wgrep-delete-face ((,class :inherit modus-themes-refine-yellow))) + `(wgrep-done-face ((,class :inherit modus-themes-refine-blue))) + `(wgrep-face ((,class :inherit modus-themes-refine-green))) `(wgrep-file-face ((,class :foreground ,fg-special-warm))) - `(wgrep-reject-face ((,class :inherit (modus-theme-intense-red bold)))) + `(wgrep-reject-face ((,class :inherit (modus-themes-intense-red bold)))) ;;;;; which-function-mode `(which-func ((,class :foreground ,magenta-active))) ;;;;; which-key `(which-key-command-description-face ((,class :foreground ,fg-main))) `(which-key-group-description-face ((,class :foreground ,magenta-alt))) `(which-key-highlighted-command-face ((,class :foreground ,yellow :underline t))) - `(which-key-key-face ((,class :inherit bold :foreground ,blue-intense))) + `(which-key-key-face ((,class :inherit modus-themes-key-binding))) `(which-key-local-map-description-face ((,class :foreground ,fg-main))) `(which-key-note-face ((,class :foreground ,fg-special-warm))) `(which-key-separator-face ((,class :inherit shadow))) `(which-key-special-key-face ((,class :inherit bold :foreground ,orange-intense))) ;;;;; whitespace-mode - `(whitespace-big-indent ((,class :inherit modus-theme-subtle-red))) - `(whitespace-empty ((,class :inherit modus-theme-intense-magenta))) + `(whitespace-big-indent ((,class :inherit modus-themes-subtle-red))) + `(whitespace-empty ((,class :inherit modus-themes-intense-magenta))) `(whitespace-hspace ((,class :background ,bg-whitespace :foreground ,fg-whitespace))) `(whitespace-indentation ((,class :background ,bg-whitespace :foreground ,fg-whitespace))) `(whitespace-line ((,class :background ,bg-alt))) `(whitespace-newline ((,class :background ,bg-whitespace :foreground ,fg-whitespace))) `(whitespace-space ((,class :background ,bg-whitespace :foreground ,fg-whitespace))) - `(whitespace-space-after-tab ((,class :inherit modus-theme-subtle-magenta))) - `(whitespace-space-before-tab ((,class :inherit modus-theme-subtle-cyan))) + `(whitespace-space-after-tab ((,class :inherit modus-themes-subtle-magenta))) + `(whitespace-space-before-tab ((,class :inherit modus-themes-subtle-cyan))) `(whitespace-tab ((,class :background ,bg-whitespace :foreground ,fg-whitespace))) - `(whitespace-trailing ((,class :inherit modus-theme-intense-red))) + `(whitespace-trailing ((,class :inherit modus-themes-intense-red))) ;;;;; window-divider-mode `(window-divider ((,class :foreground ,fg-window-divider-inner))) `(window-divider-first-pixel ((,class :foreground ,fg-window-divider-outer))) `(window-divider-last-pixel ((,class :foreground ,fg-window-divider-outer))) ;;;;; winum - `(winum-face ((,class :inherit modus-theme-bold :foreground ,cyan-active))) + `(winum-face ((,class :inherit modus-themes-bold :foreground ,cyan-active))) ;;;;; writegood-mode `(writegood-duplicates-face ((,class :background ,bg-alt :foreground ,red-alt :underline t))) - `(writegood-passive-voice-face ((,class :inherit modus-theme-lang-warning))) - `(writegood-weasels-face ((,class :inherit modus-theme-lang-error))) + `(writegood-passive-voice-face ((,class :inherit modus-themes-lang-warning))) + `(writegood-weasels-face ((,class :inherit modus-themes-lang-error))) ;;;;; woman `(woman-addition ((,class :foreground ,magenta-alt-other))) `(woman-bold ((,class :inherit bold :foreground ,magenta))) @@ -6333,18 +6529,18 @@ by virtue of calling either of `modus-themes-load-operandi' and `(xref-line-number ((,class :inherit shadow))) `(xref-match ((,class :inherit match))) ;;;;; yaml-mode - `(yaml-tab-face ((,class :inherit modus-theme-intense-red))) + `(yaml-tab-face ((,class :inherit modus-themes-intense-red))) ;;;;; yasnippet `(yas-field-highlight-face ((,class :background ,bg-hl-alt-intense))) ;;;;; ztree `(ztreep-arrow-face ((,class :foreground ,fg-inactive))) `(ztreep-diff-header-face ((,class :inherit bold :height 1.2 :foreground ,fg-special-cold))) - `(ztreep-diff-header-small-face ((,class :inherit bold :foreground ,fg-special-mild))) - `(ztreep-diff-model-add-face ((,class :foreground ,green))) + `(ztreep-diff-header-small-face ((,class :foreground ,fg-main))) + `(ztreep-diff-model-add-face ((,class :foreground ,@(modus-themes--diff-deuteran blue green)))) `(ztreep-diff-model-diff-face ((,class :foreground ,red))) `(ztreep-diff-model-ignored-face ((,class :inherit shadow :strike-through t))) `(ztreep-diff-model-normal-face ((,class :inherit shadow))) - `(ztreep-expand-sign-face ((,class :foreground ,blue))) + `(ztreep-expand-sign-face ((,class :inherit ztreep-arrow-face))) `(ztreep-header-face ((,class :inherit bold :height 1.2 :foreground ,fg-special-cold))) `(ztreep-leaf-face ((,class :foreground ,cyan))) `(ztreep-node-count-children-face ((,class :foreground ,fg-special-warm))) @@ -6362,14 +6558,14 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;; exwm `(exwm-floating-border-color ,fg-window-divider-inner) ;;;; flymake fringe indicators - `(flymake-error-bitmap '(flymake-double-exclamation-mark modus-theme-fringe-red)) - `(flymake-warning-bitmap '(exclamation-mark modus-theme-fringe-yellow)) - `(flymake-note-bitmap '(exclamation-mark modus-theme-fringe-cyan)) + `(flymake-error-bitmap '(flymake-double-exclamation-mark modus-themes-fringe-red)) + `(flymake-warning-bitmap '(exclamation-mark modus-themes-fringe-yellow)) + `(flymake-note-bitmap '(exclamation-mark modus-themes-fringe-cyan)) ;;;; ibuffer - `(ibuffer-deletion-face 'modus-theme-mark-del) - `(ibuffer-filter-group-name-face 'modus-theme-mark-symbol) - `(ibuffer-marked-face 'modus-theme-mark-sel) - `(ibuffer-title-face 'modus-theme-pseudo-header) + `(ibuffer-deletion-face 'modus-themes-mark-del) + `(ibuffer-filter-group-name-face 'modus-themes-mark-symbol) + `(ibuffer-marked-face 'modus-themes-mark-sel) + `(ibuffer-title-face 'modus-themes-pseudo-header) ;;;; highlight-tail `(highlight-tail-colors '((,green-subtle-bg . 0) @@ -6425,24 +6621,24 @@ by virtue of calling either of `modus-themes-load-operandi' and `(xterm-color-names-bright ["gray35" ,red-alt ,green-alt ,yellow-alt ,blue-alt ,magenta-alt ,cyan-alt "white"]) (if (eq modus-themes-org-blocks 'rainbow) `(org-src-block-faces ; TODO this list should be expanded - `(("emacs-lisp" modus-theme-nuanced-magenta) - ("elisp" modus-theme-nuanced-magenta) - ("clojure" modus-theme-nuanced-magenta) - ("clojurescript" modus-theme-nuanced-magenta) - ("c" modus-theme-nuanced-blue) - ("c++" modus-theme-nuanced-blue) - ("sh" modus-theme-nuanced-green) - ("shell" modus-theme-nuanced-green) - ("html" modus-theme-nuanced-yellow) - ("xml" modus-theme-nuanced-yellow) - ("css" modus-theme-nuanced-red) - ("scss" modus-theme-nuanced-red) - ("python" modus-theme-nuanced-green) - ("ipython" modus-theme-nuanced-magenta) - ("r" modus-theme-nuanced-cyan) - ("yaml" modus-theme-nuanced-cyan) - ("conf" modus-theme-nuanced-cyan) - ("docker" modus-theme-nuanced-cyan))) + `(("emacs-lisp" modus-themes-nuanced-magenta) + ("elisp" modus-themes-nuanced-magenta) + ("clojure" modus-themes-nuanced-magenta) + ("clojurescript" modus-themes-nuanced-magenta) + ("c" modus-themes-nuanced-blue) + ("c++" modus-themes-nuanced-blue) + ("sh" modus-themes-nuanced-green) + ("shell" modus-themes-nuanced-green) + ("html" modus-themes-nuanced-yellow) + ("xml" modus-themes-nuanced-yellow) + ("css" modus-themes-nuanced-red) + ("scss" modus-themes-nuanced-red) + ("python" modus-themes-nuanced-green) + ("ipython" modus-themes-nuanced-magenta) + ("r" modus-themes-nuanced-cyan) + ("yaml" modus-themes-nuanced-cyan) + ("conf" modus-themes-nuanced-cyan) + ("docker" modus-themes-nuanced-cyan))) `(org-src-block-faces '()))) "Custom variables for `modus-themes-theme'.") @@ -6453,4 +6649,11 @@ by virtue of calling either of `modus-themes-load-operandi' and (add-to-list 'custom-theme-load-path dir)))) (provide 'modus-themes) + +;; Local Variables: +;; time-stamp-start: "Last-Modified:[ \t]+\\\\?[\"<]" +;; time-stamp-end: "\\\\?[\">]" +;; time-stamp-format: "%Y-%02m-%02d %02H:%02M:%02S %5z" +;; End: + ;;; modus-themes.el ends here diff --git a/etc/themes/modus-vivendi-theme.el b/etc/themes/modus-vivendi-theme.el index 814f10d105b..ff59d3009b7 100644 --- a/etc/themes/modus-vivendi-theme.el +++ b/etc/themes/modus-vivendi-theme.el @@ -4,7 +4,7 @@ ;; Author: Protesilaos Stavrou <info@protesilaos.com> ;; URL: https://gitlab.com/protesilaos/modus-themes -;; Version: 1.2.3 +;; Version: 1.3.2 ;; Package-Requires: ((emacs "26.1")) ;; Keywords: faces, theme, accessibility @@ -52,6 +52,9 @@ (eval-and-compile (unless (and (fboundp 'require-theme) + load-file-name + (equal (file-name-directory load-file-name) + (expand-file-name "themes/" data-directory)) (require-theme 'modus-themes t)) (require 'modus-themes))) diff --git a/leim/leim-ext.el b/leim/leim-ext.el index 687379db9f0..904675c0c52 100644 --- a/leim/leim-ext.el +++ b/leim/leim-ext.el @@ -1,4 +1,4 @@ -;; leim-ext.el -- extra leim configuration -*- lexical-binding: t; -*- +;;; leim-ext.el --- extra leim configuration -*- lexical-binding: t; -*- ;; Copyright (C) 2004-2021 Free Software Foundation, Inc. ;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 diff --git a/lib-src/seccomp-filter.c b/lib-src/seccomp-filter.c index fc3c3a0c074..8f8a990661c 100644 --- a/lib-src/seccomp-filter.c +++ b/lib-src/seccomp-filter.c @@ -183,9 +183,9 @@ main (int argc, char **argv) some versions of the dynamic loader still use it. Also allow allocating thread stacks. */ SCMP_A3_32 (SCMP_CMP_MASKED_EQ, - ~(MAP_PRIVATE | MAP_FILE | MAP_ANONYMOUS - | MAP_FIXED | MAP_DENYWRITE | MAP_STACK - | MAP_NORESERVE), + ~(MAP_SHARED | MAP_PRIVATE | MAP_FILE + | MAP_ANONYMOUS | MAP_FIXED | MAP_DENYWRITE + | MAP_STACK | MAP_NORESERVE), 0)); RULE (SCMP_ACT_ALLOW, SCMP_SYS (mmap), SCMP_A2_32 (SCMP_CMP_MASKED_EQ, diff --git a/lisp/align.el b/lisp/align.el index 7ae067f8c53..a0b626a5c43 100644 --- a/lisp/align.el +++ b/lisp/align.el @@ -1587,8 +1587,6 @@ aligner would have dealt with are." (if report (message "Aligning...done")))) -;; Provide: - (provide 'align) (run-hooks 'align-load-hook) diff --git a/lisp/allout-widgets.el b/lisp/allout-widgets.el index 931dfbc961e..0e127040886 100644 --- a/lisp/allout-widgets.el +++ b/lisp/allout-widgets.el @@ -1,4 +1,4 @@ -;; allout-widgets.el --- Visually highlight allout outline structure. -*- lexical-binding: t; -*- +;;; allout-widgets.el --- Visually highlight allout outline structure. -*- lexical-binding: t; -*- ;; Copyright (C) 2005-2021 Free Software Foundation, Inc. @@ -2290,10 +2290,11 @@ The elements of LIST are not copied, just the list structure itself." (define-obsolete-function-alias 'allout-frame-property #'frame-parameter "28.1") -;;;_ : provide (provide 'allout-widgets) ;;;_ . Local emacs vars. ;;;_ , Local variables: ;;;_ , allout-layout: (-1 : 0) ;;;_ , End: + +;;; allout-widgets.el ends here diff --git a/lisp/allout.el b/lisp/allout.el index f50f5fd4b2c..1605ce2ce33 100644 --- a/lisp/allout.el +++ b/lisp/allout.el @@ -6457,7 +6457,6 @@ If BEG is bigger than END we return 0." (isearch-repeat 'forward) (isearch-mode t))) -;;;_ #11 Provide (provide 'allout) ;;;_* Local emacs vars. diff --git a/lisp/autorevert.el b/lisp/autorevert.el index 1bb40c90ff5..edd4c7e5e45 100644 --- a/lisp/autorevert.el +++ b/lisp/autorevert.el @@ -937,7 +937,6 @@ the timer when no buffers need to be checked." (cancel-timer auto-revert-timer)) (setq auto-revert-timer nil))))) -;; The end: (provide 'autorevert) (run-hooks 'auto-revert-load-hook) diff --git a/lisp/bs.el b/lisp/bs.el index 154e3599f33..494bc426188 100644 --- a/lisp/bs.el +++ b/lisp/bs.el @@ -1504,7 +1504,6 @@ name of buffer configuration." ;; continue standard unloading nil) -;; Now provide feature bs (provide 'bs) ;;; bs.el ends here diff --git a/lisp/calc/calc-menu.el b/lisp/calc/calc-menu.el index ac14e36c63c..516f62d7b63 100644 --- a/lisp/calc/calc-menu.el +++ b/lisp/calc/calc-menu.el @@ -1669,3 +1669,5 @@ ["Quit" calc-quit])) (provide 'calc-menu) + +;;; calc-menu.el ends here diff --git a/lisp/calc/calc-nlfit.el b/lisp/calc/calc-nlfit.el index 11867f15e5b..f676b098e58 100644 --- a/lisp/calc/calc-nlfit.el +++ b/lisp/calc/calc-nlfit.el @@ -819,3 +819,5 @@ (calc-record traillist "parm"))))) (provide 'calc-nlfit) + +;;; calc-nlfit.el ends here diff --git a/lisp/cedet/semantic/bovine/el.el b/lisp/cedet/semantic/bovine/el.el index 1170e716878..ebb20448ed5 100644 --- a/lisp/cedet/semantic/bovine/el.el +++ b/lisp/cedet/semantic/bovine/el.el @@ -585,7 +585,7 @@ Overrides `semantic-nonterminal-static'." ;;; Context parsing ;; -;; Emacs lisp is very different from C,C++ which most context parsing +;; Emacs Lisp is very different from C,C++ which most context parsing ;; functions are written. Support them here. (define-mode-local-override semantic-up-context emacs-lisp-mode (&optional _point _bounds-type) diff --git a/lisp/cedet/semantic/db-ebrowse.el b/lisp/cedet/semantic/db-ebrowse.el index efdf3dfa47a..682a4ccac48 100644 --- a/lisp/cedet/semantic/db-ebrowse.el +++ b/lisp/cedet/semantic/db-ebrowse.el @@ -222,7 +222,7 @@ warn instead." ;JAVE this just instantiates a default empty ebrowse struct? ; how would new instances wind up here? -; the ebrowse class isn't singleton, unlike the emacs lisp one +; the ebrowse class isn't singleton, unlike the Emacs Lisp one (defvar-mode-local c++-mode semanticdb-project-system-databases () "Search Ebrowse for symbols.") diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index dde6e8997bf..7627930c4c8 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -5155,8 +5155,6 @@ if that value is non-nil." (put 'Custom-mode 'mode-class 'special) -;;; The End. - (provide 'cus-edit) ;;; cus-edit.el ends here diff --git a/lisp/cus-face.el b/lisp/cus-face.el index 21fe89c6214..6c0052bf860 100644 --- a/lisp/cus-face.el +++ b/lisp/cus-face.el @@ -395,8 +395,6 @@ This means reset FACE to its value in FROM-THEME." (define-obsolete-function-alias 'custom-facep #'facep "28.1") -;;; The End. - (provide 'cus-face) ;;; cus-face.el ends here diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el index a702fedd245..13fb9f34fa0 100644 --- a/lisp/cus-theme.el +++ b/lisp/cus-theme.el @@ -1,7 +1,7 @@ -;;; cus-theme.el -- custom theme creation user interface -*- lexical-binding: t -*- -;; +;;; cus-theme.el --- custom theme creation user interface -*- lexical-binding: t -*- + ;; Copyright (C) 2001-2021 Free Software Foundation, Inc. -;; + ;; Author: Alex Schroeder <alex@gnu.org> ;; Maintainer: emacs-devel@gnu.org ;; Keywords: help, faces diff --git a/lisp/custom.el b/lisp/custom.el index 85e5d65ffb2..2c9eadbd479 100644 --- a/lisp/custom.el +++ b/lisp/custom.el @@ -1623,8 +1623,6 @@ If a choice with the same tag already exists, no action is taken." (put variable 'custom-type (append choices (list choice)))))) -;;; The End. - (provide 'custom) ;;; custom.el ends here diff --git a/lisp/dframe.el b/lisp/dframe.el index f4208f3755a..1ddf11a8aac 100644 --- a/lisp/dframe.el +++ b/lisp/dframe.el @@ -1,4 +1,4 @@ -;;; dframe --- dedicate frame support modes -*- lexical-binding:t -*- +;;; dframe.el --- dedicate frame support modes -*- lexical-binding:t -*- ;; Copyright (C) 1996-2021 Free Software Foundation, Inc. diff --git a/lisp/dos-w32.el b/lisp/dos-w32.el index cf753214624..45daaad8eff 100644 --- a/lisp/dos-w32.el +++ b/lisp/dos-w32.el @@ -1,4 +1,4 @@ -;; dos-w32.el --- Functions shared among MS-DOS and W32 (NT/95) platforms -*- lexical-binding: t; -*- +;;; dos-w32.el --- Functions shared among MS-DOS and W32 (NT/95) platforms -*- lexical-binding: t; -*- ;; Copyright (C) 1996, 2001-2021 Free Software Foundation, Inc. diff --git a/lisp/emacs-lisp/bindat.el b/lisp/emacs-lisp/bindat.el index 98994963e3e..247fb91379e 100644 --- a/lisp/emacs-lisp/bindat.el +++ b/lisp/emacs-lisp/bindat.el @@ -167,7 +167,7 @@ (defun bindat--unpack-strz (len) (let ((i 0) s) - (while (and (< i len) (/= (aref bindat-raw (+ bindat-idx i)) 0)) + (while (and (if len (< i len) t) (/= (aref bindat-raw (+ bindat-idx i)) 0)) (setq i (1+ i))) (setq s (substring bindat-raw bindat-idx (+ bindat-idx i))) (setq bindat-idx (+ bindat-idx len)) @@ -439,6 +439,12 @@ e.g. corresponding to STRUCT.FIELD1[INDEX2].FIELD3..." (aset bindat-raw (+ bindat-idx i) (aref v i))) (setq bindat-idx (+ bindat-idx len))) +(defun bindat--pack-strz (v) + (let ((len (length v))) + (dotimes (i len) + (aset bindat-raw (+ bindat-idx i) (aref v i))) + (setq bindat-idx (+ bindat-idx len 1)))) + (defun bindat--pack-bits (len v) (let ((bnum (1- (* 8 len))) j m) (while (>= bnum 0) @@ -677,14 +683,23 @@ is the name of a variable that will hold the value we need to pack.") (`(length . ,_) `(cl-incf bindat-idx ,len)) (`(pack . ,args) `(bindat--pack-str ,len . ,args)))) -(cl-defmethod bindat--type (op (_ (eql strz)) len) +(cl-defmethod bindat--type (op (_ (eql strz)) &optional len) (bindat--pcase op ('unpack `(bindat--unpack-strz ,len)) - (`(length . ,_) `(cl-incf bindat-idx ,len)) - ;; Here we don't add the terminating zero because we rely - ;; on the fact that `bindat-raw' was presumably initialized with - ;; all-zeroes before we started. - (`(pack . ,args) `(bindat--pack-str ,len . ,args)))) + (`(length ,val) + `(cl-incf bindat-idx ,(cond + ((null len) `(length ,val)) + ((numberp len) len) + (t `(or ,len (length ,val)))))) + (`(pack . ,args) + (macroexp-let2 nil len len + `(if ,len + ;; Same as non-zero terminated strings since we don't actually add + ;; the terminating zero anyway (because we rely on the fact that + ;; `bindat-raw' was presumably initialized with all-zeroes before + ;; we started). + (bindat--pack-str ,len . ,args) + (bindat--pack-strz . ,args)))))) (cl-defmethod bindat--type (op (_ (eql bits)) len) (bindat--pcase op @@ -812,7 +827,7 @@ is the name of a variable that will hold the value we need to pack.") '(&or ["uint" def-form] ["uintr" def-form] ["str" def-form] - ["strz" def-form] + ["strz" &optional def-form] ["bits" def-form] ["fill" def-form] ["align" def-form] @@ -832,7 +847,7 @@ TYPE is a Bindat type expression. It can take the following forms: uint BITLEN - Big-endian unsigned integer uintr BITLEN - Little-endian unsigned integer str LEN - Byte string - strz LEN - Zero-terminated byte-string + strz [LEN] - Zero-terminated byte-string bits LEN - Bit vector (LEN is counted in bytes) fill LEN - Just a filler align LEN - Fill up to the next multiple of LEN bytes diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 30d59137482..9be54ca4f5e 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -4715,10 +4715,15 @@ binding slots have been popped." (defun byte-compile-condition-case (form) (let* ((var (nth 1 form)) (body (nth 2 form)) + (handlers (nthcdr 3 form)) (depth byte-compile-depth) + (success-handler (assq :success handlers)) + (failure-handlers (if success-handler + (remq success-handler handlers) + handlers)) (clauses (mapcar (lambda (clause) (cons (byte-compile-make-tag) clause)) - (nthcdr 3 form))) + failure-handlers)) (endtag (byte-compile-make-tag))) (byte-compile-set-symbol-position 'condition-case) (unless (symbolp var) @@ -4744,30 +4749,40 @@ binding slots have been popped." (byte-compile-form body) ;; byte-compile--for-effect (dolist (_ clauses) (byte-compile-out 'byte-pophandler)) - (byte-compile-goto 'byte-goto endtag) - (while clauses - (let ((clause (pop clauses)) - (byte-compile-bound-variables byte-compile-bound-variables) - (byte-compile--lexical-environment - byte-compile--lexical-environment)) - (setq byte-compile-depth (1+ depth)) - (byte-compile-out-tag (pop clause)) - (dolist (_ clauses) (byte-compile-out 'byte-pophandler)) - (cond - ((null var) (byte-compile-discard)) - (lexical-binding - (push (cons var (1- byte-compile-depth)) - byte-compile--lexical-environment)) - (t (byte-compile-dynamic-variable-bind var))) - (byte-compile-body (cdr clause)) ;; byte-compile--for-effect - (cond - ((null var) nil) - (lexical-binding (byte-compile-discard 1 'preserve-tos)) - (t (byte-compile-out 'byte-unbind 1))) - (byte-compile-goto 'byte-goto endtag))) - - (byte-compile-out-tag endtag))) + (let ((compile-handler-body + (lambda (body) + (let ((byte-compile-bound-variables byte-compile-bound-variables) + (byte-compile--lexical-environment + byte-compile--lexical-environment)) + (cond + ((null var) (byte-compile-discard)) + (lexical-binding + (push (cons var (1- byte-compile-depth)) + byte-compile--lexical-environment)) + (t (byte-compile-dynamic-variable-bind var))) + + (byte-compile-body body) ;; byte-compile--for-effect + + (cond + ((null var)) + (lexical-binding (byte-compile-discard 1 'preserve-tos)) + (t (byte-compile-out 'byte-unbind 1))))))) + + (when success-handler + (funcall compile-handler-body (cdr success-handler))) + + (byte-compile-goto 'byte-goto endtag) + + (while clauses + (let ((clause (pop clauses))) + (setq byte-compile-depth (1+ depth)) + (byte-compile-out-tag (pop clause)) + (dolist (_ clauses) (byte-compile-out 'byte-pophandler)) + (funcall compile-handler-body (cdr clause)) + (byte-compile-goto 'byte-goto endtag))) + + (byte-compile-out-tag endtag)))) (defun byte-compile-save-excursion (form) (if (and (eq 'set-buffer (car-safe (car-safe (cdr form)))) diff --git a/lisp/emacs-lisp/cconv.el b/lisp/emacs-lisp/cconv.el index b37cfebab31..f6637109028 100644 --- a/lisp/emacs-lisp/cconv.el +++ b/lisp/emacs-lisp/cconv.el @@ -1,4 +1,4 @@ -;;; cconv.el --- Closure conversion for statically scoped Emacs lisp. -*- lexical-binding: t -*- +;;; cconv.el --- Closure conversion for statically scoped Emacs Lisp. -*- lexical-binding: t -*- ;; Copyright (C) 2011-2021 Free Software Foundation, Inc. diff --git a/lisp/emacs-lisp/check-declare.el b/lisp/emacs-lisp/check-declare.el index 7c2b23b4ec4..bec4ad92503 100644 --- a/lisp/emacs-lisp/check-declare.el +++ b/lisp/emacs-lisp/check-declare.el @@ -328,4 +328,4 @@ Returns non-nil if any false statements are found." (provide 'check-declare) -;;; check-declare.el ends here. +;;; check-declare.el ends here diff --git a/lisp/emacs-lisp/cl-indent.el b/lisp/emacs-lisp/cl-indent.el index 7d0bfc88b15..c88e15d5a8b 100644 --- a/lisp/emacs-lisp/cl-indent.el +++ b/lisp/emacs-lisp/cl-indent.el @@ -27,7 +27,7 @@ ;; This package supplies a single entry point, common-lisp-indent-function, ;; which performs indentation in the preferred style for Common Lisp code. -;; It is also a suitable function for indenting Emacs lisp code. +;; It is also a suitable function for indenting Emacs Lisp code. ;; ;; To enable it: ;; diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 8b2d3c413af..d7e6c307ed3 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -2144,7 +2144,9 @@ Like `cl-flet' but the definitions can refer to previous ones. ((and `(condition-case ,err-var ,bodyform . ,handlers) (guard (not (eq err-var var)))) `(condition-case ,err-var - (progn (setq ,retvar ,bodyform) nil) + ,(if (assq :success handlers) + bodyform + `(progn (setq ,retvar ,bodyform) nil)) . ,(mapcar (lambda (h) (cons (car h) (funcall opt-exps (cdr h)))) handlers))) diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index b2d54c77feb..069c7a90ad0 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -213,7 +213,7 @@ the debugger will not be entered." last-input-event last-command-event last-nonmenu-event last-event-frame overriding-local-map - load-read-function + (load-read-function #'read) ;; If we are inside a minibuffer, allow nesting ;; so that we don't get an error from the `e' command. (enable-recursive-minibuffers diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index e23ff5ae513..2dd1524a71e 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -116,7 +116,7 @@ it is disabled.") doc nil nil 1))))) ;;;###autoload -(defalias 'easy-mmode-define-minor-mode 'define-minor-mode) +(defalias 'easy-mmode-define-minor-mode #'define-minor-mode) ;;;###autoload (defmacro define-minor-mode (mode doc &optional init-value lighter keymap &rest body) "Define a new minor mode MODE. @@ -143,9 +143,9 @@ BODY contains code to execute each time the mode is enabled or disabled. It is executed after toggling the mode, and before running MODE-hook. Before the actual body code, you can write keyword arguments, i.e. alternating keywords and values. If you provide BODY, then you must - provide at least one keyword argument. The following special - keywords are supported (other keywords are passed to `defcustom' if - the minor mode is global): + provide at least one keyword argument (e.g. `:lighter nil`). + The following special keywords are supported (other keywords are passed + to `defcustom' if the minor mode is global): :global GLOBAL If non-nil specifies that the minor mode is not meant to be buffer-local, so don't make the variable MODE buffer-local. @@ -186,9 +186,11 @@ For example, you could write ...BODY CODE...) For backward compatibility with the Emacs<21 calling convention, -BODY can also start with the triplet INIT-VALUE LIGHTER KEYMAP." +the keywords can also be preceded by the obsolete triplet +INIT-VALUE LIGHTER KEYMAP. + +\(fn MODE DOC [KEYWORD VAL ... &rest BODY])" (declare (doc-string 2) - (advertised-calling-convention (mode doc &rest body) "28.1") (debug (&define name string-or-null-p [&optional [¬ keywordp] sexp &optional [¬ keywordp] sexp @@ -267,7 +269,7 @@ BODY can also start with the triplet INIT-VALUE LIGHTER KEYMAP." (unless set (setq set '(:set #'custom-set-minor-mode))) (unless initialize - (setq initialize '(:initialize 'custom-initialize-default))) + (setq initialize '(:initialize #'custom-initialize-default))) ;; TODO? Mark booleans as safe if booleanp? Eg abbrev-mode. (unless type (setq type '(:type 'boolean))) @@ -405,9 +407,9 @@ No problems result if this variable is not bound. ;;; ;;;###autoload -(defalias 'easy-mmode-define-global-mode 'define-globalized-minor-mode) +(defalias 'easy-mmode-define-global-mode #'define-globalized-minor-mode) ;;;###autoload -(defalias 'define-global-minor-mode 'define-globalized-minor-mode) +(defalias 'define-global-minor-mode #'define-globalized-minor-mode) ;;;###autoload (defmacro define-globalized-minor-mode (global-mode mode turn-on &rest body) "Make a global mode GLOBAL-MODE corresponding to buffer-local minor MODE. @@ -509,12 +511,12 @@ disable it. If called from Lisp, enable the mode if ARG is omitted or nil.\n\n" (if ,global-mode (progn (add-hook 'after-change-major-mode-hook - ',MODE-enable-in-buffers) - (add-hook 'find-file-hook ',MODE-check-buffers) - (add-hook 'change-major-mode-hook ',MODE-cmhh)) - (remove-hook 'after-change-major-mode-hook ',MODE-enable-in-buffers) - (remove-hook 'find-file-hook ',MODE-check-buffers) - (remove-hook 'change-major-mode-hook ',MODE-cmhh)) + #',MODE-enable-in-buffers) + (add-hook 'find-file-hook #',MODE-check-buffers) + (add-hook 'change-major-mode-hook #',MODE-cmhh)) + (remove-hook 'after-change-major-mode-hook #',MODE-enable-in-buffers) + (remove-hook 'find-file-hook #',MODE-check-buffers) + (remove-hook 'change-major-mode-hook #',MODE-cmhh)) ;; Go through existing buffers. (dolist (buf (buffer-list)) @@ -554,7 +556,7 @@ list." ;; A function which checks whether MODE has been disabled in the major ;; mode hook which has just been run. - (add-hook ',minor-MODE-hook ',MODE-set-explicitly) + (add-hook ',minor-MODE-hook #',MODE-set-explicitly) ;; List of buffers left to process. (defvar ,MODE-buffers nil) @@ -581,13 +583,13 @@ list." (defun ,MODE-check-buffers () (,MODE-enable-in-buffers) - (remove-hook 'post-command-hook ',MODE-check-buffers)) + (remove-hook 'post-command-hook #',MODE-check-buffers)) (put ',MODE-check-buffers 'definition-name ',global-mode) ;; The function that catches kill-all-local-variables. (defun ,MODE-cmhh () (add-to-list ',MODE-buffers (current-buffer)) - (add-hook 'post-command-hook ',MODE-check-buffers)) + (add-hook 'post-command-hook #',MODE-check-buffers)) (put ',MODE-cmhh 'definition-name ',global-mode)))) (defun easy-mmode--globalized-predicate-p (predicate) diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index cbc40193125..b08ee3c4a17 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el @@ -459,6 +459,9 @@ invoked without a prefix argument. If acting on a `defun' for FUNCTION, and the function was instrumented, `Edebug: FUNCTION' is printed in the minibuffer. If not instrumented, just FUNCTION is printed." + ;; Re-install our advice, in case `debug' re-bound `load-read-function' to + ;; its default value. + (add-function :around load-read-function #'edebug--read) (let* ((edebug-all-forms (not (eq (not edebug-it) (not edebug-all-defs)))) (edebug-all-defs edebug-all-forms)) (funcall orig-fun nil))) diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el index e7727fd3fc9..2923dffd951 100644 --- a/lisp/emacs-lisp/eieio-core.el +++ b/lisp/emacs-lisp/eieio-core.el @@ -169,7 +169,7 @@ Return nil if that option doesn't exist." (and (recordp obj) (eieio--class-p (eieio--object-class obj)))) -(define-obsolete-function-alias 'object-p 'eieio-object-p "25.1") +(define-obsolete-function-alias 'object-p #'eieio-object-p "25.1") (defun class-abstract-p (class) "Return non-nil if CLASS is abstract. @@ -242,9 +242,9 @@ use \\='%s or turn off `eieio-backward-compatibility' instead" cname) (cl-deftype list-of (elem-type) `(and list - (satisfies (lambda (list) - (cl-every (lambda (elem) (cl-typep elem ',elem-type)) - list))))) + (satisfies ,(lambda (list) + (cl-every (lambda (elem) (cl-typep elem elem-type)) + list))))) (defun eieio-make-class-predicate (class) @@ -787,7 +787,7 @@ Fills in OBJ's SLOT with its default value." (cond ;; Is it a function call? If so, evaluate it. ((eieio-eval-default-p val) - (eval val)) + (eval val t)) ;;;; check for quoted things, and unquote them ;;((and (consp val) (eq (car val) 'quote)) ;; (car (cdr val))) @@ -1029,7 +1029,7 @@ method invocation orders of the involved classes." (eieio--class-precedence-c3 class)))))) (define-obsolete-function-alias - 'class-precedence-list 'eieio--class-precedence-list "24.4") + 'class-precedence-list #'eieio--class-precedence-list "24.4") ;;; Here are some special types of errors diff --git a/lisp/emacs-lisp/eieio-custom.el b/lisp/emacs-lisp/eieio-custom.el index 184b99fdac6..8257f7a4bae 100644 --- a/lisp/emacs-lisp/eieio-custom.el +++ b/lisp/emacs-lisp/eieio-custom.el @@ -1,4 +1,4 @@ -;;; eieio-custom.el -- eieio object customization -*- lexical-binding:t -*- +;;; eieio-custom.el --- eieio object customization -*- lexical-binding:t -*- ;; Copyright (C) 1999-2001, 2005, 2007-2021 Free Software Foundation, ;; Inc. diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el index e65f424cbab..08a6debc203 100644 --- a/lisp/emacs-lisp/eieio-opt.el +++ b/lisp/emacs-lisp/eieio-opt.el @@ -1,4 +1,4 @@ -;;; eieio-opt.el -- eieio optional functions (debug, printing, speedbar) -*- lexical-binding: t; -*- +;;; eieio-opt.el --- eieio optional functions (debug, printing, speedbar) -*- lexical-binding: t; -*- ;; Copyright (C) 1996, 1998-2003, 2005, 2008-2021 Free Software ;; Foundation, Inc. diff --git a/lisp/emacs-lisp/eieio-speedbar.el b/lisp/emacs-lisp/eieio-speedbar.el index 8bf77e20dfa..c25ea8acee9 100644 --- a/lisp/emacs-lisp/eieio-speedbar.el +++ b/lisp/emacs-lisp/eieio-speedbar.el @@ -1,4 +1,4 @@ -;;; eieio-speedbar.el -- Classes for managing speedbar displays. -*- lexical-binding:t -*- +;;; eieio-speedbar.el --- Classes for managing speedbar displays. -*- lexical-binding:t -*- ;; Copyright (C) 1999-2002, 2005, 2007-2021 Free Software Foundation, ;; Inc. diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el index 910023b841b..31b6b0945bb 100644 --- a/lisp/emacs-lisp/eieio.el +++ b/lisp/emacs-lisp/eieio.el @@ -981,4 +981,4 @@ of `eq'." (provide 'eieio) -;;; eieio ends here +;;; eieio.el ends here diff --git a/lisp/emacs-lisp/faceup.el b/lisp/emacs-lisp/faceup.el index 6c3931f9829..162c39634ed 100644 --- a/lisp/emacs-lisp/faceup.el +++ b/lisp/emacs-lisp/faceup.el @@ -1170,11 +1170,6 @@ Intended to be called when a file is loaded." ;; File is being evaluated using, for example, `eval-buffer'. default-directory))) - -;; ---------------------------------------------------------------------- -;; The end -;; - (provide 'faceup) ;;; faceup.el ends here diff --git a/lisp/emacs-lisp/lisp-mnt.el b/lisp/emacs-lisp/lisp-mnt.el index 6d9c8c32794..73a33a553fb 100644 --- a/lisp/emacs-lisp/lisp-mnt.el +++ b/lisp/emacs-lisp/lisp-mnt.el @@ -109,11 +109,6 @@ ;; * Footer line --- marks end-of-file so it can be distinguished from ;; an expanded formfeed or the results of truncation. -;;; Change Log: - -;; Tue Jul 14 23:44:17 1992 ESR -;; * Created. - ;;; Code: ;;; Variables: diff --git a/lisp/emacs-lisp/ring.el b/lisp/emacs-lisp/ring.el index 96894655b45..ea27bb3c31b 100644 --- a/lisp/emacs-lisp/ring.el +++ b/lisp/emacs-lisp/ring.el @@ -248,8 +248,6 @@ If SEQ is already a ring, return it." (ring-insert-at-beginning ring (elt seq count)))) ring))) -;;; provide ourself: - (provide 'ring) ;;; ring.el ends here diff --git a/lisp/emacs-lisp/tcover-ses.el b/lisp/emacs-lisp/tcover-ses.el index d9db1d3cdc9..4460fef97bd 100644 --- a/lisp/emacs-lisp/tcover-ses.el +++ b/lisp/emacs-lisp/tcover-ses.el @@ -1,4 +1,4 @@ -;;;; testcover-ses.el -- Example use of `testcover' to test "SES" -*- lexical-binding: t; -*- +;;; tcover-ses.el --- Example use of `testcover' to test "SES" -*- lexical-binding: t; -*- ;; Copyright (C) 2002-2021 Free Software Foundation, Inc. @@ -716,4 +716,4 @@ spreadsheet files with invalid formatting." ;;Could do this here: (testcover-end "ses.el") (message "Done")) -;;; testcover-ses.el ends here. +;;; tcover-ses.el ends here diff --git a/lisp/emacs-lisp/testcover.el b/lisp/emacs-lisp/testcover.el index 75b27d08e56..e75f15140aa 100644 --- a/lisp/emacs-lisp/testcover.el +++ b/lisp/emacs-lisp/testcover.el @@ -1,4 +1,4 @@ -;;;; testcover.el -- Visual code-coverage tool -*- lexical-binding:t -*- +;;; testcover.el --- Visual code-coverage tool -*- lexical-binding:t -*- ;; Copyright (C) 2002-2021 Free Software Foundation, Inc. @@ -675,4 +675,4 @@ The list is 1valued if all of its constituent elements are also 1valued." (testcover-analyze-coverage (cadr form))) (t (testcover-analyze-coverage-backquote form)))) -;; testcover.el ends here. +;;; testcover.el ends here diff --git a/lisp/emacs-lisp/text-property-search.el b/lisp/emacs-lisp/text-property-search.el index e909e4bf760..69943a83f1c 100644 --- a/lisp/emacs-lisp/text-property-search.el +++ b/lisp/emacs-lisp/text-property-search.el @@ -214,3 +214,5 @@ and if a matching region is found, place point at its end." (funcall predicate value prop-value)) (provide 'text-property-search) + +;;; text-property-search.el ends here diff --git a/lisp/emacs-lisp/unsafep.el b/lisp/emacs-lisp/unsafep.el index d52a6c796db..fa4e0583ed3 100644 --- a/lisp/emacs-lisp/unsafep.el +++ b/lisp/emacs-lisp/unsafep.el @@ -1,4 +1,4 @@ -;;;; unsafep.el -- Determine whether a Lisp form is safe to evaluate -*- lexical-binding: t; -*- +;;; unsafep.el --- Determine whether a Lisp form is safe to evaluate -*- lexical-binding: t; -*- ;; Copyright (C) 2002-2021 Free Software Foundation, Inc. diff --git a/lisp/emulation/edt-mapper.el b/lisp/emulation/edt-mapper.el index 0b152784252..a723dbdbb90 100644 --- a/lisp/emulation/edt-mapper.el +++ b/lisp/emulation/edt-mapper.el @@ -26,7 +26,7 @@ ;; [Part of the GNU Emacs EDT Emulation.] -;; This emacs lisp program can be used to create an emacs lisp file +;; This Emacs Lisp program can be used to create an Emacs Lisp file ;; that defines the mapping of the user's keyboard to the LK-201 ;; keyboard function keys and keypad keys (around which EDT has been ;; designed). Please read the "Usage" AND "Known Problems" sections diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el index 044776c2363..cb9af92ba12 100644 --- a/lisp/erc/erc-button.el +++ b/lisp/erc/erc-button.el @@ -1,4 +1,4 @@ -;; erc-button.el --- A way of buttonizing certain things in ERC buffers -*- lexical-binding:t -*- +;;; erc-button.el --- A way of buttonizing certain things in ERC buffers -*- lexical-binding:t -*- ;; Copyright (C) 1996-2004, 2006-2021 Free Software Foundation, Inc. diff --git a/lisp/erc/erc-desktop-notifications.el b/lisp/erc/erc-desktop-notifications.el index 990f013cd2a..9838b239537 100644 --- a/lisp/erc/erc-desktop-notifications.el +++ b/lisp/erc/erc-desktop-notifications.el @@ -1,4 +1,4 @@ -;; erc-desktop-notifications.el -- Send notification on PRIVMSG or mentions -*- lexical-binding:t -*- +;;; erc-desktop-notifications.el --- Send notification on PRIVMSG or mentions -*- lexical-binding:t -*- ;; Copyright (C) 2012-2021 Free Software Foundation, Inc. diff --git a/lisp/erc/erc-goodies.el b/lisp/erc/erc-goodies.el index 1143faa1e26..fc9a8d39ef4 100644 --- a/lisp/erc/erc-goodies.el +++ b/lisp/erc/erc-goodies.el @@ -1,4 +1,4 @@ -;; erc-goodies.el --- Collection of ERC modules -*- lexical-binding: t; -*- +;;; erc-goodies.el --- Collection of ERC modules -*- lexical-binding: t; -*- ;; Copyright (C) 2001-2021 Free Software Foundation, Inc. diff --git a/lisp/erc/erc-imenu.el b/lisp/erc/erc-imenu.el index b2a2dc588e5..dcf6db7407a 100644 --- a/lisp/erc/erc-imenu.el +++ b/lisp/erc/erc-imenu.el @@ -1,4 +1,4 @@ -;;; erc-imenu.el -- Imenu support for ERC -*- lexical-binding: t; -*- +;;; erc-imenu.el --- Imenu support for ERC -*- lexical-binding: t; -*- ;; Copyright (C) 2001-2002, 2004, 2006-2021 Free Software Foundation, ;; Inc. diff --git a/lisp/erc/erc-menu.el b/lisp/erc/erc-menu.el index 0dc819fbbbe..1bee6ff2a67 100644 --- a/lisp/erc/erc-menu.el +++ b/lisp/erc/erc-menu.el @@ -1,4 +1,4 @@ -;; erc-menu.el -- Menu-bar definitions for ERC -*- lexical-binding: t; -*- +;;; erc-menu.el --- Menu-bar definitions for ERC -*- lexical-binding: t; -*- ;; Copyright (C) 2001-2002, 2004-2021 Free Software Foundation, Inc. diff --git a/lisp/erc/erc-page.el b/lisp/erc/erc-page.el index 4c244b7984d..457e8cd4684 100644 --- a/lisp/erc/erc-page.el +++ b/lisp/erc/erc-page.el @@ -1,4 +1,4 @@ -;; erc-page.el - CTCP PAGE support for ERC -*- lexical-binding: t; -*- +;;; erc-page.el --- CTCP PAGE support for ERC -*- lexical-binding: t; -*- ;; Copyright (C) 2002, 2004, 2006-2021 Free Software Foundation, Inc. diff --git a/lisp/erc/erc-replace.el b/lisp/erc/erc-replace.el index d08d9850c10..3f69c4cb9cc 100644 --- a/lisp/erc/erc-replace.el +++ b/lisp/erc/erc-replace.el @@ -1,4 +1,4 @@ -;; erc-replace.el -- wash and massage messages inserted into the buffer -*- lexical-binding: t; -*- +;;; erc-replace.el --- wash and massage messages inserted into the buffer -*- lexical-binding: t; -*- ;; Copyright (C) 2001-2002, 2004, 2006-2021 Free Software Foundation, ;; Inc. diff --git a/lisp/erc/erc-ring.el b/lisp/erc/erc-ring.el index 28299ae46c3..666fd585926 100644 --- a/lisp/erc/erc-ring.el +++ b/lisp/erc/erc-ring.el @@ -1,4 +1,4 @@ -;; erc-ring.el -- Command history handling for erc using ring.el -*- lexical-binding: t; -*- +;;; erc-ring.el --- Command history handling for erc using ring.el -*- lexical-binding: t; -*- ;; Copyright (C) 2001-2004, 2006-2021 Free Software Foundation, Inc. diff --git a/lisp/eshell/em-xtra.el b/lisp/eshell/em-xtra.el index fa3218baf2f..f58e1b85cbd 100644 --- a/lisp/eshell/em-xtra.el +++ b/lisp/eshell/em-xtra.el @@ -23,13 +23,10 @@ ;;; Code: +(require 'cl-lib) (require 'esh-util) (eval-when-compile (require 'eshell)) -;; Strictly speaking, should only be needed at compile time. -;; Require at run-time too to silence compiler. -(require 'pcomplete) -(require 'compile) ;; There are no items in this custom group, but eshell modules (ab)use ;; custom groups. @@ -49,50 +46,45 @@ naturally accessible within Emacs." (defun eshell/expr (&rest args) "Implementation of expr, using the calc package." - (if (not (fboundp 'calc-eval)) - (throw 'eshell-replace-command - (eshell-parse-command "*expr" (flatten-tree args))) - ;; to fool the byte-compiler... - (let ((func 'calc-eval)) - (funcall func (eshell-flatten-and-stringify args))))) + (calc-eval (eshell-flatten-and-stringify args))) (defun eshell/substitute (&rest args) - "Easy front-end to `intersection', for comparing lists of strings." - (apply 'substitute (car args) (cadr args) :test 'equal + "Easy front-end to `cl-substitute', for comparing lists of strings." + (apply #'cl-substitute (car args) (cadr args) :test #'equal (cddr args))) (defun eshell/count (&rest args) - "Easy front-end to `intersection', for comparing lists of strings." - (apply 'count (car args) (cadr args) :test 'equal + "Easy front-end to `cl-count', for comparing lists of strings." + (apply #'cl-count (car args) (cadr args) :test #'equal (cddr args))) (defun eshell/mismatch (&rest args) - "Easy front-end to `intersection', for comparing lists of strings." - (apply 'mismatch (car args) (cadr args) :test 'equal + "Easy front-end to `cl-mismatch', for comparing lists of strings." + (apply #'cl-mismatch (car args) (cadr args) :test #'equal (cddr args))) (defun eshell/union (&rest args) - "Easy front-end to `intersection', for comparing lists of strings." - (apply 'union (car args) (cadr args) :test 'equal + "Easy front-end to `cl-union', for comparing lists of strings." + (apply #'cl-union (car args) (cadr args) :test #'equal (cddr args))) (defun eshell/intersection (&rest args) - "Easy front-end to `intersection', for comparing lists of strings." - (apply 'intersection (car args) (cadr args) :test 'equal + "Easy front-end to `cl-intersection', for comparing lists of strings." + (apply #'cl-intersection (car args) (cadr args) :test #'equal (cddr args))) (defun eshell/set-difference (&rest args) - "Easy front-end to `intersection', for comparing lists of strings." - (apply 'set-difference (car args) (cadr args) :test 'equal + "Easy front-end to `cl-set-difference', for comparing lists of strings." + (apply #'cl-set-difference (car args) (cadr args) :test #'equal (cddr args))) (defun eshell/set-exclusive-or (&rest args) - "Easy front-end to `intersection', for comparing lists of strings." - (apply 'set-exclusive-or (car args) (cadr args) :test 'equal + "Easy front-end to `cl-set-exclusive-or', for comparing lists of strings." + (apply #'cl-set-exclusive-or (car args) (cadr args) :test #'equal (cddr args))) -(defalias 'eshell/ff 'find-name-dired) -(defalias 'eshell/gf 'find-grep-dired) +(defalias 'eshell/ff #'find-name-dired) +(defalias 'eshell/gf #'find-grep-dired) (provide 'em-xtra) diff --git a/lisp/expand.el b/lisp/expand.el index d11ae7c5263..1b722014f89 100644 --- a/lisp/expand.el +++ b/lisp/expand.el @@ -484,7 +484,6 @@ This is used only in conjunction with `expand-add-abbrevs'." (provide 'expand) -;; run load hooks (run-hooks 'expand-load-hook) ;;; expand.el ends here diff --git a/lisp/filecache.el b/lisp/filecache.el index 67d2939dd3c..62184e1a0ae 100644 --- a/lisp/filecache.el +++ b/lisp/filecache.el @@ -674,10 +674,6 @@ match REGEXP." (insert (nth 1 item) (nth 0 item) "\n")) (pop-to-buffer buf)))) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Keybindings -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (provide 'filecache) ;;; filecache.el ends here diff --git a/lisp/filenotify.el b/lisp/filenotify.el index 07871bb0b64..4fc7f0a8ec0 100644 --- a/lisp/filenotify.el +++ b/lisp/filenotify.el @@ -505,7 +505,6 @@ DESCRIPTOR should be an object returned by `file-notify-add-watch'." ;; due to the way events are propagated during idle time. Note: This ;; may be perfectly acceptable. -;; The end: (provide 'filenotify) ;;; filenotify.el ends here diff --git a/lisp/files.el b/lisp/files.el index ac508665c35..0d4018d25b9 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -7676,7 +7676,7 @@ as in \"og+rX-w\"." num-rights)) (defun file-modes-number-to-symbolic (mode &optional filetype) - "Return a string describing a a file's MODE. + "Return a string describing a file's MODE. For instance, if MODE is #o700, then it produces `-rwx------'. FILETYPE if provided should be a character denoting the type of file, such as `?d' for a directory, or `?l' for a symbolic link and will override diff --git a/lisp/gnus/gnus-cus.el b/lisp/gnus/gnus-cus.el index 0852f8e1264..e7af94ff509 100644 --- a/lisp/gnus/gnus-cus.el +++ b/lisp/gnus/gnus-cus.el @@ -1102,8 +1102,6 @@ articles in the thread. (widget-setup) (buffer-enable-undo)))) -;;; The End: - (provide 'gnus-cus) ;;; gnus-cus.el ends here diff --git a/lisp/gnus/gnus-diary.el b/lisp/gnus/gnus-diary.el index 64eb639f61c..e2cbca9007d 100644 --- a/lisp/gnus/gnus-diary.el +++ b/lisp/gnus/gnus-diary.el @@ -32,11 +32,6 @@ ;; gnus-diary is a utility toolkit used on top of the nndiary back end. It is ;; now fully documented in the Gnus manual. - -;; Bugs / Todo: -;; =========== - - ;;; Code: (require 'nndiary) diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index 423b180408a..8c62c9424de 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el @@ -2462,7 +2462,8 @@ the ephemeral group." (with-temp-file tmpfile (mm-disable-multibyte) (dolist (id ids) - (let ((file (concat "~/.emacs.d/debbugs-cache/" id))) + (let ((file (expand-file-name id (locate-user-emacs-file + "debbugs-cache")))) (if (and (not gnus-plugged) (file-exists-p file)) (insert-file-contents file) diff --git a/lisp/gnus/gnus-notifications.el b/lisp/gnus/gnus-notifications.el index a4d198b46e4..8646904637c 100644 --- a/lisp/gnus/gnus-notifications.el +++ b/lisp/gnus/gnus-notifications.el @@ -1,4 +1,4 @@ -;; gnus-notifications.el -- Send notification on new message in Gnus -*- lexical-binding: t; -*- +;;; gnus-notifications.el --- Send notification on new message in Gnus -*- lexical-binding: t; -*- ;; Copyright (C) 2012-2021 Free Software Foundation, Inc. diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el index 6ac646fbeac..11b6f7ddf07 100644 --- a/lisp/gnus/gnus-registry.el +++ b/lisp/gnus/gnus-registry.el @@ -1298,8 +1298,6 @@ from your existing entries." (gnus-registry-insert db k newv))) (registry-reindex db)))) -;; TODO: a few things - (provide 'gnus-registry) ;;; gnus-registry.el ends here diff --git a/lisp/gnus/legacy-gnus-agent.el b/lisp/gnus/legacy-gnus-agent.el index 091e3899c26..4f800891b2b 100644 --- a/lisp/gnus/legacy-gnus-agent.el +++ b/lisp/gnus/legacy-gnus-agent.el @@ -1,4 +1,4 @@ -;;; gnus-agent.el --- Legacy unplugged support for Gnus -*- lexical-binding: t; -*- +;;; legacy-gnus-agent.el --- Legacy unplugged support for Gnus -*- lexical-binding: t; -*- ;; Copyright (C) 2004-2021 Free Software Foundation, Inc. diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index f3b830cf849..02db38725a9 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -187,22 +187,26 @@ Otherwise, most addresses look like `angles', but they look like (defcustom message-syntax-checks (if message-insert-canlock '((sender . disabled)) nil) - ;; Guess this one shouldn't be easy to customize... "Controls what syntax checks should not be performed on outgoing posts. To disable checking of long signatures, for instance, add `(signature . disabled)' to this list. Don't touch this variable unless you really know what you're doing. -Checks include `approved', `bogus-recipient', `continuation-headers', -`control-chars', `empty', `existing-newsgroups', `from', `illegible-text', -`invisible-text', `long-header-lines', `long-lines', `message-id', -`multiple-headers', `new-text', `newsgroups', `quoting-style', -`repeated-newsgroups', `reply-to', `sender', `sendsys', `shoot', -`shorten-followup-to', `signature', `size', `subject', `subject-cmsg' -and `valid-newsgroups'." - :group 'message-news - :type '(repeat sexp)) ; Fixme: improve this +See the Message manual for the meanings of the valid syntax check +types." + :group 'message-headers + :link '(custom-manual "(message)Message Headers") + :type '(alist + :key-type symbol + :value-type (const disabled) + :options (approved bogus-recipient continuation-headers + control-chars empty existing-newsgroups from illegible-text + invisible-text long-header-lines long-lines message-id + multiple-headers new-text newgroups quoting-style + repeated-newsgroups reply-to sender sendsys shoot + shorten-followup-to signature size subject subject-cmsg + valid-newsgroups))) (defcustom message-required-headers '((optional . References) From) diff --git a/lisp/gnus/mm-archive.el b/lisp/gnus/mm-archive.el index 1ecceeedeb7..fdc83e1de6e 100644 --- a/lisp/gnus/mm-archive.el +++ b/lisp/gnus/mm-archive.el @@ -108,4 +108,4 @@ (provide 'mm-archive) -;; mm-archive.el ends here +;;; mm-archive.el ends here diff --git a/lisp/gnus/nnselect.el b/lisp/gnus/nnselect.el index e314e1d8d10..5ac4c3a64e1 100644 --- a/lisp/gnus/nnselect.el +++ b/lisp/gnus/nnselect.el @@ -968,7 +968,6 @@ Pass NO-PARSE on to the search engine." (gnus-group-make-search-group no-parse spec))) -;; The end. (provide 'nnselect) ;;; nnselect.el ends here diff --git a/lisp/gnus/spam-report.el b/lisp/gnus/spam-report.el index 7d93f8a5550..a4234f84001 100644 --- a/lisp/gnus/spam-report.el +++ b/lisp/gnus/spam-report.el @@ -378,4 +378,4 @@ Process queued spam reports." (provide 'spam-report) -;;; spam-report.el ends here. +;;; spam-report.el ends here diff --git a/lisp/icomplete.el b/lisp/icomplete.el index d5b6f76d7b2..91bbb600136 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -837,7 +837,6 @@ matches exist." ;;;###autoload (make-obsolete 'iswitchb-mode ;;;###autoload "use `icomplete-mode' or `ido-mode' instead." "24.4")) -;;;_* Provide (provide 'icomplete) ;;_* Local emacs vars. diff --git a/lisp/info.el b/lisp/info.el index dd7e16f8704..5efac6f25f1 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -1,4 +1,4 @@ -;; info.el --- Info package for Emacs -*- lexical-binding:t -*- +;;; info.el --- Info package for Emacs -*- lexical-binding:t -*- ;; Copyright (C) 1985-1986, 1992-2021 Free Software Foundation, Inc. diff --git a/lisp/isearch.el b/lisp/isearch.el index 5efac4c78f4..69fdc9df6d9 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -2561,7 +2561,9 @@ Otherwise invoke whatever the calling mouse-2 command sequence is bound to outside of Isearch." (interactive "e") (let ((w (posn-window (event-start click))) - (binding (let ((overriding-terminal-local-map nil)) + (binding (let ((overriding-terminal-local-map nil) + ;; Key search depends on mode (bug#47755) + (isearch-mode nil)) (key-binding (this-command-keys-vector) t)))) (if (and (window-minibuffer-p w) (not (minibuffer-window-active-p w))) ; in echo area diff --git a/lisp/language/burmese.el b/lisp/language/burmese.el index 373f25ac5ca..ade3566717b 100644 --- a/lisp/language/burmese.el +++ b/lisp/language/burmese.el @@ -55,3 +55,5 @@ (vector "." 0 #'font-shape-gstring)))) (set-char-table-range composition-function-table '(#x1000 . #x107F) elt) (set-char-table-range composition-function-table '(#xAA60 . #xAA7B) elt)) + +;;; burmese.el ends here diff --git a/lisp/language/cham.el b/lisp/language/cham.el index 3aac986b437..cbb35565af2 100644 --- a/lisp/language/cham.el +++ b/lisp/language/cham.el @@ -43,3 +43,5 @@ an Austronesian language spoken by some 245,000 Chams in Vietnam and Cambodia."))) (provide 'cham) + +;;; cham.el ends here diff --git a/lisp/language/khmer.el b/lisp/language/khmer.el index 6f08e60d601..471af401656 100644 --- a/lisp/language/khmer.el +++ b/lisp/language/khmer.el @@ -35,4 +35,4 @@ (set-char-table-range composition-function-table '(#x1780 . #x17FF) val) (set-char-table-range composition-function-table '(#x19E0 . #x19FF) val)) -;; khmer.el ends here +;;; khmer.el ends here diff --git a/lisp/language/sinhala.el b/lisp/language/sinhala.el index 99a104ec339..89392ad6c50 100644 --- a/lisp/language/sinhala.el +++ b/lisp/language/sinhala.el @@ -45,4 +45,4 @@ "[\u0D80-\u0DFF]") 0 #'font-shape-gstring))) -;; sinhala.el ends here +;;; sinhala.el ends here diff --git a/lisp/language/tai-viet.el b/lisp/language/tai-viet.el index 4549b111a3d..366c39202d3 100644 --- a/lisp/language/tai-viet.el +++ b/lisp/language/tai-viet.el @@ -56,3 +56,5 @@ The language name is spelled as \"ꪁꪫꪱꪣ ꪼꪕ\", and the script name is spelled as \"ꪎꪳ ꪼꪕ\"."))) (provide 'tai-viet) + +;;; tai-viet.el ends here diff --git a/lisp/language/thai-word.el b/lisp/language/thai-word.el index ff1e80298ba..5d0389c28df 100644 --- a/lisp/language/thai-word.el +++ b/lisp/language/thai-word.el @@ -1,4 +1,4 @@ -;;; thai-word.el -- find Thai word boundaries -*- lexical-binding: t; -*- +;;; thai-word.el --- find Thai word boundaries -*- lexical-binding: t; -*- ;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) @@ -11074,4 +11074,4 @@ With argument, do this that many times." ;; coding: utf-8 ;; End: -;; end of thai-word.el +;;; thai-word.el ends here diff --git a/lisp/language/tv-util.el b/lisp/language/tv-util.el index 1a530d350f2..207d76f47c1 100644 --- a/lisp/language/tv-util.el +++ b/lisp/language/tv-util.el @@ -136,5 +136,6 @@ (if (looking-at tai-viet-re) (tai-viet-compose-region from (match-end 0))))) -;; (provide 'tai-viet-util) + +;;; tv-util.el ends here diff --git a/lisp/leim/quail/croatian.el b/lisp/leim/quail/croatian.el index 08f1e47b6f3..7402b81a8cc 100644 --- a/lisp/leim/quail/croatian.el +++ b/lisp/leim/quail/croatian.el @@ -1,4 +1,4 @@ -;;; croatian.el -- Quail package for inputting Croatian -*-coding: utf-8; lexical-binding:t -*- +;;; croatian.el --- Quail package for inputting Croatian -*-coding: utf-8; lexical-binding:t -*- ;; Copyright (C) 2003-2021 Free Software Foundation, Inc. diff --git a/lisp/leim/quail/hebrew.el b/lisp/leim/quail/hebrew.el index fc6bb80596b..28b2eb34367 100644 --- a/lisp/leim/quail/hebrew.el +++ b/lisp/leim/quail/hebrew.el @@ -1,4 +1,4 @@ -;; hebrew.el --- Quail package for inputting Hebrew characters -*- coding: utf-8; lexical-binding: t -*- +;;; hebrew.el --- Quail package for inputting Hebrew characters -*- coding: utf-8; lexical-binding: t -*- ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, ;; 2008, 2009, 2010, 2011 diff --git a/lisp/leim/quail/persian.el b/lisp/leim/quail/persian.el index 4157f886704..cb1f6e3c78b 100644 --- a/lisp/leim/quail/persian.el +++ b/lisp/leim/quail/persian.el @@ -1,4 +1,4 @@ -;;; persian.el --- Quail package for inputting Persian/Farsi keyboard -*- coding: utf-8; lexical-binding: t -*- +;;; persian.el --- Quail package for inputting Persian/Farsi keyboard -*- coding: utf-8; lexical-binding: t -*- ;; Copyright (C) 2011-2021 Free Software Foundation, Inc. diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el index 3721e86475c..24d49ea6d80 100644 --- a/lisp/ls-lisp.el +++ b/lisp/ls-lisp.el @@ -28,7 +28,7 @@ ;; OVERVIEW ========================================================== ;; This file advises the function `insert-directory' to implement it -;; directly from Emacs lisp, without running ls in a subprocess. +;; directly from Emacs Lisp, without running ls in a subprocess. ;; This is useful if you don't have ls installed (ie, on MS Windows). ;; This function can use regexps instead of shell wildcards. If you diff --git a/lisp/mail/rmail-spam-filter.el b/lisp/mail/rmail-spam-filter.el index d833685a8d4..fbac9e0cc0c 100644 --- a/lisp/mail/rmail-spam-filter.el +++ b/lisp/mail/rmail-spam-filter.el @@ -555,4 +555,4 @@ checks to see if the old format is used, and updates it if necessary." (provide 'rmail-spam-filter) -;;; rmail-spam-filter ends here +;;; rmail-spam-filter.el ends here diff --git a/lisp/mail/uudecode.el b/lisp/mail/uudecode.el index fdd402e0fa0..026356efe97 100644 --- a/lisp/mail/uudecode.el +++ b/lisp/mail/uudecode.el @@ -1,4 +1,4 @@ -;;; uudecode.el -- elisp native uudecode -*- lexical-binding:t -*- +;;; uudecode.el --- elisp native uudecode -*- lexical-binding:t -*- ;; Copyright (C) 1998-2021 Free Software Foundation, Inc. diff --git a/lisp/mh-e/mh-acros.el b/lisp/mh-e/mh-acros.el index dd953ee9df7..8fdcf3c62b4 100644 --- a/lisp/mh-e/mh-acros.el +++ b/lisp/mh-e/mh-acros.el @@ -36,8 +36,6 @@ ;; because it's pointless to compile a file full of macros. But we ;; kept the name. -;;; Change Log: - ;;; Code: (require 'cl-lib) diff --git a/lisp/mh-e/mh-alias.el b/lisp/mh-e/mh-alias.el index 67c019aa179..415e9848258 100644 --- a/lisp/mh-e/mh-alias.el +++ b/lisp/mh-e/mh-alias.el @@ -24,8 +24,6 @@ ;;; Commentary: -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-buffers.el b/lisp/mh-e/mh-buffers.el index a32f61c82eb..ef21fdb2f95 100644 --- a/lisp/mh-e/mh-buffers.el +++ b/lisp/mh-e/mh-buffers.el @@ -24,8 +24,6 @@ ;;; Commentary: -;;; Change Log: - ;;; Code: ;; The names of ephemeral buffers have a " *mh-" prefix (so that they diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el index c1cd6c1a9e2..b64bbfb6f3b 100644 --- a/lisp/mh-e/mh-comp.el +++ b/lisp/mh-e/mh-comp.el @@ -29,8 +29,6 @@ ;; that are used to send the mail. Other that those, functions that ;; are needed in mh-letter.el should be found there. -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-compat.el b/lisp/mh-e/mh-compat.el index 0363c5aadac..ade80e8b95e 100644 --- a/lisp/mh-e/mh-compat.el +++ b/lisp/mh-e/mh-compat.el @@ -23,8 +23,6 @@ ;;; Commentary: -;;; Change Log: - ;;; Code: ;; This is a good place to gather code that is used for compatibility diff --git a/lisp/mh-e/mh-folder.el b/lisp/mh-e/mh-folder.el index 2e288064f16..ce77f9c0971 100644 --- a/lisp/mh-e/mh-folder.el +++ b/lisp/mh-e/mh-folder.el @@ -25,8 +25,6 @@ ;; Mode for browsing folders -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-funcs.el b/lisp/mh-e/mh-funcs.el index 38ba43188da..0e5ffc9a42c 100644 --- a/lisp/mh-e/mh-funcs.el +++ b/lisp/mh-e/mh-funcs.el @@ -30,8 +30,6 @@ ;; small support routines are needed, place them with the function; ;; otherwise, create a separate section for them. -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-gnus.el b/lisp/mh-e/mh-gnus.el index ac46cc63fcc..cc60f7b6640 100644 --- a/lisp/mh-e/mh-gnus.el +++ b/lisp/mh-e/mh-gnus.el @@ -24,8 +24,6 @@ ;;; Commentary: -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-identity.el b/lisp/mh-e/mh-identity.el index aeab0497562..ceede0d07cb 100644 --- a/lisp/mh-e/mh-identity.el +++ b/lisp/mh-e/mh-identity.el @@ -33,8 +33,6 @@ ;; in MH-Letter mode. The command `mh-insert-identity' can be used ;; to manually insert an identity. -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-inc.el b/lisp/mh-e/mh-inc.el index 6a29195afbb..83cfe4f99f1 100644 --- a/lisp/mh-e/mh-inc.el +++ b/lisp/mh-e/mh-inc.el @@ -28,8 +28,6 @@ ;; inc can also be used to incorporate mail from multiple spool files ;; into separate folders. See "C-h v mh-inc-spool-list". -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-junk.el b/lisp/mh-e/mh-junk.el index 5a407947a0b..e50bf8df50c 100644 --- a/lisp/mh-e/mh-junk.el +++ b/lisp/mh-e/mh-junk.el @@ -26,8 +26,6 @@ ;; Spam handling in MH-E. -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-letter.el b/lisp/mh-e/mh-letter.el index 59790181c4d..ae5b80d5807 100644 --- a/lisp/mh-e/mh-letter.el +++ b/lisp/mh-e/mh-letter.el @@ -31,8 +31,6 @@ ;; mh-utils.el. That will help prevent the loading of this file until ;; a message is actually composed. -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-limit.el b/lisp/mh-e/mh-limit.el index 08f1b4093f1..39cf7c5d271 100644 --- a/lisp/mh-e/mh-limit.el +++ b/lisp/mh-e/mh-limit.el @@ -25,8 +25,6 @@ ;; "Poor man's threading" by psg. -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el index fec2293ff1f..ef702525b7b 100644 --- a/lisp/mh-e/mh-mime.el +++ b/lisp/mh-e/mh-mime.el @@ -36,8 +36,6 @@ ;; MIME option to mh-forward command to move to content-description ;; insertion point. -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-print.el b/lisp/mh-e/mh-print.el index d084cf63e97..2074ff6f8f3 100644 --- a/lisp/mh-e/mh-print.el +++ b/lisp/mh-e/mh-print.el @@ -24,8 +24,6 @@ ;;; Commentary: -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-scan.el b/lisp/mh-e/mh-scan.el index f00ab22958a..15049793adf 100644 --- a/lisp/mh-e/mh-scan.el +++ b/lisp/mh-e/mh-scan.el @@ -27,8 +27,6 @@ ;; This file contains constants and a few functions for interpreting ;; scan lines. -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-search.el b/lisp/mh-e/mh-search.el index cb8f8e34558..b3a250bf13a 100644 --- a/lisp/mh-e/mh-search.el +++ b/lisp/mh-e/mh-search.el @@ -1,4 +1,4 @@ -;;; mh-search --- MH-Search mode -*- lexical-binding: t; -*- +;;; mh-search.el --- MH-Search mode -*- lexical-binding: t; -*- ;; Copyright (C) 1993, 1995, 2001-2021 Free Software Foundation, Inc. @@ -39,8 +39,6 @@ ;; documentation will direct you to the specific instructions for ;; your particular searcher. -;;; Change Log: - ;;; Code: (require 'mh-e) @@ -1945,4 +1943,4 @@ folder buffer." ;; sentence-end-double-space: nil ;; End: -;;; mh-search ends here +;;; mh-search.el ends here diff --git a/lisp/mh-e/mh-seq.el b/lisp/mh-e/mh-seq.el index 9b9675c78e1..9cdf39f7f1e 100644 --- a/lisp/mh-e/mh-seq.el +++ b/lisp/mh-e/mh-seq.el @@ -26,8 +26,6 @@ ;; Sequences are stored in the alist `mh-seq-list' in the form: ;; ((seq-name msgs ...) (seq-name msgs ...) ...) -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-show.el b/lisp/mh-e/mh-show.el index cb9819f17c7..aa97f5cb383 100644 --- a/lisp/mh-e/mh-show.el +++ b/lisp/mh-e/mh-show.el @@ -26,8 +26,6 @@ ;; Mode for showing messages. -;;; Change Log: - ;;; Code: (require 'mh-e) @@ -187,7 +185,7 @@ Sets the current buffer to the show buffer." (set-buffer folder) ;; When Gnus uses external displayers it has to keep handles longer. So ;; we will delete these handles when mh-quit is called on the folder. It - ;; would be nicer if there are weak pointers in emacs lisp, then we could + ;; would be nicer if there are weak pointers in Emacs Lisp, then we could ;; get the garbage collector to do this for us. (unless (mh-buffer-data) (setf (mh-buffer-data) (mh-make-buffer-data))) diff --git a/lisp/mh-e/mh-speed.el b/lisp/mh-e/mh-speed.el index b2deacf6a74..3af840c3a31 100644 --- a/lisp/mh-e/mh-speed.el +++ b/lisp/mh-e/mh-speed.el @@ -26,8 +26,6 @@ ;; Future versions should only use flists. -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-thread.el b/lisp/mh-e/mh-thread.el index 01b6863038b..89b0dbd9798 100644 --- a/lisp/mh-e/mh-thread.el +++ b/lisp/mh-e/mh-thread.el @@ -69,8 +69,6 @@ ;; (5) Better canonicalizing for message identifier and subject ;; strings. -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-tool-bar.el b/lisp/mh-e/mh-tool-bar.el index 40a430b9641..94aa8dd4a92 100644 --- a/lisp/mh-e/mh-tool-bar.el +++ b/lisp/mh-e/mh-tool-bar.el @@ -24,8 +24,6 @@ ;;; Commentary: -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el index e73c1db9e45..8e900dc0113 100644 --- a/lisp/mh-e/mh-utils.el +++ b/lisp/mh-e/mh-utils.el @@ -24,8 +24,6 @@ ;;; Commentary: -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/mh-e/mh-xface.el b/lisp/mh-e/mh-xface.el index 0b53829b056..d4d5c5c3784 100644 --- a/lisp/mh-e/mh-xface.el +++ b/lisp/mh-e/mh-xface.el @@ -23,8 +23,6 @@ ;;; Commentary: -;;; Change Log: - ;;; Code: (require 'mh-e) diff --git a/lisp/misearch.el b/lisp/misearch.el index 1f0dd315508..335efb95161 100644 --- a/lisp/misearch.el +++ b/lisp/misearch.el @@ -206,7 +206,7 @@ search status stack." (multi-isearch-pop-state cmd ,(current-buffer)))) (defun multi-isearch-pop-state (_cmd buffer) - "Restore the multiple buffers search state. + "Restore the multiple buffers search state in BUFFER. Switch to the buffer restored from the search status stack." (unless (equal buffer (current-buffer)) (switch-to-buffer (setq multi-isearch-current-buffer buffer)))) diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el index 86b5d449872..04ea8091277 100644 --- a/lisp/net/ange-ftp.el +++ b/lisp/net/ange-ftp.el @@ -6258,10 +6258,6 @@ be recognized automatically (they are all valid BS2000 hosts too)." ;; ange-ftp-bs2000-file-name-as-directory ;; ange-ftp-bs2000-make-compressed-filename ;; ange-ftp-bs2000-file-name-sans-versions - -;;;; ------------------------------------------------------------ -;;;; Finally provide package. -;;;; ------------------------------------------------------------ (provide 'ange-ftp) diff --git a/lisp/net/newst-ticker.el b/lisp/net/newst-ticker.el index 2f764708701..8cfafb5bfe4 100644 --- a/lisp/net/newst-ticker.el +++ b/lisp/net/newst-ticker.el @@ -1,4 +1,4 @@ -;; newst-ticker.el --- mode line ticker for newsticker. -*- lexical-binding: t; -*- +;;; newst-ticker.el --- mode line ticker for newsticker. -*- lexical-binding: t; -*- ;; Copyright (C) 2003-2021 Free Software Foundation, Inc. diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 7bb8ca671cf..7251640bf27 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -1166,9 +1166,10 @@ If ALL is non-nil, update prompts in all IRC buffers." (or (eq (aref target 0) ?#) (eq (aref target 0) ?&)))) -(defcustom rcirc-log-directory "~/.emacs.d/rcirc-log" +(defcustom rcirc-log-directory (locate-user-emacs-file "rcirc-log") "Directory to keep IRC logfiles." - :type 'directory) + :type 'directory + :version "28.1") (defcustom rcirc-log-flag nil "Non-nil means log IRC activity to disk. diff --git a/lisp/net/secrets.el b/lisp/net/secrets.el index 94db318c1b0..4102b9d322a 100644 --- a/lisp/net/secrets.el +++ b/lisp/net/secrets.el @@ -957,3 +957,5 @@ to their attributes." ;; * Check, whether the dh-ietf1024-aes128-cbc-pkcs7 algorithm can be ;; used for the transfer of the secrets. Currently, we use the ;; plain algorithm. + +;;; secrets.el ends here diff --git a/lisp/net/sieve-manage.el b/lisp/net/sieve-manage.el index c4d6ec4b6cc..5dad5f446ac 100644 --- a/lisp/net/sieve-manage.el +++ b/lisp/net/sieve-manage.el @@ -580,4 +580,4 @@ to local variable `sieve-manage-capability'." (provide 'sieve-manage) -;; sieve-manage.el ends here +;;; sieve-manage.el ends here diff --git a/lisp/net/sieve-mode.el b/lisp/net/sieve-mode.el index 966f0f056bd..0e8fdc0a905 100644 --- a/lisp/net/sieve-mode.el +++ b/lisp/net/sieve-mode.el @@ -206,4 +206,4 @@ Turning on Sieve mode runs `sieve-mode-hook'." (provide 'sieve-mode) -;; sieve-mode.el ends here +;;; sieve-mode.el ends here diff --git a/lisp/net/sieve.el b/lisp/net/sieve.el index 595d63331a4..6d571a0a30f 100644 --- a/lisp/net/sieve.el +++ b/lisp/net/sieve.el @@ -379,4 +379,4 @@ Used to bracket operations which move point in the sieve-buffer." (provide 'sieve) -;; sieve.el ends here +;;; sieve.el ends here diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el index d208f0e044a..6342cf52873 100644 --- a/lisp/net/tramp-cmds.el +++ b/lisp/net/tramp-cmds.el @@ -472,6 +472,48 @@ For details, see `tramp-rename-files'." (function-put #'tramp-rename-these-files 'completion-predicate #'tramp-command-completion-p) +;; This function takes action since Emacs 28.1, when +;; `read-extended-command-predicate' is set to +;; `command-completion-default-include-p'. +;;;###tramp-autoload +(defun tramp-recompile-elpa-command-completion-p (_symbol _buffer) + "A predicate for `tramp-recompile-elpa'. +It is completed by \"M-x TAB\" only if package.el is loaded, and +Tramp is an installed ELPA package." + ;; We cannot apply `package-installed-p', this would also return the + ;; builtin package. + (tramp-compat-funcall 'package--user-installed-p 'tramp)) + +;;;###tramp-autoload +(defun tramp-recompile-elpa () + "Recompile the installed Tramp ELPA package. +This is needed if there are compatibility problems." + ;; (declare (completion tramp-recompile-elpa-command-completion-p)) + (interactive) + ;; We expect just one Tramp package is installed. + (when-let + ((dir (tramp-compat-funcall + 'package-desc-dir + (car (alist-get 'tramp (bound-and-true-p package-alist)))))) + (dolist (elc (directory-files dir 'full "\\.elc$")) + (delete-file elc)) + (with-current-buffer (get-buffer-create byte-compile-log-buffer) + (let ((inhibit-read-only t)) + (compilation-mode) + (goto-char (point-max)) + (insert "\f\n") + (call-process + (expand-file-name invocation-name invocation-directory) nil t t + "-Q" "-batch" "-L" dir + "--eval" (format "(byte-recompile-directory %S 0 t)" dir)) + (message "Package `tramp' recompiled."))))) + +;; Starting with Emacs 28.1, this can be replaced by the "(declare ...)" form. +;;;###tramp-autoload +(function-put + #'tramp-recompile-elpa 'completion-predicate + #'tramp-recompile-elpa-command-completion-p) + ;; Tramp version is useful in a number of situations. ;;;###tramp-autoload diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 0e6a2bb04af..df64d13c41f 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -2218,7 +2218,7 @@ The method used must be an out-of-band method." (t2 (tramp-tramp-file-p newname)) (orig-vec (tramp-dissect-file-name (if t1 filename newname))) copy-program copy-args copy-env copy-keep-date listener spec - options source target remote-copy-program remote-copy-args) + options source target remote-copy-program remote-copy-args p) (with-parsed-tramp-file-name (if t1 filename newname) nil (if (and t1 t2) @@ -2253,10 +2253,10 @@ The method used must be an out-of-band method." #'identity) (if t1 (tramp-make-copy-program-file-name v) - (tramp-unquote-shell-quote-argument filename))) + (tramp-compat-file-name-unquote filename))) target (if t2 (tramp-make-copy-program-file-name v) - (tramp-unquote-shell-quote-argument newname))) + (tramp-compat-file-name-unquote newname))) ;; Check for user. There might be an interactive setting. (setq user (or (tramp-file-name-user v) @@ -2288,6 +2288,13 @@ The method used must be an out-of-band method." ;; keep-date argument is non-nil), or a replacement for ;; the whole keep-date sublist. (delete " " (apply #'tramp-expand-args v 'tramp-copy-args spec)) + ;; `tramp-ssh-controlmaster-options' is a string instead + ;; of a list. Unflatten it. + copy-args + (tramp-compat-flatten-tree + (mapcar + (lambda (x) (if (string-match-p " " x) (split-string x) x)) + copy-args)) copy-env (apply #'tramp-expand-args v 'tramp-copy-env spec) remote-copy-program (tramp-get-method-parameter v 'tramp-remote-copy-program) @@ -2349,31 +2356,26 @@ The method used must be an out-of-band method." copy-args (if remote-copy-program (list (if t1 (concat ">" target) (concat "<" source))) - (list source target)))) - - ;; Use an asynchronous process. By this, password can - ;; be handled. We don't set a timeout, because the - ;; copying of large files can last longer than 60 secs. - (let* ((command - (mapconcat - #'identity (append (list copy-program) copy-args) - " ")) - (p (let ((default-directory - (tramp-compat-temporary-file-directory))) - (start-process-shell-command - (tramp-get-connection-name v) - (tramp-get-connection-buffer v) - command)))) - (tramp-message orig-vec 6 "%s" command) - (process-put p 'vector orig-vec) - (process-put p 'adjust-window-size-function #'ignore) - (set-process-query-on-exit-flag p nil) - - ;; We must adapt `tramp-local-end-of-line' for - ;; sending the password. - (let ((tramp-local-end-of-line tramp-rsh-end-of-line)) - (tramp-process-actions - p v nil tramp-actions-copy-out-of-band)))) + (list source target))) + ;; Use an asynchronous process. By this, password + ;; can be handled. We don't set a timeout, because + ;; the copying of large files can last longer than 60 + ;; secs. + p (apply + #'start-process + (tramp-get-connection-name v) + (tramp-get-connection-buffer v) + copy-program copy-args)) + (tramp-message orig-vec 6 "%s" (string-join (process-command p) " ")) + (process-put p 'vector orig-vec) + (process-put p 'adjust-window-size-function #'ignore) + (set-process-query-on-exit-flag p nil) + + ;; We must adapt `tramp-local-end-of-line' for + ;; sending the password. + (let ((tramp-local-end-of-line tramp-rsh-end-of-line)) + (tramp-process-actions + p v nil tramp-actions-copy-out-of-band))) ;; Reset the transfer process properties. (tramp-flush-connection-property v "process-name") @@ -2921,15 +2923,19 @@ alternative implementation will be used." ;; until the process is deleted. (when (bufferp stderr) (with-current-buffer stderr - (insert-file-contents-literally remote-tmpstderr)) + ;; There's a mysterious error, see + ;; <https://github.com/joaotavora/eglot/issues/662>. + (ignore-errors + (insert-file-contents-literally remote-tmpstderr))) ;; Delete tmpstderr file. (add-function :after (process-sentinel p) (lambda (_proc _msg) (when (file-exists-p remote-tmpstderr) (with-current-buffer stderr - (insert-file-contents-literally - remote-tmpstderr nil nil nil 'replace)) + (ignore-errors + (insert-file-contents-literally + remote-tmpstderr nil nil nil 'replace))) (delete-file remote-tmpstderr))))) ;; Return process. p))) @@ -5221,15 +5227,17 @@ Return ATTR." (directory-file-name (tramp-file-name-unquote-localname vec)))) (when (string-match-p tramp-ipv6-regexp host) (setq host (format "[%s]" host))) + ;; This does not work yet for MS Windows scp, if there are + ;; characters to be quoted. Win32 OpenSSH 7.9 is said to support + ;; this, see + ;; <https://github.com/PowerShell/Win32-OpenSSH/releases/tag/v7.9.0.0p1-Beta> (unless (string-match-p "ftp$" method) (setq localname (tramp-shell-quote-argument localname))) (cond ((tramp-get-method-parameter vec 'tramp-remote-copy-program) localname) - ((not (zerop (length user))) - (format - "%s@%s:%s" user host (tramp-unquote-shell-quote-argument localname))) - (t (format "%s:%s" host (tramp-unquote-shell-quote-argument localname)))))) + ((zerop (length user)) (format "%s:%s" host localname)) + (t (format "%s@%s:%s" user host localname))))) (defun tramp-method-out-of-band-p (vec size) "Return t if this is an out-of-band method, nil otherwise." diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 8da94ec9d9e..a411aafa875 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -3888,8 +3888,7 @@ substitution. SPEC-LIST is a list of char/value pairs used for (or (not (stringp stderr)) (not (tramp-tramp-file-p stderr)))))) (defun tramp-handle-make-process (&rest args) - "An alternative `make-process' implementation for Tramp files. -It does not support `:stderr'." + "An alternative `make-process' implementation for Tramp files." (when args (with-parsed-tramp-file-name (expand-file-name default-directory) nil (let ((default-directory (tramp-compat-temporary-file-directory)) diff --git a/lisp/notifications.el b/lisp/notifications.el index b439d822317..ebd74dd3ef2 100644 --- a/lisp/notifications.el +++ b/lisp/notifications.el @@ -420,3 +420,5 @@ version this library is compliant with." notifications-get-server-information-method))) (provide 'notifications) + +;;; notifications.el ends here diff --git a/lisp/nxml/rng-cmpct.el b/lisp/nxml/rng-cmpct.el index 3d4b9f87414..1314ade9e31 100644 --- a/lisp/nxml/rng-cmpct.el +++ b/lisp/nxml/rng-cmpct.el @@ -922,4 +922,4 @@ Current token after parse is token following ]." (provide 'rng-cmpct) -;;; rng-cmpct.el +;;; rng-cmpct.el ends here diff --git a/lisp/nxml/xmltok.el b/lisp/nxml/xmltok.el index 8f89598a5ad..9824eebbd8b 100644 --- a/lisp/nxml/xmltok.el +++ b/lisp/nxml/xmltok.el @@ -324,8 +324,8 @@ and VALUE-END, otherwise a STRING giving the value." (setq strs (cons (car arg) strs)) (setq names (cons (cdr arg) names))) (setq args (cdr args)))) - (cons (apply 'concat (nreverse strs)) - (apply 'append (nreverse names)))))) + (cons (apply #'concat (nreverse strs)) + (apply #'append (nreverse names)))))) (eval-when-compile ;; Make a symbolic group named NAME from the regexp R. @@ -338,7 +338,7 @@ and VALUE-END, otherwise a STRING giving the value." (cons (concat "\\(" (car ,sym) "\\)") (cons ',name (cdr ,sym))))))) (defun xmltok-p (&rest r) (xmltok+ "\\(?:" - (apply 'xmltok+ r) + (apply #'xmltok+ r) "\\)")) ;; Get the group index of ELEM in a LIST of symbols. @@ -372,22 +372,23 @@ and VALUE-END, otherwise a STRING giving the value." (defmacro xmltok-defregexp (sym r) `(defalias ',sym (let ((r ,r)) - `(macro lambda (action &optional group-name) - (cond ((eq action 'regexp) - ,(car r)) - ((or (eq action 'start) (eq action 'beginning)) - (list 'match-beginning (xmltok-get-index group-name - ',(cdr r)))) - ((eq action 'end) - (list 'match-end (xmltok-get-index group-name - ',(cdr r)))) - ((eq action 'string) - (list 'match-string - (xmltok-get-index group-name ',(cdr r)))) - ((eq action 'string-no-properties) - (list 'match-string-no-properties - (xmltok-get-index group-name ',(cdr r)))) - (t (error "Invalid action: %s" action)))))))) + `(macro + . ,(lambda (action &optional group-name) + (cond ((eq action 'regexp) + (car r)) + ((or (eq action 'start) (eq action 'beginning)) + (list 'match-beginning (xmltok-get-index group-name + (cdr r)))) + ((eq action 'end) + (list 'match-end (xmltok-get-index group-name + (cdr r)))) + ((eq action 'string) + (list 'match-string + (xmltok-get-index group-name (cdr r)))) + ((eq action 'string-no-properties) + (list 'match-string-no-properties + (xmltok-get-index group-name (cdr r)))) + (t (error "Invalid action: %s" action))))))))) (eval-when-compile @@ -878,7 +879,7 @@ and VALUE-END, otherwise a STRING giving the value." (cons " " value-parts))))) (< (point) end)))) (when well-formed - (aset att 5 (apply 'concat (nreverse value-parts)))) + (aset att 5 (apply #'concat (nreverse value-parts)))) (aset att 6 (nreverse refs)))) (defun xmltok-scan-after-amp (entity-handler) @@ -1333,7 +1334,7 @@ If LIMIT is non-nil, then do not consider characters beyond LIMIT." t)))) (if (not well-formed) nil - (apply 'concat + (apply #'concat (nreverse (cons (buffer-substring-no-properties start lim) value-parts)))))) @@ -1358,7 +1359,7 @@ If LIMIT is non-nil, then do not consider characters beyond LIMIT." (defun xmltok-require-next-token (&rest types) (xmltok-next-prolog-token) - (apply 'xmltok-require-token types)) + (apply #'xmltok-require-token types)) (defun xmltok-require-token (&rest types) ;; XXX Generate a more helpful error message diff --git a/lisp/obsolete/fast-lock.el b/lisp/obsolete/fast-lock.el index baed8be7663..960233d5627 100644 --- a/lisp/obsolete/fast-lock.el +++ b/lisp/obsolete/fast-lock.el @@ -752,8 +752,6 @@ See `fast-lock-get-face-properties'." (unless (assq 'fast-lock-mode minor-mode-alist) (setq minor-mode-alist (append minor-mode-alist '((fast-lock-mode nil))))) -;; Provide ourselves: - (provide 'fast-lock) ;;; fast-lock.el ends here diff --git a/lisp/obsolete/info-edit.el b/lisp/obsolete/info-edit.el index c53616d80e7..19958979a85 100644 --- a/lisp/obsolete/info-edit.el +++ b/lisp/obsolete/info-edit.el @@ -1,4 +1,4 @@ -;; info-edit.el --- Editing info files -*- lexical-binding:t -*- +;;; info-edit.el --- Editing info files -*- lexical-binding:t -*- ;; Copyright (C) 1985-1986, 1992-2021 Free Software Foundation, Inc. diff --git a/lisp/obsolete/lazy-lock.el b/lisp/obsolete/lazy-lock.el index 34bf85f864c..13f14aad6d1 100644 --- a/lisp/obsolete/lazy-lock.el +++ b/lisp/obsolete/lazy-lock.el @@ -1016,8 +1016,6 @@ verbosity is controlled via the variable `lazy-lock-stealth-verbose'." (unless (assq 'lazy-lock-mode minor-mode-alist) (setq minor-mode-alist (append minor-mode-alist '((lazy-lock-mode nil))))) -;; Provide ourselves: - (provide 'lazy-lock) ;; Local Variables: diff --git a/lisp/obsolete/nnir.el b/lisp/obsolete/nnir.el index f2ea5c67ceb..40a8ec57b98 100644 --- a/lisp/obsolete/nnir.el +++ b/lisp/obsolete/nnir.el @@ -1339,7 +1339,6 @@ Query for the specs, or use SPECS." (define-obsolete-function-alias 'nnir-get-active #'gnus-server-get-active "28.1") -;; The end. (provide 'nnir) ;;; nnir.el ends here diff --git a/lisp/obsolete/old-emacs-lock.el b/lisp/obsolete/old-emacs-lock.el index 90ff93e03b1..ce4c60e6a17 100644 --- a/lisp/obsolete/old-emacs-lock.el +++ b/lisp/obsolete/old-emacs-lock.el @@ -1,4 +1,4 @@ -;;; emacs-lock.el --- prevents you from exiting Emacs if a buffer is locked -*- lexical-binding: t; -*- +;;; old-emacs-lock.el --- prevents you from exiting Emacs if a buffer is locked -*- lexical-binding: t; -*- ;; Copyright (C) 1994, 1997, 2001-2021 Free Software Foundation, Inc. @@ -99,4 +99,4 @@ If the buffer is locked, signal error and display its name." (provide 'emacs-lock) -;;; emacs-lock.el ends here +;;; old-emacs-lock.el ends here diff --git a/lisp/obsolete/otodo-mode.el b/lisp/obsolete/otodo-mode.el index add17b265b4..47f5089452f 100644 --- a/lisp/obsolete/otodo-mode.el +++ b/lisp/obsolete/otodo-mode.el @@ -1,4 +1,4 @@ -;;; todo-mode.el --- major mode for editing TODO list files -*- lexical-binding: t; -*- +;;; otodo-mode.el --- major mode for editing TODO list files -*- lexical-binding: t; -*- ;; Copyright (C) 1997, 1999, 2001-2021 Free Software Foundation, Inc. @@ -963,4 +963,4 @@ If INCLUDE-SEP is non-nil, return point after the separator." (provide 'todo-mode) -;;; todo-mode.el ends here +;;; otodo-mode.el ends here diff --git a/lisp/obsolete/sb-image.el b/lisp/obsolete/sb-image.el index e9a507f0086..fc9e03eae6e 100644 --- a/lisp/obsolete/sb-image.el +++ b/lisp/obsolete/sb-image.el @@ -1,4 +1,4 @@ -;;; sb-image --- Image management for speedbar -*- lexical-binding: t; -*- +;;; sb-image.el --- Image management for speedbar -*- lexical-binding: t; -*- ;; Copyright (C) 1999-2003, 2005-2019, 2021 Free Software Foundation, ;; Inc. diff --git a/lisp/obsolete/sregex.el b/lisp/obsolete/sregex.el index 96d6b7aebf0..371dcbf8498 100644 --- a/lisp/obsolete/sregex.el +++ b/lisp/obsolete/sregex.el @@ -208,7 +208,7 @@ ;; This is a "trapdoor" for including ordinary regular expression ;; strings in the result. Some regular expressions are clearer when ;; written the old way: "[a-z]" vs. (sregexq (char (?a . ?z))), for -;; instance. However, see the note under "Bugs," below. +;; instance. ;; Each CHAR-CLAUSE that is passed to (char ...) and (not-char ...) ;; has one of the following forms: @@ -236,8 +236,6 @@ ;; - add support for non-greedy operators *? and +? ;; - bug: (sregexq (opt (opt ?a))) returns "a??" which is a non-greedy "a?" -;;; Bugs: - ;;; Code: (eval-when-compile (require 'cl-lib)) diff --git a/lisp/obsolete/tpu-mapper.el b/lisp/obsolete/tpu-mapper.el index d23068ac469..5ae0a6558d5 100644 --- a/lisp/obsolete/tpu-mapper.el +++ b/lisp/obsolete/tpu-mapper.el @@ -69,7 +69,7 @@ ;;;###autoload (defun tpu-mapper () - "Create an Emacs lisp file defining the TPU-edt keypad for X-windows. + "Create an Emacs Lisp file defining the TPU-edt keypad for X-windows. This command displays an instruction screen showing the TPU-edt keypad and asks you to press the TPU-edt editing keys. It uses the keys you diff --git a/lisp/org/ob-hledger.el b/lisp/org/ob-hledger.el index 3d2f46cdce2..48dcb8cea1a 100644 --- a/lisp/org/ob-hledger.el +++ b/lisp/org/ob-hledger.el @@ -1,4 +1,4 @@ -;; ob-hledger.el --- Babel Functions for hledger -*- lexical-binding: t; -*- +;;; ob-hledger.el --- Babel Functions for hledger -*- lexical-binding: t; -*- ;; Copyright (C) 2010-2021 Free Software Foundation, Inc. diff --git a/lisp/org/ob-mscgen.el b/lisp/org/ob-mscgen.el index 999d4f4140b..79c9f8702eb 100644 --- a/lisp/org/ob-mscgen.el +++ b/lisp/org/ob-mscgen.el @@ -1,4 +1,4 @@ -;;; ob-msc.el --- Babel Functions for Mscgen -*- lexical-binding: t; -*- +;;; ob-mscgen.el --- Babel Functions for Mscgen -*- lexical-binding: t; -*- ;; Copyright (C) 2010-2021 Free Software Foundation, Inc. @@ -78,4 +78,4 @@ mscgen supported formats." (provide 'ob-mscgen) -;;; ob-msc.el ends here +;;; ob-mscgen.el ends here diff --git a/lisp/org/ol-eshell.el b/lisp/org/ol-eshell.el index 769e7ee5225..8920e0afb0d 100644 --- a/lisp/org/ol-eshell.el +++ b/lisp/org/ol-eshell.el @@ -1,4 +1,4 @@ -;;; ol-eshell.el - Links to Working Directories in Eshell -*- lexical-binding: t; -*- +;;; ol-eshell.el --- Links to Working Directories in Eshell -*- lexical-binding: t; -*- ;; Copyright (C) 2011-2021 Free Software Foundation, Inc. diff --git a/lisp/org/org-ctags.el b/lisp/org/org-ctags.el index 1fca873c159..dc2b3be6326 100644 --- a/lisp/org/org-ctags.el +++ b/lisp/org/org-ctags.el @@ -1,5 +1,5 @@ -;;; org-ctags.el - Integrate Emacs "tags" Facility with Org -*- lexical-binding: t; -*- -;; +;;; org-ctags.el --- Integrate Emacs "tags" Facility with Org -*- lexical-binding: t; -*- + ;; Copyright (C) 2007-2021 Free Software Foundation, Inc. ;; Author: Paul Sexton <eeeickythump@gmail.com> diff --git a/lisp/org/ox-man.el b/lisp/org/ox-man.el index 6cace7e6989..27d2dedb8ed 100644 --- a/lisp/org/ox-man.el +++ b/lisp/org/ox-man.el @@ -1,4 +1,4 @@ -;; ox-man.el --- Man Back-End for Org Export Engine -*- lexical-binding: t; -*- +;;; ox-man.el --- Man Back-End for Org Export Engine -*- lexical-binding: t; -*- ;; Copyright (C) 2011-2021 Free Software Foundation, Inc. diff --git a/lisp/progmodes/bug-reference.el b/lisp/progmodes/bug-reference.el index e467d98303e..0c5837cae7e 100644 --- a/lisp/progmodes/bug-reference.el +++ b/lisp/progmodes/bug-reference.el @@ -1,4 +1,4 @@ -;; bug-reference.el --- buttonize bug references -*- lexical-binding: t; -*- +;;; bug-reference.el --- buttonize bug references -*- lexical-binding: t; -*- ;; Copyright (C) 2008-2021 Free Software Foundation, Inc. diff --git a/lisp/progmodes/cc-awk.el b/lisp/progmodes/cc-awk.el index 84cc5b115e7..334e82114fc 100644 --- a/lisp/progmodes/cc-awk.el +++ b/lisp/progmodes/cc-awk.el @@ -1227,4 +1227,4 @@ comment at the start of cc-engine.el for more info." ;; indent-tabs-mode: t ;; tab-width: 8 ;; End: -;;; awk-mode.el ends here +;;; cc-awk.el ends here diff --git a/lisp/progmodes/cc-bytecomp.el b/lisp/progmodes/cc-bytecomp.el index 29634384dda..edbac64eadb 100644 --- a/lisp/progmodes/cc-bytecomp.el +++ b/lisp/progmodes/cc-bytecomp.el @@ -86,6 +86,7 @@ (defvar cc-bytecomp-environment-set nil) (defmacro cc-bytecomp-debug-msg (&rest _args) ; Change to ARGS when needed. + ;; (declare (debug t)) ;;`(message ,@args) ) @@ -301,6 +302,7 @@ during compilation, but compile in a `require'. Don't use within Having cyclic cc-require's will result in infinite recursion. That's somewhat intentional." + (declare (debug t)) `(progn (eval-when-compile (cc-bytecomp-load (symbol-name ,cc-part))) @@ -313,6 +315,7 @@ time, (ii) generate code to load the file at load time. CC-PART will normally be a quoted name such as \\='cc-fix. CONDITION should not be quoted." + (declare (debug t)) (if (eval condition) (progn (cc-bytecomp-load (symbol-name (eval cc-part))) @@ -327,6 +330,7 @@ after the loading of FILE. CC-PART will normally be a quoted name such as \\='cc-fix. FILE should be a string. CONDITION should not be quoted." + (declare (debug t)) (if (eval condition) (progn (cc-bytecomp-load (symbol-name (eval cc-part))) @@ -337,6 +341,7 @@ should be a string. CONDITION should not be quoted." (defmacro cc-provide (feature) "A replacement for the `provide' form that restores the environment after the compilation. Don't use within `eval-when-compile'." + (declare (debug t)) `(progn (eval-when-compile (cc-bytecomp-restore-environment)) (provide ,feature))) @@ -348,6 +353,7 @@ during compilation. Don't use outside `eval-when-compile' or Having cyclic cc-load's will result in infinite recursion. That's somewhat intentional." + (declare (debug t)) `(or (and (featurep 'cc-bytecomp) (cc-bytecomp-load ,cc-part)) (load ,cc-part nil t nil))) @@ -356,6 +362,7 @@ somewhat intentional." "Force loading of the corresponding .el file in the current directory during compilation, but do a compile time `require' otherwise. Don't use within `eval-when-compile'." + (declare (debug t)) `(eval-when-compile (if (and (fboundp 'cc-bytecomp-is-compiling) (cc-bytecomp-is-compiling)) @@ -367,6 +374,7 @@ use within `eval-when-compile'." "Do a `require' of an external package. This restores and sets up the compilation environment before and afterwards. Don't use within `eval-when-compile'." + (declare (debug t)) `(progn (eval-when-compile (cc-bytecomp-restore-environment)) (require ,feature) @@ -375,6 +383,7 @@ afterwards. Don't use within `eval-when-compile'." (defmacro cc-bytecomp-defvar (var) "Binds the symbol as a variable during compilation of the file, to silence the byte compiler. Don't use within `eval-when-compile'." + (declare (debug nil)) `(eval-when-compile (if (boundp ',var) (cc-bytecomp-debug-msg @@ -402,6 +411,7 @@ definition. That means that this macro will not shut up warnings about incorrect number of arguments. It's dangerous to try to replace existing functions since the byte compiler might need the definition at compile time, e.g. for macros and inline functions." + (declare (debug nil)) `(eval-when-compile (if (fboundp ',fun) (cc-bytecomp-debug-msg @@ -423,6 +433,7 @@ at compile time, e.g. for macros and inline functions." (defmacro cc-bytecomp-put (symbol propname value) "Set a property on a symbol during compilation (and evaluation) of the file. Don't use outside `eval-when-compile'." + (declare (debug t)) `(eval-when-compile (if (not (assoc (cons ,symbol ,propname) cc-bytecomp-original-properties)) (progn @@ -443,6 +454,7 @@ the file. Don't use outside `eval-when-compile'." the compilation. This is the same as using `boundp' but additionally exclude any variables that have been bound during compilation with `cc-bytecomp-defvar'." + (declare (debug t)) (if (and (cc-bytecomp-is-compiling) (memq (car (cdr symbol)) cc-bytecomp-unbound-variables)) nil @@ -453,6 +465,7 @@ exclude any variables that have been bound during compilation with the compilation. This is the same as using `fboundp' but additionally exclude any functions that have been bound during compilation with `cc-bytecomp-defun'." + (declare (debug t)) (let (fun-elem) (if (and (cc-bytecomp-is-compiling) (setq fun-elem (assq (car (cdr symbol)) diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el index bee87b68499..bdfdf178d43 100644 --- a/lisp/progmodes/cc-cmds.el +++ b/lisp/progmodes/cc-cmds.el @@ -1835,6 +1835,7 @@ No indentation or other \"electric\" behavior is performed." ;; This is a very special purpose macro, which assumes the existence of ;; several variables. It is for use only in c-beginning-of-defun and ;; c-end-of-defun. + (declare (debug t)) `(while (and ,condition (eq c-defun-tactic 'go-outward) diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el index 20dc97db5d7..4f79fa9b330 100644 --- a/lisp/progmodes/cc-defs.el +++ b/lisp/progmodes/cc-defs.el @@ -125,7 +125,7 @@ The result of the body appears to the compiler as a quoted constant. This variant works around bugs in `eval-when-compile' in various \(X)Emacs versions. See cc-defs.el for details." - + (declare (indent 0) (debug t)) (if c-inside-eval-when-compile ;; XEmacs 21.4.6 has a bug in `eval-when-compile' in that it ;; evaluates its body at macro expansion time if it's nested @@ -170,9 +170,7 @@ This variant works around bugs in `eval-when-compile' in various ;; constant that we eval. That otoh introduce a problem in ;; that a returned lambda expression doesn't get byte ;; compiled (even if `function' is used). - (eval '(let ((c-inside-eval-when-compile t)) ,@body))))) - - (put 'cc-eval-when-compile 'lisp-indent-hook 0)) + (eval '(let ((c-inside-eval-when-compile t)) ,@body)))))) ;;; Macros. @@ -181,6 +179,7 @@ This variant works around bugs in `eval-when-compile' in various ;; between the host [X]Emacsen." ;; The motivation for this macro is to avoid the irritating message ;; "function `mapcan' from cl package called at runtime" produced by Emacs. + (declare (debug t)) (cond ((and (fboundp 'mapcan) (subrp (symbol-function 'mapcan))) @@ -196,18 +195,21 @@ This variant works around bugs in `eval-when-compile' in various (defmacro c--set-difference (liszt1 liszt2 &rest other-args) ;; Macro to smooth out the renaming of `set-difference' in Emacs 24.3. + (declare (debug (form form &rest [symbolp form]))) (if (eq c--cl-library 'cl-lib) `(cl-set-difference ,liszt1 ,liszt2 ,@other-args) `(set-difference ,liszt1 ,liszt2 ,@other-args))) (defmacro c--intersection (liszt1 liszt2 &rest other-args) ;; Macro to smooth out the renaming of `intersection' in Emacs 24.3. + (declare (debug (form form &rest [symbolp form]))) (if (eq c--cl-library 'cl-lib) `(cl-intersection ,liszt1 ,liszt2 ,@other-args) `(intersection ,liszt1 ,liszt2 ,@other-args))) (eval-and-compile (defmacro c--macroexpand-all (form &optional environment) + (declare (debug t)) ;; Macro to smooth out the renaming of `cl-macroexpand-all' in Emacs 24.3. (if (fboundp 'macroexpand-all) `(macroexpand-all ,form ,environment) @@ -215,6 +217,7 @@ This variant works around bugs in `eval-when-compile' in various (defmacro c--delete-duplicates (cl-seq &rest cl-keys) ;; Macro to smooth out the renaming of `delete-duplicates' in Emacs 24.3. + (declare (debug (form &rest [symbolp form]))) (if (eq c--cl-library 'cl-lib) `(cl-delete-duplicates ,cl-seq ,@cl-keys) `(delete-duplicates ,cl-seq ,@cl-keys)))) @@ -222,6 +225,7 @@ This variant works around bugs in `eval-when-compile' in various (defmacro c-font-lock-flush (beg end) "Declare the region BEG...END's fontification as out-of-date. On XEmacs and older Emacsen, this refontifies that region immediately." + (declare (debug t)) (if (fboundp 'font-lock-flush) `(font-lock-flush ,beg ,end) `(font-lock-fontify-region ,beg ,end))) @@ -249,6 +253,7 @@ one of the following symbols: If the referenced position doesn't exist, the closest accessible point to it is returned. This function does not modify the point or the mark." + (declare (debug t)) (if (eq (car-safe position) 'quote) (let ((position (eval position))) (cond @@ -417,6 +422,7 @@ to it is returned. This function does not modify the point or the mark." (defmacro c-is-escaped (pos) ;; Are there an odd number of backslashes before POS? + (declare (debug t)) `(save-excursion (goto-char ,pos) (not (zerop (logand (skip-chars-backward "\\\\") 1))))) @@ -424,6 +430,7 @@ to it is returned. This function does not modify the point or the mark." (defmacro c-will-be-escaped (pos beg end) ;; Will the character after POS be escaped after the removal of (BEG END)? ;; It is assumed that (>= POS END). + (declare (debug t)) `(save-excursion (let ((-end- ,end) count) @@ -436,6 +443,7 @@ to it is returned. This function does not modify the point or the mark." (defmacro c-will-be-unescaped (beg) ;; Would the character after BEG be unescaped? + (declare (debug t)) `(save-excursion (let (count) (goto-char ,beg) @@ -446,6 +454,7 @@ to it is returned. This function does not modify the point or the mark." (defmacro c-next-single-property-change (position prop &optional object limit) ;; See the doc string for either of the defuns expanded to. + (declare (debug t)) (if (and c-use-extents (fboundp 'next-single-char-property-change)) ;; XEmacs >= 2005-01-25 @@ -455,6 +464,7 @@ to it is returned. This function does not modify the point or the mark." (defmacro c-previous-single-property-change (position prop &optional object limit) ;; See the doc string for either of the defuns expanded to. + (declare (debug t)) (if (and c-use-extents (fboundp 'previous-single-char-property-change)) ;; XEmacs >= 2005-01-25 @@ -474,6 +484,7 @@ to it is returned. This function does not modify the point or the mark." (defmacro c-set-region-active (activate) ;; Activate the region if ACTIVE is non-nil, deactivate it ;; otherwise. Covers the differences between Emacs and XEmacs. + (declare (debug t)) (if (fboundp 'zmacs-activate-region) ;; XEmacs. `(if ,activate @@ -483,6 +494,7 @@ to it is returned. This function does not modify the point or the mark." `(setq mark-active ,activate))) (defmacro c-set-keymap-parent (map parent) + (declare (debug t)) (cond ;; XEmacs ((cc-bytecomp-fboundp 'set-keymap-parents) @@ -495,6 +507,7 @@ to it is returned. This function does not modify the point or the mark." (defmacro c-delete-and-extract-region (start end) "Delete the text between START and END and return it." + (declare (debug t)) (if (cc-bytecomp-fboundp 'delete-and-extract-region) ;; Emacs 21.1 and later `(delete-and-extract-region ,start ,end) @@ -505,15 +518,16 @@ to it is returned. This function does not modify the point or the mark." (defmacro c-safe (&rest body) ;; safely execute BODY, return nil if an error occurred + (declare (indent 0) (debug t)) `(condition-case nil (progn ,@body) (error nil))) -(put 'c-safe 'lisp-indent-function 0) (defmacro c-int-to-char (integer) ;; In Emacs, a character is an integer. In XEmacs, a character is a ;; type distinct from an integer. Sometimes we need to convert integers to ;; characters. `c-int-to-char' makes this conversion, if necessary. + (declare (debug t)) (if (fboundp 'int-to-char) `(int-to-char ,integer) integer)) @@ -521,6 +535,7 @@ to it is returned. This function does not modify the point or the mark." (defmacro c-characterp (arg) ;; Return t when ARG is a character (XEmacs) or integer (Emacs), otherwise ;; return nil. + (declare (debug t)) (if (integerp ?c) `(integerp ,arg) `(characterp ,arg))) @@ -567,6 +582,7 @@ to it is returned. This function does not modify the point or the mark." ;; string opener, or after the introductory R of one. The match data is ;; overwritten. On success the opener's identifier will be (match-string ;; 1). Text properties on any characters are ignored. + (declare (debug t)) (if pos `(save-excursion (goto-char ,pos) @@ -628,6 +644,7 @@ If BODY makes a change that unconditionally is undone then wrap this macro inside `c-save-buffer-state'. That way the change can be done even when the buffer is read-only, and without interference from various buffer change hooks." + (declare (indent 0) (debug t)) `(let (-tnt-chng-keep -tnt-chng-state) (unwind-protect @@ -638,7 +655,6 @@ various buffer change hooks." -tnt-chng-state (c-tnt-chng-record-state) -tnt-chng-keep (progn ,@body)) (c-tnt-chng-cleanup -tnt-chng-keep -tnt-chng-state)))) -(put 'c-tentative-buffer-changes 'lisp-indent-function 0) (defun c-tnt-chng-record-state () ;; Used internally in `c-tentative-buffer-changes'. @@ -696,6 +712,7 @@ on the wrong side of LIMIT, it stays unchanged. Note that this function might do hidden buffer changes. See the comment at the start of cc-engine.el for more info." + (declare (debug t)) (if limit `(when (< (point) (or ,limit (point-max))) (save-restriction @@ -717,6 +734,7 @@ starts on the wrong side of LIMIT, it stays unchanged. Note that this function might do hidden buffer changes. See the comment at the start of cc-engine.el for more info." + (declare (debug t)) (if limit `(when (> (point) (or ,limit (point-min))) (save-restriction @@ -733,11 +751,13 @@ This is like `forward-sexp' except that it isn't interactive and does not do any user friendly adjustments of the point and that it isn't susceptible to user configurations such as disabling of signals in certain situations." + (declare (debug t)) (or count (setq count 1)) `(goto-char (scan-sexps (point) ,count))) (defmacro c-backward-sexp (&optional count) "See `c-forward-sexp' and reverse directions." + (declare (debug t)) (or count (setq count 1)) `(c-forward-sexp ,(if (numberp count) (- count) `(- ,count)))) @@ -747,6 +767,7 @@ for unbalanced parens. A limit for the search may be given. FROM is assumed to be on the right side of it." + (declare (debug t)) (let ((res (if (featurep 'xemacs) `(scan-lists ,from ,count ,depth nil t) `(c-safe (scan-lists ,from ,count ,depth))))) @@ -774,6 +795,7 @@ leave point unmoved. A LIMIT for the search may be given. The start position is assumed to be before it." + (declare (debug t)) `(let ((dest (c-safe-scan-lists ,(or pos '(point)) 1 0 ,limit))) (when dest (goto-char dest) dest))) @@ -784,6 +806,7 @@ leave point unmoved. A LIMIT for the search may be given. The start position is assumed to be after it." + (declare (debug t)) `(let ((dest (c-safe-scan-lists ,(or pos '(point)) -1 0 ,limit))) (when dest (goto-char dest) dest))) @@ -793,6 +816,7 @@ or nil if no such position exists. The point is used if POS is left out. A limit for the search may be given. The start position is assumed to be before it." + (declare (debug t)) `(c-safe-scan-lists ,(or pos '(point)) 1 1 ,limit)) (defmacro c-up-list-backward (&optional pos limit) @@ -801,6 +825,7 @@ or nil if no such position exists. The point is used if POS is left out. A limit for the search may be given. The start position is assumed to be after it." + (declare (debug t)) `(c-safe-scan-lists ,(or pos '(point)) -1 1 ,limit)) (defmacro c-down-list-forward (&optional pos limit) @@ -809,6 +834,7 @@ or nil if no such position exists. The point is used if POS is left out. A limit for the search may be given. The start position is assumed to be before it." + (declare (debug t)) `(c-safe-scan-lists ,(or pos '(point)) 1 -1 ,limit)) (defmacro c-down-list-backward (&optional pos limit) @@ -817,6 +843,7 @@ or nil if no such position exists. The point is used if POS is left out. A limit for the search may be given. The start position is assumed to be after it." + (declare (debug t)) `(c-safe-scan-lists ,(or pos '(point)) -1 -1 ,limit)) (defmacro c-go-up-list-forward (&optional pos limit) @@ -826,6 +853,7 @@ position exists, otherwise nil is returned and the point isn't moved. A limit for the search may be given. The start position is assumed to be before it." + (declare (debug t)) `(let ((dest (c-up-list-forward ,pos ,limit))) (when dest (goto-char dest) t))) @@ -836,6 +864,7 @@ position exists, otherwise nil is returned and the point isn't moved. A limit for the search may be given. The start position is assumed to be after it." + (declare (debug t)) `(let ((dest (c-up-list-backward ,pos ,limit))) (when dest (goto-char dest) t))) @@ -846,6 +875,7 @@ exists, otherwise nil is returned and the point isn't moved. A limit for the search may be given. The start position is assumed to be before it." + (declare (debug t)) `(let ((dest (c-down-list-forward ,pos ,limit))) (when dest (goto-char dest) t))) @@ -856,6 +886,7 @@ exists, otherwise nil is returned and the point isn't moved. A limit for the search may be given. The start position is assumed to be after it." + (declare (debug t)) `(let ((dest (c-down-list-backward ,pos ,limit))) (when dest (goto-char dest) t))) @@ -967,6 +998,7 @@ be after it." ;; point)? Always returns nil for languages which don't have Virtual ;; semicolons. ;; This macro might do hidden buffer changes. + (declare (debug t)) `(if c-at-vsemi-p-fn (funcall c-at-vsemi-p-fn ,@(if pos `(,pos))))) @@ -984,6 +1016,7 @@ be after it." (defmacro c-benign-error (format &rest args) ;; Formats an error message for the echo area and dings, i.e. like ;; `error' but doesn't abort. + (declare (debug t)) `(progn (message ,format ,@args) (ding))) @@ -993,18 +1026,19 @@ be after it." ;; way to execute code. ;; Maintainers' note: If TABLE is `c++-template-syntax-table', DON'T call ;; any forms inside this that call `c-parse-state'. !!!! + (declare (indent 1) (debug t)) `(let ((c-with-syntax-table-orig-table (syntax-table))) (unwind-protect (progn (set-syntax-table ,table) ,@code) (set-syntax-table c-with-syntax-table-orig-table)))) -(put 'c-with-syntax-table 'lisp-indent-function 1) (defmacro c-skip-ws-forward (&optional limit) "Skip over any whitespace following point. This function skips over horizontal and vertical whitespace and line continuations." + (declare (debug t)) (if limit `(let ((limit (or ,limit (point-max)))) (while (progn @@ -1026,6 +1060,7 @@ continuations." "Skip over any whitespace preceding point. This function skips over horizontal and vertical whitespace and line continuations." + (declare (debug t)) (if limit `(let ((limit (or ,limit (point-min)))) (while (progn @@ -1048,6 +1083,7 @@ continuations." "Return non-nil if the current CC Mode major mode is MODE. MODE is either a mode symbol or a list of mode symbols." + (declare (debug t)) (if c-langs-are-parametric ;; Inside a `c-lang-defconst'. `(c-lang-major-mode-is ,mode) @@ -1130,6 +1166,7 @@ MODE is either a mode symbol or a list of mode symbols." ;; 21) then it's assumed that the property is present on it. ;; ;; This macro does a hidden buffer change. + (declare (debug t)) (setq property (eval property)) (if (or c-use-extents (not (cc-bytecomp-boundp 'text-property-default-nonsticky))) @@ -1147,6 +1184,7 @@ MODE is either a mode symbol or a list of mode symbols." ;; Get the value of the given property on the character at POS if ;; it's been put there by `c-put-char-property'. PROPERTY is ;; assumed to be constant. + (declare (debug t)) (setq property (eval property)) (if c-use-extents ;; XEmacs. @@ -1177,6 +1215,7 @@ MODE is either a mode symbol or a list of mode symbols." ;; constant. ;; ;; This macro does a hidden buffer change. + (declare (debug t)) (setq property (eval property)) (cond (c-use-extents ;; XEmacs. @@ -1199,6 +1238,7 @@ MODE is either a mode symbol or a list of mode symbols." ;; Return the first position in the range [FROM to) where the text property ;; PROPERTY is set, or `most-positive-fixnum' if there is no such position. ;; PROPERTY should be a quoted constant. + (declare (debug t)) `(let ((-from- ,from) (-to- ,to) pos) (cond ((and (< -from- -to-) @@ -1220,6 +1260,7 @@ MODE is either a mode symbol or a list of mode symbols." ;; `syntax-table'. ;; ;; This macro does hidden buffer changes. + (declare (debug t)) (setq property (eval property)) (if c-use-extents ;; XEmacs. @@ -1239,6 +1280,7 @@ MODE is either a mode symbol or a list of mode symbols." (defmacro c-clear-syn-tab-properties (from to) ;; Remove all occurrences of the `syntax-table' and `c-fl-syn-tab' text ;; properties between FROM and TO. + (declare (debug t)) `(let ((-from- ,from) (-to- ,to)) (when (and c-min-syn-tab-mkr c-max-syn-tab-mkr @@ -1260,6 +1302,7 @@ LIMIT bounds the search. The comparison is done with `equal'. Leave point just after the character, and set the match data on this character, and return point. If VALUE isn't found, Return nil; point is then left undefined." + (declare (debug t)) `(let ((place (point))) (while (and @@ -1279,6 +1322,7 @@ LIMIT bounds the search. The comparison is done with `equal'. Leave point just before the character, set the match data on this character, and return point. If VALUE isn't found, Return nil; point is then left undefined." + (declare (debug t)) `(let ((place (point))) (while (and @@ -1322,6 +1366,7 @@ been put there by c-put-char-property. POINT remains unchanged." which have the value VALUE, as tested by `equal'. These properties are assumed to be over individual characters, having been put there by c-put-char-property. POINT remains unchanged." + (declare (debug t)) (if c-use-extents ;; XEmacs `(let ((-property- ,property)) @@ -1342,6 +1387,7 @@ PROPERTY must be a constant. Leave point just after the character, and set the match data on this character, and return point. If the search fails, return nil; point is then left undefined." + (declare (debug t)) `(let ((char-skip (concat "^" (char-to-string ,char))) (-limit- (or ,limit (point-max))) (-value- ,value)) @@ -1365,6 +1411,7 @@ PROPERTY must be a constant. Leave point just before the character, and set the match data on this character, and return point. If the search fails, return nil; point is then left undefined." + (declare (debug t)) `(let ((char-skip (concat "^" (char-to-string ,char))) (-limit- (or ,limit (point-min))) (-value- ,value)) @@ -1388,6 +1435,7 @@ PROPERTY must be a constant. Leave point just after the character, and set the match data on this character, and return point. If the search fails, return nil; point is then left undefined." + (declare (debug t)) `(let ((char-skip (concat "^" (char-to-string ,char))) (-limit- (or ,limit (point-max))) (-value- ,value)) @@ -1436,6 +1484,7 @@ by `equal'. These properties are assumed to be over individual characters, having been put there by c-put-char-property. POINT remains unchanged. Return the position of the first removed property, or nil." + (declare (debug t)) (if c-use-extents ;; XEmacs `(let ((-property- ,property) @@ -1459,6 +1508,7 @@ property, or nil." ;; `c-put-char-property' must be a constant. "Put the text property PROPERTY with value VALUE on characters with value CHAR in the region [FROM to)." + (declare (debug t)) `(let ((skip-string (concat "^" (list ,char))) (-to- ,to)) (save-excursion @@ -1481,6 +1531,7 @@ with value CHAR in the region [FROM to)." ;; Put an overlay/extent covering the given range in the current ;; buffer. It's currently undefined whether it's front/end sticky ;; or not. The overlay/extent object is returned. + (declare (debug t)) (if (cc-bytecomp-fboundp 'make-overlay) ;; Emacs. `(let ((ol (make-overlay ,from ,to))) @@ -1494,6 +1545,7 @@ with value CHAR in the region [FROM to)." (defmacro c-delete-overlay (overlay) ;; Deletes an overlay/extent object previously retrieved using ;; `c-put-overlay'. + (declare (debug t)) (if (cc-bytecomp-fboundp 'make-overlay) ;; Emacs. `(delete-overlay ,overlay) @@ -1501,80 +1553,6 @@ with value CHAR in the region [FROM to)." `(delete-extent ,overlay))) -;; Make edebug understand the macros. -;(eval-after-load "edebug" ; 2006-07-09: def-edebug-spec is now in subr.el. -; '(progn -(def-edebug-spec cc-eval-when-compile (&rest def-form)) -(def-edebug-spec c-font-lock-flush t) -(def-edebug-spec c--mapcan t) -(def-edebug-spec c--set-difference (form form &rest [symbolp form])) -(def-edebug-spec c--intersection (form form &rest [symbolp form])) -(def-edebug-spec c--delete-duplicates (form &rest [symbolp form])) -(def-edebug-spec c-point t) -(def-edebug-spec c-is-escaped t) -(def-edebug-spec c-will-be-escaped t) -(def-edebug-spec c-next-single-property-change t) -(def-edebug-spec c-delete-and-extract-region t) -(def-edebug-spec c-set-region-active t) -(def-edebug-spec c-set-keymap-parent t) -(def-edebug-spec c-safe t) -(def-edebug-spec c-int-to-char t) -(def-edebug-spec c-characterp t) -(def-edebug-spec c-save-buffer-state let*) -(def-edebug-spec c-tentative-buffer-changes t) -(def-edebug-spec c-forward-syntactic-ws t) -(def-edebug-spec c-backward-syntactic-ws t) -(def-edebug-spec c-forward-sexp t) -(def-edebug-spec c-backward-sexp t) -(def-edebug-spec c-safe-scan-lists t) -(def-edebug-spec c-go-list-forward t) -(def-edebug-spec c-go-list-backward t) -(def-edebug-spec c-up-list-forward t) -(def-edebug-spec c-up-list-backward t) -(def-edebug-spec c-down-list-forward t) -(def-edebug-spec c-down-list-backward t) -(def-edebug-spec c-go-up-list-forward t) -(def-edebug-spec c-go-up-list-backward t) -(def-edebug-spec c-go-down-list-forward t) -(def-edebug-spec c-go-down-list-backward t) -(def-edebug-spec c-at-vsemi-p t) -(def-edebug-spec c-add-syntax t) -(def-edebug-spec c-add-class-syntax t) -(def-edebug-spec c-benign-error t) -(def-edebug-spec c-with-syntax-table t) -(def-edebug-spec c-skip-ws-forward t) -(def-edebug-spec c-skip-ws-backward t) -(def-edebug-spec c-major-mode-is t) -(def-edebug-spec c-search-forward-char-property t) -(def-edebug-spec c-search-backward-char-property t) -(def-edebug-spec c-put-char-property t) -(def-edebug-spec c-put-syn-tab t) -(def-edebug-spec c-get-char-property t) -(def-edebug-spec c-clear-char-property t) -(def-edebug-spec c-clear-syn-tab t) -;;(def-edebug-spec c-min-property-position nil) ; invoked only by macros -(def-edebug-spec c-min-property-position t) ; Now invoked from functions (2019-07) -(def-edebug-spec c-clear-char-property-with-value t) -(def-edebug-spec c-clear-char-property-with-value-on-char t) -(def-edebug-spec c-put-char-properties-on-char t) -(def-edebug-spec c-clear-char-properties t) -(def-edebug-spec c-clear-syn-tab-properties t) -(def-edebug-spec c-with-extended-string-fences (form form body)) -(def-edebug-spec c-put-overlay t) -(def-edebug-spec c-delete-overlay t) -(def-edebug-spec c-mark-<-as-paren t) -(def-edebug-spec c-mark->-as-paren t) -(def-edebug-spec c-unmark-<->-as-paren t) -(def-edebug-spec c-with-<->-as-parens-suppressed (body)) -(def-edebug-spec c-self-bind-state-cache (body)) -(def-edebug-spec c-sc-scan-lists-no-category+1+1 t) -(def-edebug-spec c-sc-scan-lists-no-category+1-1 t) -(def-edebug-spec c-sc-scan-lists-no-category-1+1 t) -(def-edebug-spec c-sc-scan-lists-no-category-1-1 t) -(def-edebug-spec c-sc-scan-lists t) -(def-edebug-spec c-sc-parse-partial-sexp t);)) - - ;;; Functions. ;; Note: All these after the macros, to be on safe side in avoiding @@ -1604,6 +1582,7 @@ with value CHAR in the region [FROM to)." ;; indirection through the `category' text property. This allows us to ;; toggle the property in all template brackets simultaneously and ;; cheaply. We use this, for instance, in `c-parse-state'. + (declare (debug t)) (if c-use-category `(c-put-char-property ,pos 'category 'c-<-as-paren-syntax) `(c-put-char-property ,pos 'syntax-table c-<-as-paren-syntax))) @@ -1618,6 +1597,7 @@ with value CHAR in the region [FROM to)." ;; indirection through the `category' text property. This allows us to ;; toggle the property in all template brackets simultaneously and ;; cheaply. We use this, for instance, in `c-parse-state'. + (declare (debug t)) (if c-use-category `(c-put-char-property ,pos 'category 'c->-as-paren-syntax) `(c-put-char-property ,pos 'syntax-table c->-as-paren-syntax))) @@ -1631,6 +1611,7 @@ with value CHAR in the region [FROM to)." ;; indirection through the `category' text property. This allows us to ;; toggle the property in all template brackets simultaneously and ;; cheaply. We use this, for instance, in `c-parse-state'. + (declare (debug t)) `(c-clear-char-property ,pos ,(if c-use-category ''category ''syntax-table))) (defsubst c-suppress-<->-as-parens () @@ -1651,50 +1632,13 @@ with value CHAR in the region [FROM to)." ;; Like progn, except that the paren property is suppressed on all ;; template brackets whilst they are running. This macro does a hidden ;; buffer change. + (declare (debug (body))) `(unwind-protect (progn (c-suppress-<->-as-parens) ,@forms) (c-restore-<->-as-parens))) -;;;;;;;;;;;;;;; - -(defmacro c-self-bind-state-cache (&rest forms) - ;; Bind the state cache to itself and execute the FORMS. Return the result - ;; of the last FORM executed. It is assumed that no buffer changes will - ;; happen in FORMS, and no hidden buffer changes which could affect the - ;; parsing will be made by FORMS. - `(let* ((c-state-cache (copy-tree c-state-cache)) - (c-state-cache-good-pos c-state-cache-good-pos) - ;(c-state-nonlit-pos-cache (copy-tree c-state-nonlit-pos-cache)) - ;(c-state-nonlit-pos-cache-limit c-state-nonlit-pos-cache-limit) - ;(c-state-semi-nonlit-pos-cache (copy-tree c-state-semi-nonlit-pos-cache)) - ;(c-state-semi-nonlit-pos-cache-limit c-state-semi-nonlit-pos-cache) - (c-state-brace-pair-desert (copy-tree c-state-brace-pair-desert)) - (c-state-point-min c-state-point-min) - (c-state-point-min-lit-type c-state-point-min-lit-type) - (c-state-point-min-lit-start c-state-point-min-lit-start) - (c-state-min-scan-pos c-state-min-scan-pos) - (c-state-old-cpp-beg-marker (if (markerp c-state-old-cpp-beg-marker) - (copy-marker c-state-old-cpp-beg-marker) - c-state-old-cpp-beg-marker)) - (c-state-old-cpp-beg (if (markerp c-state-old-cpp-beg) - c-state-old-cpp-beg-marker - c-state-old-cpp-beg)) - (c-state-old-cpp-end-marker (if (markerp c-state-old-cpp-end-marker) - (copy-marker c-state-old-cpp-end-marker) - c-state-old-cpp-end-marker)) - (c-state-old-cpp-end (if (markerp c-state-old-cpp-end) - c-state-old-cpp-end-marker - c-state-old-cpp-end)) - (c-parse-state-state c-parse-state-state)) - (prog1 - (progn ,@forms) - (if (markerp c-state-old-cpp-beg-marker) - (move-marker c-state-old-cpp-beg-marker nil)) - (if (markerp c-state-old-cpp-end-marker) - (move-marker c-state-old-cpp-end-marker nil))))) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; The following macros are to be used only in `c-parse-state' and its ;; subroutines. Their main purpose is to simplify the handling of C++/Java @@ -1708,6 +1652,7 @@ with value CHAR in the region [FROM to)." ;; Do a (scan-lists FROM 1 1). Any finishing position which either (i) is ;; determined by and angle bracket; or (ii) is inside a macro whose start ;; isn't POINT-MACRO-START doesn't count as a finishing position. + (declare (debug t)) `(let ((here (point)) (pos (scan-lists ,from 1 1))) (while (eq (char-before pos) ?>) @@ -1718,6 +1663,7 @@ with value CHAR in the region [FROM to)." ;; Do a (scan-lists FROM 1 -1). Any finishing position which either (i) is ;; determined by an angle bracket; or (ii) is inside a macro whose start ;; isn't POINT-MACRO-START doesn't count as a finishing position. + (declare (debug t)) `(let ((here (point)) (pos (scan-lists ,from 1 -1))) (while (eq (char-before pos) ?<) @@ -1729,6 +1675,7 @@ with value CHAR in the region [FROM to)." ;; Do a (scan-lists FROM -1 1). Any finishing position which either (i) is ;; determined by and angle bracket; or (ii) is inside a macro whose start ;; isn't POINT-MACRO-START doesn't count as a finishing position. + (declare (debug t)) `(let ((here (point)) (pos (scan-lists ,from -1 1))) (while (eq (char-after pos) ?<) @@ -1739,6 +1686,7 @@ with value CHAR in the region [FROM to)." ;; Do a (scan-lists FROM -1 -1). Any finishing position which either (i) is ;; determined by and angle bracket; or (ii) is inside a macro whose start ;; isn't POINT-MACRO-START doesn't count as a finishing position. + (declare (debug t)) `(let ((here (point)) (pos (scan-lists ,from -1 -1))) (while (eq (char-after pos) ?>) @@ -1747,6 +1695,7 @@ with value CHAR in the region [FROM to)." pos)) (defmacro c-sc-scan-lists (from count depth) + (declare (debug t)) (if c-use-category `(scan-lists ,from ,count ,depth) (cond @@ -1794,6 +1743,7 @@ with value CHAR in the region [FROM to)." (defmacro c-sc-parse-partial-sexp (from to &optional targetdepth stopbefore oldstate) + (declare (debug t)) (if c-use-category `(parse-partial-sexp ,from ,to ,targetdepth ,stopbefore ,oldstate) `(c-sc-parse-partial-sexp-no-category ,from ,to ,targetdepth ,stopbefore @@ -2354,6 +2304,7 @@ system." "Can be used inside a VAL in `c-lang-defconst' to evaluate FORM immediately, i.e. at the same time as the `c-lang-defconst' form itself is evaluated." + (declare (debug t)) ;; Evaluate at macro expansion time, i.e. in the ;; `c--macroexpand-all' inside `c-lang-defconst'. (eval form)) @@ -2396,7 +2347,8 @@ one `c-lang-defconst' for each NAME is permitted per file. If there already is one it will be completely replaced; the value in the earlier definition will not affect `c-lang-const' on the same constant. A file is identified by its base name." - + (declare (indent 1) + (debug (&define name [&optional stringp] [&rest sexp def-form]))) (let* ((sym (intern (symbol-name name) c-lang-constants)) ;; Make `c-lang-const' expand to a straightforward call to ;; `c-get-lang-constant' in `c--macroexpand-all' below. @@ -2487,12 +2439,6 @@ constant. A file is identified by its base name." (c-define-lang-constant ',name ,bindings ,@(and pre-files `(',pre-files)))))) -(put 'c-lang-defconst 'lisp-indent-function 1) -;(eval-after-load "edebug" ; 2006-07-09: def-edebug-spec is now in subr.el. -; ' -(def-edebug-spec c-lang-defconst - (&define name [&optional stringp] [&rest sexp def-form])) - (defun c-define-lang-constant (name bindings &optional pre-files) ;; Used by `c-lang-defconst'. @@ -2548,6 +2494,7 @@ LANG is the name of the language, i.e. the mode name without the language. NAME and LANG are not evaluated so they should not be quoted." + (declare (debug (name &optional symbolp))) (or (symbolp name) (error "Not a symbol: %S" name)) (or (symbolp lang) diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 747a6fd4eda..622d9516e16 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -737,6 +737,7 @@ comment at the start of cc-engine.el for more info." '(setq stack (cons (cons state saved-pos) stack))) (defmacro c-bos-pop-state (&optional do-if-done) + (declare (debug t)) `(if (setq state (car (car stack)) saved-pos (cdr (car stack)) stack (cdr stack)) @@ -761,6 +762,7 @@ comment at the start of cc-engine.el for more info." (goto-char pos) (setq sym nil))) (defmacro c-bos-save-error-info (missing got) + (declare (debug t)) `(setq saved-pos (vector pos ,missing ,got))) (defmacro c-bos-report-error () '(unless noerror @@ -1871,51 +1873,51 @@ comment at the start of cc-engine.el for more info." ; (setq in-face (point))) ; (not (eobp))))))) -(defmacro c-debug-sws-msg (&rest args) - (ignore args) +(defmacro c-debug-sws-msg (&rest _args) + ;; (declare (debug t)) ;;`(message ,@args) ) (defmacro c-put-is-sws (beg end) ;; This macro does a hidden buffer change. + (declare (debug t)) `(let ((beg ,beg) (end ,end)) (put-text-property beg end 'c-is-sws t) ,@(when (facep 'c-debug-is-sws-face) '((c-debug-add-face beg end 'c-debug-is-sws-face))))) -(def-edebug-spec c-put-is-sws t) (defmacro c-put-in-sws (beg end) ;; This macro does a hidden buffer change. + (declare (debug t)) `(let ((beg ,beg) (end ,end)) (put-text-property beg end 'c-in-sws t) ,@(when (facep 'c-debug-is-sws-face) '((c-debug-add-face beg end 'c-debug-in-sws-face))))) -(def-edebug-spec c-put-in-sws t) (defmacro c-remove-is-sws (beg end) ;; This macro does a hidden buffer change. + (declare (debug t)) `(let ((beg ,beg) (end ,end)) (remove-text-properties beg end '(c-is-sws nil)) ,@(when (facep 'c-debug-is-sws-face) '((c-debug-remove-face beg end 'c-debug-is-sws-face))))) -(def-edebug-spec c-remove-is-sws t) (defmacro c-remove-in-sws (beg end) ;; This macro does a hidden buffer change. + (declare (debug t)) `(let ((beg ,beg) (end ,end)) (remove-text-properties beg end '(c-in-sws nil)) ,@(when (facep 'c-debug-is-sws-face) '((c-debug-remove-face beg end 'c-debug-in-sws-face))))) -(def-edebug-spec c-remove-in-sws t) (defmacro c-remove-is-and-in-sws (beg end) ;; This macro does a hidden buffer change. + (declare (debug t)) `(let ((beg ,beg) (end ,end)) (remove-text-properties beg end '(c-is-sws nil c-in-sws nil)) ,@(when (facep 'c-debug-is-sws-face) '((c-debug-remove-face beg end 'c-debug-is-sws-face) (c-debug-remove-face beg end 'c-debug-in-sws-face))))) -(def-edebug-spec c-remove-is-and-in-sws t) ;; The type of literal position `end' is in a `before-change-functions' ;; function - one of `c', `c++', `pound', `noise', `attribute' or nil (but NOT @@ -3517,6 +3519,7 @@ mhtml-mode." (defmacro c-state-cache-top-lparen (&optional cache) ;; Return the address of the top left brace/bracket/paren recorded in CACHE ;; (default `c-state-cache') (or nil). + (declare (debug t)) (let ((cash (or cache 'c-state-cache))) `(if (consp (car ,cash)) (caar ,cash) @@ -3525,6 +3528,7 @@ mhtml-mode." (defmacro c-state-cache-top-paren (&optional cache) ;; Return the address of the latest brace/bracket/paren (whether left or ;; right) recorded in CACHE (default `c-state-cache') or nil. + (declare (debug t)) (let ((cash (or cache 'c-state-cache))) `(if (consp (car ,cash)) (cdar ,cash) @@ -3533,6 +3537,7 @@ mhtml-mode." (defmacro c-state-cache-after-top-paren (&optional cache) ;; Return the position just after the latest brace/bracket/paren (whether ;; left or right) recorded in CACHE (default `c-state-cache') or nil. + (declare (debug t)) (let ((cash (or cache 'c-state-cache))) `(if (consp (car ,cash)) (cdar ,cash) @@ -4487,6 +4492,7 @@ mhtml-mode." (defmacro c-state-maybe-marker (place marker) ;; If PLACE is non-nil, return a marker marking it, otherwise nil. ;; We (re)use MARKER. + (declare (debug (form symbolp))) `(let ((-place- ,place)) (and -place- (or ,marker (setq ,marker (make-marker))) @@ -5973,6 +5979,7 @@ comment at the start of cc-engine.el for more info." ; spots and the preceding token end.") (defmacro c-debug-put-decl-spot-faces (match-pos decl-pos) + (declare (debug t)) (when (facep 'c-debug-decl-spot-face) `(c-save-buffer-state ((match-pos ,match-pos) (decl-pos ,decl-pos)) (c-debug-add-face (max match-pos (point-min)) decl-pos @@ -5980,6 +5987,7 @@ comment at the start of cc-engine.el for more info." (c-debug-add-face decl-pos (min (1+ decl-pos) (point-max)) 'c-debug-decl-spot-face)))) (defmacro c-debug-remove-decl-spot-faces (beg end) + (declare (debug t)) (when (facep 'c-debug-decl-spot-face) `(c-save-buffer-state () (c-debug-remove-face ,beg ,end 'c-debug-decl-spot-face) @@ -7774,6 +7782,7 @@ comment at the start of cc-engine.el for more info." (defvar c-last-identifier-range nil) (defmacro c-record-type-id (range) + (declare (debug t)) (if (eq (car-safe range) 'cons) ;; Always true. `(setq c-record-type-identifiers @@ -7784,6 +7793,7 @@ comment at the start of cc-engine.el for more info." (cons range c-record-type-identifiers)))))) (defmacro c-record-ref-id (range) + (declare (debug t)) (if (eq (car-safe range) 'cons) ;; Always true. `(setq c-record-ref-identifiers @@ -7809,6 +7819,7 @@ comment at the start of cc-engine.el for more info." ;; if TYPE is 'type or as a reference if TYPE is 'ref. ;; ;; This macro might do hidden buffer changes. + (declare (debug t)) `(let (res) (setq c-last-identifier-range nil) (while (if (setq res ,(if (eq type 'type) @@ -7833,6 +7844,7 @@ comment at the start of cc-engine.el for more info." ;; `c-forward-keyword-prefixed-id'. ;; ;; This macro might do hidden buffer changes. + (declare (debug t)) `(while (and (progn ,(when update-safe-pos '(setq safe-pos (point))) @@ -8776,6 +8788,7 @@ comment at the start of cc-engine.el for more info." (defmacro c-pull-open-brace (ps) ;; Pull the next open brace from PS (which has the form of paren-state), ;; skipping over any brace pairs. Returns NIL when PS is exhausted. + (declare (debug (symbolp))) `(progn (while (consp (car ,ps)) (setq ,ps (cdr ,ps))) @@ -8891,6 +8904,7 @@ comment at the start of cc-engine.el for more info." ;; a comma. If either of <symbol> or bracketed <expression> is missing, ;; throw nil to 'level. If the terminating } or ) is unmatched, throw nil ;; to 'done. This is not a general purpose macro! + (declare (debug t)) `(while (eq (char-before) ?,) (backward-char) (c-backward-syntactic-ws ,limit) @@ -9284,6 +9298,7 @@ This function might do hidden buffer changes." ;; sometimes consumes the identifier in the declaration as a type. ;; This is used to "backtrack" and make the last type be treated as ;; an identifier instead. + (declare (debug nil)) `(progn ,(unless short ;; These identifiers are bound only in the inner let. @@ -14687,18 +14702,6 @@ Cannot combine absolute offsets %S and %S in `add' method" indent))) -(def-edebug-spec c-bos-pop-state t) -(def-edebug-spec c-bos-save-error-info t) -(def-edebug-spec c-state-cache-top-lparen t) -(def-edebug-spec c-state-cache-top-paren t) -(def-edebug-spec c-state-cache-after-top-paren t) -(def-edebug-spec c-state-maybe-marker (form symbolp)) -(def-edebug-spec c-record-type-id t) -(def-edebug-spec c-record-ref-id t) -(def-edebug-spec c-forward-keyword-prefixed-id t) -(def-edebug-spec c-forward-id-comma-list t) -(def-edebug-spec c-pull-open-brace (symbolp)) - (cc-provide 'cc-engine) ;; Local Variables: diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index 433b4dcf4a8..fdef0840cda 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el @@ -218,6 +218,7 @@ ;; incorrectly. ;; ;; This function does a hidden buffer change. + (declare (debug t)) (if (fboundp 'font-lock-set-face) ;; Note: This function has no docstring in XEmacs so it might be ;; considered internal. @@ -228,6 +229,7 @@ ;; This is the inverse of `c-put-font-lock-face'. ;; ;; This function does a hidden buffer change. + (declare (debug t)) (if (fboundp 'font-lock-remove-face) `(font-lock-remove-face ,from ,to) `(remove-text-properties ,from ,to '(face nil)))) @@ -238,11 +240,13 @@ ;; region should include them. ;; ;; This function does a hidden buffer change. + (declare (debug t)) (if (featurep 'xemacs) `(c-put-font-lock-face (1+ ,from) (1- ,to) 'font-lock-string-face) `(c-put-font-lock-face ,from ,to 'font-lock-string-face))) (defmacro c-fontify-types-and-refs (varlist &rest body) + (declare (indent 1) (debug let*)) ;; Like `let', but additionally activates `c-record-type-identifiers' ;; and `c-record-ref-identifiers', and fontifies the recorded ranges ;; accordingly on exit. @@ -253,7 +257,6 @@ ,@varlist) (prog1 (progn ,@body) (c-fontify-recorded-types-and-refs)))) - (put 'c-fontify-types-and-refs 'lisp-indent-function 1) (defun c-skip-comments-and-strings (limit) ;; If the point is within a region fontified as a comment or @@ -482,20 +485,7 @@ ;; In the next form, check that point hasn't been moved beyond ;; `limit' in any of the above stanzas. ,(c-make-font-lock-search-form (car normal) (cdr normal) t) - nil)))) - -; (eval-after-load "edebug" ; 2006-07-09: def-edebug-spec is now in subr.el. -; '(progn -(def-edebug-spec c-put-font-lock-face t) -(def-edebug-spec c-remove-font-lock-face t) -(def-edebug-spec c-put-font-lock-string-face t) - (def-edebug-spec c-fontify-types-and-refs let*) - (def-edebug-spec c-make-syntactic-matcher t) - ;; If there are literal quoted or backquoted highlight specs in - ;; the call to `c-make-font-lock-search-function' then let's - ;; instrument the forms in them. - (def-edebug-spec c-make-font-lock-search-function - (form &rest &or ("quote" (&rest form)) ("`" (&rest form)) form)));)) + nil))))) (defun c-fontify-recorded-types-and-refs () ;; Convert the ranges recorded on `c-record-type-identifiers' and @@ -2712,6 +2702,7 @@ need for `pike-font-lock-extra-types'.") (defmacro c-set-doc-comment-re-element (suffix) ;; Set the variable `c-doc-line-join-re' to a buffer local value suitable ;; for the current doc comment style, or kill the local value. + (declare (debug t)) (let ((var (intern (concat "c-doc" suffix)))) `(let* ((styles (c-get-doc-comment-style)) elts) @@ -2738,6 +2729,7 @@ need for `pike-font-lock-extra-types'.") (defmacro c-set-doc-comment-char-list (suffix) ;; Set the variable 'c-doc-<suffix>' to the list of *-<suffix>, which must ;; be characters, and * represents the doc comment style. + (declare (debug t)) (let ((var (intern (concat "c-doc" suffix)))) `(let* ((styles (c-get-doc-comment-style)) elts) @@ -2783,7 +2775,7 @@ need for `pike-font-lock-extra-types'.") ;; is used as a flag in other code to skip comments. ;; ;; This function might do hidden buffer changes. - + (declare (indent 2)) (let (comment-beg region-beg) (if (memq (get-text-property (point) 'face) '(font-lock-comment-face font-lock-comment-delimiter-face)) @@ -2866,7 +2858,6 @@ need for `pike-font-lock-extra-types'.") (goto-char region-end))))) nil) -(put 'c-font-lock-doc-comments 'lisp-indent-function 2) (defun c-find-invalid-doc-markup (regexp limit) ;; Used to fontify invalid markup in doc comments after the correct diff --git a/lisp/progmodes/cc-guess.el b/lisp/progmodes/cc-guess.el index 0824af66b43..9c88c14a6c1 100644 --- a/lisp/progmodes/cc-guess.el +++ b/lisp/progmodes/cc-guess.el @@ -58,7 +58,7 @@ ;; ;; If you want to reuse the guessed style in future emacs sessions, ;; you may want to put it to your .emacs. `c-guess-view' is for -;; you. It emits emacs lisp code which defines the last guessed +;; you. It emits Emacs Lisp code which defines the last guessed ;; style, in a temporary buffer. You can put the emitted code into ;; your .emacs. This command was suggested by Alan Mackenzie. @@ -527,7 +527,7 @@ is called with one argument, the guessed style." (cdr needs-markers))))) (defun c-guess-view (&optional with-name) - "Emit emacs lisp code which defines the last guessed style. + "Emit Emacs Lisp code which defines the last guessed style. So you can put the code into .emacs if you prefer the guessed code. \"STYLE NAME HERE\" is used as the name for the style in the diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index 4266600f8cf..f6648491a97 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el @@ -159,7 +159,9 @@ evaluated and bound to VAR when the result from the macro `c-lang-const' is typically used in VAL to get the right value for the language being initialized, and such calls will be macro expanded to the evaluated constant value at compile time." - + (declare (indent defun) + (debug (&define name def-form + &optional &or ("quote" symbolp) stringp))) (when (and (not doc) (eq (car-safe val) 'c-lang-const) (eq (nth 1 val) var) @@ -191,6 +193,7 @@ Emacs variable like `comment-start'. `c-lang-const' is typically used in VAL to get the right value for the language being initialized, and such calls will be macro expanded to the evaluated constant value at compile time." + (declare (debug (&define name def-form))) (let ((elem (assq var (cdr c-emacs-variable-inits)))) (if elem (setcdr elem (list val)) ; Maybe remove "list", sometime. 2006-07-19 @@ -200,13 +203,6 @@ the evaluated constant value at compile time." ;; Return the symbol, like the other def* forms. `',var) -(put 'c-lang-defvar 'lisp-indent-function 'defun) -; (eval-after-load "edebug" ; 2006-07-09: def-edebug-spec is now in subr.el. -; ' -(def-edebug-spec c-lang-defvar - (&define name def-form &optional &or ("quote" symbolp) stringp)) -(def-edebug-spec c-lang-setvar (&define name def-form)) - ;; Suppress "might not be defined at runtime" warning. ;; This file is only used when compiling other cc files. (declare-function cl-delete-duplicates "cl-seq" (cl-seq &rest cl-keys)) @@ -379,12 +375,14 @@ The syntax tables aren't stored directly since they're quite large." (let ((table (make-syntax-table))) (c-populate-syntax-table table) ;; Mode specific syntaxes. - ,(cond ((or (c-major-mode-is 'objc-mode) (c-major-mode-is 'java-mode)) + ,(cond ((c-major-mode-is 'objc-mode) ;; Let '@' be part of symbols in ObjC to cope with ;; its compiler directives as single keyword tokens. ;; This is then necessary since it's assumed that ;; every keyword is a single symbol. '(modify-syntax-entry ?@ "_" table)) + ((c-major-mode-is 'java-mode) + '(modify-syntax-entry ?@ "'" table)) ((c-major-mode-is 'pike-mode) '(modify-syntax-entry ?@ "." table))) table))) @@ -4092,6 +4090,7 @@ accomplish that conveniently." This macro is expanded at compile time to a form tailored for the mode in question, so MODE must be a constant. Therefore MODE is not evaluated and should not be quoted." + (declare (debug nil)) `(funcall ,(c-make-init-lang-vars-fun mode))) diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index dae0062efb5..a8f16627722 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -969,6 +969,7 @@ Note that the style variables are always made local to the buffer." (defmacro c-run-mode-hooks (&rest hooks) ;; Emacs 21.1 has introduced a system with delayed mode hooks that ;; requires the use of the new function `run-mode-hooks'. + (declare (debug t)) (if (cc-bytecomp-fboundp 'run-mode-hooks) `(run-mode-hooks ,@hooks) `(progn ,@(mapcar (lambda (hook) `(run-hooks ,hook)) hooks)))) @@ -2503,6 +2504,7 @@ This function is called from `c-common-init', once per mode initialization." ;; Emacs < 22 and XEmacs (defmacro c-advise-fl-for-region (function) + (declare (debug t)) `(defadvice ,function (before get-awk-region activate) ;; Make sure that any string/regexp is completely font-locked. (when c-buffer-is-cc-mode diff --git a/lisp/progmodes/glasses.el b/lisp/progmodes/glasses.el index a0f5d36bb65..cd92175bd61 100644 --- a/lisp/progmodes/glasses.el +++ b/lisp/progmodes/glasses.el @@ -321,10 +321,6 @@ separators (like underscores) at places they belong to." (remove-hook 'write-file-functions 'glasses-convert-to-unreadable t))))) - -;;; Announce - (provide 'glasses) - ;;; glasses.el ends here diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index b105cbaa0ef..a37477dfa1e 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -293,6 +293,10 @@ Used to gray out relevant toolbar icons.") (tool-bar-local-item-from-menu (car x) (cdr x) map gud-minor-mode-map)))) +(defvar gud-repeat-map (make-sparse-keymap) + "Keymap to repeat gud stepping instructions `C-x C-a C-n n n'. +Used in `repeat-mode'.") + (defun gud-file-name (f) "Transform a relative file name to an absolute file name. Uses `gud-<MINOR-MODE>-directories' to find the source files." @@ -784,6 +788,17 @@ the buffer in which this command was invoked." (gud-def gud-until "until %l" "\C-u" "Continue to current line.") (gud-def gud-run "run" nil "Run the program.") + (dolist (cmd '(("n" . gud-next) + ("s" . gud-step) + ("i" . gud-stepi) + ("c" . gud-cont) + ("l" . gud-refresh) + ("f" . gud-finish) + ("<" . gud-up) + (">" . gud-down))) + (define-key gud-repeat-map (car cmd) (cdr cmd)) + (put (cdr cmd) 'repeat-map 'gud-repeat-map)) + (add-hook 'completion-at-point-functions #'gud-gdb-completion-at-point nil 'local) (setq-local gud-gdb-completion-function 'gud-gdb-completions) diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el index 134a6c6e497..ad8feb988f5 100644 --- a/lisp/progmodes/idlw-shell.el +++ b/lisp/progmodes/idlw-shell.el @@ -1,4 +1,4 @@ -;; idlw-shell.el --- run IDL as an inferior process of Emacs. -*- lexical-binding:t -*- +;;; idlw-shell.el --- run IDL as an inferior process of Emacs. -*- lexical-binding:t -*- ;; Copyright (C) 1999-2021 Free Software Foundation, Inc. diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el index 75f2016fc24..b55a98af0b3 100644 --- a/lisp/progmodes/idlwave.el +++ b/lisp/progmodes/idlwave.el @@ -1,4 +1,4 @@ -;; idlwave.el --- IDL editing mode for GNU Emacs -*- lexical-binding: t; -*- +;;; idlwave.el --- IDL editing mode for GNU Emacs -*- lexical-binding: t; -*- ;; Copyright (C) 1999-2021 Free Software Foundation, Inc. diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index eb690a72f6e..a942235f474 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -494,10 +494,11 @@ for preventing Firefox from stealing the keyboard focus." :type 'boolean) (defcustom js-js-tmpdir - "~/.emacs.d/js/js" + (locate-user-emacs-file "js/js") "Temporary directory used by `js-mode' to communicate with Mozilla. This directory must be readable and writable by both Mozilla and Emacs." - :type 'directory) + :type 'directory + :version "28.1") (defcustom js-js-timeout 5 "Reply timeout for executing commands in Mozilla via `js-mode'. @@ -4654,4 +4655,4 @@ one of the aforementioned options instead of using this mode." (provide 'js) -;; js.el ends here +;;; js.el ends here diff --git a/lisp/progmodes/meta-mode.el b/lisp/progmodes/meta-mode.el index a59014827e8..50268446025 100644 --- a/lisp/progmodes/meta-mode.el +++ b/lisp/progmodes/meta-mode.el @@ -942,9 +942,6 @@ The environment marked is the one that contains point or follows point." (list (list "\\<\\(\\sw+\\)" 1 'meta-symbol-list) (list "" 'ispell-complete-word)))) - -;;; Just in case ... - (provide 'meta-mode) (run-hooks 'meta-mode-load-hook) diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index a819e7243ca..1d0d1bc58a4 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -296,7 +296,7 @@ to find the list of ignores for each directory." ;; Make sure ~/ etc. in local directory name is ;; expanded and not left for the shell command ;; to interpret. - (localdir (file-local-name (expand-file-name dir))) + (localdir (file-name-unquote (file-local-name (expand-file-name dir)))) (command (format "%s %s %s -type f %s -print0" find-program ;; In case DIR is a symlink. @@ -311,16 +311,25 @@ to find the list of ignores for each directory." (concat " -o " find-name-arg " ")) " " (shell-quote-argument ")")) - "")))) + ""))) + (output (with-output-to-string + (with-current-buffer standard-output + (let ((status + (process-file-shell-command command nil t))) + (unless (zerop status) + (error "File listing failed: %s" (buffer-string)))))))) (project--remote-file-names - (sort (split-string (shell-command-to-string command) "\0" t) + (sort (split-string output "\0" t) #'string<)))) (defun project--remote-file-names (local-files) - "Return LOCAL-FILES as if they were on the system of `default-directory'." + "Return LOCAL-FILES as if they were on the system of `default-directory'. +Also quote LOCAL-FILES if `default-directory' is quoted." (let ((remote-id (file-remote-p default-directory))) (if (not remote-id) - local-files + (if (file-name-quoted-p default-directory) + (mapcar #'file-name-quote local-files) + local-files) (mapcar (lambda (file) (concat remote-id file)) local-files)))) @@ -778,7 +787,11 @@ pattern to search for." (defun project--find-regexp-in-files (regexp files) (unless files (user-error "Empty file list")) - (let ((xrefs (xref-matches-in-files regexp files))) + (let ((xrefs (xref-matches-in-files + regexp + ;; FIXME: `xref-matches-in-files' should work with + ;; quoted filenames. + (mapcar #'file-name-unquote files)))) (unless xrefs (user-error "No matches for: %s" regexp)) xrefs)) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 30721c7a577..20ec339fffb 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -247,8 +247,6 @@ ;; I'd recommend the first one since you'll get the same behavior for ;; all modes out-of-the-box. -;;; TODO: - ;;; Code: (require 'ansi-color) diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el index 6e53a04f72d..65a4094d70d 100644 --- a/lisp/progmodes/sql.el +++ b/lisp/progmodes/sql.el @@ -5606,7 +5606,7 @@ The default value disables the internal pager." (provide 'sql) -;;; sql.el ends here - ; LocalWords: sql SQL SQLite sqlite Sybase Informix MySQL ; LocalWords: Postgres SQLServer SQLi + +;;; sql.el ends here diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index cada1f11092..3d2f21ab52f 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -1416,7 +1416,8 @@ IGNORES is a list of glob patterns for files to ignore." (command (xref--rgrep-command (xref--regexp-to-extended regexp) files (file-name-as-directory - (file-local-name (expand-file-name dir))) + (file-name-unquote + (file-local-name (expand-file-name dir)))) ignores)) (def default-directory) (buf (get-buffer-create " *xref-grep*")) diff --git a/lisp/repeat.el b/lisp/repeat.el index f1b20d369bf..b7118cc7f95 100644 --- a/lisp/repeat.el +++ b/lisp/repeat.el @@ -348,17 +348,22 @@ For example, you can set it to <return> like `isearch-exit'." :group 'convenience :version "28.1") -(defcustom repeat-mode-echo #'repeat-mode-message +(defcustom repeat-echo-function #'repeat-echo-message "Function to display a hint about available keys. Function is called after every repeatable command with one argument: -a string with a list of keys." +a repeating map, or nil after deactivating the repeat mode." :type '(choice (const :tag "Show hints in the echo area" - repeat-mode-message) - (const :tag "Don't show hints" ignore) + repeat-echo-message) + (const :tag "Show indicator in the mode line" + repeat-echo-mode-line) + (const :tag "No visual feedback" ignore) (function :tag "Function")) :group 'convenience :version "28.1") +(defvar repeat-in-progress nil + "Non-nil when the repeating map is active.") + ;;;###autoload (defvar repeat-map nil "The value of the repeating map for the next command. @@ -386,51 +391,73 @@ When Repeat mode is enabled, and the command symbol has the property named (defun repeat-post-hook () "Function run after commands to set transient keymap for repeatable keys." - (when repeat-mode - (let ((rep-map (or repeat-map - (and (symbolp real-this-command) - (get real-this-command 'repeat-map))))) - (when rep-map - (when (boundp rep-map) - (setq rep-map (symbol-value rep-map))) - (let ((map (copy-keymap rep-map)) - keys) - - ;; Exit when the last char is not among repeatable keys, - ;; so e.g. `C-x u u' repeats undo, whereas `C-/ u' doesn't. - (when (and (zerop (minibuffer-depth)) ; avoid remapping in prompts - (or (lookup-key map (this-command-keys-vector)) - prefix-arg)) - - ;; Messaging - (unless prefix-arg - (map-keymap (lambda (key _) (push key keys)) map) - (let ((mess (format-message - "Repeat with %s%s" - (mapconcat (lambda (key) - (key-description (vector key))) - keys ", ") - (if repeat-exit-key - (format ", or exit with %s" - (key-description repeat-exit-key)) - "")))) - (funcall repeat-mode-echo mess))) - - ;; Adding an exit key - (when repeat-exit-key - (define-key map repeat-exit-key 'ignore)) - - (when (and repeat-keep-prefix (not prefix-arg)) - (setq prefix-arg current-prefix-arg)) - - (set-transient-map map)))))) - (setq repeat-map nil)) - -(defun repeat-mode-message (mess) - "Function that displays available repeating keys in the echo area." - (if (current-message) - (message "%s [%s]" (current-message) mess) - (message mess))) + (let ((was-in-progress repeat-in-progress)) + (setq repeat-in-progress nil) + (when repeat-mode + (let ((rep-map (or repeat-map + (and (symbolp real-this-command) + (get real-this-command 'repeat-map))))) + (when rep-map + (when (boundp rep-map) + (setq rep-map (symbol-value rep-map))) + (let ((map (copy-keymap rep-map))) + + ;; Exit when the last char is not among repeatable keys, + ;; so e.g. `C-x u u' repeats undo, whereas `C-/ u' doesn't. + (when (and (zerop (minibuffer-depth)) ; avoid remapping in prompts + (or (lookup-key map (this-command-keys-vector)) + prefix-arg)) + + ;; Messaging + (unless prefix-arg + (funcall repeat-echo-function map)) + + ;; Adding an exit key + (when repeat-exit-key + (define-key map repeat-exit-key 'ignore)) + + (when (and repeat-keep-prefix (not prefix-arg)) + (setq prefix-arg current-prefix-arg)) + + (setq repeat-in-progress t) + (set-transient-map map)))))) + + (setq repeat-map nil) + (when (and was-in-progress (not repeat-in-progress)) + (funcall repeat-echo-function nil)))) + +(defun repeat-echo-message-string (map) + "Return a string with a list of repeating keys." + (let (keys) + (map-keymap (lambda (key _) (push key keys)) map) + (format-message "Repeat with %s%s" + (mapconcat (lambda (key) + (key-description (vector key))) + keys ", ") + (if repeat-exit-key + (format ", or exit with %s" + (key-description repeat-exit-key)) + "")))) + +(defun repeat-echo-message (map) + "Display available repeating keys in the echo area." + (when map + (let ((mess (repeat-echo-message-string map))) + (if (current-message) + (message "%s [%s]" (current-message) mess) + (message mess))))) + +(defvar repeat-echo-mode-line-string + (propertize "[Repeating...] " 'face 'mode-line-emphasis) + "String displayed in the mode line in repeating mode.") + +(defun repeat-echo-mode-line (map) + "Display the repeat indicator in the mode line." + (if map + (unless (assq 'repeat-in-progress mode-line-modes) + (add-to-list 'mode-line-modes (list 'repeat-in-progress + repeat-echo-mode-line-string))) + (force-mode-line-update t))) (provide 'repeat) diff --git a/lisp/ses.el b/lisp/ses.el index 6058d48ed19..98785b6b938 100644 --- a/lisp/ses.el +++ b/lisp/ses.el @@ -1,4 +1,4 @@ -;;; ses.el -- Simple Emacs Spreadsheet -*- lexical-binding:t -*- +;;; ses.el --- Simple Emacs Spreadsheet -*- lexical-binding:t -*- ;; Copyright (C) 2002-2021 Free Software Foundation, Inc. diff --git a/lisp/speedbar.el b/lisp/speedbar.el index 12e57b11082..4666026f357 100644 --- a/lisp/speedbar.el +++ b/lisp/speedbar.el @@ -1,4 +1,4 @@ -;;; speedbar --- quick access to files and tags in a frame -*- lexical-binding: t; -*- +;;; speedbar.el --- quick access to files and tags in a frame -*- lexical-binding: t; -*- ;; Copyright (C) 1996-2021 Free Software Foundation, Inc. @@ -4055,7 +4055,6 @@ this version is not backward compatible to 0.14 or earlier.") (provide 'speedbar) -;; run load-time hooks (run-hooks 'speedbar-load-hook) -;;; speedbar ends here +;;; speedbar.el ends here diff --git a/lisp/term/konsole.el b/lisp/term/konsole.el index e38a5d34e75..1f65a46011c 100644 --- a/lisp/term/konsole.el +++ b/lisp/term/konsole.el @@ -9,4 +9,4 @@ (provide 'term/konsole) -;; konsole.el ends here +;;; konsole.el ends here diff --git a/lisp/term/linux.el b/lisp/term/linux.el index 35bd3ac0acb..c6d84ab96c3 100644 --- a/lisp/term/linux.el +++ b/lisp/term/linux.el @@ -1,4 +1,6 @@ -;; The Linux console handles Latin-1 by default. -*- lexical-binding:t -*- +;;; linux.el -*- lexical-binding:t -*- + +;; The Linux console handles Latin-1 by default. (declare-function gpm-mouse-enable "t-mouse" ()) diff --git a/lisp/term/lk201.el b/lisp/term/lk201.el index 3bcaa2ecd18..c2802477670 100644 --- a/lisp/term/lk201.el +++ b/lisp/term/lk201.el @@ -1,4 +1,4 @@ -;; Define function key sequences for DEC terminals. -*- lexical-binding: t -*- +;;; lk201.el --- Define function key sequences for DEC terminals. -*- lexical-binding: t -*- (defvar lk201-function-map (let ((map (make-sparse-keymap))) diff --git a/lisp/term/screen.el b/lisp/term/screen.el index 04481e8358b..9655f41b6c1 100644 --- a/lisp/term/screen.el +++ b/lisp/term/screen.el @@ -22,4 +22,4 @@ it runs, which can change when the screen session is moved to another tty." (provide 'term/screen) -;; screen.el ends here +;;; screen.el ends here diff --git a/lisp/term/st.el b/lisp/term/st.el index 08432c414af..9a1c0646f89 100644 --- a/lisp/term/st.el +++ b/lisp/term/st.el @@ -17,4 +17,4 @@ (provide 'term/st) -;; st.el ends here +;;; st.el ends here diff --git a/lisp/term/tmux.el b/lisp/term/tmux.el index aa0c98364f3..4ea6f416c8c 100644 --- a/lisp/term/tmux.el +++ b/lisp/term/tmux.el @@ -22,4 +22,4 @@ it runs, which can change when the tmux session is moved to another tty." (provide 'term/tmux) -;; tmux.el ends here +;;; tmux.el ends here diff --git a/lisp/term/w32console.el b/lisp/term/w32console.el index 4a925cd84c3..1a5dc05783e 100644 --- a/lisp/term/w32console.el +++ b/lisp/term/w32console.el @@ -1,4 +1,4 @@ -;;; w32console.el -- Setup w32 console keys and colors. -*- lexical-binding: t; -*- +;;; w32console.el --- Setup w32 console keys and colors. -*- lexical-binding: t; -*- ;; Copyright (C) 2007-2021 Free Software Foundation, Inc. diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el index fbb9d2174fd..d9a83c566b4 100644 --- a/lisp/textmodes/artist.el +++ b/lisp/textmodes/artist.el @@ -33,7 +33,7 @@ ;; What is artist? ;; --------------- ;; -;; Artist is an Emacs lisp package that allows you to draw lines, +;; Artist is an Emacs Lisp package that allows you to draw lines, ;; rectangles and ellipses by using your mouse and/or keyboard. The ;; shapes are made up with the ascii characters |, -, / and \. ;; diff --git a/lisp/textmodes/bibtex-style.el b/lisp/textmodes/bibtex-style.el index 6d01871bc52..27b2e0e3331 100644 --- a/lisp/textmodes/bibtex-style.el +++ b/lisp/textmodes/bibtex-style.el @@ -24,7 +24,6 @@ ;; Done: font-lock, imenu, outline, commenting, indentation. ;; Todo: tab-completion. -;; Bugs: ;;; Code: diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el index f01c66b1584..31186fb4fac 100644 --- a/lisp/textmodes/bibtex.el +++ b/lisp/textmodes/bibtex.el @@ -5608,8 +5608,5 @@ If APPEND is non-nil, append ENTRIES to those already displayed." (setq buffer-read-only t) (goto-char (point-min))) - -;; Make BibTeX a Feature - (provide 'bibtex) ;;; bibtex.el ends here diff --git a/lisp/textmodes/makeinfo.el b/lisp/textmodes/makeinfo.el index 8152f4b89c8..653540ad415 100644 --- a/lisp/textmodes/makeinfo.el +++ b/lisp/textmodes/makeinfo.el @@ -284,7 +284,6 @@ line LINE of the window, or centered if LINE is nil." (pop-to-buffer old-buffer) ))) -;;; Place `provide' at end of file. (provide 'makeinfo) ;;; makeinfo.el ends here diff --git a/lisp/textmodes/page.el b/lisp/textmodes/page.el index e1d7fb7431c..b86a2f149de 100644 --- a/lisp/textmodes/page.el +++ b/lisp/textmodes/page.el @@ -170,8 +170,6 @@ point, respectively." (interactive) (apply #'message (cons "Page %d, line %d" (page--what-page)))) - -;;; Place `provide' at end of file. (provide 'page) ;;; page.el ends here diff --git a/lisp/textmodes/paragraphs.el b/lisp/textmodes/paragraphs.el index 31e91c73031..59b15e82a81 100644 --- a/lisp/textmodes/paragraphs.el +++ b/lisp/textmodes/paragraphs.el @@ -202,8 +202,6 @@ This is desirable in modes where blank lines are the paragraph delimiters." (put 'paragraph-ignore-fill-prefix 'safe-local-variable #'booleanp) ;; Silence the compiler. -(defvar multiple-lines) - (defun forward-paragraph (&optional arg) "Move forward to end of paragraph. With argument ARG, do it ARG times; @@ -262,13 +260,13 @@ Returns the count of paragraphs left to move." ;; Search back for line that starts or separates paragraphs. (if (if fill-prefix-regexp ;; There is a fill prefix; it overrides parstart. - (let (multiple-lines) + (let () ;; multiple-lines (while (and (progn (beginning-of-line) (not (bobp))) (progn (move-to-left-margin) (not (looking-at parsep))) (looking-at fill-prefix-regexp)) - (unless (= (point) start) - (setq multiple-lines t)) + ;; (unless (= (point) start) + ;; (setq multiple-lines t)) (forward-line -1)) (move-to-left-margin) ;; This deleted code caused a long hanging-indent line diff --git a/lisp/textmodes/remember.el b/lisp/textmodes/remember.el index 8a0436afc64..4acdc9f4d87 100644 --- a/lisp/textmodes/remember.el +++ b/lisp/textmodes/remember.el @@ -1,4 +1,4 @@ -;;; remember --- a mode for quickly jotting down things to remember -*- lexical-binding: t; -*- +;;; remember.el --- a mode for quickly jotting down things to remember -*- lexical-binding: t; -*- ;; Copyright (C) 1999-2001, 2003-2021 Free Software Foundation, Inc. diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el index 13b4a6d05b0..2dd52b87b79 100644 --- a/lisp/textmodes/table.el +++ b/lisp/textmodes/table.el @@ -383,7 +383,7 @@ ;; There is no artificial-intelligence magic in this package. The ;; definition of a table and the cells inside the table is reasonably ;; limited in order to achieve acceptable performance in the -;; interactive operation under Emacs lisp implementation. A valid +;; interactive operation under Emacs Lisp implementation. A valid ;; table is a rectangular text area completely filled with valid ;; cells. A valid cell is a rectangle text area, which four borders ;; consist of valid border characters. Cells can not be nested one to diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index fb57b9b0f23..8d7f459190b 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -28,7 +28,6 @@ ;;; Code: -;; Pacify the byte-compiler (eval-when-compile (require 'compare-w) (require 'cl-lib) diff --git a/lisp/textmodes/texinfmt.el b/lisp/textmodes/texinfmt.el index a797df9193f..977f3bab6ce 100644 --- a/lisp/textmodes/texinfmt.el +++ b/lisp/textmodes/texinfmt.el @@ -23,9 +23,9 @@ ;;; Commentary: -;;; Code: +;;; Emacs Lisp functions to convert Texinfo files to Info files. -;;; Emacs lisp functions to convert Texinfo files to Info files. +;;; Code: (defvar texinfmt-version "2.42 of 7 Jul 2006") (make-obsolete-variable 'texinfmt-version 'emacs-version "28.1") @@ -4310,8 +4310,6 @@ For example, invoke (setq error 1)))) (kill-emacs error)))) - -;;; Place `provide' at end of file. (provide 'texinfmt) ;;; texinfmt.el ends here diff --git a/lisp/textmodes/texnfo-upd.el b/lisp/textmodes/texnfo-upd.el index 27807a95e60..03004548302 100644 --- a/lisp/textmodes/texnfo-upd.el +++ b/lisp/textmodes/texnfo-upd.el @@ -2112,8 +2112,6 @@ chapter." (message "Multiple files updated.")) - -;; Place `provide' at end of file. (provide 'texnfo-upd) ;;; texnfo-upd.el ends here diff --git a/lisp/textmodes/tildify.el b/lisp/textmodes/tildify.el index 163978b4315..01e2ad72d88 100644 --- a/lisp/textmodes/tildify.el +++ b/lisp/textmodes/tildify.el @@ -503,8 +503,6 @@ variable will be set to the representation." (remove-hook 'post-self-insert-hook #'tildify-space t))) -;;; *** Announce *** - (provide 'tildify) ;;; tildify.el ends here diff --git a/lisp/textmodes/two-column.el b/lisp/textmodes/two-column.el index 6c3bacc647f..5a3a64ad79f 100644 --- a/lisp/textmodes/two-column.el +++ b/lisp/textmodes/two-column.el @@ -319,16 +319,17 @@ first and the associated buffer to its right." ;;;###autoload -(defun 2C-associate-buffer () - "Associate another buffer with this one in two-column minor mode. +(defun 2C-associate-buffer (buffer) + "Associate another BUFFER with this one in two-column minor mode. Can also be used to associate a just previously visited file, by accepting the proposed default buffer. \(See \\[describe-mode] .)" - (interactive) + (interactive + (list (or (2C-other) + (read-buffer "Associate buffer: " (other-buffer))))) (let ((b1 (current-buffer)) - (b2 (or (2C-other) - (read-buffer "Associate buffer: " (other-buffer))))) + (b2 buffer)) (setq 2C-mode nil) (with-current-buffer b2 (and (2C-other) diff --git a/lisp/uniquify.el b/lisp/uniquify.el index 1d513d60376..7cc01687f49 100644 --- a/lisp/uniquify.el +++ b/lisp/uniquify.el @@ -498,8 +498,6 @@ For use on `kill-buffer-hook'." (file-name-directory filename) retval))) retval)) -;;; The End - (defun uniquify-unload-function () "Unload the uniquify library." (save-current-buffer diff --git a/lisp/url/url-mailto.el b/lisp/url/url-mailto.el index c6901d99200..29c2780121a 100644 --- a/lisp/url/url-mailto.el +++ b/lisp/url/url-mailto.el @@ -1,4 +1,4 @@ -;;; url-mail.el --- Mail Uniform Resource Locator retrieval code -*- lexical-binding: t; -*- +;;; url-mailto.el --- Mail Uniform Resource Locator retrieval code -*- lexical-binding: t; -*- ;; Copyright (C) 1996-1999, 2004-2021 Free Software Foundation, Inc. diff --git a/lisp/vc/vc-dispatcher.el b/lisp/vc/vc-dispatcher.el index 2b477dff0a3..87ca542f1c2 100644 --- a/lisp/vc/vc-dispatcher.el +++ b/lisp/vc/vc-dispatcher.el @@ -1,4 +1,4 @@ -;;; vc-dispatcher.el -- generic command-dispatcher facility. -*- lexical-binding: t -*- +;;; vc-dispatcher.el --- generic command-dispatcher facility. -*- lexical-binding: t -*- ;; Copyright (C) 2008-2021 Free Software Foundation, Inc. diff --git a/lisp/vc/vc-filewise.el b/lisp/vc/vc-filewise.el index e1b042a7424..254e47933d6 100644 --- a/lisp/vc/vc-filewise.el +++ b/lisp/vc/vc-filewise.el @@ -82,3 +82,5 @@ If the file is not registered, or the master name is not known, return nil." nil)))) ; Not registered (provide 'vc-filewise) + +;;; vc-filewise.el ends here diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el index a054a7c3176..c9c1e91d483 100644 --- a/lisp/vc/vc-hg.el +++ b/lisp/vc/vc-hg.el @@ -26,10 +26,6 @@ ;; This is a mercurial version control backend -;;; Thanks: - -;;; Bugs: - ;;; Todo: ;; 1) Implement the rest of the vc interface. See the comment at the diff --git a/lisp/widget.el b/lisp/widget.el index 401b4cf298f..d258e6fae2b 100644 --- a/lisp/widget.el +++ b/lisp/widget.el @@ -94,8 +94,6 @@ The third argument DOC is a documentation string for the widget." ;; This is used by external widget code (in W3, at least). (define-obsolete-function-alias 'widget-plist-member #'plist-member "26.1") -;;; The End. - (provide 'widget) ;;; widget.el ends here diff --git a/src/alloc.c b/src/alloc.c index fee8cc08aa4..76d8c7ddd11 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -6268,7 +6268,7 @@ For further details, see Info node `(elisp)Garbage Collection'. */) } DEFUN ("garbage-collect-maybe", Fgarbage_collect_maybe, -Sgarbage_collect_maybe, 1, 1, "", +Sgarbage_collect_maybe, 1, 1, 0, doc: /* Call `garbage-collect' if enough allocation happened. FACTOR determines what "enough" means here: If FACTOR is a positive number N, it means to run GC if more than diff --git a/src/character.c b/src/character.c index a599a0355f4..41abb83a48b 100644 --- a/src/character.c +++ b/src/character.c @@ -321,28 +321,32 @@ strwidth (const char *str, ptrdiff_t len) return c_string_width ((const unsigned char *) str, len, -1, NULL, NULL); } -/* Return width of Lisp string STRING when displayed in the current - buffer. The width is measured by how many columns it occupies on - the screen while paying attention to compositions. If PRECISION > - 0, return the width of longest substring that doesn't exceed - PRECISION, and set number of characters and bytes of the substring - in *NCHARS and *NBYTES respectively. */ +/* Return width of a (substring of a) Lisp string STRING when + displayed in the current buffer. The width is measured by how many + columns it occupies on the screen while paying attention to + compositions. If PRECISION > 0, return the width of longest + substring that doesn't exceed PRECISION, and set number of + characters and bytes of the substring in *NCHARS and *NBYTES + respectively. FROM and TO are zero-based character indices + that define the substring of STRING to consider. */ ptrdiff_t -lisp_string_width (Lisp_Object string, ptrdiff_t precision, - ptrdiff_t *nchars, ptrdiff_t *nbytes) +lisp_string_width (Lisp_Object string, ptrdiff_t from, ptrdiff_t to, + ptrdiff_t precision, ptrdiff_t *nchars, ptrdiff_t *nbytes) { - ptrdiff_t len = SCHARS (string); /* This set multibyte to 0 even if STRING is multibyte when it contains only ascii and eight-bit-graphic, but that's intentional. */ - bool multibyte = len < SBYTES (string); + bool multibyte = SCHARS (string) < SBYTES (string); unsigned char *str = SDATA (string); - ptrdiff_t i = 0, i_byte = 0; + ptrdiff_t i = from, i_byte = from ? string_char_to_byte (string, from) : 0; + ptrdiff_t from_byte = i_byte; ptrdiff_t width = 0; struct Lisp_Char_Table *dp = buffer_display_table (); - while (i < len) + eassert (precision <= 0 || (nchars && nbytes)); + + while (i < to) { ptrdiff_t chars, bytes, thiswidth; Lisp_Object val; @@ -375,8 +379,8 @@ lisp_string_width (Lisp_Object string, ptrdiff_t precision, if (0 < precision && precision - width < thiswidth) { - *nchars = i; - *nbytes = i_byte; + *nchars = i - from; + *nbytes = i_byte - from_byte; return width; } if (INT_ADD_WRAPV (thiswidth, width, &width)) @@ -387,27 +391,37 @@ lisp_string_width (Lisp_Object string, ptrdiff_t precision, if (precision > 0) { - *nchars = i; - *nbytes = i_byte; + *nchars = i - from; + *nbytes = i_byte - from_byte; } return width; } -DEFUN ("string-width", Fstring_width, Sstring_width, 1, 1, 0, +DEFUN ("string-width", Fstring_width, Sstring_width, 1, 3, 0, doc: /* Return width of STRING when displayed in the current buffer. Width is measured by how many columns it occupies on the screen. +Optional arguments FROM and TO specify the substring of STRING to +consider, and are interpreted as in `substring'. + When calculating width of a multibyte character in STRING, only the base leading-code is considered; the validity of the following bytes is not checked. Tabs in STRING are always -taken to occupy `tab-width' columns. -usage: (string-width STRING) */) - (Lisp_Object str) +taken to occupy `tab-width' columns. The effect of faces and fonts +used for non-Latin and other unusual characters (such as emoji) is +ignored as well, as are display properties and invisible text. +For these reasons, the results are not generally reliable; +for accurate dimensions of text as it will be displayed, +use `window-text-pixel-size' instead. +usage: (string-width STRING &optional FROM TO) */) + (Lisp_Object str, Lisp_Object from, Lisp_Object to) { Lisp_Object val; + ptrdiff_t ifrom, ito; CHECK_STRING (str); - XSETFASTINT (val, lisp_string_width (str, -1, NULL, NULL)); + validate_subarray (str, from, to, SCHARS (str), &ifrom, &ito); + XSETFASTINT (val, lisp_string_width (str, ifrom, ito, -1, NULL, NULL)); return val; } diff --git a/src/character.h b/src/character.h index cbf43097ae2..d19e1e2604c 100644 --- a/src/character.h +++ b/src/character.h @@ -572,8 +572,8 @@ extern ptrdiff_t str_to_unibyte (const unsigned char *, unsigned char *, extern ptrdiff_t strwidth (const char *, ptrdiff_t); extern ptrdiff_t c_string_width (const unsigned char *, ptrdiff_t, int, ptrdiff_t *, ptrdiff_t *); -extern ptrdiff_t lisp_string_width (Lisp_Object, ptrdiff_t, - ptrdiff_t *, ptrdiff_t *); +extern ptrdiff_t lisp_string_width (Lisp_Object, ptrdiff_t, ptrdiff_t, + ptrdiff_t, ptrdiff_t *, ptrdiff_t *); extern Lisp_Object Vchar_unify_table; extern Lisp_Object string_escape_byte8 (Lisp_Object); diff --git a/src/editfns.c b/src/editfns.c index 87e743afc31..bc73c1e2c5b 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -3386,12 +3386,11 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message) else { ptrdiff_t nch, nby; - width = lisp_string_width (arg, prec, &nch, &nby); + nchars_string = SCHARS (arg); + width = lisp_string_width (arg, 0, nchars_string, prec, + &nch, &nby); if (prec < 0) - { - nchars_string = SCHARS (arg); - nbytes = SBYTES (arg); - } + nbytes = SBYTES (arg); else { nchars_string = nch; diff --git a/src/eval.c b/src/eval.c index cf5ca3b4bbd..aeedcc50cc0 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1310,7 +1310,7 @@ DEFUN ("condition-case", Fcondition_case, Scondition_case, 2, UNEVALLED, 0, doc: /* Regain control when an error is signaled. Executes BODYFORM and returns its value if no error happens. Each element of HANDLERS looks like (CONDITION-NAME BODY...) -where the BODY is made of Lisp expressions. +or (:success BODY...), where the BODY is made of Lisp expressions. A handler is applicable to an error if CONDITION-NAME is one of the error's condition names. Handlers may also apply when non-error @@ -1332,6 +1332,10 @@ with VAR bound to (ERROR-SYMBOL . SIGNAL-DATA) from the error. Then the value of the last BODY form is returned from the `condition-case' expression. +The special handler (:success BODY...) is invoked if BODYFORM terminated +without signalling an error. BODY is then evaluated with VAR bound to +the value returned by BODYFORM. + See also the function `signal' for more info. usage: (condition-case VAR BODYFORM &rest HANDLERS) */) (Lisp_Object args) @@ -1355,16 +1359,21 @@ internal_lisp_condition_case (Lisp_Object var, Lisp_Object bodyform, CHECK_SYMBOL (var); + Lisp_Object success_handler = Qnil; + for (Lisp_Object tail = handlers; CONSP (tail); tail = XCDR (tail)) { Lisp_Object tem = XCAR (tail); - clausenb++; if (! (NILP (tem) || (CONSP (tem) && (SYMBOLP (XCAR (tem)) || CONSP (XCAR (tem)))))) error ("Invalid condition handler: %s", SDATA (Fprin1_to_string (tem, Qt))); + if (EQ (XCAR (tem), QCsuccess)) + success_handler = XCDR (tem); + else + clausenb++; } /* The first clause is the one that should be checked first, so it @@ -1378,7 +1387,8 @@ internal_lisp_condition_case (Lisp_Object var, Lisp_Object bodyform, Lisp_Object volatile *clauses = alloca (clausenb * sizeof *clauses); clauses += clausenb; for (Lisp_Object tail = handlers; CONSP (tail); tail = XCDR (tail)) - *--clauses = XCAR (tail); + if (!EQ (XCAR (XCAR (tail)), QCsuccess)) + *--clauses = XCAR (tail); for (ptrdiff_t i = 0; i < clausenb; i++) { Lisp_Object clause = clauses[i]; @@ -1418,6 +1428,23 @@ internal_lisp_condition_case (Lisp_Object var, Lisp_Object bodyform, Lisp_Object result = eval_sub (bodyform); handlerlist = oldhandlerlist; + if (!NILP (success_handler)) + { + if (NILP (var)) + return Fprogn (success_handler); + + Lisp_Object handler_var = var; + if (!NILP (Vinternal_interpreter_environment)) + { + result = Fcons (Fcons (var, result), + Vinternal_interpreter_environment); + handler_var = Qinternal_interpreter_environment; + } + + ptrdiff_t count = SPECPDL_INDEX (); + specbind (handler_var, result); + return unbind_to (count, Fprogn (success_handler)); + } return result; } @@ -4490,6 +4517,7 @@ alist of active lexical bindings. */); defsubr (&Sthrow); defsubr (&Sunwind_protect); defsubr (&Scondition_case); + DEFSYM (QCsuccess, ":success"); defsubr (&Ssignal); defsubr (&Scommandp); defsubr (&Sautoload); diff --git a/src/frame.c b/src/frame.c index bbdc3b55992..097cd555c64 100644 --- a/src/frame.c +++ b/src/frame.c @@ -1384,7 +1384,8 @@ do_switch_frame (Lisp_Object frame, int track, int for_deletion, Lisp_Object nor especially when deleting the initial frame during startup. */ CHECK_FRAME (frame); f = XFRAME (frame); - if (!FRAME_LIVE_P (f)) + /* Silently ignore dead and tooltip frames (Bug#47207). */ + if (!FRAME_LIVE_P (f) || FRAME_TOOLTIP_P (f)) return Qnil; else if (f == sf) return frame; @@ -1508,7 +1509,16 @@ redisplay will display FRAME. This function returns FRAME, or nil if FRAME has been deleted. */) (Lisp_Object frame, Lisp_Object norecord) { - return do_switch_frame (frame, 1, 0, norecord); + struct frame *f; + + CHECK_LIVE_FRAME (frame); + f = XFRAME (frame); + + if (FRAME_TOOLTIP_P (f)) + /* Do not select a tooltip frame (Bug#47207). */ + error ("Cannot select a tooltip frame"); + else + return do_switch_frame (frame, 1, 0, norecord); } DEFUN ("handle-switch-frame", Fhandle_switch_frame, @@ -1523,6 +1533,7 @@ necessarily represent user-visible input focus. */) /* Preserve prefix arg that the command loop just cleared. */ kset_prefix_arg (current_kboard, Vcurrent_prefix_arg); run_hook (Qmouse_leave_buffer_hook); + return do_switch_frame (event, 0, 0, Qnil); } @@ -3747,6 +3758,7 @@ window state change flag is reset. */) DEFUN ("frame-scale-factor", Fframe_scale_factor, Sframe_scale_factor, 0, 1, 0, doc: /* Return FRAMEs scale factor. +If FRAME is omitted or nil, the selected frame is used. The scale factor is the amount by which a logical pixel size must be multiplied to find the real number of pixels. */) (Lisp_Object frame) diff --git a/src/image.c b/src/image.c index 18126a804f3..f2fb69ab743 100644 --- a/src/image.c +++ b/src/image.c @@ -1987,46 +1987,68 @@ scale_image_size (int size, size_t divisor, size_t multiplier) return INT_MAX; } +/* Return a size, in pixels, from the value specified by SYMBOL, which + may be an integer or a pair of the form (VALUE . 'em) where VALUE + is a float that is multiplied by the font size to get the final + dimension. + + If the value doesn't exist in the image spec, or is invalid, return + -1. +*/ +static int +image_get_dimension (struct image *img, Lisp_Object symbol) +{ + Lisp_Object value = image_spec_value (img->spec, symbol, NULL); + + if (FIXNATP (value)) + return min (XFIXNAT (value), INT_MAX); + if (CONSP (value) && NUMBERP (CAR (value)) && EQ (Qem, CDR (value))) + return min (img->face_font_size * XFLOATINT (CAR (value)), INT_MAX); + + return -1; +} + /* Compute the desired size of an image with native size WIDTH x HEIGHT. Use SPEC to deduce the size. Store the desired size into *D_WIDTH x *D_HEIGHT. Store -1 x -1 if the native size is OK. */ static void compute_image_size (size_t width, size_t height, - Lisp_Object spec, + struct image *img, int *d_width, int *d_height) { Lisp_Object value; + int int_value; int desired_width = -1, desired_height = -1, max_width = -1, max_height = -1; double scale = 1; - value = image_spec_value (spec, QCscale, NULL); + value = image_spec_value (img->spec, QCscale, NULL); if (NUMBERP (value)) scale = XFLOATINT (value); - value = image_spec_value (spec, QCmax_width, NULL); - if (FIXNATP (value)) - max_width = min (XFIXNAT (value), INT_MAX); + int_value = image_get_dimension (img, QCmax_width); + if (int_value >= 0) + max_width = int_value; - value = image_spec_value (spec, QCmax_height, NULL); - if (FIXNATP (value)) - max_height = min (XFIXNAT (value), INT_MAX); + int_value = image_get_dimension (img, QCmax_height); + if (int_value >= 0) + max_height = int_value; /* If width and/or height is set in the display spec assume we want to scale to those values. If either h or w is unspecified, the unspecified should be calculated from the specified to preserve aspect ratio. */ - value = image_spec_value (spec, QCwidth, NULL); - if (FIXNATP (value)) + int_value = image_get_dimension (img, QCwidth); + if (int_value >= 0) { - desired_width = min (XFIXNAT (value) * scale, INT_MAX); + desired_width = int_value * scale; /* :width overrides :max-width. */ max_width = -1; } - value = image_spec_value (spec, QCheight, NULL); - if (FIXNATP (value)) + int_value = image_get_dimension (img, QCheight); + if (int_value >= 0) { - desired_height = min (XFIXNAT (value) * scale, INT_MAX); + desired_height = int_value * scale; /* :height overrides :max-height. */ max_height = -1; } @@ -2216,7 +2238,7 @@ image_set_transform (struct frame *f, struct image *img) } else #endif - compute_image_size (img->width, img->height, img->spec, &width, &height); + compute_image_size (img->width, img->height, img, &width, &height); /* Determine rotation. */ double rotation = 0.0; @@ -9210,7 +9232,7 @@ imagemagick_load_image (struct frame *f, struct image *img, compute_image_size (MagickGetImageWidth (image_wand), MagickGetImageHeight (image_wand), - img->spec, &desired_width, &desired_height); + img, &desired_width, &desired_height); if (desired_width != -1 && desired_height != -1) { @@ -10068,7 +10090,7 @@ svg_load_image (struct frame *f, struct image *img, char *contents, viewbox_height = dimension_data.height; } - compute_image_size (viewbox_width, viewbox_height, img->spec, + compute_image_size (viewbox_width, viewbox_height, img, &width, &height); width *= FRAME_SCALE_FACTOR (f); @@ -10777,6 +10799,8 @@ non-numeric, there is no explicit limit on the size of images. */); DEFSYM (QCmax_width, ":max-width"); DEFSYM (QCmax_height, ":max-height"); + DEFSYM (Qem, "em"); + #ifdef HAVE_NATIVE_TRANSFORMS DEFSYM (Qscale, "scale"); DEFSYM (Qrotate, "rotate"); diff --git a/src/minibuf.c b/src/minibuf.c index c9831fd50f4..a3c1b99bf32 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -112,13 +112,15 @@ choose_minibuf_frame (void) { if (FRAMEP (selected_frame) && FRAME_LIVE_P (XFRAME (selected_frame)) + && WINDOW_LIVE_P (XFRAME (selected_frame)->minibuffer_window) && !EQ (minibuf_window, XFRAME (selected_frame)->minibuffer_window)) { struct frame *sf = XFRAME (selected_frame); - /* I don't think that any frames may validly have a null minibuffer - window anymore. */ - if (NILP (sf->minibuffer_window)) - emacs_abort (); + /* I don't think that any frames may validly have a null + minibuffer window anymore. (2021-04-15): Tooltip frames have + a null MB. Comment out the following. */ + /* if (NILP (sf->minibuffer_window)) */ + /* emacs_abort (); */ minibuf_window = sf->minibuffer_window; } @@ -195,7 +197,9 @@ move_minibuffers_onto_frame (struct frame *of, bool for_deletion) && (for_deletion || minibuf_follows_frame () || FRAME_INITIAL_P (of)))) return; if (FRAME_LIVE_P (f) - && !EQ (f->minibuffer_window, of->minibuffer_window)) + && !EQ (f->minibuffer_window, of->minibuffer_window) + && WINDOW_LIVE_P (f->minibuffer_window) /* F not a tootip frame */ + && WINDOW_LIVE_P (of->minibuffer_window)) { zip_minibuffer_stacks (f->minibuffer_window, of->minibuffer_window); if (for_deletion && XFRAME (MB_frame) != of) @@ -636,6 +640,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt, mini_frame = WINDOW_FRAME (XWINDOW (minibuf_window)); if (minibuf_level > 1 + && WINDOW_LIVE_P (XFRAME (MB_frame)->minibuffer_window) && !EQ (XWINDOW (XFRAME (selected_frame)->minibuffer_window)->frame, MB_frame) && minibuf_moves_frame_when_opened () @@ -908,11 +913,13 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt, unbind_to (count, Qnil); /* Switch the frame back to the calling frame. */ - if ((!EQ (selected_frame, calling_frame) - || !EQ (XWINDOW (XFRAME (calling_frame)->minibuffer_window)->frame, - calling_frame)) - && FRAMEP (calling_frame) - && FRAME_LIVE_P (XFRAME (calling_frame))) + if (FRAMEP (calling_frame) + && FRAME_LIVE_P (XFRAME (calling_frame)) + && (!EQ (selected_frame, calling_frame) + || (WINDOW_LIVE_P (XFRAME (calling_frame)->minibuffer_window) + && !EQ (XWINDOW (XFRAME (calling_frame)->minibuffer_window) + ->frame, + calling_frame)))) call2 (intern ("select-frame-set-input-focus"), calling_frame, Qnil); /* Add the value to the appropriate history list, if any. This is @@ -1056,10 +1063,13 @@ read_minibuf_unwind (void) { f = XFRAME (exp_MB_frame); window = f->minibuffer_window; - w = XWINDOW (window); - if (EQ (w->frame, exp_MB_frame) - && EQ (w->contents, nth_minibuffer (minibuf_level))) - goto found; + if (WINDOW_LIVE_P (window)) + { + w = XWINDOW (window); + if (EQ (w->frame, exp_MB_frame) + && EQ (w->contents, nth_minibuffer (minibuf_level))) + goto found; + } } return; /* expired minibuffer not found. Maybe we should output an error, here. */ diff --git a/src/w32fns.c b/src/w32fns.c index 9db367bfafe..c07f32ab0cc 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -7434,6 +7434,8 @@ DEFUN ("x-show-tip", Fx_show_tip, Sx_show_tip, 1, 6, 0, set_window_buffer (window, tip_buf, false, false); w = XWINDOW (window); w->pseudo_window_p = true; + /* Try to avoid that `other-window' select us (Bug#47207). */ + Fset_window_parameter (window, Qno_other_window, Qt); /* Set up the frame's root window. Note: The following code does not try to size the window or its frame correctly. Its only purpose is diff --git a/src/w32term.c b/src/w32term.c index 0ee805a8526..361cf33c024 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -2031,8 +2031,11 @@ w32_draw_image_relief (struct glyph_string *s) if (s->hl == DRAW_IMAGE_SUNKEN || s->hl == DRAW_IMAGE_RAISED) { - thick = tool_bar_button_relief >= 0 ? tool_bar_button_relief - : DEFAULT_TOOL_BAR_BUTTON_RELIEF; + thick = (tab_bar_button_relief < 0 + ? DEFAULT_TAB_BAR_BUTTON_RELIEF + : (tool_bar_button_relief < 0 + ? DEFAULT_TOOL_BAR_BUTTON_RELIEF + : min (tool_bar_button_relief, 1000000))); raised_p = s->hl == DRAW_IMAGE_RAISED; } else @@ -2045,6 +2048,19 @@ w32_draw_image_relief (struct glyph_string *s) y1 = y + s->slice.height - 1; extra_x = extra_y = 0; + if (s->face->id == TAB_BAR_FACE_ID) + { + if (CONSP (Vtab_bar_button_margin) + && FIXNUMP (XCAR (Vtab_bar_button_margin)) + && FIXNUMP (XCDR (Vtab_bar_button_margin))) + { + extra_x = XFIXNUM (XCAR (Vtab_bar_button_margin)); + extra_y = XFIXNUM (XCDR (Vtab_bar_button_margin)); + } + else if (FIXNUMP (Vtab_bar_button_margin)) + extra_x = extra_y = XFIXNUM (Vtab_bar_button_margin); + } + if (s->face->id == TOOL_BAR_FACE_ID) { if (CONSP (Vtool_bar_button_margin) diff --git a/src/window.c b/src/window.c index 661b1ae112c..399b24b1e9e 100644 --- a/src/window.c +++ b/src/window.c @@ -215,20 +215,6 @@ wset_combination (struct window *w, bool horflag, Lisp_Object val) w->horizontal = horflag; } -static void -wset_update_mode_line (struct window *w) -{ - /* If this window is the selected window on its frame, set the - global variable update_mode_lines, so that gui_consider_frame_title - will consider this frame's title for redisplay. */ - Lisp_Object fselected_window = XFRAME (WINDOW_FRAME (w))->selected_window; - - if (WINDOWP (fselected_window) && XWINDOW (fselected_window) == w) - update_mode_lines = 42; - else - w->update_mode_line = true; -} - /* True if leaf window W doesn't reflect the actual state of displayed buffer due to its text or overlays change. */ @@ -518,10 +504,18 @@ select_window (Lisp_Object window, Lisp_Object norecord, { struct window *w; struct frame *sf; + Lisp_Object frame; + struct frame *f; CHECK_LIVE_WINDOW (window); w = XWINDOW (window); + frame = WINDOW_FRAME (w); + f = XFRAME (frame); + + if (FRAME_TOOLTIP_P (f)) + /* Do not select a tooltip window (Bug#47207). */ + error ("Cannot select a tooltip window"); /* Make the selected window's buffer current. */ Fset_buffer (w->contents); @@ -542,14 +536,14 @@ select_window (Lisp_Object window, Lisp_Object norecord, redisplay_other_windows (); sf = SELECTED_FRAME (); - if (XFRAME (WINDOW_FRAME (w)) != sf) + if (f != sf) { - fset_selected_window (XFRAME (WINDOW_FRAME (w)), window); + fset_selected_window (f, window); /* Use this rather than Fhandle_switch_frame so that FRAME_FOCUS_FRAME is moved appropriately as we move around in the state where a minibuffer in a separate frame is active. */ - Fselect_frame (WINDOW_FRAME (w), norecord); + Fselect_frame (frame, norecord); /* Fselect_frame called us back so we've done all the work already. */ eassert (EQ (window, selected_window)); return window; @@ -2556,8 +2550,13 @@ window_list (void) if (!CONSP (Vwindow_list)) { Lisp_Object tail, frame; + ptrdiff_t count = SPECPDL_INDEX (); Vwindow_list = Qnil; + /* Don't allow quitting in Fnconc. Otherwise we might end up + with a too short Vwindow_list and Fkill_buffer not being able + to replace a buffer in all windows showing it (Bug#47244). */ + specbind (Qinhibit_quit, Qt); FOR_EACH_FRAME (tail, frame) { Lisp_Object arglist = Qnil; @@ -2569,6 +2568,8 @@ window_list (void) arglist = Fnreverse (arglist); Vwindow_list = nconc2 (Vwindow_list, arglist); } + + unbind_to (count, Qnil); } return Vwindow_list; @@ -2603,7 +2604,7 @@ candidate_window_p (Lisp_Object window, Lisp_Object owindow, candidate_p = false; else if (MINI_WINDOW_P (w) && (EQ (minibuf, Qlambda) - || (WINDOWP (minibuf) && !EQ (minibuf, window)))) + || (WINDOW_LIVE_P (minibuf) && !EQ (minibuf, window)))) { /* If MINIBUF is `lambda' don't consider any mini-windows. If it is a window, consider only that one. */ @@ -2666,12 +2667,12 @@ decode_next_window_args (Lisp_Object *window, Lisp_Object *minibuf, Lisp_Object Lisp_Object miniwin = XFRAME (w->frame)->minibuffer_window; XSETWINDOW (*window, w); - /* MINIBUF nil may or may not include minibuffers. Decide if it - does. */ - if (NILP (*minibuf)) - *minibuf = this_minibuffer_depth (XWINDOW (miniwin)->contents) - ? miniwin - : Qlambda; + /* MINIBUF nil may or may not include minibuffer windows. Decide if + it does. But first make sure that this frame's minibuffer window + is live (Bug#47207). */ + if (WINDOW_LIVE_P (miniwin) && NILP (*minibuf)) + *minibuf = (this_minibuffer_depth (XWINDOW (miniwin)->contents) + ? miniwin : Qlambda); else if (!EQ (*minibuf, Qt)) *minibuf = Qlambda; @@ -2682,9 +2683,10 @@ decode_next_window_args (Lisp_Object *window, Lisp_Object *minibuf, Lisp_Object /* ALL_FRAMES nil doesn't specify which frames to include. */ if (NILP (*all_frames)) *all_frames - = (!EQ (*minibuf, Qlambda) - ? FRAME_MINIBUF_WINDOW (XFRAME (w->frame)) - : Qnil); + /* Once more make sure that this frame's minibuffer window is live + before including it (Bug#47207). */ + = ((WINDOW_LIVE_P (miniwin) && !EQ (*minibuf, Qlambda)) + ? miniwin : Qnil); else if (EQ (*all_frames, Qvisible)) ; else if (EQ (*all_frames, make_fixnum (0))) @@ -2705,6 +2707,8 @@ static Lisp_Object next_window (Lisp_Object window, Lisp_Object minibuf, Lisp_Object all_frames, bool next_p) { + ptrdiff_t count = SPECPDL_INDEX (); + decode_next_window_args (&window, &minibuf, &all_frames); /* If ALL_FRAMES is a frame, and WINDOW isn't on that frame, just @@ -2713,6 +2717,9 @@ next_window (Lisp_Object window, Lisp_Object minibuf, Lisp_Object all_frames, && !EQ (all_frames, XWINDOW (window)->frame)) return Fframe_first_window (all_frames); + /* Don't allow quitting in Fmemq. */ + specbind (Qinhibit_quit, Qt); + if (next_p) { Lisp_Object list; @@ -2762,6 +2769,8 @@ next_window (Lisp_Object window, Lisp_Object minibuf, Lisp_Object all_frames, window = candidate; } + unbind_to (count, Qnil); + return window; } @@ -2852,10 +2861,14 @@ static Lisp_Object window_list_1 (Lisp_Object window, Lisp_Object minibuf, Lisp_Object all_frames) { Lisp_Object tail, list, rest; + ptrdiff_t count = SPECPDL_INDEX (); decode_next_window_args (&window, &minibuf, &all_frames); list = Qnil; + /* Don't allow quitting in Fmemq and Fnconc. */ + specbind (Qinhibit_quit, Qt); + for (tail = window_list (); CONSP (tail); tail = XCDR (tail)) if (candidate_window_p (XCAR (tail), window, minibuf, all_frames)) list = Fcons (XCAR (tail), list); @@ -2870,6 +2883,9 @@ window_list_1 (Lisp_Object window, Lisp_Object minibuf, Lisp_Object all_frames) XSETCDR (tail, Qnil); list = nconc2 (rest, list); } + + unbind_to (count, Qnil); + return list; } @@ -8225,6 +8241,7 @@ syms_of_window (void) DEFSYM (Qmode_line_format, "mode-line-format"); DEFSYM (Qheader_line_format, "header-line-format"); DEFSYM (Qtab_line_format, "tab-line-format"); + DEFSYM (Qno_other_window, "no-other-window"); DEFVAR_LISP ("temp-buffer-show-function", Vtemp_buffer_show_function, doc: /* Non-nil means call as function to display a help buffer. diff --git a/src/window.h b/src/window.h index b6f88e8f55f..2400c422c15 100644 --- a/src/window.h +++ b/src/window.h @@ -1141,6 +1141,7 @@ extern void wset_redisplay (struct window *w); extern void fset_redisplay (struct frame *f); extern void bset_redisplay (struct buffer *b); extern void bset_update_mode_line (struct buffer *b); +extern void wset_update_mode_line (struct window *w); /* Call this to tell redisplay to look for other windows than selected-window that need to be redisplayed. Calling one of the *set_redisplay functions above already does it, so it's only needed in unusual cases. */ diff --git a/src/xdisp.c b/src/xdisp.c index 50d9040057a..8ffec93e45d 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -869,6 +869,19 @@ bset_update_mode_line (struct buffer *b) b->text->redisplay = true; } +void +wset_update_mode_line (struct window *w) +{ + w->update_mode_line = true; + /* When a window's mode line needs to be updated, the window's frame's + title may also need to be updated, but we don't need to worry about it + here. Instead, `gui_consider_frame_title' is automatically called + whenever w->update_mode_line is set for that frame's selected window. + But for this to work reliably, we have to make sure the window + is considered, so we have to mark it for redisplay. */ + wset_redisplay (w); +} + DEFUN ("set-buffer-redisplay", Fset_buffer_redisplay, Sset_buffer_redisplay, 4, 4, 0, doc: /* Mark the current buffer for redisplay. @@ -13682,6 +13695,7 @@ void handle_tab_bar_click (struct frame *f, int x, int y, bool down_p, int modifiers) { + Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f); struct window *w = XWINDOW (f->tab_bar_window); int hpos, vpos, prop_idx; bool close_p; @@ -13703,13 +13717,22 @@ handle_tab_bar_click (struct frame *f, int x, int y, bool down_p, return; if (down_p) - f->last_tab_bar_item = prop_idx; /* record the pressed tab */ + { + /* Show the clicked button in pressed state. */ + if (!NILP (Vmouse_highlight)) + show_mouse_face (hlinfo, DRAW_IMAGE_SUNKEN); + f->last_tab_bar_item = prop_idx; /* record the pressed tab */ + } else { Lisp_Object key, frame; struct input_event event; EVENT_INIT (event); + /* Show item in released state. */ + if (!NILP (Vmouse_highlight)) + show_mouse_face (hlinfo, DRAW_IMAGE_RAISED); + key = AREF (f->tab_bar_items, prop_idx + TAB_BAR_ITEM_KEY); XSETFRAME (frame, f); @@ -13722,6 +13745,97 @@ handle_tab_bar_click (struct frame *f, int x, int y, bool down_p, } } + +/* Possibly highlight a tab-bar item on frame F when mouse moves to + tab-bar window-relative coordinates X/Y. Called from + note_mouse_highlight. */ + +static void +note_tab_bar_highlight (struct frame *f, int x, int y) +{ + Lisp_Object window = f->tab_bar_window; + struct window *w = XWINDOW (window); + Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f); + int hpos, vpos; + struct glyph *glyph; + struct glyph_row *row; + int i; + Lisp_Object enabled_p; + int prop_idx; + bool close_p; + enum draw_glyphs_face draw = DRAW_IMAGE_RAISED; + int rc; + + /* Function note_mouse_highlight is called with negative X/Y + values when mouse moves outside of the frame. */ + if (x <= 0 || y <= 0) + { + clear_mouse_face (hlinfo); + return; + } + + rc = get_tab_bar_item (f, x, y, &glyph, &hpos, &vpos, &prop_idx, &close_p); + if (rc < 0) + { + /* Not on tab-bar item. */ + clear_mouse_face (hlinfo); + return; + } + else if (rc == 0) + /* On same tab-bar item as before. */ + goto set_help_echo; + + clear_mouse_face (hlinfo); + + bool mouse_down_p = false; +#ifndef HAVE_NS + /* Mouse is down, but on different tab-bar item? */ + Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f); + mouse_down_p = (gui_mouse_grabbed (dpyinfo) + && f == dpyinfo->last_mouse_frame); + + if (mouse_down_p && f->last_tab_bar_item != prop_idx) + return; +#endif + draw = mouse_down_p ? DRAW_IMAGE_SUNKEN : DRAW_IMAGE_RAISED; + + /* If tab-bar item is not enabled, don't highlight it. */ + enabled_p = AREF (f->tab_bar_items, prop_idx + TAB_BAR_ITEM_ENABLED_P); + if (!NILP (enabled_p) && !NILP (Vmouse_highlight)) + { + /* Compute the x-position of the glyph. In front and past the + image is a space. We include this in the highlighted area. */ + row = MATRIX_ROW (w->current_matrix, vpos); + for (i = x = 0; i < hpos; ++i) + x += row->glyphs[TEXT_AREA][i].pixel_width; + + /* Record this as the current active region. */ + hlinfo->mouse_face_beg_col = hpos; + hlinfo->mouse_face_beg_row = vpos; + hlinfo->mouse_face_beg_x = x; + hlinfo->mouse_face_past_end = false; + + hlinfo->mouse_face_end_col = hpos + 1; + hlinfo->mouse_face_end_row = vpos; + hlinfo->mouse_face_end_x = x + glyph->pixel_width; + hlinfo->mouse_face_window = window; + hlinfo->mouse_face_face_id = TAB_BAR_FACE_ID; + + /* Display it as active. */ + show_mouse_face (hlinfo, draw); + } + + set_help_echo: + + /* Set help_echo_string to a help string to display for this tab-bar item. + XTread_socket does the rest. */ + help_echo_object = help_echo_window = Qnil; + help_echo_pos = -1; + help_echo_string = AREF (f->tab_bar_items, prop_idx + TAB_BAR_ITEM_HELP); + if (NILP (help_echo_string)) + help_echo_string = AREF (f->tab_bar_items, prop_idx + TAB_BAR_ITEM_CAPTION); +} + #endif /* HAVE_WINDOW_SYSTEM */ /* Find the tab-bar item at X coordinate and return its information. */ @@ -31860,6 +31974,11 @@ draw_row_with_mouse_face (struct window *w, int start_x, struct glyph_row *row, static void show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw) { + /* Don't bother doing anything if the mouse-face window is not set + up. */ + if (!WINDOWP (hlinfo->mouse_face_window)) + return; + struct window *w = XWINDOW (hlinfo->mouse_face_window); struct frame *f = XFRAME (WINDOW_FRAME (w)); @@ -33414,9 +33533,13 @@ note_mouse_highlight (struct frame *f, int x, int y) frame_to_window_pixel_xy (w, &x, &y); #if defined (HAVE_WINDOW_SYSTEM) - /* We don't highlight tab-bar buttons. */ + /* Handle tab-bar window differently since it doesn't display a + buffer. */ if (EQ (window, f->tab_bar_window)) - return; + { + note_tab_bar_highlight (f, x, y); + return; + } #endif #if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) diff --git a/src/xfns.c b/src/xfns.c index 0507dc8f61d..f120653ee7b 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -7076,6 +7076,8 @@ Text larger than the specified size is clipped. */) set_window_buffer (window, tip_buf, false, false); w = XWINDOW (window); w->pseudo_window_p = true; + /* Try to avoid that `other-window' select us (Bug#47207). */ + Fset_window_parameter (window, Qno_other_window, Qt); /* Set up the frame's root window. Note: The following code does not try to size the window or its frame correctly. Its only purpose is diff --git a/src/xselect.c b/src/xselect.c index 030f6240712..cd6d86bdf4c 100644 --- a/src/xselect.c +++ b/src/xselect.c @@ -1482,14 +1482,21 @@ x_get_window_property_as_lisp_data (struct x_display_info *dpyinfo, = XGetSelectionOwner (display, selection_atom) != 0; unblock_input (); if (there_is_a_selection_owner) - signal_error ("Selection owner couldn't convert", - actual_type - ? list2 (target_type, - x_atom_to_symbol (dpyinfo, actual_type)) - : target_type); + { + AUTO_STRING (format, "Selection owner couldn't convert: %s"); + CALLN (Fmessage, format, + actual_type + ? list2 (target_type, + x_atom_to_symbol (dpyinfo, actual_type)) + : target_type); + return Qnil; + } else - signal_error ("No selection", - x_atom_to_symbol (dpyinfo, selection_atom)); + { + AUTO_STRING (format, "No selection: %s"); + CALLN (Fmessage, format, x_atom_to_symbol (dpyinfo, selection_atom)); + return Qnil; + } } if (actual_type == dpyinfo->Xatom_INCR) diff --git a/test/lisp/autorevert-tests.el b/test/lisp/autorevert-tests.el index 5f27c2e38a6..3e97e9cfa5b 100644 --- a/test/lisp/autorevert-tests.el +++ b/test/lisp/autorevert-tests.el @@ -1,4 +1,4 @@ -;;; auto-revert-tests.el --- Tests of auto-revert -*- lexical-binding: t -*- +;;; autorevert-tests.el --- Tests of auto-revert -*- lexical-binding: t -*- ;; Copyright (C) 2015-2021 Free Software Foundation, Inc. diff --git a/test/lisp/calendar/icalendar-tests.el b/test/lisp/calendar/icalendar-tests.el index 61d3c11f6df..6973f7e5c95 100644 --- a/test/lisp/calendar/icalendar-tests.el +++ b/test/lisp/calendar/icalendar-tests.el @@ -1,4 +1,4 @@ -;; icalendar-tests.el --- Test suite for icalendar.el -*- lexical-binding:t -*- +;;; icalendar-tests.el --- Test suite for icalendar.el -*- lexical-binding:t -*- ;; Copyright (C) 2005, 2008-2021 Free Software Foundation, Inc. diff --git a/test/lisp/calendar/parse-time-tests.el b/test/lisp/calendar/parse-time-tests.el index b90fe0bd85b..b706b73570d 100644 --- a/test/lisp/calendar/parse-time-tests.el +++ b/test/lisp/calendar/parse-time-tests.el @@ -1,4 +1,4 @@ -;; parse-time-tests.el --- Test suite for parse-time.el -*- lexical-binding:t -*- +;;; parse-time-tests.el --- Test suite for parse-time.el -*- lexical-binding:t -*- ;; Copyright (C) 2016-2021 Free Software Foundation, Inc. diff --git a/test/lisp/cedet/srecode-utest-template.el b/test/lisp/cedet/srecode-utest-template.el index f97ff18320e..087dcfd8996 100644 --- a/test/lisp/cedet/srecode-utest-template.el +++ b/test/lisp/cedet/srecode-utest-template.el @@ -1,4 +1,4 @@ -;;; srecode/test.el --- SRecode Core Template tests. -*- lexical-binding:t -*- +;;; srecode-utest-template.el --- SRecode Core Template tests. -*- lexical-binding:t -*- ;; Copyright (C) 2008-2021 Free Software Foundation, Inc. diff --git a/test/lisp/custom-resources/custom--test-theme.el b/test/lisp/custom-resources/custom--test-theme.el index 4ced98a50bc..122bd795692 100644 --- a/test/lisp/custom-resources/custom--test-theme.el +++ b/test/lisp/custom-resources/custom--test-theme.el @@ -1,4 +1,4 @@ -;;; custom--test-theme.el -- A test theme. -*- lexical-binding:t -*- +;;; custom--test-theme.el --- A test theme. -*- lexical-binding:t -*- (deftheme custom--test "A test theme.") diff --git a/test/lisp/descr-text-tests.el b/test/lisp/descr-text-tests.el index 6ba455b50d4..2052dc0e38c 100644 --- a/test/lisp/descr-text-tests.el +++ b/test/lisp/descr-text-tests.el @@ -1,4 +1,4 @@ -;;; descr-text-test.el --- ERT tests for descr-text.el -*- lexical-binding: t -*- +;;; descr-text-tests.el --- ERT tests for descr-text.el -*- lexical-binding: t -*- ;; Copyright (C) 2014, 2016-2021 Free Software Foundation, Inc. diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el index a11832d805e..c9ab3ec1f1b 100644 --- a/test/lisp/emacs-lisp/bytecomp-tests.el +++ b/test/lisp/emacs-lisp/bytecomp-tests.el @@ -444,6 +444,65 @@ (arith-error (prog1 (lambda (y) (+ y x)) (setq x 10)))) 4) + + ;; No error, no success handler. + (condition-case x + (list 42) + (error (cons 'bad x))) + ;; Error, no success handler. + (condition-case x + (/ 1 0) + (error (cons 'bad x))) + ;; No error, success handler. + (condition-case x + (list 42) + (error (cons 'bad x)) + (:success (cons 'good x))) + ;; Error, success handler. + (condition-case x + (/ 1 0) + (error (cons 'bad x)) + (:success (cons 'good x))) + ;; Verify that the success code is not subject to the error handlers. + (condition-case x + (list 42) + (error (cons 'bad x)) + (:success (/ (car x) 0))) + ;; Check variable scoping on success. + (let ((x 2)) + (condition-case x + (list x) + (error (list 'bad x)) + (:success (list 'good x)))) + ;; Check variable scoping on failure. + (let ((x 2)) + (condition-case x + (/ 1 0) + (error (list 'bad x)) + (:success (list 'good x)))) + ;; Check capture of mutated result variable. + (funcall + (condition-case x + 3 + (:success (prog1 (lambda (y) (+ y x)) + (setq x 10)))) + 4) + ;; Check for-effect context, on error. + (let ((f (lambda (x) + (condition-case nil + (/ 1 0) + (error 'bad) + (:success 'good)) + (1+ x)))) + (funcall f 3)) + ;; Check for-effect context, on success. + (let ((f (lambda (x) + (condition-case nil + nil + (error 'bad) + (:success 'good)) + (1+ x)))) + (funcall f 3)) ) "List of expressions for cross-testing interpreted and compiled code.") @@ -1185,6 +1244,74 @@ compiled correctly." (let ((lexical-binding t)) (should (equal (funcall (byte-compile '(lambda (x) "foo")) 'dummy) "foo")))) +(ert-deftest bytecomp-condition-case-success () + ;; No error, no success handler. + (should (equal (condition-case x + (list 42) + (error (cons 'bad x))) + '(42))) + ;; Error, no success handler. + (should (equal (condition-case x + (/ 1 0) + (error (cons 'bad x))) + '(bad arith-error))) + ;; No error, success handler. + (should (equal (condition-case x + (list 42) + (error (cons 'bad x)) + (:success (cons 'good x))) + '(good 42))) + ;; Error, success handler. + (should (equal (condition-case x + (/ 1 0) + (error (cons 'bad x)) + (:success (cons 'good x))) + '(bad arith-error))) + ;; Verify that the success code is not subject to the error handlers. + (should-error (condition-case x + (list 42) + (error (cons 'bad x)) + (:success (/ (car x) 0))) + :type 'arith-error) + ;; Check variable scoping. + (let ((x 2)) + (should (equal (condition-case x + (list x) + (error (list 'bad x)) + (:success (list 'good x))) + '(good (2)))) + (should (equal (condition-case x + (/ 1 0) + (error (list 'bad x)) + (:success (list 'good x))) + '(bad (arith-error))))) + ;; Check capture of mutated result variable. + (should (equal (funcall + (condition-case x + 3 + (:success (prog1 (lambda (y) (+ y x)) + (setq x 10)))) + 4) + 14)) + ;; Check for-effect context, on error. + (should (equal (let ((f (lambda (x) + (condition-case nil + (/ 1 0) + (error 'bad) + (:success 'good)) + (1+ x)))) + (funcall f 3)) + 4)) + ;; Check for-effect context, on success. + (should (equal (let ((f (lambda (x) + (condition-case nil + nil + (error 'bad) + (:success 'good)) + (1+ x)))) + (funcall f 3)) + 4))) + ;; Local Variables: ;; no-byte-compile: t ;; End: diff --git a/test/lisp/emacs-lisp/cl-macs-tests.el b/test/lisp/emacs-lisp/cl-macs-tests.el index 5c3e603b92e..f4e2e46a019 100644 --- a/test/lisp/emacs-lisp/cl-macs-tests.el +++ b/test/lisp/emacs-lisp/cl-macs-tests.el @@ -630,12 +630,13 @@ collection clause." (and xs (progn (setq n1 (1+ n)) (len2 (cdr xs) n1)))))) - ;; Tail call in error handler. + ;; Tail calls in error and success handlers. (len3 (xs n) (if xs - (condition-case nil - (/ 1 0) - (arith-error (len3 (cdr xs) (1+ n)))) + (condition-case k + (/ 1 (logand n 1)) + (arith-error (len3 (cdr xs) (1+ n))) + (:success (len3 (cdr xs) (+ n k)))) n))) (should (equal (len nil 0) 0)) (should (equal (len2 nil 0) 0)) diff --git a/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el b/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el index 285616a7806..9f9bb73133c 100644 --- a/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el +++ b/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el @@ -1,4 +1,4 @@ -;;; eieio-testsinvoke.el -- eieio tests for method invocation -*- lexical-binding:t -*- +;;; eieio-test-methodinvoke.el --- eieio tests for method invocation -*- lexical-binding:t -*- ;; Copyright (C) 2005, 2008, 2010, 2013-2021 Free Software Foundation, ;; Inc. diff --git a/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el b/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el index a47fb8053b9..11ffc115f7e 100644 --- a/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el +++ b/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el @@ -1,4 +1,4 @@ -;;; eieio-tests.el -- eieio test routines -*- lexical-binding: t -*- +;;; eieio-tests.el --- eieio test routines -*- lexical-binding: t -*- ;; Copyright (C) 1999-2003, 2005-2010, 2012-2021 Free Software ;; Foundation, Inc. diff --git a/test/lisp/eshell/em-hist-tests.el b/test/lisp/eshell/em-hist-tests.el index ec65397fd63..31967a61c3c 100644 --- a/test/lisp/eshell/em-hist-tests.el +++ b/test/lisp/eshell/em-hist-tests.el @@ -1,4 +1,4 @@ -;;; tests/em-hist-tests.el --- em-hist test suite -*- lexical-binding:t -*- +;;; em-hist-tests.el --- em-hist test suite -*- lexical-binding:t -*- ;; Copyright (C) 2017-2021 Free Software Foundation, Inc. diff --git a/test/lisp/eshell/em-ls-tests.el b/test/lisp/eshell/em-ls-tests.el index fc2cd9c8e14..5d1742b76fd 100644 --- a/test/lisp/eshell/em-ls-tests.el +++ b/test/lisp/eshell/em-ls-tests.el @@ -1,4 +1,4 @@ -;;; tests/em-ls-tests.el --- em-ls test suite -*- lexical-binding:t -*- +;;; em-ls-tests.el --- em-ls test suite -*- lexical-binding:t -*- ;; Copyright (C) 2017-2021 Free Software Foundation, Inc. diff --git a/test/lisp/eshell/esh-opt-tests.el b/test/lisp/eshell/esh-opt-tests.el index 0c99da64b2e..e2a0ea59d1c 100644 --- a/test/lisp/eshell/esh-opt-tests.el +++ b/test/lisp/eshell/esh-opt-tests.el @@ -1,4 +1,4 @@ -;;; tests/esh-opt-tests.el --- esh-opt test suite -*- lexical-binding:t -*- +;;; esh-opt-tests.el --- esh-opt test suite -*- lexical-binding:t -*- ;; Copyright (C) 2018-2021 Free Software Foundation, Inc. diff --git a/test/lisp/eshell/eshell-tests.el b/test/lisp/eshell/eshell-tests.el index 4dac7024f41..4f0cc9b6785 100644 --- a/test/lisp/eshell/eshell-tests.el +++ b/test/lisp/eshell/eshell-tests.el @@ -1,4 +1,4 @@ -;;; tests/eshell-tests.el --- Eshell test suite -*- lexical-binding:t -*- +;;; eshell-tests.el --- Eshell test suite -*- lexical-binding:t -*- ;; Copyright (C) 1999-2021 Free Software Foundation, Inc. diff --git a/test/lisp/gnus/message-tests.el b/test/lisp/gnus/message-tests.el index 8650053b682..36ec8c51d15 100644 --- a/test/lisp/gnus/message-tests.el +++ b/test/lisp/gnus/message-tests.el @@ -1,4 +1,4 @@ -;;; message-mode-tests.el --- Tests for message-mode -*- lexical-binding: t; -*- +;;; message-tests.el --- Tests for message-mode -*- lexical-binding: t; -*- ;; Copyright (C) 2015-2021 Free Software Foundation, Inc. diff --git a/test/lisp/info-xref-tests.el b/test/lisp/info-xref-tests.el index 95af21fb591..ecba86146f1 100644 --- a/test/lisp/info-xref-tests.el +++ b/test/lisp/info-xref-tests.el @@ -1,4 +1,4 @@ -;;; info-xref.el --- tests for info-xref.el -*- lexical-binding:t -*- +;;; info-xref-tests.el --- tests for info-xref.el -*- lexical-binding:t -*- ;; Copyright (C) 2013-2021 Free Software Foundation, Inc. diff --git a/test/lisp/international/ucs-normalize-tests.el b/test/lisp/international/ucs-normalize-tests.el index a2da73767bc..51f4ed3a80e 100644 --- a/test/lisp/international/ucs-normalize-tests.el +++ b/test/lisp/international/ucs-normalize-tests.el @@ -1,4 +1,4 @@ -;;; ucs-normalize --- tests for international/ucs-normalize.el -*- lexical-binding: t -*- +;;; ucs-normalize-tests.el --- tests for international/ucs-normalize.el -*- lexical-binding: t -*- ;; Copyright (C) 2002-2021 Free Software Foundation, Inc. diff --git a/test/lisp/net/nsm-tests.el b/test/lisp/net/nsm-tests.el index ff453319b37..1a35ec34cb9 100644 --- a/test/lisp/net/nsm-tests.el +++ b/test/lisp/net/nsm-tests.el @@ -1,4 +1,4 @@ -;;; network-stream-tests.el --- tests for network security manager -*- lexical-binding: t; -*- +;;; nsm-tests.el --- tests for network security manager -*- lexical-binding: t; -*- ;; Copyright (C) 2019-2021 Free Software Foundation, Inc. diff --git a/test/lisp/net/shr-tests.el b/test/lisp/net/shr-tests.el index a06e31a4f88..ed532af657a 100644 --- a/test/lisp/net/shr-tests.el +++ b/test/lisp/net/shr-tests.el @@ -1,4 +1,4 @@ -;;; network-stream-tests.el --- tests for network processes -*- lexical-binding: t; -*- +;;; shr-tests.el --- tests for shr.el -*- lexical-binding: t; -*- ;; Copyright (C) 2016-2021 Free Software Foundation, Inc. diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index be428fc2a64..1eb0d0ec619 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -59,6 +59,7 @@ (declare-function tramp-get-remote-perl "tramp-sh") (declare-function tramp-get-remote-stat "tramp-sh") (declare-function tramp-list-tramp-buffers "tramp-cmds") +(declare-function tramp-method-out-of-band-p "tramp-sh") (declare-function tramp-smb-get-localname "tramp-smb") (defvar ange-ftp-make-backup-files) (defvar auto-save-file-name-transforms) @@ -3097,6 +3098,7 @@ This tests also `file-directory-p' and `file-accessible-directory-p'." (skip-unless (tramp--test-enabled)) (skip-unless (tramp--test-sh-p)) (skip-unless (not (tramp--test-rsync-p))) + (skip-unless (not (tramp--test-windows-nt-and-scp-p))) ;; Wildcards are not supported in tramp-crypt.el. (skip-unless (not (tramp--test-crypt-p))) ;; Since Emacs 26.1. @@ -4369,7 +4371,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (delete-file tmp-name)))))) (defun tramp--test-shell-file-name () - "Return default remote shell.." + "Return default remote shell." (if (tramp--test-adb-p) "/system/bin/sh" "/bin/sh")) (ert-deftest tramp-test28-process-file () @@ -5838,18 +5840,18 @@ This requires restrictions of file name syntax." "Check, whether the locale host runs MS Windows." (eq system-type 'windows-nt)) -(defun tramp--test-windows-nt-and-batch-p () - "Check, whether the locale host runs MS Windows in batch mode. -This does not support special characters." - (and (eq system-type 'windows-nt) noninteractive)) +(defun tramp--test-windows-nt-and-out-of-band-p () + "Check, whether the locale host runs MS Windows and an out-of-band method. +This does not support utf8 based file transfer." + (and (eq system-type 'windows-nt) + (tramp-method-out-of-band-p tramp-test-vec 1))) -(defun tramp--test-windows-nt-and-pscp-psftp-p () - "Check, whether the locale host runs MS Windows, and ps{cp,ftp} is used. +(defun tramp--test-windows-nt-and-scp-p () + "Check, whether the locale host runs MS Windows, and scpx? is used. This does not support utf8 based file transfer." (and (eq system-type 'windows-nt) (string-match-p - (regexp-opt '("pscp" "psftp")) - (file-remote-p tramp-test-temporary-file-directory 'method)))) + "^scpx?" (file-remote-p tramp-test-temporary-file-directory 'method)))) (defun tramp--test-windows-nt-or-smb-p () "Check, whether the locale or remote host runs MS Windows. @@ -6112,7 +6114,7 @@ This requires restrictions of file name syntax." "Check special characters in file names." (skip-unless (tramp--test-enabled)) (skip-unless (not (tramp--test-rsync-p))) - (skip-unless (not (tramp--test-windows-nt-and-pscp-psftp-p))) + (skip-unless (not (tramp--test-windows-nt-and-scp-p))) (skip-unless (or (tramp--test-emacs26-p) (not (tramp--test-rclone-p)))) (tramp--test-special-characters)) @@ -6124,7 +6126,7 @@ Use the `stat' command." (skip-unless (tramp--test-enabled)) (skip-unless (tramp--test-sh-p)) (skip-unless (not (tramp--test-rsync-p))) - (skip-unless (not (tramp--test-windows-nt-and-pscp-psftp-p))) + (skip-unless (not (tramp--test-windows-nt-and-scp-p))) ;; We cannot use `tramp-test-vec', because this fails during compilation. (with-parsed-tramp-file-name tramp-test-temporary-file-directory nil (skip-unless (tramp-get-remote-stat v))) @@ -6143,7 +6145,7 @@ Use the `perl' command." (skip-unless (tramp--test-enabled)) (skip-unless (tramp--test-sh-p)) (skip-unless (not (tramp--test-rsync-p))) - (skip-unless (not (tramp--test-windows-nt-and-pscp-psftp-p))) + (skip-unless (not (tramp--test-windows-nt-and-scp-p))) ;; We cannot use `tramp-test-vec', because this fails during compilation. (with-parsed-tramp-file-name tramp-test-temporary-file-directory nil (skip-unless (tramp-get-remote-perl v))) @@ -6165,7 +6167,7 @@ Use the `ls' command." (skip-unless (tramp--test-enabled)) (skip-unless (tramp--test-sh-p)) (skip-unless (not (tramp--test-rsync-p))) - (skip-unless (not (tramp--test-windows-nt-and-pscp-psftp-p))) + (skip-unless (not (tramp--test-windows-nt-and-scp-p))) (let ((tramp-connection-properties (append @@ -6230,8 +6232,7 @@ Use the `ls' command." (skip-unless (tramp--test-enabled)) (skip-unless (not (tramp--test-docker-p))) (skip-unless (not (tramp--test-rsync-p))) - (skip-unless (not (tramp--test-windows-nt-and-batch-p))) - (skip-unless (not (tramp--test-windows-nt-and-pscp-psftp-p))) + (skip-unless (not (tramp--test-windows-nt-and-out-of-band-p))) (skip-unless (not (tramp--test-ksh-p))) (skip-unless (not (tramp--test-gdrive-p))) (skip-unless (not (tramp--test-crypt-p))) @@ -6247,8 +6248,7 @@ Use the `stat' command." (skip-unless (tramp--test-sh-p)) (skip-unless (not (tramp--test-docker-p))) (skip-unless (not (tramp--test-rsync-p))) - (skip-unless (not (tramp--test-windows-nt-and-batch-p))) - (skip-unless (not (tramp--test-windows-nt-and-pscp-psftp-p))) + (skip-unless (not (tramp--test-windows-nt-and-out-of-band-p))) (skip-unless (not (tramp--test-ksh-p))) (skip-unless (not (tramp--test-crypt-p))) ;; We cannot use `tramp-test-vec', because this fails during compilation. @@ -6270,8 +6270,7 @@ Use the `perl' command." (skip-unless (tramp--test-sh-p)) (skip-unless (not (tramp--test-docker-p))) (skip-unless (not (tramp--test-rsync-p))) - (skip-unless (not (tramp--test-windows-nt-and-batch-p))) - (skip-unless (not (tramp--test-windows-nt-and-pscp-psftp-p))) + (skip-unless (not (tramp--test-windows-nt-and-out-of-band-p))) (skip-unless (not (tramp--test-ksh-p))) (skip-unless (not (tramp--test-crypt-p))) ;; We cannot use `tramp-test-vec', because this fails during compilation. @@ -6296,8 +6295,7 @@ Use the `ls' command." (skip-unless (tramp--test-sh-p)) (skip-unless (not (tramp--test-docker-p))) (skip-unless (not (tramp--test-rsync-p))) - (skip-unless (not (tramp--test-windows-nt-and-batch-p))) - (skip-unless (not (tramp--test-windows-nt-and-pscp-psftp-p))) + (skip-unless (not (tramp--test-windows-nt-and-out-of-band-p))) (skip-unless (not (tramp--test-ksh-p))) (skip-unless (not (tramp--test-crypt-p))) diff --git a/test/lisp/play/cookie1-tests.el b/test/lisp/play/cookie1-tests.el index d63ecb972aa..75dea4e5ef0 100644 --- a/test/lisp/play/cookie1-tests.el +++ b/test/lisp/play/cookie1-tests.el @@ -1,4 +1,4 @@ -;;; fortune-tests.el --- Tests for fortune.el -*- lexical-binding: t -*- +;;; cookie1-tests.el --- Tests for cookie1.el -*- lexical-binding: t -*- ;; Copyright (C) 2021 Free Software Foundation, Inc. diff --git a/test/lisp/progmodes/cperl-mode-tests.el b/test/lisp/progmodes/cperl-mode-tests.el index 14bc48b92fd..107b359dc32 100644 --- a/test/lisp/progmodes/cperl-mode-tests.el +++ b/test/lisp/progmodes/cperl-mode-tests.el @@ -1,4 +1,4 @@ -;;; cperl-mode-tests --- Test for cperl-mode -*- lexical-binding: t -*- +;;; cperl-mode-tests.el --- Test for cperl-mode -*- lexical-binding: t -*- ;; Copyright (C) 2020-2021 Free Software Foundation, Inc. diff --git a/test/lisp/progmodes/perl-mode-tests.el b/test/lisp/progmodes/perl-mode-tests.el index 9f6800ccd63..f63f8ad7253 100644 --- a/test/lisp/progmodes/perl-mode-tests.el +++ b/test/lisp/progmodes/perl-mode-tests.el @@ -1,4 +1,4 @@ -;;; perl-mode-tests --- Test for perl-mode -*- lexical-binding: t -*- +;;; perl-mode-tests.el --- Test for perl-mode -*- lexical-binding: t -*- ;; Copyright (C) 2020-2021 Free Software Foundation, Inc. diff --git a/test/lisp/progmodes/project-tests.el b/test/lisp/progmodes/project-tests.el new file mode 100644 index 00000000000..c8c03aa2579 --- /dev/null +++ b/test/lisp/progmodes/project-tests.el @@ -0,0 +1,85 @@ +;;; project-tests.el --- tests for project.el -*- lexical-binding: t; -*- + +;; Copyright (C) 2021 Free Software Foundation, Inc. + +;; Keywords: + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Unit tests for progmodes/project.el. + +;;; Code: + +(require 'project) + +(require 'cl-lib) +(require 'ert) +(require 'grep) +(require 'xref) + +(defmacro project-tests--with-temporary-directory (var &rest body) + "Create a new temporary directory. +Bind VAR to the name of the directory, and evaluate BODY. Delete +the directory after BODY exits." + (declare (debug (symbolp body)) (indent 1)) + (cl-check-type var symbol) + (let ((directory (make-symbol "directory"))) + `(let ((,directory (make-temp-file "project-tests-" :directory))) + (unwind-protect + (let ((,var ,directory)) + ,@body) + (delete-directory ,directory :recursive))))) + +(ert-deftest project/quoted-directory () + "Check that `project-files' and `project-find-regexp' deal with +quoted directory names (Bug#47799)." + (skip-unless (executable-find find-program)) + (skip-unless (executable-find "xargs")) + (skip-unless (executable-find "grep")) + (project-tests--with-temporary-directory directory + (let ((default-directory directory) + (project-current-inhibit-prompt t) + (project-find-functions nil) + (project-list-file + (expand-file-name "projects" directory)) + (project (cons 'transient (file-name-quote directory))) + (file (expand-file-name "file" directory))) + (add-hook 'project-find-functions (lambda (_dir) project)) + (should (eq (project-current) project)) + (write-region "contents" nil file nil nil nil 'excl) + (should (equal (project-files project) + (list (file-name-quote file)))) + (let* ((references nil) + (xref-search-program 'grep) + (xref-show-xrefs-function + (lambda (fetcher _display) + (push (funcall fetcher) references)))) + (project-find-regexp "tent") + (pcase references + (`((,item)) + ;; FIXME: Shouldn't `xref-match-item' be a subclass of + ;; `xref-item'? + (should (cl-typep item '(or xref-item xref-match-item))) + (should (file-equal-p + (xref-location-group (xref-item-location item)) + file))) + (otherwise + (ert-fail (format-message "Unexpected references: %S" + otherwise)))))))) + +;;; project-tests.el ends here diff --git a/test/lisp/progmodes/xref-tests.el b/test/lisp/progmodes/xref-tests.el index c25bbd94775..66099dc110c 100644 --- a/test/lisp/progmodes/xref-tests.el +++ b/test/lisp/progmodes/xref-tests.el @@ -156,3 +156,5 @@ (cl-every (lambda (e1 e2) (string-match-p e1 e2)) expected actual))))) + +;;; xref-tests.el ends here diff --git a/test/lisp/simple-tests.el b/test/lisp/simple-tests.el index 601eca6cd49..4b153d117f0 100644 --- a/test/lisp/simple-tests.el +++ b/test/lisp/simple-tests.el @@ -1,4 +1,4 @@ -;;; simple-test.el --- Tests for simple.el -*- lexical-binding: t; -*- +;;; simple-tests.el --- Tests for simple.el -*- lexical-binding: t; -*- ;; Copyright (C) 2015-2021 Free Software Foundation, Inc. diff --git a/test/lisp/textmodes/fill-tests.el b/test/lisp/textmodes/fill-tests.el index 21efe620999..a4c7f447b59 100644 --- a/test/lisp/textmodes/fill-tests.el +++ b/test/lisp/textmodes/fill-tests.el @@ -1,4 +1,4 @@ -;;; fill-test.el --- ERT tests for fill.el -*- lexical-binding: t -*- +;;; fill-tests.el --- ERT tests for fill.el -*- lexical-binding: t -*- ;; Copyright (C) 2017-2021 Free Software Foundation, Inc. diff --git a/test/lisp/textmodes/tildify-tests.el b/test/lisp/textmodes/tildify-tests.el index 59c23943304..3ee3cd6fb17 100644 --- a/test/lisp/textmodes/tildify-tests.el +++ b/test/lisp/textmodes/tildify-tests.el @@ -1,4 +1,4 @@ -;;; tildify-test.el --- ERT tests for tildify.el -*- lexical-binding: t -*- +;;; tildify-tests.el --- ERT tests for tildify.el -*- lexical-binding: t -*- ;; Copyright (C) 2014-2021 Free Software Foundation, Inc. diff --git a/test/lisp/thingatpt-tests.el b/test/lisp/thingatpt-tests.el index 62a27f09cbd..07eb8bb250e 100644 --- a/test/lisp/thingatpt-tests.el +++ b/test/lisp/thingatpt-tests.el @@ -1,4 +1,4 @@ -;;; thingatpt.el --- tests for thing-at-point. -*- lexical-binding:t -*- +;;; thingatpt-tests.el --- tests for thing-at-point. -*- lexical-binding:t -*- ;; Copyright (C) 2013-2021 Free Software Foundation, Inc. diff --git a/test/lisp/vc/vc-bzr-tests.el b/test/lisp/vc/vc-bzr-tests.el index aeab51ec261..b02dce8f707 100644 --- a/test/lisp/vc/vc-bzr-tests.el +++ b/test/lisp/vc/vc-bzr-tests.el @@ -1,4 +1,4 @@ -;;; vc-bzr.el --- tests for vc/vc-bzr.el -*- lexical-binding: t -*- +;;; vc-bzr-tests.el --- tests for vc/vc-bzr.el -*- lexical-binding: t -*- ;; Copyright (C) 2011-2021 Free Software Foundation, Inc. diff --git a/test/lisp/xml-tests.el b/test/lisp/xml-tests.el index cd3e1138f4b..b00b58acfc5 100644 --- a/test/lisp/xml-tests.el +++ b/test/lisp/xml-tests.el @@ -1,4 +1,4 @@ -;;; xml-parse-tests.el --- Test suite for XML parsing. -*- lexical-binding:t -*- +;;; xml-tests.el --- Test suite for XML parsing. -*- lexical-binding:t -*- ;; Copyright (C) 2012-2021 Free Software Foundation, Inc. diff --git a/test/manual/cedet/semantic-tests.el b/test/manual/cedet/semantic-tests.el index 7169c78bea0..1561c18dd68 100644 --- a/test/manual/cedet/semantic-tests.el +++ b/test/manual/cedet/semantic-tests.el @@ -1,4 +1,4 @@ -;;; semantic-utest.el --- Miscellaneous Semantic tests. -*- lexical-binding: t; -*- +;;; semantic-tests.el --- Miscellaneous Semantic tests. -*- lexical-binding: t; -*- ;; Copyright (C) 2003-2021 Free Software Foundation, Inc. diff --git a/test/manual/cedet/tests/test.el b/test/manual/cedet/tests/test.el index a54c253be68..d1d0d1602f4 100644 --- a/test/manual/cedet/tests/test.el +++ b/test/manual/cedet/tests/test.el @@ -153,7 +153,4 @@ (defvar-mode-local emacs-lisp-mode a-mode-local-def "some value") - -;;; Provide -;; (provide 'test) diff --git a/test/manual/image-size-tests.el b/test/manual/image-size-tests.el index f7c2bf7fc0d..44846a7a67a 100644 --- a/test/manual/image-size-tests.el +++ b/test/manual/image-size-tests.el @@ -1,4 +1,4 @@ -;;; image-size-tests.el -- tests for image scaling -*- lexical-binding: t; -*- +;;; image-size-tests.el --- tests for image scaling -*- lexical-binding: t; -*- ;; Copyright (C) 2017-2021 Free Software Foundation, Inc. diff --git a/test/manual/image-transforms-tests.el b/test/manual/image-transforms-tests.el index 5342b5edcae..debb74f2edb 100644 --- a/test/manual/image-transforms-tests.el +++ b/test/manual/image-transforms-tests.el @@ -1,4 +1,4 @@ -;;; image-transform-tests.el --- Test suite for image transforms. -*- lexical-binding: t -*- +;;; image-transforms-tests.el --- Test suite for image transforms. -*- lexical-binding: t -*- ;; Copyright (C) 2019-2021 Free Software Foundation, Inc. diff --git a/test/manual/scroll-tests.el b/test/manual/scroll-tests.el index 2f40b2bb696..dd15d54fa88 100644 --- a/test/manual/scroll-tests.el +++ b/test/manual/scroll-tests.el @@ -1,4 +1,4 @@ -;;; scroll-tests.el -- tests for scrolling -*- lexical-binding: t -*- +;;; scroll-tests.el --- tests for scrolling -*- lexical-binding: t -*- ;; Copyright (C) 2017-2021 Free Software Foundation, Inc. diff --git a/test/misc/test-custom-noloads.el b/test/misc/test-custom-noloads.el index 6fa6a6c90d7..5e95e7d7740 100644 --- a/test/misc/test-custom-noloads.el +++ b/test/misc/test-custom-noloads.el @@ -1,4 +1,4 @@ -;;; test-custom-deps.el --- Test custom noloads -*- lexical-binding:t -*- +;;; test-custom-noloads.el --- Test custom noloads -*- lexical-binding:t -*- ;; Copyright (C) 2021 Free Software Foundation, Inc. @@ -42,4 +42,4 @@ (cus-test-noloads) (should-not cus-test-vars-not-cus-loaded)) -;;; test-custom-deps.el ends here +;;; test-custom-noloads.el ends here diff --git a/test/src/character-tests.el b/test/src/character-tests.el new file mode 100644 index 00000000000..f630b32a5ee --- /dev/null +++ b/test/src/character-tests.el @@ -0,0 +1,45 @@ +;;; character-tests.el --- tests for character.c -*- lexical-binding:t -*- + +;; Copyright (C) 2021 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. + +;;; Code: + +(require 'ert) + +(ert-deftest character-test-string-width () + "Test `string-width' with and without compositions." + (should (= (string-width "1234") 4)) + (should (= (string-width "12\t34") (+ 4 tab-width))) + (should (= (string-width "áëòç") 4)) + (should (= (string-width "áëòç") 4)) + (should (= (string-width "הַרְבֵּה אַהֲבָה") 9)) + (should (= (string-width "1234" 1 3) 2)) + (should (= (string-width "1234" nil -1) 3)) + (should (= (string-width "1234" 2) 2)) + (should-error (string-width "1234" nil 5)) + (should-error (string-width "1234" -5)) + (should (= (string-width "12\t34") (+ 4 tab-width))) + (should (= (string-width "1234\t56") (+ 6 tab-width))) + (should (= (string-width "áëòç") 4)) + (should (= (string-width "áëòç" nil 3) 3)) + (should (= (string-width "áëòç" 1 3) 2)) + (should (= (string-width "áëòç" nil 2) 1)) + (should (= (string-width "áëòç" nil 3) 2)) + (should (= (string-width "áëòç" nil 4) 2)) + (should (= (string-width "הַרְבֵּה אַהֲבָה") 9)) + (should (= (string-width "הַרְבֵּה אַהֲבָה" nil 8) 4))) diff --git a/test/src/editfns-tests.el b/test/src/editfns-tests.el index ea80da4819c..a731a95ccf0 100644 --- a/test/src/editfns-tests.el +++ b/test/src/editfns-tests.el @@ -1,4 +1,4 @@ -;;; editfns-tests.el -- tests for editfns.c -*- lexical-binding:t -*- +;;; editfns-tests.el --- tests for editfns.c -*- lexical-binding:t -*- ;; Copyright (C) 2016-2021 Free Software Foundation, Inc. diff --git a/test/src/emacs-module-tests.el b/test/src/emacs-module-tests.el index af5bc2a0baf..0a68d51e3eb 100644 --- a/test/src/emacs-module-tests.el +++ b/test/src/emacs-module-tests.el @@ -1,4 +1,4 @@ -;;; emacs-module-tests --- Test GNU Emacs modules. -*- lexical-binding: t; -*- +;;; emacs-module-tests.el --- Test GNU Emacs modules. -*- lexical-binding: t; -*- ;; Copyright 2015-2021 Free Software Foundation, Inc. diff --git a/test/src/emacs-tests.el b/test/src/emacs-tests.el index 09f9a248efb..87c3e84cdd2 100644 --- a/test/src/emacs-tests.el +++ b/test/src/emacs-tests.el @@ -144,12 +144,14 @@ to `make-temp-file', which see." (should-not (file-remote-p filter)) (cl-callf file-name-unquote filter) (with-temp-buffer - (let ((status (call-process + (let ((start-time (current-time)) + (status (call-process emacs nil t nil "--quick" "--batch" (concat "--seccomp=" filter) - (format "--eval=%S" '(message "Hi"))))) - (ert-info ((format "Process output: %s" (buffer-string))) + (format "--eval=%S" '(message "Hi")))) + (end-time (current-time))) + (ert-info ((emacs-tests--seccomp-debug start-time end-time)) (should (eql status 0))) (should (equal (string-trim (buffer-string)) "Hi")))))) @@ -167,14 +169,16 @@ to `make-temp-file', which see." (should-not (file-remote-p filter)) (cl-callf file-name-unquote filter) (with-temp-buffer - (let ((status + (let ((start-time (current-time)) + (status (call-process emacs nil t nil "--quick" "--batch" (concat "--seccomp=" filter) (format "--eval=%S" `(call-process ,emacs nil nil nil - "--version"))))) - (ert-info ((format "Process output: %s" (buffer-string))) + "--version")))) + (end-time (current-time))) + (ert-info ((emacs-tests--seccomp-debug start-time end-time)) (should-not (eql status 0))))))) (ert-deftest emacs-tests/bwrap/allows-stdout () @@ -205,9 +209,49 @@ to `make-temp-file', which see." " ") " 20< " (shell-quote-argument (file-name-unquote filter)))) - (status (call-process bash nil t nil "-c" command))) - (ert-info ((format "Process output: %s" (buffer-string))) + (start-time (current-time)) + (status (call-process bash nil t nil "-c" command)) + (end-time (current-time))) + (ert-info ((emacs-tests--seccomp-debug start-time end-time)) (should (eql status 0))) (should (equal (string-trim (buffer-string)) "Hi")))))) +(defun emacs-tests--seccomp-debug (start-time end-time) + "Return potentially useful debugging information for Seccomp. +Assume that the current buffer contains subprocess output for the +failing process. START-TIME and END-TIME are time values between +which the process was running." + ;; Add a bit of slack for the timestamps. + (cl-callf time-subtract start-time 5) + (cl-callf time-add end-time 5) + (with-output-to-string + (princ "Process output:") + (terpri) + (princ (buffer-substring-no-properties (point-min) (point-max))) + ;; Search audit logs for Seccomp messages. + (when-let ((ausearch (executable-find "ausearch"))) + (terpri) + (princ "Potentially relevant Seccomp audit events:") + (terpri) + (let ((process-environment '("LC_TIME=C"))) + (call-process ausearch nil standard-output nil + "--message" "SECCOMP" + "--start" + (format-time-string "%D" start-time) + (format-time-string "%T" start-time) + "--end" + (format-time-string "%D" end-time) + (format-time-string "%T" end-time) + "--interpret"))) + ;; Print coredump information if available. + (when-let ((coredumpctl (executable-find "coredumpctl"))) + (terpri) + (princ "Potentially useful coredump information:") + (terpri) + (call-process coredumpctl nil standard-output nil + "info" + "--since" (format-time-string "%F %T" start-time) + "--until" (format-time-string "%F %T" end-time) + "--no-pager")))) + ;;; emacs-tests.el ends here diff --git a/test/src/fileio-tests.el b/test/src/fileio-tests.el index 7f193d4eeab..b989c97fe6b 100644 --- a/test/src/fileio-tests.el +++ b/test/src/fileio-tests.el @@ -1,4 +1,4 @@ -;;; unit tests for src/fileio.c -*- lexical-binding: t; -*- +;;; fileio-tests.el --- unit tests for src/fileio.c -*- lexical-binding: t; -*- ;; Copyright 2017-2021 Free Software Foundation, Inc. diff --git a/test/src/thread-tests.el b/test/src/thread-tests.el index 0e1ca76fd9c..fc7bc7441b7 100644 --- a/test/src/thread-tests.el +++ b/test/src/thread-tests.el @@ -1,4 +1,4 @@ -;;; threads.el --- tests for threads. -*- lexical-binding: t -*- +;;; thread-tests.el --- tests for threads. -*- lexical-binding: t -*- ;; Copyright (C) 2012-2021 Free Software Foundation, Inc. diff --git a/test/src/timefns-tests.el b/test/src/timefns-tests.el index e55bd1eb4ee..0a450a7573f 100644 --- a/test/src/timefns-tests.el +++ b/test/src/timefns-tests.el @@ -1,4 +1,4 @@ -;;; timefns-tests.el -- tests for timefns.c -*- lexical-binding: t -*- +;;; timefns-tests.el --- tests for timefns.c -*- lexical-binding: t -*- ;; Copyright (C) 2016-2021 Free Software Foundation, Inc. |