aboutsummaryrefslogtreecommitdiff
path: root/modules/ui-navigation.el
Commit message (Collapse)AuthorAgeFilesLines
* feat(ui-navigation): split from the dashboard opens scratch, not the dashboardCraig Jennings5 days1-4/+19
| | | | C-x 2 / C-x 3 already show the dashboard in the new window while point stays put. The one dead spot was splitting from the dashboard itself, which put the dashboard in both panes. Now the new window shows *scratch* when the current buffer is the dashboard, and the dashboard everywhere else. I pulled the choice into a pure predicate (cj/--split-from-dashboard-p) and a companion helper, both tested.
* fix(ui-navigation): undo-kill-buffer skips open files via equalCraig Jennings6 days1-1/+4
| | | | The visited-file filter used delq, comparing expand-file-name strings by eq, so an already-open file was never removed from the candidates (the skip logic was dead). Use delete (equal). Adds a test with the open file at the head of the list, where the eq/equal difference actually shows.
* feat(ui-navigation): C-x 2/3 show the dashboard in the new windowCraig Jennings6 days1-0/+28
| | | | Splitting with C-x 2 or C-x 3 now shows *dashboard* in the freshly created window and keeps point in the original, instead of mirroring the current buffer. cj/--split-show-buffer does the placement; cj/--dashboard-buffer fetches or opens the dashboard without disturbing windows.
* fix(ui-navigation): error clearly when undo-kill prefix exceeds the listCraig Jennings9 days1-2/+5
| | | | An out-of-range numeric prefix made (nth (1- arg) ...) return nil, and find-file on nil signaled a wrong-type-argument. Guard the index and raise a user-error naming how many killed files are available. A new test covers the out-of-range path.
* fix(ui-navigation): correct cj/undo-kill-buffer off-by-one on plain invocationCraig Jennings9 days1-3/+4
| | | | (interactive "p") forces arg >= 1, so the old (if arg (nth arg ...) (car ...)) always took the nth branch and plain M-S-z re-opened the second-most-recently-killed file. Index with (nth (1- arg) ...) so a numeric prefix is 1-based and no prefix re-opens the most recent. The two undo-kill tests now exercise the real no-prefix path (arg=1 reopens the first) and a 1-based numeric prefix; both failed against the bug and pass after. Filed a follow-up for a separate delq-vs-delete skip-visited defect found in the same function.
* docs(load-graph): classify UI and core-UX modulesCraig Jennings2026-05-241-1/+11
| | | | | | 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.
* fix(ui-navigation): clear dedicated before toggling window splitCraig Jennings2026-05-131-22/+32
| | | | | | | | 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.
* feat(window): resize the split with C-; b <arrow>Craig Jennings2026-05-111-5/+28
| | | | | | `C-; b <left>/<right>/<up>/<down>' 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'/`<escape>'). `C-u N C-; b <right>' resizes by N. windsize was on `C-s-<arrow>' (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.
* refactor(ui-navigation): drop redundant M-S-s window-swap bindingCraig Jennings2026-05-071-3/+0
| | | | `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 -> M-S-s translation in keyboard-compat.el so the keyboard table stays in sync.
* fix(terminal): add console/mosh compatibilityCraig Jennings2026-01-231-6/+6
| | | | | | | | - 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
* refactor: ui-navigation: update keybindings and declarationsCraig Jennings2025-10-201-9/+11
| | | | | | | | 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.
* changing repositoriesCraig Jennings2025-10-121-0/+154