aboutsummaryrefslogtreecommitdiff
path: root/todo.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-16 02:12:56 -0500
committerCraig Jennings <c@cjennings.net>2026-05-16 02:12:56 -0500
commitadca2736e2e3ef1eef1aaf62542aa2189a560463 (patch)
tree8c3b6449e08869eda05aba1da2544b3b5be4c291 /todo.org
parent19240036f89422dcaba3f0e3c3a822c92b0f35c1 (diff)
downloaddotemacs-adca2736e2e3ef1eef1aaf62542aa2189a560463.tar.gz
dotemacs-adca2736e2e3ef1eef1aaf62542aa2189a560463.zip
feat(modeline): surface flycheck status in the custom modeline
The custom modeline builds `mode-line-format` from explicit segments and skips `minor-mode-alist`, so flycheck's lighter never appears. That hid error and warning counts even in buffers where flycheck was auto-enabling (every emacs-lisp and sh buffer). The fix is Option 4 from the design doc: customize the flycheck modeline variables, then add a single guarded `(:eval ...)` form to `mode-line-format`. Five new lines total, two-file change. `modules/flycheck-config.el` :custom block gets: (flycheck-mode-line-prefix "🐛") (flycheck-mode-success-indicator " ✓") `flycheck-mode-line-color` stays default-t so error / warning counts pick up their faces automatically. `modules/modeline-config.el` `mode-line-format` gets an `(:eval ...)` between the recording indicator and `cj/modeline-vc-branch`: (:eval (when (and (mode-line-window-selected-p) (bound-and-true-p flycheck-mode)) (flycheck-mode-line-status-text))) The `mode-line-window-selected-p` guard mirrors `cj/modeline-vc-branch` and `cj/modeline-misc-info` -- segments hide in inactive windows. The `bound-and-true-p flycheck-mode` guard keeps the form silent in buffers where flycheck hasn't loaded or isn't enabled, which is safer than referencing `flycheck-mode` directly. The `(:eval ...)` is inline rather than a named `defvar-local`, so no addition to the risky-local-variable list is needed. `tests/test-modeline-config-flycheck-segment.el` -- 3 smoke tests asserting the segment is present and both guards are in place. All existing tests stay green. Manual verification (per the design doc) is the user's call -- the emoji prefix and the colored count behavior need a running GUI Emacs to observe.
Diffstat (limited to 'todo.org')
-rw-r--r--todo.org25
1 files changed, 17 insertions, 8 deletions
diff --git a/todo.org b/todo.org
index 14777f27..e69c45c3 100644
--- a/todo.org
+++ b/todo.org
@@ -2548,16 +2548,25 @@ Test the new REST API client integration in a running Emacs session.
- C-; R s should replace :skyfi-key = PLACEHOLDER with real key
- Key should NOT be written to disk (verify file still shows PLACEHOLDER)
-** TODO [#C] Implement flycheck modeline customization :feature:
+** DONE [#C] Implement flycheck modeline customization :feature:
+CLOSED: [2026-05-16 Sat]
+
+Spec: [[file:docs/design/flycheck-modeline-customization.org][docs/design/flycheck-modeline-customization.org]] (Option 4 / hybrid).
+
+=modules/flycheck-config.el= got two new =:custom= lines:
+=flycheck-mode-line-prefix= → "🐛", =flycheck-mode-success-indicator= →
+" ✓". =flycheck-mode-line-color= stays default-t so counts pick up
+=error= / =warning= faces automatically.
-Spec: [[file:docs/design/flycheck-modeline-customization.org][docs/design/flycheck-modeline-customization.org]]
+=modules/modeline-config.el= got one new =(:eval ...)= form in
+=mode-line-format=, placed between the recording indicator and
+=cj/modeline-vc-branch=. Two guards: =(mode-line-window-selected-p)=
+gates to the active window; =(bound-and-true-p flycheck-mode)= prevents
+the call from firing in buffers where flycheck hasn't loaded.
-Custom modeline (=modules/modeline-config.el=) omits =minor-mode-alist=,
-so flycheck's error/warning lighter is invisible. Fix is a two-line
-=:custom= block in =flycheck-config.el= (prefix + success indicator) plus
-one guarded =(:eval ...)= form in =mode-line-format=. See spec for the
-active-window-gating decision, risky-local-variable note, emoji
-candidates, and the manual verification walk.
+=tests/test-modeline-config-flycheck-segment.el= -- 3 smoke tests
+asserting the segment is present and both guards are in place. The
+existing modeline tests stay green.
** TODO [#C] Migrate from Company to Corfu (with prescient integration) :feature: