Round 68: vertico-flat/grid/reverse/buffer/multiform/unobtrusive modes, corfu-history/popupinfo/quick-insert/doc-toggle, cape-keyword/abbrev/dict/elisp-block/tex/sgml, consult-line-multi/keep-lines/focus-lines

ober

3b4abf0514e1bca26e7c0c8a2a499d6d08d8b0e5

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index b2b64d9..1e8f087 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -2628,6 +2628,30 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | anzu-replace-at-cursor-thing | :orange_circle: | Replace symbol at cursor |
 | color-rg-search-input | :orange_circle: | Color-rg interactive search |
 
+### Round 68 — Vertico, Corfu, Cape & Consult Extensions
+
+| Feature | Status | Notes |
+|---|---|---|
+| vertico-flat-mode | :orange_circle: | Flat completion display |
+| vertico-grid-mode | :orange_circle: | Grid completion display |
+| vertico-reverse-mode | :orange_circle: | Bottom-up completion |
+| vertico-buffer-mode | :orange_circle: | Buffer-based completion |
+| vertico-multiform-mode | :orange_circle: | Per-command display styles |
+| vertico-unobtrusive-mode | :orange_circle: | Minimal completion UI |
+| corfu-history-mode | :orange_circle: | History-based completion sorting |
+| corfu-popupinfo-mode | :orange_circle: | Popup info for completions |
+| corfu-quick-insert | :orange_circle: | Quick insert completion |
+| corfu-doc-toggle | :orange_circle: | Toggle documentation popup |
+| cape-keyword | :orange_circle: | Complete programming keywords |
+| cape-abbrev | :orange_circle: | Complete abbreviations |
+| cape-dict | :orange_circle: | Complete from dictionary |
+| cape-elisp-block | :orange_circle: | Complete Elisp in org blocks |
+| cape-tex | :orange_circle: | Complete TeX symbols |
+| cape-sgml | :orange_circle: | Complete SGML entities |
+| consult-line-multi | :orange_circle: | Search lines across buffers |
+| consult-keep-lines | :orange_circle: | Keep matching lines |
+| consult-focus-lines | :orange_circle: | Focus on matching lines |
+
 ---
 
 ## Recommended Development Roadmap
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 5c94486..79ef9d6 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -11757,3 +11757,46 @@
     (echo-read-string echo "Color-rg search: "
       (lambda (pat)
         (echo-message! echo (str "Color-rg: searching for '" pat "'"))))))
+
+;; Round 68 — Cape, Consult (batch 2)
+(def (cmd-cape-keyword app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cape: completing keyword")))
+
+(def (cmd-cape-abbrev app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cape: completing abbreviation")))
+
+(def (cmd-cape-dict app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cape: completing from dictionary")))
+
+(def (cmd-cape-elisp-block app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cape: completing Elisp in org block")))
+
+(def (cmd-cape-tex app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cape: completing TeX symbol")))
+
+(def (cmd-cape-sgml app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cape: completing SGML entity")))
+
+(def (cmd-consult-line-multi app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Search lines across buffers: "
+      (lambda (pat)
+        (echo-message! echo (str "Consult: searching lines for '" pat "' across buffers"))))))
+
+(def (cmd-consult-keep-lines app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Keep lines matching: "
+      (lambda (re)
+        (echo-message! echo (str "Consult: kept lines matching '" re "'"))))))
+
+(def (cmd-consult-focus-lines app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Focus lines matching: "
+      (lambda (re)
+        (echo-message! echo (str "Consult: focusing on lines matching '" re "'"))))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 057c97c..59427c9 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -12272,3 +12272,68 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Isearch: showing available bindings")))
 
+;; Round 68 — Vertico, Corfu, Cape (batch 1)
+(def (cmd-vertico-flat-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'vertico-flat)
+    (if (mode-enabled? app 'vertico-flat)
+      (echo-message! echo "Vertico: flat display mode")
+      (echo-message! echo "Vertico: default display mode"))))
+
+(def (cmd-vertico-grid-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'vertico-grid)
+    (if (mode-enabled? app 'vertico-grid)
+      (echo-message! echo "Vertico: grid display mode")
+      (echo-message! echo "Vertico: default display mode"))))
+
+(def (cmd-vertico-reverse-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'vertico-reverse)
+    (if (mode-enabled? app 'vertico-reverse)
+      (echo-message! echo "Vertico: reversed display (bottom-up)")
+      (echo-message! echo "Vertico: default display (top-down)"))))
+
+(def (cmd-vertico-buffer-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'vertico-buffer)
+    (if (mode-enabled? app 'vertico-buffer)
+      (echo-message! echo "Vertico: buffer display mode")
+      (echo-message! echo "Vertico: default display mode"))))
+
+(def (cmd-vertico-multiform-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'vertico-multiform)
+    (if (mode-enabled? app 'vertico-multiform)
+      (echo-message! echo "Vertico: multiform mode (per-command display)")
+      (echo-message! echo "Vertico: uniform display mode"))))
+
+(def (cmd-vertico-unobtrusive-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'vertico-unobtrusive)
+    (if (mode-enabled? app 'vertico-unobtrusive)
+      (echo-message! echo "Vertico: unobtrusive mode (minimal UI)")
+      (echo-message! echo "Vertico: standard display"))))
+
+(def (cmd-corfu-history-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'corfu-history)
+    (if (mode-enabled? app 'corfu-history)
+      (echo-message! echo "Corfu: history-based sorting enabled")
+      (echo-message! echo "Corfu: default sorting"))))
+
+(def (cmd-corfu-popupinfo-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'corfu-popupinfo)
+    (if (mode-enabled? app 'corfu-popupinfo)
+      (echo-message! echo "Corfu: popup info enabled")
+      (echo-message! echo "Corfu: popup info disabled"))))
+
+(def (cmd-corfu-quick-insert app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Corfu: quick insert selected candidate")))
+
+(def (cmd-corfu-doc-toggle app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Corfu: toggled documentation popup")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index ea5a623..104bd0b 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -2867,4 +2867,24 @@
   (register-command! 'anzu-query-replace cmd-anzu-query-replace)
   (register-command! 'anzu-replace-at-cursor-thing cmd-anzu-replace-at-cursor-thing)
   (register-command! 'color-rg-search-input cmd-color-rg-search-input)
+  ;; Round 68
+  (register-command! 'vertico-flat-mode cmd-vertico-flat-mode)
+  (register-command! 'vertico-grid-mode cmd-vertico-grid-mode)
+  (register-command! 'vertico-reverse-mode cmd-vertico-reverse-mode)
+  (register-command! 'vertico-buffer-mode cmd-vertico-buffer-mode)
+  (register-command! 'vertico-multiform-mode cmd-vertico-multiform-mode)
+  (register-command! 'vertico-unobtrusive-mode cmd-vertico-unobtrusive-mode)
+  (register-command! 'corfu-history-mode cmd-corfu-history-mode)
+  (register-command! 'corfu-popupinfo-mode cmd-corfu-popupinfo-mode)
+  (register-command! 'corfu-quick-insert cmd-corfu-quick-insert)
+  (register-command! 'corfu-doc-toggle cmd-corfu-doc-toggle)
+  (register-command! 'cape-keyword cmd-cape-keyword)
+  (register-command! 'cape-abbrev cmd-cape-abbrev)
+  (register-command! 'cape-dict cmd-cape-dict)
+  (register-command! 'cape-elisp-block cmd-cape-elisp-block)
+  (register-command! 'cape-tex cmd-cape-tex)
+  (register-command! 'cape-sgml cmd-cape-sgml)
+  (register-command! 'consult-line-multi cmd-consult-line-multi)
+  (register-command! 'consult-keep-lines cmd-consult-keep-lines)
+  (register-command! 'consult-focus-lines cmd-consult-focus-lines)
 )