diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-16 02:12:56 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-16 02:12:56 -0500 |
| commit | adca2736e2e3ef1eef1aaf62542aa2189a560463 (patch) | |
| tree | 8c3b6449e08869eda05aba1da2544b3b5be4c291 /modules/modeline-config.el | |
| parent | 19240036f89422dcaba3f0e3c3a822c92b0f35c1 (diff) | |
| download | dotemacs-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 'modules/modeline-config.el')
| -rw-r--r-- | modules/modeline-config.el | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/modules/modeline-config.el b/modules/modeline-config.el index 7fc75594..771d960f 100644 --- a/modules/modeline-config.el +++ b/modules/modeline-config.el @@ -231,6 +231,13 @@ Shows only in active window.") mode-line-format-right-align (:eval (when (fboundp 'cj/recording-modeline-indicator) (cj/recording-modeline-indicator))) + ;; Flycheck status: prefix + counts (or success indicator). Gated + ;; to the active window, and to buffers where flycheck has loaded + ;; and turned on, so the call is safe even before flycheck loads. + (:eval (when (and (mode-line-window-selected-p) + (bound-and-true-p flycheck-mode)) + (flycheck-mode-line-status-text))) + " " cj/modeline-vc-branch " " cj/modeline-misc-info |
