aboutsummaryrefslogtreecommitdiff
path: root/modules/auto-dim-config.el
diff options
context:
space:
mode:
Diffstat (limited to 'modules/auto-dim-config.el')
-rw-r--r--modules/auto-dim-config.el78
1 files changed, 78 insertions, 0 deletions
diff --git a/modules/auto-dim-config.el b/modules/auto-dim-config.el
index efae5341..faa4101c 100644
--- a/modules/auto-dim-config.el
+++ b/modules/auto-dim-config.el
@@ -23,6 +23,14 @@
;; terminal background, so -- unlike the old ghostel/vterm engines, which baked
;; color per-terminal with no per-window hook -- they follow the per-window
;; dimmed background like any other buffer.
+;;
+;; One caveat, so nobody chases it through this alist: ANSI-coloured spans in a
+;; terminal keep their colour when dimmed. EAT attaches those as anonymous face
+;; plists carrying a literal foreground, e.g. (:foreground "#AFD7FF" :inherit
+;; (eat-term-font-0)), and `face-remap-add-relative' only reaches named faces.
+;; There is no face name to add below. Reaching them would need an overlay
+;; (whose face outranks a text property), not a remap. Background and uncoloured
+;; text still dim, which is close enough; this is deliberate, not an oversight.
;;; Code:
@@ -75,6 +83,76 @@ focus cue on a split-displayed dashboard, accepted as a fair trade."
(font-lock-builtin-face . (auto-dim-other-buffers . nil))
(font-lock-preprocessor-face . (auto-dim-other-buffers . nil))
(font-lock-warning-face . (auto-dim-other-buffers . nil))
+ ;; Faces that sit AHEAD of a mapped face in a face list and outrank it, so
+ ;; the text under them stayed lit until each was named here: a table header
+ ;; renders as (org-table-header org-table), a TODO line as
+ ;; (org-faces-todo org-level-3). tests/test-auto-dim-config.el walks a
+ ;; fontified org buffer and fails when a built-in org face is left out.
+ (org-table-header . (auto-dim-other-buffers . nil))
+ (org-formula . (auto-dim-other-buffers . nil))
+ (org-checkbox . (auto-dim-other-buffers . nil))
+ (org-checkbox-statistics-done . (auto-dim-other-buffers . nil))
+ (org-headline-done . (auto-dim-other-buffers . nil))
+ (org-drill-visible-cloze-face . (auto-dim-other-buffers . nil))
+ ;; org-indent inherits org-hide, so its foreground IS the background: that
+ ;; is what makes indent prefixes invisible. -hide face, never the flat dim.
+ (org-indent . (auto-dim-other-buffers-hide . nil))
+ ;; org-superstar draws heading stars and list bullets, and puts its own face
+ ;; ahead of the org face beneath, so a star renders as
+ ;; (org-superstar-header-bullet org-level-1) and outranks the dimmed level.
+ ;; Without these three, bullets are the last thing left lit in a dimmed window.
+ (org-superstar-header-bullet . (auto-dim-other-buffers . nil))
+ (org-superstar-item . (auto-dim-other-buffers . nil))
+ (org-superstar-first . (auto-dim-other-buffers . nil))
+ ;; org-superstar-leading takes the -hide face, not the flat dim: its
+ ;; foreground IS the background colour, which is what keeps hidden leading
+ ;; stars invisible. Flat-dimming it would reveal them. Same as org-hide.
+ (org-superstar-leading . (auto-dim-other-buffers-hide . nil))
+ ;; The built-in link faces, distinct from org-link below. They fontify
+ ;; links in help, info, and customize buffers. Both carry :underline t,
+ ;; which survives the relative remap, so a dimmed link still reads as one.
+ (link . (auto-dim-other-buffers . nil))
+ (link-visited . (auto-dim-other-buffers . nil))
+ ;; Org structure faces flat-dim like font-lock rather than getting
+ ;; -dim variants: the active theme gives org-level-1..8 one shared
+ ;; foreground and no height or weight, so there is no level-by-colour
+ ;; signal to preserve. The remap is relative, so org-link keeps its
+ ;; underline and the heading stars / org-indent keep conveying depth.
+ ;; That premise is theme-dependent -- a theme that colours heading
+ ;; levels distinctly would make the flat dim discard real signal, and
+ ;; those levels would then want -dim variants like the keywords below.
+ (org-level-1 . (auto-dim-other-buffers . nil))
+ (org-level-2 . (auto-dim-other-buffers . nil))
+ (org-level-3 . (auto-dim-other-buffers . nil))
+ (org-level-4 . (auto-dim-other-buffers . nil))
+ (org-level-5 . (auto-dim-other-buffers . nil))
+ (org-level-6 . (auto-dim-other-buffers . nil))
+ (org-level-7 . (auto-dim-other-buffers . nil))
+ (org-level-8 . (auto-dim-other-buffers . nil))
+ (org-link . (auto-dim-other-buffers . nil))
+ (org-tag . (auto-dim-other-buffers . nil))
+ ;; org-todo and org-priority are deliberately absent: they are keyword
+ ;; class, like the org-faces-* set below, and flat-dimming them would
+ ;; erase the status colour those -dim variants exist to preserve.
+ ;; Document header: #+TITLE:, #+AUTHOR:, #+ARCHIVE: and their values.
+ (org-document-title . (auto-dim-other-buffers . nil))
+ (org-document-info . (auto-dim-other-buffers . nil))
+ (org-document-info-keyword . (auto-dim-other-buffers . nil))
+ (org-meta-line . (auto-dim-other-buffers . nil))
+ ;; Inline markup and source blocks.
+ (org-code . (auto-dim-other-buffers . nil))
+ (org-verbatim . (auto-dim-other-buffers . nil))
+ (org-block-begin-line . (auto-dim-other-buffers . nil))
+ (org-block-end-line . (auto-dim-other-buffers . nil))
+ ;; Drawers, properties, and planning lines.
+ (org-drawer . (auto-dim-other-buffers . nil))
+ (org-special-keyword . (auto-dim-other-buffers . nil))
+ (org-property-value . (auto-dim-other-buffers . nil))
+ (org-date . (auto-dim-other-buffers . nil))
+ ;; Tables and the fold indicator.
+ (org-table . (auto-dim-other-buffers . nil))
+ (org-table-row . (auto-dim-other-buffers . nil))
+ (org-ellipsis . (auto-dim-other-buffers . nil))
;; Org TODO-keyword + priority faces dim to their own -dim variant
;; (a darker shade of the same colour) rather than the flat gray, so
;; a dimmed window's keywords stay recognizable. Faces are defined