Round 227: Ement - Matrix client (20 commands)

ober

7882dccff57ab1bbec0969528805ae27b98cf3a3

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 71015a4..8c58883 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 227 — Ement (Matrix client)
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| ement-connect | :orange_circle: | Connect to Matrix server |
+| ement-disconnect | :orange_circle: | Disconnect from server |
+| ement-list-rooms | :orange_circle: | List rooms |
+| ement-create-room | :orange_circle: | Create room |
+| ement-join-room | :orange_circle: | Join room |
+| ement-leave-room | :orange_circle: | Leave room |
+| ement-invite-user | :orange_circle: | Invite user to room |
+| ement-send-message | :orange_circle: | Send message |
+| ement-send-emote | :orange_circle: | Send emote |
+| ement-send-file | :orange_circle: | Send file |
+| ement-room-set-topic | :orange_circle: | Set room topic |
+| ement-room-list | :orange_circle: | Show room list |
+| ement-view-room | :orange_circle: | View room |
+| ement-describe-room | :orange_circle: | Describe room |
+| ement-room-tag | :orange_circle: | Tag room |
+| ement-notifications | :orange_circle: | Show notifications |
+| ement-direct-message | :orange_circle: | Send direct message |
+| ement-ignore-user | :orange_circle: | Ignore user |
+| ement-unignore-user | :orange_circle: | Unignore user |
+| ement-room-toggle-space | :orange_circle: | Toggle space for room |
+
 ### Round 226 — Nix ext, Guix ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 4773351..a812491 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -19424,3 +19424,51 @@
 (def (cmd-guix-copy app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Guix: copying store items")))
+
+;;; Round 227 — Ement (Matrix client) (batch 2)
+
+(def (cmd-ement-room-set-topic app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Topic: "
+      (lambda (topic)
+        (echo-message! echo (str "Ement: set room topic to " topic))))))
+
+(def (cmd-ement-room-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ement: showing room list")))
+
+(def (cmd-ement-view-room app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ement: viewing room")))
+
+(def (cmd-ement-describe-room app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ement: describing room")))
+
+(def (cmd-ement-room-tag app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Tag: "
+      (lambda (tag)
+        (echo-message! echo (str "Ement: tagged room " tag))))))
+
+(def (cmd-ement-notifications app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ement: showing notifications")))
+
+(def (cmd-ement-direct-message app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "User: "
+      (lambda (user)
+        (echo-message! echo (str "Ement: direct message to " user))))))
+
+(def (cmd-ement-ignore-user app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ement: ignored user")))
+
+(def (cmd-ement-unignore-user app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ement: unignored user")))
+
+(def (cmd-ement-room-toggle-space app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ement: toggled space for room")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index cb64d36..37640d7 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -20080,3 +20080,57 @@
 (def (cmd-guix-hash app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Guix: computing hash")))
+
+;;; Round 227 — Ement (Matrix client) (batch 1)
+
+(def (cmd-ement-connect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Server: "
+      (lambda (srv)
+        (echo-message! echo (str "Ement: connecting to " srv))))))
+
+(def (cmd-ement-disconnect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ement: disconnected")))
+
+(def (cmd-ement-list-rooms app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ement: listing rooms")))
+
+(def (cmd-ement-create-room app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Room name: "
+      (lambda (name)
+        (echo-message! echo (str "Ement: creating room " name))))))
+
+(def (cmd-ement-join-room app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Room: "
+      (lambda (room)
+        (echo-message! echo (str "Ement: joining room " room))))))
+
+(def (cmd-ement-leave-room app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ement: left room")))
+
+(def (cmd-ement-invite-user app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "User: "
+      (lambda (user)
+        (echo-message! echo (str "Ement: invited " user))))))
+
+(def (cmd-ement-send-message app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Message: "
+      (lambda (msg)
+        (echo-message! echo (str "Ement: sent message"))))))
+
+(def (cmd-ement-send-emote app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Emote: "
+      (lambda (emote)
+        (echo-message! echo (str "Ement: sent emote"))))))
+
+(def (cmd-ement-send-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ement: sent file")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index a528e60..b47c154 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -6200,4 +6200,25 @@
   (register-command! 'guix-substitute cmd-guix-substitute)
   (register-command! 'guix-archive cmd-guix-archive)
   (register-command! 'guix-copy cmd-guix-copy)
+  ;; Round 227
+  (register-command! 'ement-connect cmd-ement-connect)
+  (register-command! 'ement-disconnect cmd-ement-disconnect)
+  (register-command! 'ement-list-rooms cmd-ement-list-rooms)
+  (register-command! 'ement-create-room cmd-ement-create-room)
+  (register-command! 'ement-join-room cmd-ement-join-room)
+  (register-command! 'ement-leave-room cmd-ement-leave-room)
+  (register-command! 'ement-invite-user cmd-ement-invite-user)
+  (register-command! 'ement-send-message cmd-ement-send-message)
+  (register-command! 'ement-send-emote cmd-ement-send-emote)
+  (register-command! 'ement-send-file cmd-ement-send-file)
+  (register-command! 'ement-room-set-topic cmd-ement-room-set-topic)
+  (register-command! 'ement-room-list cmd-ement-room-list)
+  (register-command! 'ement-view-room cmd-ement-view-room)
+  (register-command! 'ement-describe-room cmd-ement-describe-room)
+  (register-command! 'ement-room-tag cmd-ement-room-tag)
+  (register-command! 'ement-notifications cmd-ement-notifications)
+  (register-command! 'ement-direct-message cmd-ement-direct-message)
+  (register-command! 'ement-ignore-user cmd-ement-ignore-user)
+  (register-command! 'ement-unignore-user cmd-ement-unignore-user)
+  (register-command! 'ement-room-toggle-space cmd-ement-room-toggle-space)
 )