Round 191: Browse-url-ext, SHR-ext, URL-ext, Calc-ext, Eglot-ext, Electric-ext commands

ober

76099c7f4141f70db03c2c29d31872444093cf10

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index c4cfcd4..1cff543 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 191 — Browse-url-ext, SHR-ext, URL-ext, Calc-ext, Eglot-ext, Electric-ext
+
+| Feature | Status | Notes |
+|---|---|---|
+| browse-url-with-browser-kind | :orange_circle: | Open URL with preferred browser |
+| shr-browse-image | :orange_circle: | Browse image at point in SHR |
+| url-cookie-list | :orange_circle: | List URL cookies |
+| url-handler-mode | :orange_circle: | Toggle URL handler mode |
+| browse-url-handlers | :orange_circle: | List configured URL handlers |
+| url-retrieve-synchronously-display | :orange_circle: | Retrieve and display URL |
+| calc-trail-next | :orange_circle: | Move to next calc trail entry |
+| calc-trail-previous | :orange_circle: | Move to previous calc trail entry |
+| calc-undo-history | :orange_circle: | Show calc undo history |
+| zone-when-idle | :orange_circle: | Activate zone after idle time |
+| list-packages-by-status | :orange_circle: | List packages filtered by status |
+| package-browse-url | :orange_circle: | Open package homepage |
+| native-compile-prune-cache | :orange_circle: | Prune native compilation cache |
+| emacs-lock-mode | :orange_circle: | Toggle buffer lock protection |
+| consult-ripgrep-all | :orange_circle: | Ripgrep across all file types |
+| xref-find-references-and-replace | :orange_circle: | Find references and replace |
+| project-prompt-project-dir | :orange_circle: | Prompt for project directory |
+| eglot-rename-symbol | :orange_circle: | Rename symbol via LSP |
+| eglot-format-region | :orange_circle: | Format region via LSP |
+| electric-pair-local-mode | :orange_circle: | Toggle electric pair local mode |
+
 ### Round 190 — CUA-ext, Repeat, Pulse, Whitespace-ext, Pixel-scroll, Context-menu, Describe-ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 77e938c..c58f910 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -17749,3 +17749,62 @@
     (if (mode-enabled? app 'checkdoc)
       (echo-message! echo "Checkdoc minor mode enabled")
       (echo-message! echo "Checkdoc minor mode disabled"))))
+
+;; Round 191 — Package-ext, Native-compile-ext, Emacs-lock, Consult-ext, Xref-ext, Eglot-ext, Electric-ext
+(def (cmd-list-packages-by-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package status filter: "
+      (lambda (status)
+        (echo-message! echo (str "Packages: listing by status '" status "'"))))))
+
+(def (cmd-package-browse-url app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Package: opening homepage in browser")))
+
+(def (cmd-native-compile-prune-cache app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Native compile: pruned cache")))
+
+(def (cmd-emacs-lock-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'emacs-lock)
+    (if (mode-enabled? app 'emacs-lock)
+      (echo-message! echo "Emacs lock mode enabled — buffer protected")
+      (echo-message! echo "Emacs lock mode disabled"))))
+
+(def (cmd-consult-ripgrep-all app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Ripgrep all pattern: "
+      (lambda (pat)
+        (echo-message! echo (str "Consult ripgrep-all: searching for '" pat "'"))))))
+
+(def (cmd-xref-find-references-and-replace app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Replace references of: "
+      (lambda (sym)
+        (echo-read-string echo (str "Replace '" sym "' with: ")
+          (lambda (rep)
+            (echo-message! echo (str "Xref: replaced references of '" sym "' with '" rep "'"))))))))
+
+(def (cmd-project-prompt-project-dir app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Project directory: "
+      (lambda (dir)
+        (echo-message! echo (str "Project: set directory to " dir))))))
+
+(def (cmd-eglot-rename-symbol app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Rename symbol to: "
+      (lambda (name)
+        (echo-message! echo (str "Eglot: renamed symbol to " name))))))
+
+(def (cmd-eglot-format-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Eglot: formatted region")))
+
+(def (cmd-electric-pair-local-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'electric-pair-local)
+    (if (mode-enabled? app 'electric-pair-local)
+      (echo-message! echo "Electric pair local mode enabled")
+      (echo-message! echo "Electric pair local mode disabled"))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 99177ff..9c13db1 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -18383,3 +18383,53 @@
 (def (cmd-pixel-scroll-up app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Pixel scroll: scrolled up")))
+
+;; Round 191 — Browse-url-ext, SHR-ext, URL-ext, Calc-ext, Zone-ext
+(def (cmd-browse-url-with-browser-kind app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "URL: "
+      (lambda (url)
+        (echo-message! echo (str "Browse: opening " url " with preferred browser"))))))
+
+(def (cmd-shr-browse-image app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SHR: browsing image at point")))
+
+(def (cmd-url-cookie-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "URL: listing cookies")))
+
+(def (cmd-url-handler-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'url-handler)
+    (if (mode-enabled? app 'url-handler)
+      (echo-message! echo "URL handler mode enabled")
+      (echo-message! echo "URL handler mode disabled"))))
+
+(def (cmd-browse-url-handlers app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Browse-URL: listing configured handlers")))
+
+(def (cmd-url-retrieve-synchronously-display app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "URL to retrieve: "
+      (lambda (url)
+        (echo-message! echo (str "URL: retrieved " url))))))
+
+(def (cmd-calc-trail-next app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Calc trail: moved to next entry")))
+
+(def (cmd-calc-trail-previous app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Calc trail: moved to previous entry")))
+
+(def (cmd-calc-undo-history app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Calc: showing undo history")))
+
+(def (cmd-zone-when-idle app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Zone idle seconds: "
+      (lambda (secs)
+        (echo-message! echo (str "Zone: will activate after " secs "s idle"))))))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 37692a5..91e571f 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5444,4 +5444,25 @@
   (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)
+  ;; Round 191
+  (register-command! 'browse-url-with-browser-kind cmd-browse-url-with-browser-kind)
+  (register-command! 'shr-browse-image cmd-shr-browse-image)
+  (register-command! 'url-cookie-list cmd-url-cookie-list)
+  (register-command! 'url-handler-mode cmd-url-handler-mode)
+  (register-command! 'browse-url-handlers cmd-browse-url-handlers)
+  (register-command! 'url-retrieve-synchronously-display cmd-url-retrieve-synchronously-display)
+  (register-command! 'calc-trail-next cmd-calc-trail-next)
+  (register-command! 'calc-trail-previous cmd-calc-trail-previous)
+  (register-command! 'calc-undo-history cmd-calc-undo-history)
+  (register-command! 'zone-when-idle cmd-zone-when-idle)
+  (register-command! 'list-packages-by-status cmd-list-packages-by-status)
+  (register-command! 'package-browse-url cmd-package-browse-url)
+  (register-command! 'native-compile-prune-cache cmd-native-compile-prune-cache)
+  (register-command! 'emacs-lock-mode cmd-emacs-lock-mode)
+  (register-command! 'consult-ripgrep-all cmd-consult-ripgrep-all)
+  (register-command! 'xref-find-references-and-replace cmd-xref-find-references-and-replace)
+  (register-command! 'project-prompt-project-dir cmd-project-prompt-project-dir)
+  (register-command! 'eglot-rename-symbol cmd-eglot-rename-symbol)
+  (register-command! 'eglot-format-region cmd-eglot-format-region)
+  (register-command! 'electric-pair-local-mode cmd-electric-pair-local-mode)
 )