diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-14 19:05:43 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-14 19:05:43 -0500 |
| commit | 1dbf5a4a2d2ce4277dc97a3e9783240324ad5f53 (patch) | |
| tree | 2a81d246d624064660681df8adf72672a38b8092 /tests | |
| parent | 0b5ada69861b338d93ee947645e7fa1ed12fca00 (diff) | |
| download | dotemacs-1dbf5a4a2d2ce4277dc97a3e9783240324ad5f53.tar.gz dotemacs-1dbf5a4a2d2ce4277dc97a3e9783240324ad5f53.zip | |
refactor(org-config): surface narrowing + sparse-tree under C-; O
Narrowing and sparse-tree commands existed in the `:bind' block
on `C-c'-style shortcuts but nothing in `cj/org-map' surfaced
them, so which-key never showed them and discoverability was
poor.
Add direct bindings under `C-; O', flat (no sub-prefixes for
narrow / sparse-tree). Lowercase creates; capital of the same
letter cancels:
- `n' / `N' narrow-to-subtree / widen
- `s' / `S' match-sparse-tree / show-all
- `t' / `T' show-todo-tree / show-all
- `>' / `<' forward / backward sibling narrow (kept as-is)
- `R' reveal-context (no lowercase pair -- `r' is the
table-row sub-prefix)
Both `S' and `T' resolve to the same `org-show-all' command so
the mental model is just "capital cancels the lowercase I just
ran" without having to recall which letter the cancel actually
lives on.
Free up F2: the old `(<f2> . org-reveal)' binding in the org-mode
`:bind' block is now redundant with `C-; O R'. Drop it; F2
becomes available for whatever wants it next.
Four new ERT assertions in `test-org-config-keymap-ownership.el'
lock the shape -- the old sparse-tree-submap test was rewritten
for the flat layout and the narrow-submap test became
narrow-bindings (also flat).
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test-org-config-keymap-ownership.el | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/test-org-config-keymap-ownership.el b/tests/test-org-config-keymap-ownership.el index 7f08a172..729d497c 100644 --- a/tests/test-org-config-keymap-ownership.el +++ b/tests/test-org-config-keymap-ownership.el @@ -45,6 +45,31 @@ command (which moved to capital `C')." (should (eq (keymap-lookup cj/org-map "c i") #'org-table-insert-column)) (should (eq (keymap-lookup cj/org-map "c d") #'org-table-delete-column))) +(ert-deftest test-org-config-keymap-ownership-narrow-bindings () + "Narrow / widen sit directly under `C-; O' (flat, no sub-prefix). +Lowercase `n' narrows to the current subtree; capital `N' widens, +matching the lowercase-creates / uppercase-cancels pattern shared +with the sparse-tree sub-prefix. Sibling-stepping is on `>' / `<' +at the top level." + (should (eq (keymap-lookup cj/org-map "n") #'org-narrow-to-subtree)) + (should (eq (keymap-lookup cj/org-map "N") #'widen)) + (should (eq (keymap-lookup cj/org-map ">") #'cj/org-narrow-forward)) + (should (eq (keymap-lookup cj/org-map "<") #'cj/org-narrow-backwards))) + +(ert-deftest test-org-config-keymap-ownership-sparse-tree-bindings () + "Sparse-tree commands sit directly under `C-; O' (flat). +Lowercase creates, capital of the same letter cancels: `s' / +`S' for match-sparse-tree, `t' / `T' for show-todo-tree. Both +capitals resolve to `org-show-all' -- the user's mental model is +\"capital cancels the lowercase I just ran\" without having to +remember which letter the cancel actually lives on. `R' is +`org-reveal' (no lowercase pair -- `r' is the table-row sub-prefix)." + (should (eq (keymap-lookup cj/org-map "s") #'org-match-sparse-tree)) + (should (eq (keymap-lookup cj/org-map "S") #'org-show-all)) + (should (eq (keymap-lookup cj/org-map "t") #'org-show-todo-tree)) + (should (eq (keymap-lookup cj/org-map "T") #'org-show-all)) + (should (eq (keymap-lookup cj/org-map "R") #'org-reveal))) + (ert-deftest test-org-config-keymap-ownership-regression-no-duplicate-org-keymap () "The old duplicate `cj/org-keymap' binding should not exist." (should-not (boundp 'cj/org-keymap))) |
