From 7b982b1984dd37af42a2dfc9f4c3e52b27102860 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Fri, 14 Nov 2025 02:25:19 -0600 Subject: fix(ui): Fix cursor color updates with post-command-hook MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The cursor color was not updating correctly when switching buffers or modifying files. The original implementation used window-buffer-change and other specific hooks, but these were insufficient and internal buffers were interfering with cursor color updates. Root cause: - Cursor color is global (one cursor for all of Emacs) - Previous hooks fired in internal buffer contexts (*Echo Area*, *temp*) - This caused cursor to be set to white (unmodified) even when in read-only buffers like dashboard Solution: - Use post-command-hook which runs after every command in current buffer - Ignore internal buffers (names starting with space) - Cache optimization prevents redundant set-cursor-color calls Behavior now: - Dashboard (read-only): Red cursor - Unmodified file: White cursor - Modified file: Green cursor - After save: White cursor Tests: - Added 9 integration tests in test-ui-cursor-color-integration.el - Tests verify hook installation, buffer switching, modification tracking - All 27 tests passing (18 unit + 9 integration) Integration tests catch issues that unit tests miss: - Unit tests verified state detection logic (✓) - Integration tests verify hooks fire at right times (✓ now) - Integration tests verify real buffer switching behavior (✓ now) Cleanup: - Removed debug code from init.el - Removed debug-cursor-color.el temporary file 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'init.el') diff --git a/init.el b/init.el index 17d5e315..cb84f985 100644 --- a/init.el +++ b/init.el @@ -56,7 +56,7 @@ (require 'font-config) ;; font and emoji configuration (require 'selection-framework) ;; menu config (require 'modeline-config) ;; modeline (status-bar) config -(require 'mousetrap-mode) ;; disables trackpad/mouse input only in Emacs +(require 'mousetrap-mode) ;; prevent accidental mouse/trackpad modifications (require 'popper-config) ;; moving logs, help, and other buffers to popup ;; ----------------- Emacs Built-In Functionality Configuration ---------------- -- cgit v1.2.3