Round 190: CUA-ext, Repeat, Pulse, Whitespace-ext, Pixel-scroll, Context-menu commands

ober

212fdc3660cb49e67f7cd3a912bbf4d827ffa875

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index bbad055..c4cfcd4 100644
--- 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 190 — CUA-ext, Repeat, Pulse, Whitespace-ext, Pixel-scroll, Context-menu, Describe-ext
+
+| Feature | Status | Notes |
+|---|---|---|
+| cua-exchange-point-and-mark | :orange_circle: | Exchange point and mark in CUA mode |
+| repeat-mode | :orange_circle: | Toggle repeat mode |
+| pulse-momentary-highlight-one-line-at-point | :orange_circle: | Pulse highlight current line |
+| whitespace-cleanup-region | :orange_circle: | Clean up whitespace in region |
+| whitespace-report | :orange_circle: | Generate whitespace report for buffer |
+| whitespace-report-region | :orange_circle: | Generate whitespace report for region |
+| auto-revert-set-timer | :orange_circle: | Set auto-revert timer interval |
+| so-long-revert | :orange_circle: | Revert so-long mode optimizations |
+| pixel-scroll-precision-mode | :orange_circle: | Toggle pixel scroll precision mode |
+| pixel-scroll-up | :orange_circle: | Pixel-precise scroll up |
+| pixel-scroll-down | :orange_circle: | Pixel-precise scroll down |
+| context-menu-mode | :orange_circle: | Toggle context menu mode |
+| tab-bar-rename-tab-by-name | :orange_circle: | Rename tab by name |
+| file-name-shadow-mode | :orange_circle: | Toggle file name shadow mode |
+| read-only-mode-toggle-readonly | :orange_circle: | Toggle read-only state |
+| describe-keymap | :orange_circle: | Describe a keymap |
+| list-threads | :orange_circle: | List active threads |
+| emoji-recent | :orange_circle: | Show recent emojis |
+| elisp-eval-region-and-replace | :orange_circle: | Eval region and replace with result |
+| checkdoc-minor-mode | :orange_circle: | Toggle checkdoc minor mode |
+
 ### Round 189 — Jinx-ext, Flyspell-ext, Langtool-ext, Wcheck
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 896cab8..77e938c 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -17695,3 +17695,57 @@
     (echo-read-string echo "Set language: "
       (lambda (lang)
         (echo-message! echo (str "Guess-language: set to " lang))))))
+
+;; Round 190 — Pixel-scroll-ext, Context-menu, Tab-bar-ext, File-name-shadow, Describe-ext, Threads, Emoji-ext, Elisp-ext, Checkdoc
+(def (cmd-pixel-scroll-down app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Pixel scroll: scrolled down")))
+
+(def (cmd-context-menu-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'context-menu)
+    (if (mode-enabled? app 'context-menu)
+      (echo-message! echo "Context menu mode enabled")
+      (echo-message! echo "Context menu mode disabled"))))
+
+(def (cmd-tab-bar-rename-tab-by-name app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Rename tab to: "
+      (lambda (name)
+        (echo-message! echo (str "Tab renamed to: " name))))))
+
+(def (cmd-file-name-shadow-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'file-name-shadow)
+    (if (mode-enabled? app 'file-name-shadow)
+      (echo-message! echo "File name shadow mode enabled")
+      (echo-message! echo "File name shadow mode disabled"))))
+
+(def (cmd-read-only-mode-toggle-readonly app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Toggled read-only state")))
+
+(def (cmd-describe-keymap app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Describe keymap: "
+      (lambda (km)
+        (echo-message! echo (str "Keymap: " km))))))
+
+(def (cmd-list-threads app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Threads: listing active threads")))
+
+(def (cmd-emoji-recent app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Emoji: showing recent emojis")))
+
+(def (cmd-elisp-eval-region-and-replace app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elisp: evaluated region and replaced")))
+
+(def (cmd-checkdoc-minor-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'checkdoc)
+    (if (mode-enabled? app 'checkdoc)
+      (echo-message! echo "Checkdoc minor mode enabled")
+      (echo-message! echo "Checkdoc minor mode disabled"))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index e19a388..99177ff 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -18334,3 +18334,52 @@
 (def (cmd-langtool-correct-at-point app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "LanguageTool: corrected at point")))
+
+;; Round 190 — CUA-ext, Repeat, Pulse, Whitespace-ext, Autorevert-ext, So-long, Pixel-scroll
+(def (cmd-cua-exchange-point-and-mark app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CUA: exchanged point and mark")))
+
+(def (cmd-repeat-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'repeat)
+    (if (mode-enabled? app 'repeat)
+      (echo-message! echo "Repeat mode enabled")
+      (echo-message! echo "Repeat mode disabled"))))
+
+(def (cmd-pulse-momentary-highlight-one-line-at-point app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Pulse: highlighted current line")))
+
+(def (cmd-whitespace-cleanup-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Whitespace: cleaned up region")))
+
+(def (cmd-whitespace-report app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Whitespace: report generated for buffer")))
+
+(def (cmd-whitespace-report-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Whitespace: report generated for region")))
+
+(def (cmd-auto-revert-set-timer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Auto-revert interval (seconds): "
+      (lambda (val)
+        (echo-message! echo (str "Auto-revert timer set to " val "s"))))))
+
+(def (cmd-so-long-revert app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "So-long: reverted to normal mode")))
+
+(def (cmd-pixel-scroll-precision-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'pixel-scroll-precision)
+    (if (mode-enabled? app 'pixel-scroll-precision)
+      (echo-message! echo "Pixel scroll precision mode enabled")
+      (echo-message! echo "Pixel scroll precision mode disabled"))))
+
+(def (cmd-pixel-scroll-up app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Pixel scroll: scrolled up")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 2c9b494..37692a5 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5423,4 +5423,25 @@
   (register-command! 'guess-language-mode cmd-guess-language-mode)
   (register-command! 'guess-language-mark-lines cmd-guess-language-mark-lines)
   (register-command! 'guess-language-set-language cmd-guess-language-set-language)
+  ;; Round 190
+  (register-command! 'cua-exchange-point-and-mark cmd-cua-exchange-point-and-mark)
+  (register-command! 'repeat-mode cmd-repeat-mode)
+  (register-command! 'pulse-momentary-highlight-one-line-at-point cmd-pulse-momentary-highlight-one-line-at-point)
+  (register-command! 'whitespace-cleanup-region cmd-whitespace-cleanup-region)
+  (register-command! 'whitespace-report cmd-whitespace-report)
+  (register-command! 'whitespace-report-region cmd-whitespace-report-region)
+  (register-command! 'auto-revert-set-timer cmd-auto-revert-set-timer)
+  (register-command! 'so-long-revert cmd-so-long-revert)
+  (register-command! 'pixel-scroll-precision-mode cmd-pixel-scroll-precision-mode)
+  (register-command! 'pixel-scroll-up cmd-pixel-scroll-up)
+  (register-command! 'pixel-scroll-down cmd-pixel-scroll-down)
+  (register-command! 'context-menu-mode cmd-context-menu-mode)
+  (register-command! 'tab-bar-rename-tab-by-name cmd-tab-bar-rename-tab-by-name)
+  (register-command! 'file-name-shadow-mode cmd-file-name-shadow-mode)
+  (register-command! 'read-only-mode-toggle-readonly cmd-read-only-mode-toggle-readonly)
+  (register-command! 'describe-keymap cmd-describe-keymap)
+  (register-command! 'list-threads cmd-list-threads)
+  (register-command! 'emoji-recent cmd-emoji-recent)
+  (register-command! 'elisp-eval-region-and-replace cmd-elisp-eval-region-and-replace)
+  (register-command! 'checkdoc-minor-mode cmd-checkdoc-minor-mode)
 )