Round 171: Selectrum, Icomplete-ext, Mct, Ivy-posframe commands

ober

d5a30861232a6a70ba347f4a5955401ad965f577

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 19928a2..b447af7 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 171 — Selectrum, Icomplete-ext, Mct, Ivy-posframe
+
+| Feature | Status | Notes |
+|---|---|---|
+| selectrum-prescient-mode | :orange_circle: | Prescient scoring in Selectrum |
+| selectrum-cycle | :orange_circle: | Cycle Selectrum candidates |
+| selectrum-toggle-display | :orange_circle: | Toggle Selectrum display style |
+| selectrum-repeat | :orange_circle: | Repeat last Selectrum selection |
+| icomplete-toggle-prefix | :orange_circle: | Toggle prefix display in icomplete |
+| icomplete-force-complete | :orange_circle: | Force icomplete completion |
+| icomplete-minibuffer-setup | :orange_circle: | Setup icomplete in minibuffer |
+| mct-mode | :orange_circle: | Toggle Mct completion mode |
+| mct-minibuffer-mode | :orange_circle: | Mct in minibuffer only |
+| mct-region-mode | :orange_circle: | Mct in region completion |
+| mct-toggle-completions | :orange_circle: | Toggle Mct completions display |
+| ivy-posframe-mode | :orange_circle: | Show Ivy in posframe popup |
+| ivy-posframe-display-at-frame-center | :orange_circle: | Posframe at frame center |
+| ivy-posframe-display-at-point | :orange_circle: | Posframe at point |
+| ivy-posframe-display-at-window-center | :orange_circle: | Posframe at window center |
+| mini-frame-show-parameters | :orange_circle: | Show mini-frame parameters |
+| ivy-rich-mode | :orange_circle: | Rich annotations in Ivy |
+| ivy-rich-modify-columns | :orange_circle: | Modify Ivy-rich columns |
+| ivy-rich-set-display-transformer | :orange_circle: | Set Ivy-rich display transformer |
+| all-the-icons-ivy-rich-mode | :orange_circle: | Icons in Ivy-rich annotations |
+
 ### Round 170 — Marginalia, Orderless, Prescient, Hotfuzz
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 07ffe45..6b761d2 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -16774,3 +16774,53 @@
     (if (mode-enabled? app 'flx-ido)
       (echo-message! echo "Flx-ido mode enabled")
       (echo-message! echo "Flx-ido mode disabled"))))
+
+;; Round 171 — Selectrum, Icomplete-ext, Mct, Ivy-posframe (batch 2)
+(def (cmd-mct-toggle-completions app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Mct: toggled completions display")))
+
+(def (cmd-ivy-posframe-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'ivy-posframe)
+    (if (mode-enabled? app 'ivy-posframe)
+      (echo-message! echo "Ivy-posframe mode enabled")
+      (echo-message! echo "Ivy-posframe mode disabled"))))
+
+(def (cmd-ivy-posframe-display-at-frame-center app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ivy-posframe: display at frame center")))
+
+(def (cmd-ivy-posframe-display-at-point app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ivy-posframe: display at point")))
+
+(def (cmd-ivy-posframe-display-at-window-center app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ivy-posframe: display at window center")))
+
+(def (cmd-mini-frame-show-parameters app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Mini-frame: showing parameters")))
+
+(def (cmd-ivy-rich-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'ivy-rich)
+    (if (mode-enabled? app 'ivy-rich)
+      (echo-message! echo "Ivy-rich mode enabled")
+      (echo-message! echo "Ivy-rich mode disabled"))))
+
+(def (cmd-ivy-rich-modify-columns app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ivy-rich: columns modified")))
+
+(def (cmd-ivy-rich-set-display-transformer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ivy-rich: display transformer set")))
+
+(def (cmd-all-the-icons-ivy-rich-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'all-the-icons-ivy-rich)
+    (if (mode-enabled? app 'all-the-icons-ivy-rich)
+      (echo-message! echo "All-the-icons-ivy-rich mode enabled")
+      (echo-message! echo "All-the-icons-ivy-rich mode disabled"))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 1aedec7..1918fbb 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -17388,3 +17388,56 @@
 (def (cmd-prescient-toggle-fuzzy app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Prescient: toggled fuzzy matching")))
+
+;; Round 171 — Selectrum, Icomplete-ext, Mct, Ivy-posframe (batch 1)
+(def (cmd-selectrum-prescient-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'selectrum-prescient)
+    (if (mode-enabled? app 'selectrum-prescient)
+      (echo-message! echo "Selectrum-prescient mode enabled")
+      (echo-message! echo "Selectrum-prescient mode disabled"))))
+
+(def (cmd-selectrum-cycle app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Selectrum: cycling candidates")))
+
+(def (cmd-selectrum-toggle-display app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Selectrum: toggled display style")))
+
+(def (cmd-selectrum-repeat app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Selectrum: repeating last selection")))
+
+(def (cmd-icomplete-toggle-prefix app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Icomplete: toggled prefix display")))
+
+(def (cmd-icomplete-force-complete app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Icomplete: forced completion")))
+
+(def (cmd-icomplete-minibuffer-setup app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Icomplete: minibuffer setup complete")))
+
+(def (cmd-mct-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'mct)
+    (if (mode-enabled? app 'mct)
+      (echo-message! echo "Mct mode enabled")
+      (echo-message! echo "Mct mode disabled"))))
+
+(def (cmd-mct-minibuffer-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'mct-minibuffer)
+    (if (mode-enabled? app 'mct-minibuffer)
+      (echo-message! echo "Mct minibuffer mode enabled")
+      (echo-message! echo "Mct minibuffer mode disabled"))))
+
+(def (cmd-mct-region-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'mct-region)
+    (if (mode-enabled? app 'mct-region)
+      (echo-message! echo "Mct region mode enabled")
+      (echo-message! echo "Mct region mode disabled"))))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 17e1594..aa3a276 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5024,4 +5024,25 @@
   (register-command! 'fussy-score cmd-fussy-score)
   (register-command! 'flx-score cmd-flx-score)
   (register-command! 'flx-ido-mode cmd-flx-ido-mode)
+  ;; Round 171 — Selectrum, Icomplete-ext, Mct, Ivy-posframe
+  (register-command! 'selectrum-prescient-mode cmd-selectrum-prescient-mode)
+  (register-command! 'selectrum-cycle cmd-selectrum-cycle)
+  (register-command! 'selectrum-toggle-display cmd-selectrum-toggle-display)
+  (register-command! 'selectrum-repeat cmd-selectrum-repeat)
+  (register-command! 'icomplete-toggle-prefix cmd-icomplete-toggle-prefix)
+  (register-command! 'icomplete-force-complete cmd-icomplete-force-complete)
+  (register-command! 'icomplete-minibuffer-setup cmd-icomplete-minibuffer-setup)
+  (register-command! 'mct-mode cmd-mct-mode)
+  (register-command! 'mct-minibuffer-mode cmd-mct-minibuffer-mode)
+  (register-command! 'mct-region-mode cmd-mct-region-mode)
+  (register-command! 'mct-toggle-completions cmd-mct-toggle-completions)
+  (register-command! 'ivy-posframe-mode cmd-ivy-posframe-mode)
+  (register-command! 'ivy-posframe-display-at-frame-center cmd-ivy-posframe-display-at-frame-center)
+  (register-command! 'ivy-posframe-display-at-point cmd-ivy-posframe-display-at-point)
+  (register-command! 'ivy-posframe-display-at-window-center cmd-ivy-posframe-display-at-window-center)
+  (register-command! 'mini-frame-show-parameters cmd-mini-frame-show-parameters)
+  (register-command! 'ivy-rich-mode cmd-ivy-rich-mode)
+  (register-command! 'ivy-rich-modify-columns cmd-ivy-rich-modify-columns)
+  (register-command! 'ivy-rich-set-display-transformer cmd-ivy-rich-set-display-transformer)
+  (register-command! 'all-the-icons-ivy-rich-mode cmd-all-the-icons-ivy-rich-mode)
 )