summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/org-config.el31
-rw-r--r--tests/test-org-config-keymap-ownership.el22
2 files changed, 34 insertions, 19 deletions
diff --git a/modules/org-config.el b/modules/org-config.el
index e13dc59f..8c2dc646 100644
--- a/modules/org-config.el
+++ b/modules/org-config.el
@@ -126,15 +126,13 @@
:ensure nil ;; use the built-in package
:pin manual ;; never upgrade from the version built-into Emacs
:init
- (defvar-keymap cj/org-table-map
- :doc "org table operations.")
-
(defvar-keymap cj/org-map
:doc "General org-mode operations and utilities.")
(keymap-set cj/custom-keymap "O" cj/org-map)
- ;; Table operations live under the org menu (was at top-level "T",
- ;; which collided silently with `cj/transcribe-map').
- (keymap-set cj/org-map "T" cj/org-table-map)
+ ;; Table operations live directly under the org menu: `r' for row,
+ ;; `c' for column. Single-key org commands under this prefix use
+ ;; capitals (e.g. `C' for clear element cache) to leave the
+ ;; lowercase letters free as table sub-prefixes.
:bind
("C-c c" . org-capture)
("C-c a" . org-agenda)
@@ -152,7 +150,7 @@
("<f2>" . org-reveal)
("C-c <ESC>" . widen)
("C-c C-a" . cj/org-appear-toggle))
- (:map cj/org-table-map
+ (:map cj/org-map
("r i" . org-table-insert-row)
("r d" . org-table-kill-row)
("c i" . org-table-insert-column)
@@ -291,7 +289,7 @@ the current buffer's cache. Useful when encountering parsing errors like
(org-element-cache-reset 'all)
(message "Cleared org-element cache for all buffers")))
-(keymap-set cj/org-map "c" #'cj/org-clear-element-cache)
+(keymap-set cj/org-map "C" #'cj/org-clear-element-cache)
;; ----------------------- Org Multi-Level Sorting -----------------------------
@@ -323,15 +321,14 @@ status to preserve priority ordering within TODO groups."
(which-key-add-key-based-replacements
;; org general operations
"C-; O" "org menu"
- "C-; O c" "clear element cache"
- ;; org table operations (under the org menu)
- "C-; O T" "org table menu"
- "C-; O T r" "table row"
- "C-; O T r i" "insert row"
- "C-; O T r d" "delete row"
- "C-; O T c" "table column"
- "C-; O T c i" "insert column"
- "C-; O T c d" "delete column"
+ "C-; O C" "clear element cache"
+ ;; org table operations (live directly under the org menu)
+ "C-; O r" "table row"
+ "C-; O r i" "insert row"
+ "C-; O r d" "delete row"
+ "C-; O c" "table column"
+ "C-; O c i" "insert column"
+ "C-; O c d" "delete column"
;; org global bindings
"C-c a" "org agenda"
"C-c c" "org capture"
diff --git a/tests/test-org-config-keymap-ownership.el b/tests/test-org-config-keymap-ownership.el
index dd7d314d..7f08a172 100644
--- a/tests/test-org-config-keymap-ownership.el
+++ b/tests/test-org-config-keymap-ownership.el
@@ -23,10 +23,28 @@
cj/org-map)))
(ert-deftest test-org-config-keymap-ownership-normal-clear-cache-on-org-map ()
- "The Org prefix should expose one cache-clear command on c."
- (should (eq (keymap-lookup cj/org-map "c")
+ "The Org prefix should expose the cache-clear command on capital C.
+
+Lowercase `c' is reserved as a sub-prefix for table column operations
+(`c i' insert, `c d' delete); the single-key org commands under this
+menu use capitals to leave the lowercase letters free as table
+sub-prefixes."
+ (should (eq (keymap-lookup cj/org-map "C")
#'cj/org-clear-element-cache)))
+(ert-deftest test-org-config-keymap-ownership-table-row-bindings ()
+ "Table row operations live directly under the org menu at `r i' /
+`r d', no longer behind a `T' sub-prefix."
+ (should (eq (keymap-lookup cj/org-map "r i") #'org-table-insert-row))
+ (should (eq (keymap-lookup cj/org-map "r d") #'org-table-kill-row)))
+
+(ert-deftest test-org-config-keymap-ownership-table-column-bindings ()
+ "Table column operations live directly under the org menu at `c i' /
+`c d', sharing the `c' prefix that used to host the clear-cache
+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-regression-no-duplicate-org-keymap ()
"The old duplicate `cj/org-keymap' binding should not exist."
(should-not (boundp 'cj/org-keymap)))