Round 149: Add 20 Semantic, CEDET, EDE, Senator commands

ober

aabde703c5bb97813580f467af94bf23b19549de

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index cbc5c8f..5799756 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 149 — Semantic, CEDET, EDE, Senator
+
+| Feature | Status | Notes |
+|---|---|---|
+| `semantic-ia-complete-symbol` | :orange_circle: | Complete symbol at point |
+| `semantic-decoration-mode` | :orange_circle: | Tag decoration mode |
+| `semantic-highlight-func-mode` | :orange_circle: | Highlight current function |
+| `semantic-stickyfunc-mode` | :orange_circle: | Sticky function header |
+| `semantic-idle-summary-mode` | :orange_circle: | Idle summary in echo area |
+| `semantic-idle-completions-mode` | :orange_circle: | Idle completions |
+| `semantic-force-refresh` | :orange_circle: | Force-refresh tags |
+| `semantic-chart-database-size` | :orange_circle: | Chart database size |
+| `semantic-adebug-bovinate` | :orange_circle: | Debug parse tree |
+| `senator-jump` | :orange_circle: | Jump to tag |
+| `senator-transpose-tags` | :orange_circle: | Transpose tags |
+| `senator-fold-tag-toggle` | :orange_circle: | Toggle tag fold |
+| `ede-new` | :orange_circle: | Create new EDE project |
+| `ede-compile-project` | :orange_circle: | Compile project |
+| `ede-debug-target` | :orange_circle: | Debug target |
+| `ede-make-dist` | :orange_circle: | Create distribution |
+| `ede-find-file` | :orange_circle: | Find file in project |
+| `ede-edit-file-target` | :orange_circle: | Edit file's target |
+| `ede-add-file` | :orange_circle: | Add file to target |
+| `ede-remove-file` | :orange_circle: | Remove file from target |
+
 ### Round 148 — CC-mode, Python, SQL Extended
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 35fe182..35ffbed 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -15669,3 +15669,51 @@
 (def (cmd-python-skeleton-if app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Python: inserted if skeleton")))
+
+;; ============================================================
+;; Round 149 — EDE, Senator, Semantic extended (batch 2)
+;; ============================================================
+
+(def (cmd-ede-make-dist app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EDE: creating distribution tarball")))
+
+(def (cmd-semantic-force-refresh app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Semantic: force-refreshed tags")))
+
+(def (cmd-semantic-chart-database-size app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Semantic: charting database size")))
+
+(def (cmd-semantic-adebug-bovinate app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Semantic: adebug bovinate (parse tree debug)")))
+
+(def (cmd-senator-transpose-tags app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Senator: transposed tags")))
+
+(def (cmd-senator-fold-tag-toggle app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Senator: toggled tag fold")))
+
+(def (cmd-ede-find-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "EDE find file: "
+      (lambda (f)
+        (echo-message! echo (str "EDE: finding " f " in project"))))))
+
+(def (cmd-ede-edit-file-target app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EDE: editing file's target")))
+
+(def (cmd-ede-add-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Add file to target: "
+      (lambda (f)
+        (echo-message! echo (str "EDE: added " f " to target"))))))
+
+(def (cmd-ede-remove-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EDE: removed current file from target")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 5b4eba3..125b2ff 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -16287,3 +16287,66 @@
 (def (cmd-c-indent-exp app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "C: indented balanced expression")))
+
+;; ============================================================
+;; Round 149 — Semantic, CEDET, EDE, Senator (batch 1)
+;; ============================================================
+
+(def (cmd-semantic-ia-complete-symbol app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Semantic: completing symbol at point")))
+
+(def (cmd-semantic-decoration-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'semantic-decoration)
+    (if (mode-enabled? app 'semantic-decoration)
+      (echo-message! echo "Semantic decoration mode enabled")
+      (echo-message! echo "Semantic decoration mode disabled"))))
+
+(def (cmd-semantic-highlight-func-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'semantic-highlight-func)
+    (if (mode-enabled? app 'semantic-highlight-func)
+      (echo-message! echo "Semantic highlight-func mode enabled")
+      (echo-message! echo "Semantic highlight-func mode disabled"))))
+
+(def (cmd-semantic-stickyfunc-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'semantic-stickyfunc)
+    (if (mode-enabled? app 'semantic-stickyfunc)
+      (echo-message! echo "Semantic stickyfunc mode enabled")
+      (echo-message! echo "Semantic stickyfunc mode disabled"))))
+
+(def (cmd-semantic-idle-summary-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'semantic-idle-summary)
+    (if (mode-enabled? app 'semantic-idle-summary)
+      (echo-message! echo "Semantic idle summary mode enabled")
+      (echo-message! echo "Semantic idle summary mode disabled"))))
+
+(def (cmd-semantic-idle-completions-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'semantic-idle-completions)
+    (if (mode-enabled? app 'semantic-idle-completions)
+      (echo-message! echo "Semantic idle completions mode enabled")
+      (echo-message! echo "Semantic idle completions mode disabled"))))
+
+(def (cmd-senator-jump app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Jump to tag: "
+      (lambda (tag)
+        (echo-message! echo (str "Senator: jumped to " tag))))))
+
+(def (cmd-ede-new app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "EDE project type: "
+      (lambda (typ)
+        (echo-message! echo (str "EDE: created new " typ " project"))))))
+
+(def (cmd-ede-compile-project app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EDE: compiling project")))
+
+(def (cmd-ede-debug-target app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EDE: debugging target")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index cf8cd18..5b68541 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -4562,4 +4562,25 @@
   (register-command! 'python-skeleton-def cmd-python-skeleton-def)
   (register-command! 'python-skeleton-for cmd-python-skeleton-for)
   (register-command! 'python-skeleton-if cmd-python-skeleton-if)
+  ;; Round 149
+  (register-command! 'semantic-ia-complete-symbol cmd-semantic-ia-complete-symbol)
+  (register-command! 'semantic-decoration-mode cmd-semantic-decoration-mode)
+  (register-command! 'semantic-highlight-func-mode cmd-semantic-highlight-func-mode)
+  (register-command! 'semantic-stickyfunc-mode cmd-semantic-stickyfunc-mode)
+  (register-command! 'semantic-idle-summary-mode cmd-semantic-idle-summary-mode)
+  (register-command! 'semantic-idle-completions-mode cmd-semantic-idle-completions-mode)
+  (register-command! 'senator-jump cmd-senator-jump)
+  (register-command! 'ede-new cmd-ede-new)
+  (register-command! 'ede-compile-project cmd-ede-compile-project)
+  (register-command! 'ede-debug-target cmd-ede-debug-target)
+  (register-command! 'ede-make-dist cmd-ede-make-dist)
+  (register-command! 'semantic-force-refresh cmd-semantic-force-refresh)
+  (register-command! 'semantic-chart-database-size cmd-semantic-chart-database-size)
+  (register-command! 'semantic-adebug-bovinate cmd-semantic-adebug-bovinate)
+  (register-command! 'senator-transpose-tags cmd-senator-transpose-tags)
+  (register-command! 'senator-fold-tag-toggle cmd-senator-fold-tag-toggle)
+  (register-command! 'ede-find-file cmd-ede-find-file)
+  (register-command! 'ede-edit-file-target cmd-ede-edit-file-target)
+  (register-command! 'ede-add-file cmd-ede-add-file)
+  (register-command! 'ede-remove-file cmd-ede-remove-file)
 )