<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/modules/ui-navigation.el, branch main</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2026-05-24T21:28:07+00:00</updated>
<entry>
<title>docs(load-graph): classify UI and core-UX modules</title>
<updated>2026-05-24T21:28:07+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T21:28:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=e1789025131b048049777542a91fb7eb55195ce5'/>
<id>urn:sha1:e1789025131b048049777542a91fb7eb55195ce5</id>
<content type='text'>
Fourth classification batch: the modules that shape the first interactive frame — ui-config, ui-theme, ui-navigation, font-config, selection-framework, modeline-config, mousetrap-mode, popper-config, dashboard-config, nerd-icons-config. I annotated each header, added a Batch 4 table to the inventory, and extended the validation allowlist. 33 of 102 modules are now classified.

These mostly stay eager: each has a real first-frame reason (theme, font, modeline, completion stack, landing page). No new hidden dependencies. popper-config carries the spec's open question about its enabled/disabled state, noted for the deferral phase.
</content>
</entry>
<entry>
<title>fix(ui-navigation): clear dedicated before toggling window split</title>
<updated>2026-05-13T18:27:25+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-13T18:27:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=97f0f8e67fa5aecf3161ce5b45d2bb17d075111e'/>
<id>urn:sha1:97f0f8e67fa5aecf3161ce5b45d2bb17d075111e</id>
<content type='text'>
toggle-window-split swapped buffers between two windows via two set-window-buffer calls. If either window was strongly dedicated (e.g. *Org Agenda* via the display-buffer-alist rule), the dedicated window rejected the second swap. Both panes ended up showing the dedicated buffer. The non-dedicated buffer never made it across.

The fix clears dedicated on both windows before the swap. The user explicitly invoked a layout change, so preserving per-window dedicated through the operation would just re-trigger the same wedge on the next toggle.

Tests in tests/test-ui-navigation--toggle-window-split.el cover the no-dedicated baseline, the bug-trigger (dedicated selected window), the post-toggle cleared state, and the one-window / three-window no-op boundaries.
</content>
</entry>
<entry>
<title>feat(window): resize the split with C-; b &lt;arrow&gt;</title>
<updated>2026-05-11T20:16:56+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-11T20:16:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=f837e5f7464932fc49c10a7442dc1a23af61b257'/>
<id>urn:sha1:f837e5f7464932fc49c10a7442dc1a23af61b257</id>
<content type='text'>
`C-; b &lt;left&gt;/&lt;right&gt;/&lt;up&gt;/&lt;down&gt;' moves the active window's divider that way (via `windsize'), then keeps `cj/window-resize-map' active so bare arrows keep nudging until any other key (or `C-g'/`&lt;escape&gt;'). `C-u N C-; b &lt;right&gt;' resizes by N.

windsize was on `C-s-&lt;arrow&gt;' (Ctrl+Super), which a tiling WM intercepts, so those keys were useless. I dropped that binding. The package is now `:commands'-deferred, and `windsize-cols'/`windsize-rows' drop to 2 (8/4 overshoots in a held nudge loop). `cj/window-resize-sticky' dispatches on the arrow that triggered it and arms the loop.
</content>
</entry>
<entry>
<title>refactor(ui-navigation): drop redundant M-S-s window-swap binding</title>
<updated>2026-05-08T00:25:22+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-08T00:25:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=93b033a313c5a7ad56293c192ef69b567d344178'/>
<id>urn:sha1:93b033a313c5a7ad56293c192ef69b567d344178</id>
<content type='text'>
`window-swap-states` on M-S-s overlapped with `buffer-move` (C-M-arrows), which I actually use. I cleared the binding plus the M-S -&gt; M-S-s translation in keyboard-compat.el so the keyboard table stays in sync.
</content>
</entry>
<entry>
<title>fix(terminal): add console/mosh compatibility</title>
<updated>2026-01-24T04:42:10+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-24T04:42:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=3ed0e8ea7c39ea0eaaa48506b7b99dee5ee6ca30'/>
<id>urn:sha1:3ed0e8ea7c39ea0eaaa48506b7b99dee5ee6ca30</id>
<content type='text'>
- Create terminal-compat.el for arrow key escape sequences
- Fix M-uppercase keybindings (M-O → M-S-o, etc.) that conflicted
  with terminal escape sequences ESC O A/B/C/D
- Add GUI-only guards for emojify and icon rendering
- 18 keybindings updated across 13 modules with override comments
</content>
</entry>
<entry>
<title>refactor: ui-navigation: update keybindings and declarations</title>
<updated>2025-10-20T18:31:53+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-20T18:31:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=cc3c93d342a122215c59e9a9865314268213b2ad'/>
<id>urn:sha1:cc3c93d342a122215c59e9a9865314268213b2ad</id>
<content type='text'>
Replace `global-set-key` with `keymap-global-set` for keybindings.
Add missing `defvar` declarations and `declare-function` statements
for improved clarity and maintainability of variable and function
usage. Remove unnecessary `:defer` from `use-package` statements as
deferred loading is not required.
</content>
</entry>
<entry>
<title>changing repositories</title>
<updated>2025-10-12T16:47:26+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-12T16:47:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=092304d9e0ccc37cc0ddaa9b136457e56a1cac20'/>
<id>urn:sha1:092304d9e0ccc37cc0ddaa9b136457e56a1cac20</id>
<content type='text'>
</content>
</entry>
</feed>
