Round 230: Activities ext, Bufler ext (20 commands)

ober

0444cbc2881029af0b2fa300f65d0d0417afe8f6

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 352ce96..eff6d09 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 230 — Activities ext, Bufler ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| activities-list | :orange_circle: | List activities |
+| activities-rename | :orange_circle: | Rename activity |
+| activities-revert | :orange_circle: | Revert activity |
+| activities-discard | :orange_circle: | Discard activity |
+| activities-save-all | :orange_circle: | Save all activities |
+| activities-tabs-mode | :orange_circle: | Toggle activities tabs mode |
+| activities-bookmark-set | :orange_circle: | Set activity bookmark |
+| activities-bookmark-jump | :orange_circle: | Jump to activity bookmark |
+| activities-define | :orange_circle: | Define new activity |
+| activities-set | :orange_circle: | Set activity state |
+| activities-switch-buffer | :orange_circle: | Switch buffer in activity |
+| activities-mode | :orange_circle: | Toggle activities mode |
+| activities-tabs-bar-mode | :orange_circle: | Toggle tabs bar mode |
+| activities-next | :orange_circle: | Switch to next activity |
+| activities-previous | :orange_circle: | Switch to previous activity |
+| bufler | :orange_circle: | Open Bufler buffer manager |
+| bufler-workspace-frame-set | :orange_circle: | Set workspace frame |
+| bufler-workspace-focus-buffer | :orange_circle: | Focus buffer in workspace |
+| bufler-defauto-group | :orange_circle: | Define auto group |
+| bufler-workspace-mode | :orange_circle: | Toggle Bufler workspace mode |
+
 ### Round 229 — Nov ext, Djvu ext, Calibredb
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index c5684ed..849cd47 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -19558,3 +19558,54 @@
 (def (cmd-calibredb-fetch-metadata app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Calibredb: fetching metadata")))
+
+;;; Round 230 — Activities ext, Bufler ext (batch 2)
+
+(def (cmd-activities-switch-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Activities: switching buffer in activity")))
+
+(def (cmd-activities-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'activities)
+    (if (mode-enabled? app 'activities)
+      (echo-message! echo "Activities: mode enabled")
+      (echo-message! echo "Activities: mode disabled"))))
+
+(def (cmd-activities-tabs-bar-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'activities-tabs-bar)
+    (if (mode-enabled? app 'activities-tabs-bar)
+      (echo-message! echo "Activities: tabs bar mode enabled")
+      (echo-message! echo "Activities: tabs bar mode disabled"))))
+
+(def (cmd-activities-next app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Activities: switched to next")))
+
+(def (cmd-activities-previous app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Activities: switched to previous")))
+
+(def (cmd-bufler app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bufler: opened buffer manager")))
+
+(def (cmd-bufler-workspace-frame-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bufler: set workspace frame")))
+
+(def (cmd-bufler-workspace-focus-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bufler: focused buffer in workspace")))
+
+(def (cmd-bufler-defauto-group app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bufler: defined auto group")))
+
+(def (cmd-bufler-workspace-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'bufler-workspace)
+    (if (mode-enabled? app 'bufler-workspace)
+      (echo-message! echo "Bufler: workspace mode enabled")
+      (echo-message! echo "Bufler: workspace mode disabled"))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index b9b8a9f..64b42df 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -20229,3 +20229,52 @@
     (echo-read-string echo "Search: "
       (lambda (q)
         (echo-message! echo (str "Djvu: occur " q))))))
+
+;;; Round 230 — Activities ext, Bufler ext (batch 1)
+
+(def (cmd-activities-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Activities: listing activities")))
+
+(def (cmd-activities-rename app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "New name: "
+      (lambda (name)
+        (echo-message! echo (str "Activities: renamed to " name))))))
+
+(def (cmd-activities-revert app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Activities: reverted activity")))
+
+(def (cmd-activities-discard app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Activities: discarded activity")))
+
+(def (cmd-activities-save-all app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Activities: saved all activities")))
+
+(def (cmd-activities-tabs-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'activities-tabs)
+    (if (mode-enabled? app 'activities-tabs)
+      (echo-message! echo "Activities: tabs mode enabled")
+      (echo-message! echo "Activities: tabs mode disabled"))))
+
+(def (cmd-activities-bookmark-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Activities: set bookmark")))
+
+(def (cmd-activities-bookmark-jump app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Activities: jumped to bookmark")))
+
+(def (cmd-activities-define app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Activity: "
+      (lambda (name)
+        (echo-message! echo (str "Activities: defined " name))))))
+
+(def (cmd-activities-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Activities: set activity state")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 4e789e0..bea236a 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -6263,4 +6263,25 @@
   (register-command! 'calibredb-set-metadata cmd-calibredb-set-metadata)
   (register-command! 'calibredb-open-file-with-default-tool cmd-calibredb-open-file-with-default-tool)
   (register-command! 'calibredb-fetch-metadata cmd-calibredb-fetch-metadata)
+  ;; Round 230
+  (register-command! 'activities-list cmd-activities-list)
+  (register-command! 'activities-rename cmd-activities-rename)
+  (register-command! 'activities-revert cmd-activities-revert)
+  (register-command! 'activities-discard cmd-activities-discard)
+  (register-command! 'activities-save-all cmd-activities-save-all)
+  (register-command! 'activities-tabs-mode cmd-activities-tabs-mode)
+  (register-command! 'activities-bookmark-set cmd-activities-bookmark-set)
+  (register-command! 'activities-bookmark-jump cmd-activities-bookmark-jump)
+  (register-command! 'activities-define cmd-activities-define)
+  (register-command! 'activities-set cmd-activities-set)
+  (register-command! 'activities-switch-buffer cmd-activities-switch-buffer)
+  (register-command! 'activities-mode cmd-activities-mode)
+  (register-command! 'activities-tabs-bar-mode cmd-activities-tabs-bar-mode)
+  (register-command! 'activities-next cmd-activities-next)
+  (register-command! 'activities-previous cmd-activities-previous)
+  (register-command! 'bufler cmd-bufler)
+  (register-command! 'bufler-workspace-frame-set cmd-bufler-workspace-frame-set)
+  (register-command! 'bufler-workspace-focus-buffer cmd-bufler-workspace-focus-buffer)
+  (register-command! 'bufler-defauto-group cmd-bufler-defauto-group)
+  (register-command! 'bufler-workspace-mode cmd-bufler-workspace-mode)
 )