Round 200: Pomodoro, Focus, Activities, Burly, Bufler, IBuffer-ext commands

ober

6869b0f44f9ee93e1f6308ab6ac8fe2984a35139

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 8814adb..0013f77 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 200 — Pomodoro, Focus, Activities, Burly, Bufler, IBuffer-ext
+
+| Feature | Status | Notes |
+|---|---|---|
+| pomodoro-start | :orange_circle: | Start Pomodoro timer |
+| pomodoro-stop | :orange_circle: | Stop Pomodoro timer |
+| pomodoro-pause | :orange_circle: | Pause Pomodoro timer |
+| pomodoro-resume | :orange_circle: | Resume Pomodoro timer |
+| pomodoro-status | :orange_circle: | Show Pomodoro status |
+| focus-pin-buffer | :orange_circle: | Pin buffer in focus mode |
+| focus-unpin-buffer | :orange_circle: | Unpin buffer from focus mode |
+| activities-new | :orange_circle: | Create new activity |
+| activities-resume | :orange_circle: | Resume an activity |
+| activities-suspend | :orange_circle: | Suspend current activity |
+| activities-switch | :orange_circle: | Switch to activity |
+| activities-kill | :orange_circle: | Kill current activity |
+| burly-bookmark-frames | :orange_circle: | Bookmark frames |
+| bufler-list | :orange_circle: | Show Bufler buffer list |
+| bufler-switch-buffer | :orange_circle: | Switch buffer with Bufler |
+| ibuffer-filter-by-process | :orange_circle: | Filter by process |
+| ibuffer-filter-by-used-mode | :orange_circle: | Filter by used mode |
+| ibuffer-filter-by-predicate | :orange_circle: | Filter by predicate |
+| ibuffer-decompose-filter | :orange_circle: | Decompose filter group |
+| ibuffer-nesting-filter-groups | :orange_circle: | Nest filter groups |
+
 ### Round 199 — Denote-ext, Org-roam-ext, Citar-ext, Biblio-ext, Org-ql, Org-sidebar
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 3db46c7..a7e2f52 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -18184,3 +18184,54 @@
     (if (mode-enabled? app 'org-fancy-priorities)
       (echo-message! echo "Org fancy priorities mode enabled")
       (echo-message! echo "Org fancy priorities mode disabled"))))
+
+;; Round 200 — Activities-ext, Burly, Bufler, IBuffer-ext
+(def (cmd-activities-switch app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Switch to activity: "
+      (lambda (name)
+        (echo-message! echo (str "Activities: switched to '" name "'"))))))
+
+(def (cmd-activities-kill app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Activities: killed current activity")))
+
+(def (cmd-burly-bookmark-frames app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Bookmark name: "
+      (lambda (name)
+        (echo-message! echo (str "Burly: bookmarked frames as '" name "'"))))))
+
+(def (cmd-bufler-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bufler: showing buffer list")))
+
+(def (cmd-bufler-switch-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Switch to buffer: "
+      (lambda (buf)
+        (echo-message! echo (str "Bufler: switched to " buf))))))
+
+(def (cmd-ibuffer-filter-by-process app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "IBuffer: filtered by process")))
+
+(def (cmd-ibuffer-filter-by-used-mode app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Filter by mode: "
+      (lambda (mode)
+        (echo-message! echo (str "IBuffer: filtered by mode " mode))))))
+
+(def (cmd-ibuffer-filter-by-predicate app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Filter predicate: "
+      (lambda (pred)
+        (echo-message! echo (str "IBuffer: filtered by predicate " pred))))))
+
+(def (cmd-ibuffer-decompose-filter app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "IBuffer: decomposed filter group")))
+
+(def (cmd-ibuffer-nesting-filter-groups app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "IBuffer: nesting filter groups")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index e09b19f..1bc69fc 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -18820,3 +18820,48 @@
 (def (cmd-citar-export-local-bib app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Citar: exported local bibliography")))
+
+;; Round 200 — Pomodoro, Focus, Activities
+(def (cmd-pomodoro-start app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Pomodoro: started 25-minute timer")))
+
+(def (cmd-pomodoro-stop app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Pomodoro: stopped timer")))
+
+(def (cmd-pomodoro-pause app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Pomodoro: paused timer")))
+
+(def (cmd-pomodoro-resume app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Pomodoro: resumed timer")))
+
+(def (cmd-pomodoro-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Pomodoro: showing status")))
+
+(def (cmd-focus-pin-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Focus: pinned current buffer")))
+
+(def (cmd-focus-unpin-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Focus: unpinned current buffer")))
+
+(def (cmd-activities-new app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "New activity name: "
+      (lambda (name)
+        (echo-message! echo (str "Activities: created '" name "'"))))))
+
+(def (cmd-activities-resume app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Resume activity: "
+      (lambda (name)
+        (echo-message! echo (str "Activities: resumed '" name "'"))))))
+
+(def (cmd-activities-suspend app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Activities: suspended current activity")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 9df08a6..61fb5ef 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5633,4 +5633,25 @@
   (register-command! 'org-edna-mode cmd-org-edna-mode)
   (register-command! 'org-depend-mode cmd-org-depend-mode)
   (register-command! 'org-fancy-priorities-mode cmd-org-fancy-priorities-mode)
+  ;; Round 200
+  (register-command! 'pomodoro-start cmd-pomodoro-start)
+  (register-command! 'pomodoro-stop cmd-pomodoro-stop)
+  (register-command! 'pomodoro-pause cmd-pomodoro-pause)
+  (register-command! 'pomodoro-resume cmd-pomodoro-resume)
+  (register-command! 'pomodoro-status cmd-pomodoro-status)
+  (register-command! 'focus-pin-buffer cmd-focus-pin-buffer)
+  (register-command! 'focus-unpin-buffer cmd-focus-unpin-buffer)
+  (register-command! 'activities-new cmd-activities-new)
+  (register-command! 'activities-resume cmd-activities-resume)
+  (register-command! 'activities-suspend cmd-activities-suspend)
+  (register-command! 'activities-switch cmd-activities-switch)
+  (register-command! 'activities-kill cmd-activities-kill)
+  (register-command! 'burly-bookmark-frames cmd-burly-bookmark-frames)
+  (register-command! 'bufler-list cmd-bufler-list)
+  (register-command! 'bufler-switch-buffer cmd-bufler-switch-buffer)
+  (register-command! 'ibuffer-filter-by-process cmd-ibuffer-filter-by-process)
+  (register-command! 'ibuffer-filter-by-used-mode cmd-ibuffer-filter-by-used-mode)
+  (register-command! 'ibuffer-filter-by-predicate cmd-ibuffer-filter-by-predicate)
+  (register-command! 'ibuffer-decompose-filter cmd-ibuffer-decompose-filter)
+  (register-command! 'ibuffer-nesting-filter-groups cmd-ibuffer-nesting-filter-groups)
 )