Round 179: Restclient, Verb, Plz, Request commands

ober

0d87eb9d0d53e3cab51867980c4f8764d753e957

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 3d7eb22..657dcf5 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 179 — Restclient, Verb, Plz, Request
+
+| Feature | Status | Notes |
+|---|---|---|
+| restclient-mode | :orange_circle: | Toggle restclient mode |
+| restclient-http-send-current-stay-in-window | :orange_circle: | Send request, stay in window |
+| restclient-jump-next | :orange_circle: | Jump to next request |
+| restclient-jump-prev | :orange_circle: | Jump to previous request |
+| restclient-toggle-body-visibility | :orange_circle: | Toggle body visibility |
+| restclient-show-info | :orange_circle: | Show request info |
+| restclient-outline-mode | :orange_circle: | Toggle restclient outline mode |
+| verb-send-request-on-point-other-window | :orange_circle: | Send verb request, other window |
+| verb-kill-all-response-buffers | :orange_circle: | Kill all verb response buffers |
+| verb-export-request-on-point | :orange_circle: | Export verb request as curl |
+| verb-set-var | :orange_circle: | Set verb variable |
+| plz-get | :orange_circle: | HTTP GET with plz |
+| plz-post | :orange_circle: | HTTP POST with plz |
+| plz-put | :orange_circle: | HTTP PUT with plz |
+| plz-delete | :orange_circle: | HTTP DELETE with plz |
+| plz-head | :orange_circle: | HTTP HEAD with plz |
+| plz-patch | :orange_circle: | HTTP PATCH with plz |
+| request-response-header | :orange_circle: | Show response headers |
+| request-abort | :orange_circle: | Abort current request |
+| request-log-buffer | :orange_circle: | Show request log buffer |
+
 ### Round 178 — EUDC, LDAP, BBDB-ext, Org-contacts
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 80e9808..8803e46 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -17155,3 +17155,58 @@
 (def (cmd-org-contacts-anniversary-list app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Org-contacts: showing anniversary list")))
+
+;; Round 179 — Restclient, Verb, Plz, Request (batch 2)
+(def (cmd-verb-set-var app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Variable name=value: "
+      (lambda (pair)
+        (echo-message! echo (str "Verb: set variable " pair))))))
+
+(def (cmd-plz-get app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "GET URL: "
+      (lambda (url)
+        (echo-message! echo (str "Plz: GET " url))))))
+
+(def (cmd-plz-post app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "POST URL: "
+      (lambda (url)
+        (echo-message! echo (str "Plz: POST " url))))))
+
+(def (cmd-plz-put app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PUT URL: "
+      (lambda (url)
+        (echo-message! echo (str "Plz: PUT " url))))))
+
+(def (cmd-plz-delete app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "DELETE URL: "
+      (lambda (url)
+        (echo-message! echo (str "Plz: DELETE " url))))))
+
+(def (cmd-plz-head app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "HEAD URL: "
+      (lambda (url)
+        (echo-message! echo (str "Plz: HEAD " url))))))
+
+(def (cmd-plz-patch app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PATCH URL: "
+      (lambda (url)
+        (echo-message! echo (str "Plz: PATCH " url))))))
+
+(def (cmd-request-response-header app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Request: showing response headers")))
+
+(def (cmd-request-abort app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Request: aborted current request")))
+
+(def (cmd-request-log-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Request: showing log buffer")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 25a809b..04294ce 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -17787,3 +17787,50 @@
     (echo-read-string echo "LDAP host: "
       (lambda (host)
         (echo-message! echo (str "LDAP: querying host " host))))))
+
+;; Round 179 — Restclient, Verb, Plz, Request (batch 1)
+(def (cmd-restclient-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'restclient)
+    (if (mode-enabled? app 'restclient)
+      (echo-message! echo "Restclient mode enabled")
+      (echo-message! echo "Restclient mode disabled"))))
+
+(def (cmd-restclient-http-send-current-stay-in-window app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Restclient: sent request (staying in window)")))
+
+(def (cmd-restclient-jump-next app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Restclient: jumped to next request")))
+
+(def (cmd-restclient-jump-prev app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Restclient: jumped to previous request")))
+
+(def (cmd-restclient-toggle-body-visibility app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Restclient: toggled body visibility")))
+
+(def (cmd-restclient-show-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Restclient: showing request info")))
+
+(def (cmd-restclient-outline-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'restclient-outline)
+    (if (mode-enabled? app 'restclient-outline)
+      (echo-message! echo "Restclient outline mode enabled")
+      (echo-message! echo "Restclient outline mode disabled"))))
+
+(def (cmd-verb-send-request-on-point-other-window app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Verb: sent request (other window)")))
+
+(def (cmd-verb-kill-all-response-buffers app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Verb: killed all response buffers")))
+
+(def (cmd-verb-export-request-on-point app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Verb: exported request as curl command")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 8d294b5..56d72f3 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5192,4 +5192,25 @@
   (register-command! 'org-contacts-export-vcard cmd-org-contacts-export-vcard)
   (register-command! 'org-contacts-import-vcard cmd-org-contacts-import-vcard)
   (register-command! 'org-contacts-anniversary-list cmd-org-contacts-anniversary-list)
+  ;; Round 179 — Restclient, Verb, Plz, Request
+  (register-command! 'restclient-mode cmd-restclient-mode)
+  (register-command! 'restclient-http-send-current-stay-in-window cmd-restclient-http-send-current-stay-in-window)
+  (register-command! 'restclient-jump-next cmd-restclient-jump-next)
+  (register-command! 'restclient-jump-prev cmd-restclient-jump-prev)
+  (register-command! 'restclient-toggle-body-visibility cmd-restclient-toggle-body-visibility)
+  (register-command! 'restclient-show-info cmd-restclient-show-info)
+  (register-command! 'restclient-outline-mode cmd-restclient-outline-mode)
+  (register-command! 'verb-send-request-on-point-other-window cmd-verb-send-request-on-point-other-window)
+  (register-command! 'verb-kill-all-response-buffers cmd-verb-kill-all-response-buffers)
+  (register-command! 'verb-export-request-on-point cmd-verb-export-request-on-point)
+  (register-command! 'verb-set-var cmd-verb-set-var)
+  (register-command! 'plz-get cmd-plz-get)
+  (register-command! 'plz-post cmd-plz-post)
+  (register-command! 'plz-put cmd-plz-put)
+  (register-command! 'plz-delete cmd-plz-delete)
+  (register-command! 'plz-head cmd-plz-head)
+  (register-command! 'plz-patch cmd-plz-patch)
+  (register-command! 'request-response-header cmd-request-response-header)
+  (register-command! 'request-abort cmd-request-abort)
+  (register-command! 'request-log-buffer cmd-request-log-buffer)
 )