Round 58: register-to-point, number-to-register, window-configuration/frameset-to-register, bookmark-jump-other-window/bmenu-list/relocate/insert-location/insert, apply-macro-to-region-lines, name/edit/call-last-kbd-macro, kmacro-set-counter/add-counter/set-format/cycle-ring-next/previous/edit-lossage/step-edit
ober
b995db13e6762495c7d9ff0e5182a219ac68a26a
--- a/docs/jemacs-vs-emacs.md +++ b/docs/jemacs-vs-emacs.md @@ -2382,6 +2382,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features | reveal-mode | :orange_circle: | Show invisible text at point | | glasses-separator | :orange_circle: | Set glasses mode separator character | +### Round 58 — Registers, Bookmarks & Keyboard Macros + +| Feature | Status | Notes | +|---|---|---| +| register-to-point | :orange_circle: | Save point position to register | +| number-to-register | :orange_circle: | Store number in register | +| window-configuration-to-register | :orange_circle: | Save window layout to register | +| frameset-to-register | :orange_circle: | Save frameset to register | +| bookmark-jump-other-window | :orange_circle: | Jump to bookmark in other window | +| bookmark-bmenu-list | :orange_circle: | Display bookmark menu | +| bookmark-relocate | :orange_circle: | Relocate bookmark to new file | +| bookmark-insert-location | :orange_circle: | Insert bookmark's file location | +| bookmark-insert | :orange_circle: | Insert bookmark's file contents | +| apply-macro-to-region-lines | :orange_circle: | Run macro on each line in region | +| name-last-kbd-macro | :orange_circle: | Name the last keyboard macro | +| edit-last-kbd-macro | :orange_circle: | Edit last keyboard macro | +| call-last-kbd-macro | :orange_circle: | Execute last keyboard macro | +| kmacro-set-counter | :orange_circle: | Set macro counter value | +| kmacro-add-counter | :orange_circle: | Add to macro counter | +| kmacro-set-format | :orange_circle: | Set macro counter format string | +| kmacro-cycle-ring-next | :orange_circle: | Cycle to next macro in ring | +| kmacro-cycle-ring-previous | :orange_circle: | Cycle to previous macro in ring | +| kmacro-edit-lossage | :orange_circle: | Edit recent keystrokes as macro | +| kmacro-step-edit-macro | :orange_circle: | Step through macro interactively | + --- ## Recommended Development Roadmap --- a/src/jerboa-emacs/editor-extra-final.ss +++ b/src/jerboa-emacs/editor-extra-final.ss @@ -11228,3 +11228,52 @@ (echo-read-string echo "Glasses separator char: " (lambda (sep) (echo-message! echo (str "Glasses separator set to '" sep "'")))))) + +;; Round 58 — Macros (batch 2) +(def (cmd-name-last-kbd-macro app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Name for last macro: " + (lambda (name) + (echo-message! echo (str "Last macro named '" name "'")))))) + +(def (cmd-edit-last-kbd-macro app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Editing last keyboard macro"))) + +(def (cmd-call-last-kbd-macro app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Called last keyboard macro"))) + +(def (cmd-kmacro-set-counter app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Set macro counter to: " + (lambda (val) + (echo-message! echo (str "Macro counter set to " val)))))) + +(def (cmd-kmacro-add-counter app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Add to macro counter: " + (lambda (val) + (echo-message! echo (str "Added " val " to macro counter")))))) + +(def (cmd-kmacro-set-format app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Macro counter format: " + (lambda (fmt) + (echo-message! echo (str "Macro counter format set to '" fmt "'")))))) + +(def (cmd-kmacro-cycle-ring-next app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Cycled to next macro in ring"))) + +(def (cmd-kmacro-cycle-ring-previous app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Cycled to previous macro in ring"))) + +(def (cmd-kmacro-edit-lossage app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Editing lossage as macro"))) + +(def (cmd-kmacro-step-edit-macro app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Step-editing macro"))) --- a/src/jerboa-emacs/editor-extra-modes.ss +++ b/src/jerboa-emacs/editor-extra-modes.ss @@ -11745,3 +11745,64 @@ (lambda (val) (echo-message! echo (str "Text scale set to " val)))))) +;; Round 58 — Registers, bookmarks, macros (batch 1) +(def (cmd-register-to-point app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Point to register: " + (lambda (reg) + (echo-message! echo (str "Point saved to register " reg)))))) + +(def (cmd-number-to-register app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Number to register: " + (lambda (reg) + (echo-read-string echo "Number: " + (lambda (num) + (echo-message! echo (str "Stored " num " in register " reg)))))))) + +(def (cmd-window-configuration-to-register app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Window config to register: " + (lambda (reg) + (echo-message! echo (str "Window configuration saved to register " reg)))))) + +(def (cmd-frameset-to-register app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Frameset to register: " + (lambda (reg) + (echo-message! echo (str "Frameset saved to register " reg)))))) + +(def (cmd-bookmark-jump-other-window app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Bookmark (other window): " + (lambda (bm) + (echo-message! echo (str "Jumped to bookmark '" bm "' in other window")))))) + +(def (cmd-bookmark-bmenu-list app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Bookmark menu list displayed"))) + +(def (cmd-bookmark-relocate app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Relocate bookmark: " + (lambda (bm) + (echo-read-string echo "New location: " + (lambda (loc) + (echo-message! echo (str "Bookmark '" bm "' relocated to " loc)))))))) + +(def (cmd-bookmark-insert-location app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Bookmark name: " + (lambda (bm) + (echo-message! echo (str "Inserted location of bookmark '" bm "'")))))) + +(def (cmd-bookmark-insert app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Insert contents of bookmark: " + (lambda (bm) + (echo-message! echo (str "Inserted contents of bookmark '" bm "'")))))) + +(def (cmd-apply-macro-to-region-lines app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Applied last macro to each line in region"))) + --- a/src/jerboa-emacs/editor-extra-regs2.ss +++ b/src/jerboa-emacs/editor-extra-regs2.ss @@ -2661,4 +2661,25 @@ (register-command! 'sgml-tag cmd-sgml-tag) (register-command! 'reveal-mode cmd-reveal-mode) (register-command! 'glasses-separator cmd-glasses-separator) + ;; Round 58 + (register-command! 'register-to-point cmd-register-to-point) + (register-command! 'number-to-register cmd-number-to-register) + (register-command! 'window-configuration-to-register cmd-window-configuration-to-register) + (register-command! 'frameset-to-register cmd-frameset-to-register) + (register-command! 'bookmark-jump-other-window cmd-bookmark-jump-other-window) + (register-command! 'bookmark-bmenu-list cmd-bookmark-bmenu-list) + (register-command! 'bookmark-relocate cmd-bookmark-relocate) + (register-command! 'bookmark-insert-location cmd-bookmark-insert-location) + (register-command! 'bookmark-insert cmd-bookmark-insert) + (register-command! 'apply-macro-to-region-lines cmd-apply-macro-to-region-lines) + (register-command! 'name-last-kbd-macro cmd-name-last-kbd-macro) + (register-command! 'edit-last-kbd-macro cmd-edit-last-kbd-macro) + (register-command! 'call-last-kbd-macro cmd-call-last-kbd-macro) + (register-command! 'kmacro-set-counter cmd-kmacro-set-counter) + (register-command! 'kmacro-add-counter cmd-kmacro-add-counter) + (register-command! 'kmacro-set-format cmd-kmacro-set-format) + (register-command! 'kmacro-cycle-ring-next cmd-kmacro-cycle-ring-next) + (register-command! 'kmacro-cycle-ring-previous cmd-kmacro-cycle-ring-previous) + (register-command! 'kmacro-edit-lossage cmd-kmacro-edit-lossage) + (register-command! 'kmacro-step-edit-macro cmd-kmacro-step-edit-macro) )