Round 165: Add 20 CUA rectangles, Picture mode, Artist mode commands
ober
db54b945d9f04cbcc510eb48e1ca5808f57045a7
--- 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 165 — CUA Rectangles, Picture Mode, Artist Mode + +| Feature | Status | Notes | +|---|---|---| +| `cua-sequence-rectangle` | :orange_circle: | Sequence rectangle | +| `cua-fill-char-rectangle` | :orange_circle: | Fill rectangle with char | +| `cua-incr-rectangle` | :orange_circle: | Increment rectangle values | +| `cua-replace-in-rectangle` | :orange_circle: | Replace in rectangle | +| `cua-rotate-rectangle` | :orange_circle: | Rotate rectangle | +| `cua-open-rectangle` | :orange_circle: | Open rectangle | +| `cua-close-rectangle` | :orange_circle: | Close rectangle | +| `cua-copy-rectangle` | :orange_circle: | Copy rectangle | +| `cua-cut-rectangle` | :orange_circle: | Cut rectangle | +| `cua-paste-rectangle` | :orange_circle: | Paste rectangle | +| `picture-forward-column` | :orange_circle: | Forward column | +| `picture-backward-column` | :orange_circle: | Backward column | +| `picture-open-line` | :orange_circle: | Open line | +| `artist-mode` | :orange_circle: | ASCII drawing mode | +| `artist-select-op-line` | :orange_circle: | Draw line | +| `artist-select-op-rectangle` | :orange_circle: | Draw rectangle | +| `artist-select-op-ellipse` | :orange_circle: | Draw ellipse | +| `artist-select-op-circle` | :orange_circle: | Draw circle | +| `artist-select-op-text` | :orange_circle: | Insert text | +| `artist-select-op-spray-can` | :orange_circle: | Spray can | + ### Round 164 — Abbrev, Skeleton, Tempo, Auto-insert, BS | Feature | Status | Notes | --- a/src/jerboa-emacs/editor-extra-final.ss +++ b/src/jerboa-emacs/editor-extra-final.ss @@ -16457,3 +16457,50 @@ (def (cmd-electric-buffer-list app) (let* ((echo (app-state-echo app))) (echo-message! echo "Electric buffer list opened"))) + +;; ============================================================ +;; Round 165 — Picture mode, Artist mode extended (batch 2) +;; ============================================================ + +(def (cmd-picture-forward-column app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Picture: moved forward one column"))) + +(def (cmd-picture-backward-column app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Picture: moved backward one column"))) + +(def (cmd-picture-open-line app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Picture: opened line"))) + +(def (cmd-artist-mode app) + (let* ((echo (app-state-echo app))) + (toggle-mode! app 'artist) + (if (mode-enabled? app 'artist) + (echo-message! echo "Artist mode enabled (ASCII drawing)") + (echo-message! echo "Artist mode disabled")))) + +(def (cmd-artist-select-op-line app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Artist: selected line drawing operation"))) + +(def (cmd-artist-select-op-rectangle app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Artist: selected rectangle drawing operation"))) + +(def (cmd-artist-select-op-ellipse app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Artist: selected ellipse drawing operation"))) + +(def (cmd-artist-select-op-circle app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Artist: selected circle drawing operation"))) + +(def (cmd-artist-select-op-text app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Artist: selected text insertion operation"))) + +(def (cmd-artist-select-op-spray-can app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Artist: selected spray can operation"))) --- a/src/jerboa-emacs/editor-extra-modes.ss +++ b/src/jerboa-emacs/editor-extra-modes.ss @@ -17098,3 +17098,55 @@ (echo-read-string echo "Insert template: " (lambda (name) (echo-message! echo (str "Tempo: inserted template " name)))))) + +;; ============================================================ +;; Round 165 — CUA rectangles, Picture mode, Artist mode (batch 1) +;; ============================================================ + +(def (cmd-cua-sequence-rectangle app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Sequence format: " + (lambda (fmt) + (echo-message! echo (str "CUA: sequenced rectangle with format " fmt)))))) + +(def (cmd-cua-fill-char-rectangle app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Fill character: " + (lambda (ch) + (echo-message! echo (str "CUA: filled rectangle with '" ch "'")))))) + +(def (cmd-cua-incr-rectangle app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "CUA: incremented rectangle values"))) + +(def (cmd-cua-replace-in-rectangle app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Replace in rectangle: " + (lambda (from) + (echo-read-string echo "Replace with: " + (lambda (to) + (echo-message! echo (str "CUA: replaced '" from "' with '" to "' in rectangle")))))))) + +(def (cmd-cua-rotate-rectangle app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "CUA: rotated rectangle"))) + +(def (cmd-cua-open-rectangle app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "CUA: opened rectangle (shifted text right)"))) + +(def (cmd-cua-close-rectangle app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "CUA: closed rectangle"))) + +(def (cmd-cua-copy-rectangle app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "CUA: copied rectangle to kill ring"))) + +(def (cmd-cua-cut-rectangle app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "CUA: cut rectangle to kill ring"))) + +(def (cmd-cua-paste-rectangle app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "CUA: pasted rectangle from kill ring"))) --- a/src/jerboa-emacs/editor-extra-regs2.ss +++ b/src/jerboa-emacs/editor-extra-regs2.ss @@ -4898,4 +4898,25 @@ (register-command! 'bs-cycle-previous cmd-bs-cycle-previous) (register-command! 'buffer-menu-other-window cmd-buffer-menu-other-window) (register-command! 'electric-buffer-list cmd-electric-buffer-list) + ;; Round 165 + (register-command! 'cua-sequence-rectangle cmd-cua-sequence-rectangle) + (register-command! 'cua-fill-char-rectangle cmd-cua-fill-char-rectangle) + (register-command! 'cua-incr-rectangle cmd-cua-incr-rectangle) + (register-command! 'cua-replace-in-rectangle cmd-cua-replace-in-rectangle) + (register-command! 'cua-rotate-rectangle cmd-cua-rotate-rectangle) + (register-command! 'cua-open-rectangle cmd-cua-open-rectangle) + (register-command! 'cua-close-rectangle cmd-cua-close-rectangle) + (register-command! 'cua-copy-rectangle cmd-cua-copy-rectangle) + (register-command! 'cua-cut-rectangle cmd-cua-cut-rectangle) + (register-command! 'cua-paste-rectangle cmd-cua-paste-rectangle) + (register-command! 'picture-forward-column cmd-picture-forward-column) + (register-command! 'picture-backward-column cmd-picture-backward-column) + (register-command! 'picture-open-line cmd-picture-open-line) + (register-command! 'artist-mode cmd-artist-mode) + (register-command! 'artist-select-op-line cmd-artist-select-op-line) + (register-command! 'artist-select-op-rectangle cmd-artist-select-op-rectangle) + (register-command! 'artist-select-op-ellipse cmd-artist-select-op-ellipse) + (register-command! 'artist-select-op-circle cmd-artist-select-op-circle) + (register-command! 'artist-select-op-text cmd-artist-select-op-text) + (register-command! 'artist-select-op-spray-can cmd-artist-select-op-spray-can) )