<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/tests/test-ui-config--buffer-cursor-state.el, branch load-graph-classify-end</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=load-graph-classify-end</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=load-graph-classify-end'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2026-05-16T07:56:25+00:00</updated>
<entry>
<title>refactor(ui): four UI/navigation hygiene fixes from module-by-module re-review</title>
<updated>2026-05-16T07:56:25+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-16T07:56:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=d618bb4620d5d651027e772b8ccc490e1bab6d80'/>
<id>urn:sha1:d618bb4620d5d651027e772b8ccc490e1bab6d80</id>
<content type='text'>
- popper-config.el: move `(popper-mode +1)` and `(popper-echo-mode
  +1)` from the use-package `:init` block into `:config`.
  `:disabled t' on use-package skips `:config' but still runs
  `:init', so the previous shape enabled popper-mode on every load,
  including batch / test runs, despite the disabled marker.

- modeline-config.el: make `cj/modeline-vc-fetch' fall back when
  the internal `vc-git--symbolic-ref' is missing.  `require' uses
  `nil 'noerror', the call sits inside an `fboundp' guard, and
  `ignore-errors' wraps the call itself so an Emacs version that
  renames or removes the accessor leaves `branch' at
  `vc-working-revision''s output instead of crashing the modeline.

- ui-config.el: guard the cursor-color `post-command-hook' behind
  `(display-graphic-p)' both at install time and inside the
  function body.  Batch / TTY runs short-circuit cleanly with no
  per-command overhead.  A `server-after-make-frame-hook' catches
  the daemon case where the first GUI frame is created after
  ui-config loads and installs the hook lazily.  Updates
  test-ui-config--buffer-cursor-state and
  test-ui-cursor-color-integration to stub `display-graphic-p' so
  the work body still runs under batch.

- nerd-icons-config.el: drop `:demand t' (`:defer t' now), keeping
  the `:config' advice install as the natural lazy-on-load path.
  Add a `with-eval-after-load 'nerd-icons' block as a safety net for
  the already-loaded case on re-eval; the block uses `advice-member-p'
  so the advice never stacks.
</content>
</entry>
<entry>
<title>fix(ui-config): use the writeable cursor color in a live vterm</title>
<updated>2026-05-11T14:12:32+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-11T14:12:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=a70bb985c86aee2b701b40d5c3fae720863cfa4e'/>
<id>urn:sha1:a70bb985c86aee2b701b40d5c3fae720863cfa4e</id>
<content type='text'>
`vterm-mode' sets `buffer-read-only', so `cj/set-cursor-color-according-to-mode' painted the cursor with the read-only color (orange) whenever point was in a vterm. That includes the live terminal, not just `vterm-copy-mode'. But a live terminal takes input: keystrokes go to the process, not the buffer. So a live vterm now reports `unmodified' instead. `vterm-copy-mode' still reports `read-only': there it really is a read-only Emacs buffer the user navigates, and the orange cursor is the right signal.

I pulled the state cond out of `cj/set-cursor-color-according-to-mode' into `cj/--buffer-cursor-state' so it's unit-testable without a real frame or `set-cursor-color'.
</content>
</entry>
</feed>
