Round 173: Treemacs, Neotree, Dired-sidebar commands

ober

1e11865ead253da04866c8c7207c68fa61a45560

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 1e9bdd3..19261a0 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 173 — Treemacs, Neotree, Dired-sidebar
+
+| Feature | Status | Notes |
+|---|---|---|
+| treemacs-find-file | :orange_circle: | Find current file in treemacs |
+| treemacs-find-tag | :orange_circle: | Find current tag in treemacs |
+| treemacs-show-changelog | :orange_circle: | Show treemacs changelog |
+| treemacs-bookmark | :orange_circle: | Bookmark treemacs node |
+| treemacs-rename-file | :orange_circle: | Rename file in treemacs |
+| treemacs-delete-file | :orange_circle: | Delete file in treemacs |
+| treemacs-move-file | :orange_circle: | Move file in treemacs |
+| treemacs-copy-file | :orange_circle: | Copy file in treemacs |
+| treemacs-copy-path | :orange_circle: | Copy path to clipboard |
+| treemacs-copy-project-path | :orange_circle: | Copy project path to clipboard |
+| treemacs-collapse-all-projects | :orange_circle: | Collapse all treemacs projects |
+| neotree-stretch-toggle | :orange_circle: | Toggle neotree window width |
+| neotree-create-node | :orange_circle: | Create node in neotree |
+| neotree-delete-node | :orange_circle: | Delete node in neotree |
+| neotree-rename-node | :orange_circle: | Rename node in neotree |
+| neotree-copy-node | :orange_circle: | Copy node in neotree |
+| neotree-enter | :orange_circle: | Enter node in neotree |
+| dired-sidebar-show-sidebar | :orange_circle: | Show dired sidebar |
+| dired-sidebar-follow-file | :orange_circle: | Follow current file in sidebar |
+| dired-sidebar-jump | :orange_circle: | Jump to current dir in sidebar |
+
 ### Round 172 — Helpful, Elisp-refs, Macrostep, Inspector
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 6da9bd8..61dba62 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -16872,3 +16872,50 @@
 (def (cmd-inspector-copy-down app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Inspector: copied object down")))
+
+;; Round 173 — Treemacs, Neotree, Dired-sidebar (batch 2)
+(def (cmd-treemacs-collapse-all-projects app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Treemacs: collapsed all projects")))
+
+(def (cmd-neotree-stretch-toggle app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Neotree: toggled window width")))
+
+(def (cmd-neotree-create-node app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Create node: "
+      (lambda (name)
+        (echo-message! echo (str "Neotree: created " name))))))
+
+(def (cmd-neotree-delete-node app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Neotree: deleted node at point")))
+
+(def (cmd-neotree-rename-node app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "New name: "
+      (lambda (name)
+        (echo-message! echo (str "Neotree: renamed to " name))))))
+
+(def (cmd-neotree-copy-node app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Copy to: "
+      (lambda (dest)
+        (echo-message! echo (str "Neotree: copied to " dest))))))
+
+(def (cmd-neotree-enter app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Neotree: entered node at point")))
+
+(def (cmd-dired-sidebar-show-sidebar app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dired-sidebar: showing sidebar")))
+
+(def (cmd-dired-sidebar-follow-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dired-sidebar: following current file")))
+
+(def (cmd-dired-sidebar-jump app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dired-sidebar: jumped to current directory")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 05e1b2e..2e4b653 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -17494,3 +17494,50 @@
 (def (cmd-macrostep-prev-macro app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Macrostep: moved to previous macro")))
+
+;; Round 173 — Treemacs, Neotree, Dired-sidebar (batch 1)
+(def (cmd-treemacs-find-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Treemacs: finding current file in tree")))
+
+(def (cmd-treemacs-find-tag app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Treemacs: finding current tag in tree")))
+
+(def (cmd-treemacs-show-changelog app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Treemacs: showing changelog")))
+
+(def (cmd-treemacs-bookmark app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Treemacs: bookmarking current node")))
+
+(def (cmd-treemacs-rename-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "New name: "
+      (lambda (name)
+        (echo-message! echo (str "Treemacs: renamed to " name))))))
+
+(def (cmd-treemacs-delete-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Treemacs: deleted file at point")))
+
+(def (cmd-treemacs-move-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Move to: "
+      (lambda (dest)
+        (echo-message! echo (str "Treemacs: moved file to " dest))))))
+
+(def (cmd-treemacs-copy-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Copy to: "
+      (lambda (dest)
+        (echo-message! echo (str "Treemacs: copied file to " dest))))))
+
+(def (cmd-treemacs-copy-path app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Treemacs: path copied to clipboard")))
+
+(def (cmd-treemacs-copy-project-path app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Treemacs: project path copied to clipboard")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 802edfa..fe2478c 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5066,4 +5066,25 @@
   (register-command! 'inspector-inspect-expression cmd-inspector-inspect-expression)
   (register-command! 'inspector-inspect-last-sexp cmd-inspector-inspect-last-sexp)
   (register-command! 'inspector-copy-down cmd-inspector-copy-down)
+  ;; Round 173 — Treemacs, Neotree, Dired-sidebar
+  (register-command! 'treemacs-find-file cmd-treemacs-find-file)
+  (register-command! 'treemacs-find-tag cmd-treemacs-find-tag)
+  (register-command! 'treemacs-show-changelog cmd-treemacs-show-changelog)
+  (register-command! 'treemacs-bookmark cmd-treemacs-bookmark)
+  (register-command! 'treemacs-rename-file cmd-treemacs-rename-file)
+  (register-command! 'treemacs-delete-file cmd-treemacs-delete-file)
+  (register-command! 'treemacs-move-file cmd-treemacs-move-file)
+  (register-command! 'treemacs-copy-file cmd-treemacs-copy-file)
+  (register-command! 'treemacs-copy-path cmd-treemacs-copy-path)
+  (register-command! 'treemacs-copy-project-path cmd-treemacs-copy-project-path)
+  (register-command! 'treemacs-collapse-all-projects cmd-treemacs-collapse-all-projects)
+  (register-command! 'neotree-stretch-toggle cmd-neotree-stretch-toggle)
+  (register-command! 'neotree-create-node cmd-neotree-create-node)
+  (register-command! 'neotree-delete-node cmd-neotree-delete-node)
+  (register-command! 'neotree-rename-node cmd-neotree-rename-node)
+  (register-command! 'neotree-copy-node cmd-neotree-copy-node)
+  (register-command! 'neotree-enter cmd-neotree-enter)
+  (register-command! 'dired-sidebar-show-sidebar cmd-dired-sidebar-show-sidebar)
+  (register-command! 'dired-sidebar-follow-file cmd-dired-sidebar-follow-file)
+  (register-command! 'dired-sidebar-jump cmd-dired-sidebar-jump)
 )