emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/modus-operandi-theme ae0e956 25/54: Fix regression with


From: Stefan Monnier
Subject: [elpa] externals/modus-operandi-theme ae0e956 25/54: Fix regression with byte compilation
Date: Thu, 4 Jun 2020 08:20:14 -0400 (EDT)

branch: externals/modus-operandi-theme
commit ae0e9564d1e18d281e5500901c0660adf76b9b64
Merge: ccc6d66 c05fbab
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@protesilaos.com>

    Fix regression with byte compilation
    
    This merges branch 'experimental-byte-compile' and addresses issue 44:
    https://gitlab.com/protesilaos/modus-themes/-/issues/44
    
    The gist is that the themes should now byte compile cleanly, as was the
    case prior to commit d6586a4, while also supporting the features that
    were introduced in that commit as well as e4714ff (the features were
    documented in 0d9b1d4 and 91ce02b).
    
    Special thanks to André Alexandre Gomes (GitLab user @aadcg) for the
    valuable insights and the support in the investigation that led to this
    changeset.
---
 modus-operandi-theme.el | 368 ++++++++++++++++++++++++------------------------
 modus-vivendi-theme.el  | 368 ++++++++++++++++++++++++------------------------
 2 files changed, 364 insertions(+), 372 deletions(-)

diff --git a/modus-operandi-theme.el b/modus-operandi-theme.el
index c2f71c6..edcc529 100644
--- a/modus-operandi-theme.el
+++ b/modus-operandi-theme.el
@@ -552,206 +552,206 @@ AMOUNT is a customisation option."
 ;; The design of the colour palette and of the macro that maps it to
 ;; faces is copied from zenbern-theme.el from commit 7dd7968:
 ;; https://github.com/bbatsov/zenburn-emacs
-(defvar modus-operandi-theme-default-colors-alist
-  '(;; base values
-    ("bg-main" . "#ffffff") ("fg-main" . "#000000")
-    ("bg-alt" . "#f0f0f0") ("fg-alt" . "#505050")
-    ("bg-dim" . "#f8f8f8") ("fg-dim" . "#282828")
-    ;; specifically for on/off states (e.g. `mode-line')
-    ;;
-    ;; must be combined with themselves
-    ("bg-active" . "#e0e0e0") ("fg-active" . "#191919")
-    ("bg-inactive" . "#efedef") ("fg-inactive" . "#424242")
-    ;; special base values, used only for cases where the above
-    ;; fg-* or bg-* cannot or should not be used (to avoid confusion)
-    ;; must be combined with: {fg,bg}-{main,alt,dim}
-    ("bg-special-cold" . "#dde3f4") ("fg-special-cold" . "#093060")
-    ("bg-special-mild" . "#c4ede0") ("fg-special-mild" . "#184034")
-    ("bg-special-warm" . "#f0e0d4") ("fg-special-warm" . "#5d3026")
-    ("bg-special-calm" . "#f8ddea") ("fg-special-calm" . "#61284f")
-    ;; styles for the main constructs
-    ;;
-    ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
-    ("red" . "#a60000") ("green" . "#005e00")
-    ("yellow" . "#813e00") ("blue" . "#0030a6")
-    ("magenta" . "#721045") ("cyan" . "#00538b")
-    ;; styles for common, but still specialised constructs
-    ;;
-    ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
-    ("red-alt" . "#972500") ("green-alt" . "#315b00")
-    ("yellow-alt" . "#70480f") ("blue-alt" . "#223fbf")
-    ("magenta-alt" . "#8f0075") ("cyan-alt" . "#30517f")
-    ;; same purpose as above, just slight differences
-    ;;
-    ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
-    ("red-alt-other" . "#a0132f") ("green-alt-other" . "#145c33")
-    ("yellow-alt-other" . "#863927") ("blue-alt-other" . "#0000bb")
-    ("magenta-alt-other" . "#5317ac") ("cyan-alt-other" . "#005a5f")
-    ;; styles for elements that should be very subtle
-    ;;
-    ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
-    ("red-nuanced" . "#4d0006") ("green-nuanced" . "#003000")
-    ("yellow-nuanced" . "#3a2a00") ("blue-nuanced" . "#001170")
-    ("magenta-nuanced" . "#381050") ("cyan-nuanced" . "#003434")
-    ;; styles for slightly accented background
-    ;;
-    ;; must be combined with any of the above foreground values
-    ("red-nuanced-bg" . "#fef2f2") ("green-nuanced-bg" . "#f4faf4")
-    ("yellow-nuanced-bg" . "#fcf6f1") ("blue-nuanced-bg" . "#f4f4ff")
-    ("magenta-nuanced-bg" . "#fff4fc") ("cyan-nuanced-bg" . "#f0f6fa")
-    ;; styles for elements that should draw attention to themselves
-    ;;
-    ;; must be combined with: `bg-main'
-    ("red-intense" . "#b60000") ("green-intense" . "#006800")
-    ("yellow-intense" . "#904200") ("blue-intense" . "#1111ee")
-    ("magenta-intense" . "#7000e0") ("cyan-intense" . "#205b93")
-    ;; styles for background elements that should be visible yet
-    ;; subtle
-    ;;
-    ;; must be combined with: `fg-dim'
-    ("red-subtle-bg" . "#f2b0a2") ("green-subtle-bg" . "#aecf90")
-    ("yellow-subtle-bg" . "#e4c340") ("blue-subtle-bg" . "#b5d0ff")
-    ("magenta-subtle-bg" . "#f0d3ff") ("cyan-subtle-bg" . "#c0efff")
-    ;; styles for background elements that should be visible and
-    ;; distinguishable
-    ;;
-    ;; must be combined with: `fg-main'
-    ("red-intense-bg" . "#ff8892") ("green-intense-bg" . "#5ada88")
-    ("yellow-intense-bg" . "#f5df23") ("blue-intense-bg" . "#6aaeff")
-    ("magenta-intense-bg" . "#d5baff") ("cyan-intense-bg" . "#42cbd4")
-    ;; styles for refined contexts where both the foreground and the
-    ;; background need to have the same/similar hue
-    ;;
-    ;; must be combined with themselves OR the foregrounds can be
-    ;; combined with any of the base backgrounds
-    ("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")
-    ("magenta-refine-bg" . "#ffccff") ("magenta-refine-fg" . "#770077")
-    ("cyan-refine-bg" . "#8eecf4") ("cyan-refine-fg" . "#004850")
-    ;; styles that are meant exclusively for the mode line
-    ;;
-    ;; must be combined with: `bg-active', `bg-inactive'
-    ("red-active" . "#930000") ("green-active" . "#005300")
-    ("yellow-active" . "#703700") ("blue-active" . "#0033c0")
-    ("magenta-active" . "#6320a0") ("cyan-active" . "#004882")
-    ;; styles that are meant exclusively for the fringes
-    ;;
-    ;; must have a minimum contrast ratio of 1.5:1 with `bg-inactive'
-    ;; and be combined with `fg-main' or `fg-dim'
-    ("red-fringe-bg" . "#ff9a9a") ("green-fringe-bg" . "#86cf86")
-    ("yellow-fringe-bg" . "#e0c050") ("blue-fringe-bg" . "#82afff")
-    ("magenta-fringe-bg" . "#f0a3ff") ("cyan-fringe-bg" . "#00d6e0")
-    ;; styles reserved for specific faces
-    ;;
-    ;; `bg-hl-line' is between `bg-dim' and `bg-alt', so it should
-    ;; work with all accents that cover those two, plus `bg-main'
-    ;;
-    ;; `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 colours
-    ;;
-    ;; `bg-paren-match', `bg-region' and `bg-tab-active' must be
-    ;; combined with `fg-main', while `bg-tab-inactive' should be
-    ;; combined with `fg-dim'
-    ;;
-    ;; `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',
-    ;; though only for styling special elements, such as underlining
-    ;; the current tab
-    ;;
-    ;; `fg-escape-char-construct' and `fg-escape-char-backslash' can
-    ;; be combined `bg-main', `bg-dim', `bg-alt'
-    ;;
-    ;; `fg-lang-error', `fg-lang-warning', `fg-lang-note' can be
-    ;; combined with `bg-main', `bg-dim', `bg-alt'
-    ;;
-    ;; `fg-mark', `fg-mark-del', `fg-mark-other' can be combined with
-    ;; `bg-main', `bg-dim', `bg-alt', `bg-hl-line'
-    ;;
-    ;; `fg-unfocused' must be combined with `fg-main'
-    ;;
-    ;; the window divider colours apply to faces with just an fg value
-    ;;
-    ;; all pairs are combinable with themselves
-    ("bg-hl-line" . "#f2eff3")
-    ("bg-paren-match" . "#efcabf")
-    ("bg-region" . "#bcbcbc")
+(eval-when-compile
+  (defvar modus-operandi-theme-default-colors-alist
+    '(;; base values
+      ("bg-main" . "#ffffff") ("fg-main" . "#000000")
+      ("bg-alt" . "#f0f0f0") ("fg-alt" . "#505050")
+      ("bg-dim" . "#f8f8f8") ("fg-dim" . "#282828")
+      ;; specifically for on/off states (e.g. `mode-line')
+      ;;
+      ;; must be combined with themselves
+      ("bg-active" . "#e0e0e0") ("fg-active" . "#191919")
+      ("bg-inactive" . "#efedef") ("fg-inactive" . "#424242")
+      ;; special base values, used only for cases where the above
+      ;; fg-* or bg-* cannot or should not be used (to avoid confusion)
+      ;; must be combined with: {fg,bg}-{main,alt,dim}
+      ("bg-special-cold" . "#dde3f4") ("fg-special-cold" . "#093060")
+      ("bg-special-mild" . "#c4ede0") ("fg-special-mild" . "#184034")
+      ("bg-special-warm" . "#f0e0d4") ("fg-special-warm" . "#5d3026")
+      ("bg-special-calm" . "#f8ddea") ("fg-special-calm" . "#61284f")
+      ;; styles for the main constructs
+      ;;
+      ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
+      ("red" . "#a60000") ("green" . "#005e00")
+      ("yellow" . "#813e00") ("blue" . "#0030a6")
+      ("magenta" . "#721045") ("cyan" . "#00538b")
+      ;; styles for common, but still specialised constructs
+      ;;
+      ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
+      ("red-alt" . "#972500") ("green-alt" . "#315b00")
+      ("yellow-alt" . "#70480f") ("blue-alt" . "#223fbf")
+      ("magenta-alt" . "#8f0075") ("cyan-alt" . "#30517f")
+      ;; same purpose as above, just slight differences
+      ;;
+      ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
+      ("red-alt-other" . "#a0132f") ("green-alt-other" . "#145c33")
+      ("yellow-alt-other" . "#863927") ("blue-alt-other" . "#0000bb")
+      ("magenta-alt-other" . "#5317ac") ("cyan-alt-other" . "#005a5f")
+      ;; styles for elements that should be very subtle
+      ;;
+      ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
+      ("red-nuanced" . "#4d0006") ("green-nuanced" . "#003000")
+      ("yellow-nuanced" . "#3a2a00") ("blue-nuanced" . "#001170")
+      ("magenta-nuanced" . "#381050") ("cyan-nuanced" . "#003434")
+      ;; styles for slightly accented background
+      ;;
+      ;; must be combined with any of the above foreground values
+      ("red-nuanced-bg" . "#fef2f2") ("green-nuanced-bg" . "#f4faf4")
+      ("yellow-nuanced-bg" . "#fcf6f1") ("blue-nuanced-bg" . "#f4f4ff")
+      ("magenta-nuanced-bg" . "#fff4fc") ("cyan-nuanced-bg" . "#f0f6fa")
+      ;; styles for elements that should draw attention to themselves
+      ;;
+      ;; must be combined with: `bg-main'
+      ("red-intense" . "#b60000") ("green-intense" . "#006800")
+      ("yellow-intense" . "#904200") ("blue-intense" . "#1111ee")
+      ("magenta-intense" . "#7000e0") ("cyan-intense" . "#205b93")
+      ;; styles for background elements that should be visible yet
+      ;; subtle
+      ;;
+      ;; must be combined with: `fg-dim'
+      ("red-subtle-bg" . "#f2b0a2") ("green-subtle-bg" . "#aecf90")
+      ("yellow-subtle-bg" . "#e4c340") ("blue-subtle-bg" . "#b5d0ff")
+      ("magenta-subtle-bg" . "#f0d3ff") ("cyan-subtle-bg" . "#c0efff")
+      ;; styles for background elements that should be visible and
+      ;; distinguishable
+      ;;
+      ;; must be combined with: `fg-main'
+      ("red-intense-bg" . "#ff8892") ("green-intense-bg" . "#5ada88")
+      ("yellow-intense-bg" . "#f5df23") ("blue-intense-bg" . "#6aaeff")
+      ("magenta-intense-bg" . "#d5baff") ("cyan-intense-bg" . "#42cbd4")
+      ;; styles for refined contexts where both the foreground and the
+      ;; background need to have the same/similar hue
+      ;;
+      ;; must be combined with themselves OR the foregrounds can be
+      ;; combined with any of the base backgrounds
+      ("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")
+      ("magenta-refine-bg" . "#ffccff") ("magenta-refine-fg" . "#770077")
+      ("cyan-refine-bg" . "#8eecf4") ("cyan-refine-fg" . "#004850")
+      ;; styles that are meant exclusively for the mode line
+      ;;
+      ;; must be combined with: `bg-active', `bg-inactive'
+      ("red-active" . "#930000") ("green-active" . "#005300")
+      ("yellow-active" . "#703700") ("blue-active" . "#0033c0")
+      ("magenta-active" . "#6320a0") ("cyan-active" . "#004882")
+      ;; styles that are meant exclusively for the fringes
+      ;;
+      ;; must have a minimum contrast ratio of 1.5:1 with `bg-inactive'
+      ;; and be combined with `fg-main' or `fg-dim'
+      ("red-fringe-bg" . "#ff9a9a") ("green-fringe-bg" . "#86cf86")
+      ("yellow-fringe-bg" . "#e0c050") ("blue-fringe-bg" . "#82afff")
+      ("magenta-fringe-bg" . "#f0a3ff") ("cyan-fringe-bg" . "#00d6e0")
+      ;; styles reserved for specific faces
+      ;;
+      ;; `bg-hl-line' is between `bg-dim' and `bg-alt', so it should
+      ;; work with all accents that cover those two, plus `bg-main'
+      ;;
+      ;; `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 colours
+      ;;
+      ;; `bg-paren-match', `bg-region' and `bg-tab-active' must be
+      ;; combined with `fg-main', while `bg-tab-inactive' should be
+      ;; combined with `fg-dim'
+      ;;
+      ;; `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',
+      ;; though only for styling special elements, such as underlining
+      ;; the current tab
+      ;;
+      ;; `fg-escape-char-construct' and `fg-escape-char-backslash' can
+      ;; be combined `bg-main', `bg-dim', `bg-alt'
+      ;;
+      ;; `fg-lang-error', `fg-lang-warning', `fg-lang-note' can be
+      ;; combined with `bg-main', `bg-dim', `bg-alt'
+      ;;
+      ;; `fg-mark', `fg-mark-del', `fg-mark-other' can be combined with
+      ;; `bg-main', `bg-dim', `bg-alt', `bg-hl-line'
+      ;;
+      ;; `fg-unfocused' must be combined with `fg-main'
+      ;;
+      ;; the window divider colours apply to faces with just an fg value
+      ;;
+      ;; all pairs are combinable with themselves
+      ("bg-hl-line" . "#f2eff3")
+      ("bg-paren-match" . "#efcabf")
+      ("bg-region" . "#bcbcbc")
 
-    ("bg-tab-bar" . "#d5d5d5")
-    ("bg-tab-active" . "#f6f6f6")
-    ("bg-tab-inactive" . "#bdbdbd")
-    ("fg-tab-active" . "#30169e")
+      ("bg-tab-bar" . "#d5d5d5")
+      ("bg-tab-active" . "#f6f6f6")
+      ("bg-tab-inactive" . "#bdbdbd")
+      ("fg-tab-active" . "#30169e")
 
-    ("fg-escape-char-construct" . "#8b1030")
-    ("fg-escape-char-backslash" . "#654d0f")
+      ("fg-escape-char-construct" . "#8b1030")
+      ("fg-escape-char-backslash" . "#654d0f")
 
-    ("fg-lang-error" . "#9f004f")
-    ("fg-lang-warning" . "#604f0f")
-    ("fg-lang-note" . "#4040ae")
+      ("fg-lang-error" . "#9f004f")
+      ("fg-lang-warning" . "#604f0f")
+      ("fg-lang-note" . "#4040ae")
 
-    ("fg-window-divider-inner" . "#888888")
-    ("fg-window-divider-outer" . "#585858")
+      ("fg-window-divider-inner" . "#888888")
+      ("fg-window-divider-outer" . "#585858")
 
-    ("fg-unfocused" . "#56576d")
+      ("fg-unfocused" . "#56576d")
 
-    ("bg-header" . "#e5e5e5") ("fg-header" . "#2a2a2a")
+      ("bg-header" . "#e5e5e5") ("fg-header" . "#2a2a2a")
 
-    ("bg-whitespace" . "#fff8fc") ("fg-whitespace" . "#645060")
+      ("bg-whitespace" . "#fff8fc") ("fg-whitespace" . "#645060")
 
-    ("bg-diff-heading" . "#b7c2dd") ("fg-diff-heading" . "#043355")
-    ("bg-diff-added" . "#d4fad4") ("fg-diff-added" . "#004500")
-    ("bg-diff-changed" . "#fcefcf") ("fg-diff-changed" . "#524200")
-    ("bg-diff-removed" . "#ffe8ef") ("fg-diff-removed" . "#691616")
+      ("bg-diff-heading" . "#b7c2dd") ("fg-diff-heading" . "#043355")
+      ("bg-diff-added" . "#d4fad4") ("fg-diff-added" . "#004500")
+      ("bg-diff-changed" . "#fcefcf") ("fg-diff-changed" . "#524200")
+      ("bg-diff-removed" . "#ffe8ef") ("fg-diff-removed" . "#691616")
 
-    ("bg-diff-refine-added" . "#94cf94") ("fg-diff-refine-added" . "#002a00")
-    ("bg-diff-refine-changed" . "#cccf8f") ("fg-diff-refine-changed" . 
"#302010")
-    ("bg-diff-refine-removed" . "#daa2b0") ("fg-diff-refine-removed" . 
"#400000")
+      ("bg-diff-refine-added" . "#94cf94") ("fg-diff-refine-added" . "#002a00")
+      ("bg-diff-refine-changed" . "#cccf8f") ("fg-diff-refine-changed" . 
"#302010")
+      ("bg-diff-refine-removed" . "#daa2b0") ("fg-diff-refine-removed" . 
"#400000")
 
-    ("bg-diff-focus-added" . "#bbeabb") ("fg-diff-focus-added" . "#002c00")
-    ("bg-diff-focus-changed" . "#ecdfbf") ("fg-diff-focus-changed" . "#392900")
-    ("bg-diff-focus-removed" . "#efcbcf") ("fg-diff-focus-removed" . "#4a0000")
+      ("bg-diff-focus-added" . "#bbeabb") ("fg-diff-focus-added" . "#002c00")
+      ("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-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" . "#a0f0cf") ("fg-mark" . "#005040")
-    ("bg-mark-del" . "#ffccbb") ("fg-mark-del" . "#840040")
-    ("bg-mark-other" . "#f5d88f") ("fg-mark-other" . "#782900"))
-  "The entire palette of `modus-operandi-theme'.
+      ("bg-mark" . "#a0f0cf") ("fg-mark" . "#005040")
+      ("bg-mark-del" . "#ffccbb") ("fg-mark-del" . "#840040")
+      ("bg-mark-other" . "#f5d88f") ("fg-mark-other" . "#782900"))
+    "The entire palette of `modus-operandi-theme'.
 Each element has the form (NAME . HEX).")
 
-;;;###autoload
-(defcustom modus-operandi-theme-override-colors-alist '()
-  "Place to override default theme colors.
+  (defcustom modus-operandi-theme-override-colors-alist '()
+    "Place to override default theme colors.
 You can override a subset of the theme's default colors by
 defining them in this alist."
-  :type '(alist
-          :key-type (string :tag "Name")
-          :value-type (string :tag " Hex")))
+    :type '(alist
+            :key-type (string :tag "Name")
+            :value-type (string :tag " Hex")))
 
-(defmacro modus-operandi-theme-with-color-variables (&rest body)
-  "`let' bind all colours around BODY.
+  (defmacro modus-operandi-theme-with-color-variables (&rest body)
+    "`let' bind all colours around BODY.
 Also bind `class' to ((class color) (min-colors 89))."
-  (declare (indent 0))
-  `(let ((class '((class color) (min-colors 89)))
-         ,@(mapcar (lambda (cons)
-                     (list (intern (car cons)) (cdr cons)))
-                   (append modus-operandi-theme-default-colors-alist
-                           modus-operandi-theme-override-colors-alist))
-         ;; conditional styles that evaluate user-facing customisation
-         ;; options
-         (modus-theme-slant
-          (if modus-operandi-theme-slanted-constructs 'italic 'normal))
-         (modus-theme-bold
-          (if modus-operandi-theme-bold-constructs 'bold 'normal))
-         (modus-theme-variable-pitch
-          (if modus-operandi-theme-proportional-fonts 'variable-pitch 
'default)))
-     ,@body))
+    (declare (indent 0))
+    `(let ((class '((class color) (min-colors 89)))
+           ,@(mapcar (lambda (cons)
+                       (list (intern (car cons)) (cdr cons)))
+                     (append modus-operandi-theme-default-colors-alist
+                             modus-operandi-theme-override-colors-alist))
+           ;; conditional styles that evaluate user-facing customisation
+           ;; options
+           (modus-theme-slant
+            (if modus-operandi-theme-slanted-constructs 'italic 'normal))
+           (modus-theme-bold
+            (if modus-operandi-theme-bold-constructs 'bold 'normal))
+           (modus-theme-variable-pitch
+            (if modus-operandi-theme-proportional-fonts 'variable-pitch 
'default)))
+       ,@body)))
 
 
 
@@ -3413,8 +3413,4 @@ Also bind `class' to ((class color) (min-colors 89))."
 
 (provide 'modus-operandi-theme)
 
-;; Local Variables:
-;; no-byte-compile: t
-;; indent-tabs-mode: nil
-;; End:
 ;;; modus-operandi-theme.el ends here
diff --git a/modus-vivendi-theme.el b/modus-vivendi-theme.el
index a651d70..a375c81 100644
--- a/modus-vivendi-theme.el
+++ b/modus-vivendi-theme.el
@@ -552,206 +552,206 @@ AMOUNT is a customisation option."
 ;; The design of the colour palette and of the macro that maps it to
 ;; faces is copied from zenbern-theme.el from commit 7dd7968:
 ;; https://github.com/bbatsov/zenburn-emacs
-(defvar modus-vivendi-theme-default-colors-alist
-  '(;; base values
-    ("bg-main" . "#000000") ("fg-main" . "#ffffff")
-    ("bg-alt" . "#181a20") ("fg-alt" . "#a8a8a8")
-    ("bg-dim" . "#110b11") ("fg-dim" . "#e0e6f0")
-    ;; specifically for on/off states (e.g. `mode-line')
-    ;;
-    ;; must be combined with themselves
-    ("bg-active" . "#2f2f2f") ("fg-active" . "#f5f5f5")
-    ("bg-inactive" . "#202020") ("fg-inactive" . "#bebebe")
-    ;; special base values, used only for cases where the above
-    ;; fg-* or bg-* cannot or should not be used (to avoid confusion)
-    ;; must be combined with: {fg,bg}-{main,alt,dim}
-    ("bg-special-cold" . "#203448") ("fg-special-cold" . "#c6eaff")
-    ("bg-special-mild" . "#00322e") ("fg-special-mild" . "#bfebe0")
-    ("bg-special-warm" . "#382f27") ("fg-special-warm" . "#f8dec0")
-    ("bg-special-calm" . "#392a48") ("fg-special-calm" . "#fbd6f4")
-    ;; styles for the main constructs
-    ;;
-    ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
-    ("red" . "#ff8059") ("green" . "#44bc44")
-    ("yellow" . "#eecc00") ("blue" . "#33beff")
-    ("magenta" . "#feacd0") ("cyan" . "#00d3d0")
-    ;; styles for common, but still specialised constructs
-    ;;
-    ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
-    ("red-alt" . "#f4923b") ("green-alt" . "#58dd13")
-    ("yellow-alt" . "#e5f040") ("blue-alt" . "#72a4ff")
-    ("magenta-alt" . "#f78fe7") ("cyan-alt" . "#4ae8fc")
-    ;; same purpose as above, just slight differences
-    ;;
-    ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
-    ("red-alt-other" . "#ff9977") ("green-alt-other" . "#90d800")
-    ("yellow-alt-other" . "#f0ce43") ("blue-alt-other" . "#00baf4")
-    ("magenta-alt-other" . "#b6a0ff") ("cyan-alt-other" . "#6ae4b9")
-    ;; styles for elements that should be very subtle
-    ;;
-    ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
-    ("red-nuanced" . "#ffcccc") ("green-nuanced" . "#b0f0b0")
-    ("yellow-nuanced" . "#e0e0bb") ("blue-nuanced" . "#ccccff")
-    ("magenta-nuanced" . "#eeccee") ("cyan-nuanced" . "#aaeeee")
-    ;; styles for slightly accented background
-    ;;
-    ;; must be combined with any of the above foreground values
-    ("red-nuanced-bg" . "#180505") ("green-nuanced-bg" . "#061206")
-    ("yellow-nuanced-bg" . "#18140a") ("blue-nuanced-bg" . "#070722")
-    ("magenta-nuanced-bg" . "#160616") ("cyan-nuanced-bg" . "#091620")
-    ;; styles for elements that should draw attention to themselves
-    ;;
-    ;; must be combined with: `bg-main'
-    ("red-intense" . "#fb6859") ("green-intense" . "#00fc50")
-    ("yellow-intense" . "#ffdd00") ("blue-intense" . "#00a2ff")
-    ("magenta-intense" . "#ff8bd4") ("cyan-intense" . "#30ffc0")
-    ;; styles for background elements that should be visible yet
-    ;; subtle
-    ;;
-    ;; must be combined with: `fg-dim'
-    ("red-subtle-bg" . "#762422") ("green-subtle-bg" . "#2f4a00")
-    ("yellow-subtle-bg" . "#604200") ("blue-subtle-bg" . "#10387c")
-    ("magenta-subtle-bg" . "#49366e") ("cyan-subtle-bg" . "#00415e")
-    ;; styles for background elements that should be visible and
-    ;; distinguishable
-    ;;
-    ;; must be combined with: `fg-main'
-    ("red-intense-bg" . "#a4202a") ("green-intense-bg" . "#006800")
-    ("yellow-intense-bg" . "#874900") ("blue-intense-bg" . "#2a40b8")
-    ("magenta-intense-bg" . "#7042a2") ("cyan-intense-bg" . "#005f88")
-    ;; styles for refined contexts where both the foreground and the
-    ;; background need to have the same/similar hue
-    ;;
-    ;; must be combined with themselves OR the foregrounds can be
-    ;; combined with any of the base backgrounds
-    ("red-refine-bg" . "#77002a") ("red-refine-fg" . "#ffb9ab")
-    ("green-refine-bg" . "#00422a") ("green-refine-fg" . "#9ff0cf")
-    ("yellow-refine-bg" . "#705000") ("yellow-refine-fg" . "#ffffac")
-    ("blue-refine-bg" . "#242679") ("blue-refine-fg" . "#8ec6ff")
-    ("magenta-refine-bg" . "#71206a") ("magenta-refine-fg" . "#ffcaf0")
-    ("cyan-refine-bg" . "#004065") ("cyan-refine-fg" . "#8ae4f2")
-    ;; styles that are meant exclusively for the mode line
-    ;;
-    ;; must be combined with: `bg-active', `bg-inactive'
-    ("red-active" . "#ffa49e") ("green-active" . "#70e030")
-    ("yellow-active" . "#efdf00") ("blue-active" . "#00ccff")
-    ("magenta-active" . "#d0acff") ("cyan-active" . "#00ddc0")
-    ;; styles that are meant exclusively for the fringes
-    ;;
-    ;; must have a minimum contrast ratio of 1.5:1 with `bg-inactive'
-    ;; and be combined with `fg-main' or `fg-dim'
-    ("red-fringe-bg" . "#8f0040") ("green-fringe-bg" . "#006000")
-    ("yellow-fringe-bg" . "#6f4a00") ("blue-fringe-bg" . "#3a30ab")
-    ("magenta-fringe-bg" . "#692089") ("cyan-fringe-bg" . "#0068a0")
-    ;; styles reserved for specific faces
-    ;;
-    ;; `bg-hl-line' is between `bg-dim' and `bg-alt', so it should
-    ;; work with all accents that cover those two, plus `bg-main'
-    ;;
-    ;; `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 colours
-    ;;
-    ;; `bg-paren-match', `bg-region' and `bg-tab-active' must be
-    ;; combined with `fg-main', while `bg-tab-inactive' should be
-    ;; combined with `fg-dim'
-    ;;
-    ;; `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',
-    ;; though only for styling special elements, such as underlining
-    ;; the current tab
-    ;;
-    ;; `fg-escape-char-construct' and `fg-escape-char-backslash' can
-    ;; be combined `bg-main', `bg-dim', `bg-alt'
-    ;;
-    ;; `fg-lang-error', `fg-lang-warning', `fg-lang-note' can be
-    ;; combined with `bg-main', `bg-dim', `bg-alt'
-    ;;
-    ;; `fg-mark', `fg-mark-del', `fg-mark-other' can be combined with
-    ;; `bg-main', `bg-dim', `bg-alt', `bg-hl-line'
-    ;;
-    ;; `fg-unfocused' must be combined with `fg-main'
-    ;;
-    ;; the window divider colours apply to faces with just an fg value
-    ;;
-    ;; all pairs are combinable with themselves
-    ("bg-hl-line" . "#151823")
-    ("bg-paren-match" . "#6e3a50")
-    ("bg-region" . "#3c3c3c")
+(eval-when-compile
+  (defvar modus-vivendi-theme-default-colors-alist
+    '(;; base values
+      ("bg-main" . "#000000") ("fg-main" . "#ffffff")
+      ("bg-alt" . "#181a20") ("fg-alt" . "#a8a8a8")
+      ("bg-dim" . "#110b11") ("fg-dim" . "#e0e6f0")
+      ;; specifically for on/off states (e.g. `mode-line')
+      ;;
+      ;; must be combined with themselves
+      ("bg-active" . "#2f2f2f") ("fg-active" . "#f5f5f5")
+      ("bg-inactive" . "#202020") ("fg-inactive" . "#bebebe")
+      ;; special base values, used only for cases where the above
+      ;; fg-* or bg-* cannot or should not be used (to avoid confusion)
+      ;; must be combined with: {fg,bg}-{main,alt,dim}
+      ("bg-special-cold" . "#203448") ("fg-special-cold" . "#c6eaff")
+      ("bg-special-mild" . "#00322e") ("fg-special-mild" . "#bfebe0")
+      ("bg-special-warm" . "#382f27") ("fg-special-warm" . "#f8dec0")
+      ("bg-special-calm" . "#392a48") ("fg-special-calm" . "#fbd6f4")
+      ;; styles for the main constructs
+      ;;
+      ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
+      ("red" . "#ff8059") ("green" . "#44bc44")
+      ("yellow" . "#eecc00") ("blue" . "#33beff")
+      ("magenta" . "#feacd0") ("cyan" . "#00d3d0")
+      ;; styles for common, but still specialised constructs
+      ;;
+      ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
+      ("red-alt" . "#f4923b") ("green-alt" . "#58dd13")
+      ("yellow-alt" . "#e5f040") ("blue-alt" . "#72a4ff")
+      ("magenta-alt" . "#f78fe7") ("cyan-alt" . "#4ae8fc")
+      ;; same purpose as above, just slight differences
+      ;;
+      ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
+      ("red-alt-other" . "#ff9977") ("green-alt-other" . "#90d800")
+      ("yellow-alt-other" . "#f0ce43") ("blue-alt-other" . "#00baf4")
+      ("magenta-alt-other" . "#b6a0ff") ("cyan-alt-other" . "#6ae4b9")
+      ;; styles for elements that should be very subtle
+      ;;
+      ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
+      ("red-nuanced" . "#ffcccc") ("green-nuanced" . "#b0f0b0")
+      ("yellow-nuanced" . "#e0e0bb") ("blue-nuanced" . "#ccccff")
+      ("magenta-nuanced" . "#eeccee") ("cyan-nuanced" . "#aaeeee")
+      ;; styles for slightly accented background
+      ;;
+      ;; must be combined with any of the above foreground values
+      ("red-nuanced-bg" . "#180505") ("green-nuanced-bg" . "#061206")
+      ("yellow-nuanced-bg" . "#18140a") ("blue-nuanced-bg" . "#070722")
+      ("magenta-nuanced-bg" . "#160616") ("cyan-nuanced-bg" . "#091620")
+      ;; styles for elements that should draw attention to themselves
+      ;;
+      ;; must be combined with: `bg-main'
+      ("red-intense" . "#fb6859") ("green-intense" . "#00fc50")
+      ("yellow-intense" . "#ffdd00") ("blue-intense" . "#00a2ff")
+      ("magenta-intense" . "#ff8bd4") ("cyan-intense" . "#30ffc0")
+      ;; styles for background elements that should be visible yet
+      ;; subtle
+      ;;
+      ;; must be combined with: `fg-dim'
+      ("red-subtle-bg" . "#762422") ("green-subtle-bg" . "#2f4a00")
+      ("yellow-subtle-bg" . "#604200") ("blue-subtle-bg" . "#10387c")
+      ("magenta-subtle-bg" . "#49366e") ("cyan-subtle-bg" . "#00415e")
+      ;; styles for background elements that should be visible and
+      ;; distinguishable
+      ;;
+      ;; must be combined with: `fg-main'
+      ("red-intense-bg" . "#a4202a") ("green-intense-bg" . "#006800")
+      ("yellow-intense-bg" . "#874900") ("blue-intense-bg" . "#2a40b8")
+      ("magenta-intense-bg" . "#7042a2") ("cyan-intense-bg" . "#005f88")
+      ;; styles for refined contexts where both the foreground and the
+      ;; background need to have the same/similar hue
+      ;;
+      ;; must be combined with themselves OR the foregrounds can be
+      ;; combined with any of the base backgrounds
+      ("red-refine-bg" . "#77002a") ("red-refine-fg" . "#ffb9ab")
+      ("green-refine-bg" . "#00422a") ("green-refine-fg" . "#9ff0cf")
+      ("yellow-refine-bg" . "#705000") ("yellow-refine-fg" . "#ffffac")
+      ("blue-refine-bg" . "#242679") ("blue-refine-fg" . "#8ec6ff")
+      ("magenta-refine-bg" . "#71206a") ("magenta-refine-fg" . "#ffcaf0")
+      ("cyan-refine-bg" . "#004065") ("cyan-refine-fg" . "#8ae4f2")
+      ;; styles that are meant exclusively for the mode line
+      ;;
+      ;; must be combined with: `bg-active', `bg-inactive'
+      ("red-active" . "#ffa49e") ("green-active" . "#70e030")
+      ("yellow-active" . "#efdf00") ("blue-active" . "#00ccff")
+      ("magenta-active" . "#d0acff") ("cyan-active" . "#00ddc0")
+      ;; styles that are meant exclusively for the fringes
+      ;;
+      ;; must have a minimum contrast ratio of 1.5:1 with `bg-inactive'
+      ;; and be combined with `fg-main' or `fg-dim'
+      ("red-fringe-bg" . "#8f0040") ("green-fringe-bg" . "#006000")
+      ("yellow-fringe-bg" . "#6f4a00") ("blue-fringe-bg" . "#3a30ab")
+      ("magenta-fringe-bg" . "#692089") ("cyan-fringe-bg" . "#0068a0")
+      ;; styles reserved for specific faces
+      ;;
+      ;; `bg-hl-line' is between `bg-dim' and `bg-alt', so it should
+      ;; work with all accents that cover those two, plus `bg-main'
+      ;;
+      ;; `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 colours
+      ;;
+      ;; `bg-paren-match', `bg-region' and `bg-tab-active' must be
+      ;; combined with `fg-main', while `bg-tab-inactive' should be
+      ;; combined with `fg-dim'
+      ;;
+      ;; `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',
+      ;; though only for styling special elements, such as underlining
+      ;; the current tab
+      ;;
+      ;; `fg-escape-char-construct' and `fg-escape-char-backslash' can
+      ;; be combined `bg-main', `bg-dim', `bg-alt'
+      ;;
+      ;; `fg-lang-error', `fg-lang-warning', `fg-lang-note' can be
+      ;; combined with `bg-main', `bg-dim', `bg-alt'
+      ;;
+      ;; `fg-mark', `fg-mark-del', `fg-mark-other' can be combined with
+      ;; `bg-main', `bg-dim', `bg-alt', `bg-hl-line'
+      ;;
+      ;; `fg-unfocused' must be combined with `fg-main'
+      ;;
+      ;; the window divider colours apply to faces with just an fg value
+      ;;
+      ;; all pairs are combinable with themselves
+      ("bg-hl-line" . "#151823")
+      ("bg-paren-match" . "#6e3a50")
+      ("bg-region" . "#3c3c3c")
 
-    ("bg-tab-bar" . "#2c2c2c")
-    ("bg-tab-active" . "#0e0e0e")
-    ("bg-tab-inactive" . "#3d3d3d")
-    ("fg-tab-active" . "#5ac3cf")
+      ("bg-tab-bar" . "#2c2c2c")
+      ("bg-tab-active" . "#0e0e0e")
+      ("bg-tab-inactive" . "#3d3d3d")
+      ("fg-tab-active" . "#5ac3cf")
 
-    ("fg-escape-char-construct" . "#e7a59a")
-    ("fg-escape-char-backslash" . "#abab00")
+      ("fg-escape-char-construct" . "#e7a59a")
+      ("fg-escape-char-backslash" . "#abab00")
 
-    ("fg-lang-error" . "#ef8690")
-    ("fg-lang-warning" . "#b0aa00")
-    ("fg-lang-note" . "#9d9def")
+      ("fg-lang-error" . "#ef8690")
+      ("fg-lang-warning" . "#b0aa00")
+      ("fg-lang-note" . "#9d9def")
 
-    ("fg-window-divider-inner" . "#646464")
-    ("fg-window-divider-outer" . "#969696")
+      ("fg-window-divider-inner" . "#646464")
+      ("fg-window-divider-outer" . "#969696")
 
-    ("fg-unfocused" . "#93959b")
+      ("fg-unfocused" . "#93959b")
 
-    ("bg-header" . "#212121") ("fg-header" . "#dddddd")
+      ("bg-header" . "#212121") ("fg-header" . "#dddddd")
 
-    ("bg-whitespace" . "#170016") ("fg-whitespace" . "#a4959f")
+      ("bg-whitespace" . "#170016") ("fg-whitespace" . "#a4959f")
 
-    ("bg-diff-heading" . "#304466") ("fg-diff-heading" . "#dadffe")
-    ("bg-diff-added" . "#0a280a") ("fg-diff-added" . "#94ba94")
-    ("bg-diff-changed" . "#2a2000") ("fg-diff-changed" . "#b0ba9f")
-    ("bg-diff-removed" . "#40160f") ("fg-diff-removed" . "#c6adaa")
+      ("bg-diff-heading" . "#304466") ("fg-diff-heading" . "#dadffe")
+      ("bg-diff-added" . "#0a280a") ("fg-diff-added" . "#94ba94")
+      ("bg-diff-changed" . "#2a2000") ("fg-diff-changed" . "#b0ba9f")
+      ("bg-diff-removed" . "#40160f") ("fg-diff-removed" . "#c6adaa")
 
-    ("bg-diff-refine-added" . "#005a36") ("fg-diff-refine-added" . "#e0f6e0")
-    ("bg-diff-refine-changed" . "#585800") ("fg-diff-refine-changed" . 
"#ffffcc")
-    ("bg-diff-refine-removed" . "#852828") ("fg-diff-refine-removed" . 
"#ffd9eb")
+      ("bg-diff-refine-added" . "#005a36") ("fg-diff-refine-added" . "#e0f6e0")
+      ("bg-diff-refine-changed" . "#585800") ("fg-diff-refine-changed" . 
"#ffffcc")
+      ("bg-diff-refine-removed" . "#852828") ("fg-diff-refine-removed" . 
"#ffd9eb")
 
-    ("bg-diff-focus-added" . "#203d20") ("fg-diff-focus-added" . "#b4ddb4")
-    ("bg-diff-focus-changed" . "#4a3a10") ("fg-diff-focus-changed" . "#d0daaf")
-    ("bg-diff-focus-removed" . "#5e2526") ("fg-diff-focus-removed" . "#eebdba")
+      ("bg-diff-focus-added" . "#203d20") ("fg-diff-focus-added" . "#b4ddb4")
+      ("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-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" . "#002f2f") ("fg-mark" . "#60cfa2")
-    ("bg-mark-del" . "#5a0000") ("fg-mark-del" . "#ff99aa")
-    ("bg-mark-other" . "#3f2210") ("fg-mark-other" . "#f0aa20"))
-  "The entire palette of `modus-vivendi-theme'.
+      ("bg-mark" . "#002f2f") ("fg-mark" . "#60cfa2")
+      ("bg-mark-del" . "#5a0000") ("fg-mark-del" . "#ff99aa")
+      ("bg-mark-other" . "#3f2210") ("fg-mark-other" . "#f0aa20"))
+    "The entire palette of `modus-vivendi-theme'.
 Each element has the form (NAME . HEX).")
 
-;;;###autoload
-(defcustom modus-vivendi-theme-override-colors-alist '()
-  "Place to override default theme colors.
+  (defcustom modus-vivendi-theme-override-colors-alist '()
+    "Place to override default theme colors.
 You can override a subset of the theme's default colors by
 defining them in this alist."
-  :type '(alist
-          :key-type (string :tag "Name")
-          :value-type (string :tag " Hex")))
+    :type '(alist
+            :key-type (string :tag "Name")
+            :value-type (string :tag " Hex")))
 
-(defmacro modus-vivendi-theme-with-color-variables (&rest body)
-  "`let' bind all colours around BODY.
+  (defmacro modus-vivendi-theme-with-color-variables (&rest body)
+    "`let' bind all colours around BODY.
 Also bind `class' to ((class color) (min-colors 89))."
-  (declare (indent 0))
-  `(let ((class '((class color) (min-colors 89)))
-         ,@(mapcar (lambda (cons)
-                     (list (intern (car cons)) (cdr cons)))
-                   (append modus-vivendi-theme-default-colors-alist
-                           modus-vivendi-theme-override-colors-alist))
-         ;; conditional styles that evaluate user-facing customisation
-         ;; options
-         (modus-theme-slant
-          (if modus-vivendi-theme-slanted-constructs 'italic 'normal))
-         (modus-theme-bold
-          (if modus-vivendi-theme-bold-constructs 'bold 'normal))
-         (modus-theme-variable-pitch
-          (if modus-vivendi-theme-proportional-fonts 'variable-pitch 
'default)))
-     ,@body))
+    (declare (indent 0))
+    `(let ((class '((class color) (min-colors 89)))
+           ,@(mapcar (lambda (cons)
+                       (list (intern (car cons)) (cdr cons)))
+                     (append modus-vivendi-theme-default-colors-alist
+                             modus-vivendi-theme-override-colors-alist))
+           ;; conditional styles that evaluate user-facing customisation
+           ;; options
+           (modus-theme-slant
+            (if modus-vivendi-theme-slanted-constructs 'italic 'normal))
+           (modus-theme-bold
+            (if modus-vivendi-theme-bold-constructs 'bold 'normal))
+           (modus-theme-variable-pitch
+            (if modus-vivendi-theme-proportional-fonts 'variable-pitch 
'default)))
+       ,@body)))
 
 
 
@@ -3413,8 +3413,4 @@ Also bind `class' to ((class color) (min-colors 89))."
 
 (provide 'modus-vivendi-theme)
 
-;; Local Variables:
-;; no-byte-compile: t
-;; indent-tabs-mode: nil
-;; End:
 ;;; modus-vivendi-theme.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]