branch: externals/hyperbole commit def42d746fc98a3485f8768f32e9ef7f080d05d4 Author: Mats Lidell <mats.lid...@lidells.se> Commit: GitHub <nore...@github.com>
Add binding for shift tab in orgtbl map to allow demote of tree (#131) --- ChangeLog | 9 +++++++++ kotl/kotl-mode.el | 15 +++++++++------ test/kotl-orgtbl-tests.el | 41 +++++++++++++++++++++++++++++++++++++++-- 3 files changed, 57 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index b31f37c..95ea3d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2021-11-08 Mats Lidell <ma...@gnu.org> + +* test/kotl-orgtbl-tests.el (kotl-orgtbl-action-key-on-vertical-bar-toggles-orgtbl-mode) + (kotl-orgtbl-shift-tab-demotes-tree-outside-table): Add tests. + +* kotl/kotl-mode.el (kotl-mode): Change binding for orgtbl C-d to use new + uniq command name, add binding for orgtbl shift tab to provide demote + tree outside of table. + 2021-11-07 Bob Weiner <r...@gnu.org> * hypb.el (hypb:mark): Remove and use builtin mark function. diff --git a/kotl/kotl-mode.el b/kotl/kotl-mode.el index 3fa6bff..d0944ba 100644 --- a/kotl/kotl-mode.el +++ b/kotl/kotl-mode.el @@ -176,14 +176,17 @@ It provides the following keys: ;; same funcitonality when in a table, but may also be invoked from ;; a mouse button. (org-defkey orgtbl-mode-map "\M-\C-m" - (orgtbl-make-binding 'orgtbl-meta-return 105 - "\M-\C-m" [(meta return)])) + (orgtbl-make-binding 'orgtbl-meta-return 105 + "\M-\C-m" [(meta return)])) (org-defkey orgtbl-mode-map [(meta return)] - (orgtbl-make-binding 'orgtbl-meta-return 106 - [(meta return)] "\M-\C-m")) + (orgtbl-make-binding 'orgtbl-meta-return 106 + [(meta return)] "\M-\C-m")) (org-defkey orgtbl-mode-map "\C-d" - (orgtbl-make-binding 'kotl-mode:delete-char 107 - "\C-d")) + (orgtbl-make-binding 'kotl-mode:delete-char 201 + "\C-d")) + (org-defkey orgtbl-mode-map [(shift iso-lefttab)] + (orgtbl-make-binding 'org-shifttab 202 + [(shift iso-lefttab)] [backtab] [(shift tab)])) (run-hooks 'kotl-mode-hook) (add-hook 'change-major-mode-hook #'kotl-mode:show-all nil t)) diff --git a/test/kotl-orgtbl-tests.el b/test/kotl-orgtbl-tests.el index 9fd6c4d..3e95516 100644 --- a/test/kotl-orgtbl-tests.el +++ b/test/kotl-orgtbl-tests.el @@ -25,8 +25,8 @@ default-directory)))) (declare-function hy-test-helpers:consume-input-events "hy-test-helpers") -(ert-deftest kotl-orgtbl-enabled-uses-kotl-mode-delete-char-ouside-of-table () - "kotl-mode:detele-char is used ouside of org table." +(ert-deftest kotl-orgtbl-enabled-uses-kotl-mode-delete-char-outside-of-table () + "kotl-mode:detele-char is used outside of org table." (let ((kotl-file (make-temp-file "hypb" nil ".kotl"))) (unwind-protect (progn @@ -50,5 +50,42 @@ (:success (ert-fail "C-d shall fail when deleting at the end of a cell.")))) (delete-file kotl-file)))) +(ert-deftest kotl-orgtbl-action-key-on-vertical-bar-toggles-orgtbl-mode () + "Action key on vertical bar toggles orgtbl-mode." + (let ((kotl-file (make-temp-file "hypb" nil ".kotl"))) + (unwind-protect + (progn + (find-file kotl-file) + (should orgtbl-mode) + + ;; Create an org table + (should (hact 'kbd-key "RET |-| RET")) + (hy-test-helpers:consume-input-events) + + (left-char 1) + (action-key) + (should-not orgtbl-mode) + (action-key) + (should orgtbl-mode)) + (delete-file kotl-file)))) + +(ert-deftest kotl-orgtbl-shift-tab-demotes-tree-outside-table () + "Shift tab demotes tree outside of org table." + (let ((kotl-file (make-temp-file "hypb" nil ".kotl"))) + (unwind-protect + (progn + (find-file kotl-file) + (should orgtbl-mode) + + (kotl-mode:add-child) + (should (string= (kcell-view:label (point)) "1a")) + + (should (hact 'kbd-key "<S-iso-lefttab>")) + (hy-test-helpers:consume-input-events) + + (should (equal (kcell-view:level) 1)) + (should (string= (kcell-view:label (point)) "2"))) + (delete-file kotl-file)))) + (provide 'kotl-orgtbl-tests) ;;; kotl-orgtbl-tests.el ends here