Round 231: Dirvish ext (20 commands)

ober

ffa3a8bc3d6db27bff1fad11458684cc4e3dcf82

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index eff6d09..52bc534 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 231 — Dirvish ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| dirvish-dwim | :orange_circle: | Dirvish DWIM action |
+| dirvish-history-go-backward | :orange_circle: | Go backward in history |
+| dirvish-narrow | :orange_circle: | Narrow file list |
+| dirvish-peek-mode | :orange_circle: | Toggle peek mode |
+| dirvish-quicksort | :orange_circle: | Quick sort files |
+| dirvish-quit | :orange_circle: | Quit Dirvish |
+| dirvish-ls-switches | :orange_circle: | Set ls switches |
+| dirvish-file-info-menu | :orange_circle: | File info menu |
+| dirvish-show-history | :orange_circle: | Show navigation history |
+| dirvish-mark-menu | :orange_circle: | Mark menu |
+| dirvish-copy-remote-path | :orange_circle: | Copy remote path |
+| dirvish-rename-file | :orange_circle: | Rename file |
+| dirvish-chxxx-menu | :orange_circle: | Chmod/chown menu |
+| dirvish-roam | :orange_circle: | Roam mode |
+| dirvish-extras | :orange_circle: | Extras menu |
+| dirvish-media-properties | :orange_circle: | Show media properties |
+| dirvish-total-file-size | :orange_circle: | Show total file size |
+| dirvish-vc-info-menu | :orange_circle: | VC info menu |
+| dirvish-collapse-mode | :orange_circle: | Toggle collapse mode |
+| dirvish-side-follow-mode | :orange_circle: | Toggle side follow mode |
+
 ### Round 230 — Activities ext, Bufler ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 849cd47..fc332c3 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -19609,3 +19609,53 @@
     (if (mode-enabled? app 'bufler-workspace)
       (echo-message! echo "Bufler: workspace mode enabled")
       (echo-message! echo "Bufler: workspace mode disabled"))))
+
+;;; Round 231 — Dirvish ext (batch 2)
+
+(def (cmd-dirvish-copy-remote-path app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: copied remote path")))
+
+(def (cmd-dirvish-rename-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "New name: "
+      (lambda (name)
+        (echo-message! echo (str "Dirvish: renamed to " name))))))
+
+(def (cmd-dirvish-chxxx-menu app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: chmod/chown menu")))
+
+(def (cmd-dirvish-roam app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: roam mode")))
+
+(def (cmd-dirvish-extras app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: extras menu")))
+
+(def (cmd-dirvish-media-properties app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: showing media properties")))
+
+(def (cmd-dirvish-total-file-size app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: showing total file size")))
+
+(def (cmd-dirvish-vc-info-menu app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: VC info menu")))
+
+(def (cmd-dirvish-collapse-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'dirvish-collapse)
+    (if (mode-enabled? app 'dirvish-collapse)
+      (echo-message! echo "Dirvish: collapse mode enabled")
+      (echo-message! echo "Dirvish: collapse mode disabled"))))
+
+(def (cmd-dirvish-side-follow-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'dirvish-side-follow)
+    (if (mode-enabled? app 'dirvish-side-follow)
+      (echo-message! echo "Dirvish: side follow mode enabled")
+      (echo-message! echo "Dirvish: side follow mode disabled"))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 64b42df..9af4f87 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -20278,3 +20278,52 @@
 (def (cmd-activities-set app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Activities: set activity state")))
+
+;;; Round 231 — Dirvish ext (batch 1)
+
+(def (cmd-dirvish-dwim app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: DWIM action")))
+
+(def (cmd-dirvish-history-go-backward app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: history backward")))
+
+(def (cmd-dirvish-narrow app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Filter: "
+      (lambda (f)
+        (echo-message! echo (str "Dirvish: narrowed to " f))))))
+
+(def (cmd-dirvish-peek-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'dirvish-peek)
+    (if (mode-enabled? app 'dirvish-peek)
+      (echo-message! echo "Dirvish: peek mode enabled")
+      (echo-message! echo "Dirvish: peek mode disabled"))))
+
+(def (cmd-dirvish-quicksort app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: quick sort")))
+
+(def (cmd-dirvish-quit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: quit")))
+
+(def (cmd-dirvish-ls-switches app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Switches: "
+      (lambda (sw)
+        (echo-message! echo (str "Dirvish: set ls switches " sw))))))
+
+(def (cmd-dirvish-file-info-menu app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: file info menu")))
+
+(def (cmd-dirvish-show-history app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: showing history")))
+
+(def (cmd-dirvish-mark-menu app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dirvish: mark menu")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index bea236a..d6a4716 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -6284,4 +6284,25 @@
   (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)
+  ;; Round 231
+  (register-command! 'dirvish-dwim cmd-dirvish-dwim)
+  (register-command! 'dirvish-history-go-backward cmd-dirvish-history-go-backward)
+  (register-command! 'dirvish-narrow cmd-dirvish-narrow)
+  (register-command! 'dirvish-peek-mode cmd-dirvish-peek-mode)
+  (register-command! 'dirvish-quicksort cmd-dirvish-quicksort)
+  (register-command! 'dirvish-quit cmd-dirvish-quit)
+  (register-command! 'dirvish-ls-switches cmd-dirvish-ls-switches)
+  (register-command! 'dirvish-file-info-menu cmd-dirvish-file-info-menu)
+  (register-command! 'dirvish-show-history cmd-dirvish-show-history)
+  (register-command! 'dirvish-mark-menu cmd-dirvish-mark-menu)
+  (register-command! 'dirvish-copy-remote-path cmd-dirvish-copy-remote-path)
+  (register-command! 'dirvish-rename-file cmd-dirvish-rename-file)
+  (register-command! 'dirvish-chxxx-menu cmd-dirvish-chxxx-menu)
+  (register-command! 'dirvish-roam cmd-dirvish-roam)
+  (register-command! 'dirvish-extras cmd-dirvish-extras)
+  (register-command! 'dirvish-media-properties cmd-dirvish-media-properties)
+  (register-command! 'dirvish-total-file-size cmd-dirvish-total-file-size)
+  (register-command! 'dirvish-vc-info-menu cmd-dirvish-vc-info-menu)
+  (register-command! 'dirvish-collapse-mode cmd-dirvish-collapse-mode)
+  (register-command! 'dirvish-side-follow-mode cmd-dirvish-side-follow-mode)
 )