Round 160: Add 20 Outline, Origami folding commands
ober
0e9e9e0c1ae44edbdf838379e36d7edf92697785
--- a/docs/jemacs-vs-emacs.md +++ b/docs/jemacs-vs-emacs.md @@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features | ebib-import-file | :orange_circle: | Import file into Ebib | | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer | +### Round 160 — Outline, Origami Folding + +| Feature | Status | Notes | +|---|---|---| +| `outline-minor-mode` | :orange_circle: | Outline minor mode | +| `outline-hide-entry` | :orange_circle: | Hide entry body | +| `outline-show-entry` | :orange_circle: | Show entry body | +| `outline-hide-leaves` | :orange_circle: | Hide leaves | +| `outline-show-branches` | :orange_circle: | Show branches | +| `outline-hide-other` | :orange_circle: | Hide everything else | +| `outline-show-children` | :orange_circle: | Show direct children | +| `outline-mark-subtree` | :orange_circle: | Mark subtree | +| `outline-move-subtree-up` | :orange_circle: | Move subtree up | +| `outline-move-subtree-down` | :orange_circle: | Move subtree down | +| `outline-promote` | :orange_circle: | Promote heading | +| `outline-demote` | :orange_circle: | Demote heading | +| `origami-toggle-node` | :orange_circle: | Toggle fold | +| `origami-toggle-all-nodes` | :orange_circle: | Toggle all folds | +| `origami-close-node` | :orange_circle: | Close fold | +| `origami-open-node` | :orange_circle: | Open fold | +| `origami-close-all-nodes` | :orange_circle: | Close all folds | +| `origami-open-all-nodes` | :orange_circle: | Open all folds | +| `origami-show-only-node` | :orange_circle: | Show only current | +| `origami-next-fold` | :orange_circle: | Next fold | + ### Round 159 — Magit, Git-link, Blamer, Smerge Extended | Feature | Status | Notes | --- a/src/jerboa-emacs/editor-extra-final.ss +++ b/src/jerboa-emacs/editor-extra-final.ss @@ -16220,3 +16220,47 @@ (def (cmd-smerge-auto-leave app) (let* ((echo (app-state-echo app))) (echo-message! echo "Smerge: auto-leaving (no more conflicts)"))) + +;; ============================================================ +;; Round 160 — Outline, Origami extended (batch 2) +;; ============================================================ + +(def (cmd-outline-promote app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Outline: promoted heading"))) + +(def (cmd-outline-demote app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Outline: demoted heading"))) + +(def (cmd-origami-toggle-node app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Origami: toggled fold at point"))) + +(def (cmd-origami-toggle-all-nodes app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Origami: toggled all folds"))) + +(def (cmd-origami-close-node app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Origami: closed fold at point"))) + +(def (cmd-origami-open-node app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Origami: opened fold at point"))) + +(def (cmd-origami-close-all-nodes app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Origami: closed all folds"))) + +(def (cmd-origami-open-all-nodes app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Origami: opened all folds"))) + +(def (cmd-origami-show-only-node app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Origami: showing only current node"))) + +(def (cmd-origami-next-fold app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Origami: moved to next fold"))) --- a/src/jerboa-emacs/editor-extra-modes.ss +++ b/src/jerboa-emacs/editor-extra-modes.ss @@ -16857,3 +16857,50 @@ (def (cmd-blamer-show-commit-info app) (let* ((echo (app-state-echo app))) (echo-message! echo "Blamer: showing commit info for current line"))) + +;; ============================================================ +;; Round 160 — Outline, Origami folding (batch 1) +;; ============================================================ + +(def (cmd-outline-minor-mode app) + (let* ((echo (app-state-echo app))) + (toggle-mode! app 'outline-minor) + (if (mode-enabled? app 'outline-minor) + (echo-message! echo "Outline minor mode enabled") + (echo-message! echo "Outline minor mode disabled")))) + +(def (cmd-outline-hide-entry app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Outline: hid entry body"))) + +(def (cmd-outline-show-entry app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Outline: showed entry body"))) + +(def (cmd-outline-hide-leaves app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Outline: hid all leaves in subtree"))) + +(def (cmd-outline-show-branches app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Outline: showed all branches in subtree"))) + +(def (cmd-outline-hide-other app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Outline: hid everything except current entry"))) + +(def (cmd-outline-show-children app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Outline: showed direct children"))) + +(def (cmd-outline-mark-subtree app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Outline: marked subtree"))) + +(def (cmd-outline-move-subtree-up app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Outline: moved subtree up"))) + +(def (cmd-outline-move-subtree-down app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Outline: moved subtree down"))) --- a/src/jerboa-emacs/editor-extra-regs2.ss +++ b/src/jerboa-emacs/editor-extra-regs2.ss @@ -4793,4 +4793,25 @@ (register-command! 'smerge-combine-with-next cmd-smerge-combine-with-next) (register-command! 'smerge-refine cmd-smerge-refine) (register-command! 'smerge-auto-leave cmd-smerge-auto-leave) + ;; Round 160 + (register-command! 'outline-minor-mode cmd-outline-minor-mode) + (register-command! 'outline-hide-entry cmd-outline-hide-entry) + (register-command! 'outline-show-entry cmd-outline-show-entry) + (register-command! 'outline-hide-leaves cmd-outline-hide-leaves) + (register-command! 'outline-show-branches cmd-outline-show-branches) + (register-command! 'outline-hide-other cmd-outline-hide-other) + (register-command! 'outline-show-children cmd-outline-show-children) + (register-command! 'outline-mark-subtree cmd-outline-mark-subtree) + (register-command! 'outline-move-subtree-up cmd-outline-move-subtree-up) + (register-command! 'outline-move-subtree-down cmd-outline-move-subtree-down) + (register-command! 'outline-promote cmd-outline-promote) + (register-command! 'outline-demote cmd-outline-demote) + (register-command! 'origami-toggle-node cmd-origami-toggle-node) + (register-command! 'origami-toggle-all-nodes cmd-origami-toggle-all-nodes) + (register-command! 'origami-close-node cmd-origami-close-node) + (register-command! 'origami-open-node cmd-origami-open-node) + (register-command! 'origami-close-all-nodes cmd-origami-close-all-nodes) + (register-command! 'origami-open-all-nodes cmd-origami-open-all-nodes) + (register-command! 'origami-show-only-node cmd-origami-show-only-node) + (register-command! 'origami-next-fold cmd-origami-next-fold) )