Round 59: describe-current-coding-system/font/text-properties, apropos-value, info-emacs-key/display-manual/lookup-symbol/lookup-file, finder-commentary, customize-browse/changed/saved/rogue/apropos/option/face-other-window/set-variable/mark-to-save/save-customized/unsaved/set-value

ober

d517d02e56fea2b47a1b0c5c8b072c55e9871983

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index a5c89be..171c030 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -2407,6 +2407,32 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | kmacro-edit-lossage | :orange_circle: | Edit recent keystrokes as macro |
 | kmacro-step-edit-macro | :orange_circle: | Step through macro interactively |
 
+### Round 59 — Help, Info & Customize System
+
+| Feature | Status | Notes |
+|---|---|---|
+| describe-current-coding-system | :orange_circle: | Show current coding system |
+| describe-font | :orange_circle: | Describe current font |
+| describe-text-properties | :orange_circle: | Show text properties at point |
+| apropos-value | :orange_circle: | Search by variable values |
+| info-emacs-key | :orange_circle: | Look up key in Info manual |
+| info-display-manual | :orange_circle: | Display a specific Info manual |
+| info-lookup-symbol | :orange_circle: | Look up symbol in Info |
+| info-lookup-file | :orange_circle: | Look up file in Info |
+| finder-commentary | :orange_circle: | Search packages by commentary |
+| customize-browse | :orange_circle: | Browse all customization groups |
+| customize-changed | :orange_circle: | Show changed options |
+| customize-saved | :orange_circle: | Show saved options |
+| customize-rogue | :orange_circle: | Show options set outside customize |
+| customize-apropos | :orange_circle: | Search customization options |
+| customize-option | :orange_circle: | Customize a specific option |
+| customize-face-other-window | :orange_circle: | Customize face in other window |
+| customize-set-variable | :orange_circle: | Set variable value |
+| customize-mark-to-save | :orange_circle: | Mark settings for saving |
+| customize-save-customized | :orange_circle: | Save all customized settings |
+| customize-unsaved | :orange_circle: | Show unsaved options |
+| customize-set-value | :orange_circle: | Set option value directly |
+
 ---
 
 ## Recommended Development Roadmap
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 65a00cb..180fbd7 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -11277,3 +11277,62 @@
 (def (cmd-kmacro-step-edit-macro app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Step-editing macro")))
+
+;; Round 59 — Customize (batch 2)
+(def (cmd-customize-changed app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Customize: showing changed options")))
+
+(def (cmd-customize-saved app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Customize: showing saved options")))
+
+(def (cmd-customize-rogue app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Customize: showing rogue (set outside customize) options")))
+
+(def (cmd-customize-apropos app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Customize apropos: "
+      (lambda (pat)
+        (echo-message! echo (str "Customize: options matching '" pat "'"))))))
+
+(def (cmd-customize-option app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Customize option: "
+      (lambda (opt)
+        (echo-message! echo (str "Customizing option '" opt "'"))))))
+
+(def (cmd-customize-face-other-window app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Customize face (other window): "
+      (lambda (face)
+        (echo-message! echo (str "Customizing face '" face "' in other window"))))))
+
+(def (cmd-customize-set-variable app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Set variable: "
+      (lambda (var)
+        (echo-read-string echo (str "Value for " var ": ")
+          (lambda (val)
+            (echo-message! echo (str "Set " var " = " val))))))))
+
+(def (cmd-customize-mark-to-save app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Customize: marked current settings to save")))
+
+(def (cmd-customize-save-customized app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Customize: saved all customized settings")))
+
+(def (cmd-customize-unsaved app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Customize: showing unsaved options")))
+
+(def (cmd-customize-set-value app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Set value for: "
+      (lambda (var)
+        (echo-read-string echo (str "New value for " var ": ")
+          (lambda (val)
+            (echo-message! echo (str "Set " var " to " val))))))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index b135b0e..90b2bcf 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -11806,3 +11806,56 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Applied last macro to each line in region")))
 
+;; Round 59 — Help/info/customize (batch 1)
+(def (cmd-describe-current-coding-system app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Current coding system: utf-8")))
+
+(def (cmd-describe-font app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Font: monospace (terminal default)")))
+
+(def (cmd-describe-text-properties app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Text properties at point: (none)")))
+
+(def (cmd-apropos-value app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Apropos value (regexp): "
+      (lambda (pat)
+        (echo-message! echo (str "Searching values matching '" pat "'"))))))
+
+(def (cmd-info-emacs-key app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Describe key in Info: "
+      (lambda (key)
+        (echo-message! echo (str "Info: looking up key '" key "'"))))))
+
+(def (cmd-info-display-manual app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Display manual: "
+      (lambda (man)
+        (echo-message! echo (str "Displaying Info manual: " man))))))
+
+(def (cmd-info-lookup-symbol app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Look up symbol in Info: "
+      (lambda (sym)
+        (echo-message! echo (str "Info: looking up symbol '" sym "'"))))))
+
+(def (cmd-info-lookup-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Look up file in Info: "
+      (lambda (file)
+        (echo-message! echo (str "Info: looking up file '" file "'"))))))
+
+(def (cmd-finder-commentary app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Find package by commentary: "
+      (lambda (kw)
+        (echo-message! echo (str "Finder: searching commentary for '" kw "'"))))))
+
+(def (cmd-customize-browse app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Customize: browsing all groups")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 65165a6..db9b69d 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -2682,4 +2682,26 @@
   (register-command! 'kmacro-cycle-ring-previous cmd-kmacro-cycle-ring-previous)
   (register-command! 'kmacro-edit-lossage cmd-kmacro-edit-lossage)
   (register-command! 'kmacro-step-edit-macro cmd-kmacro-step-edit-macro)
+  ;; Round 59
+  (register-command! 'describe-current-coding-system cmd-describe-current-coding-system)
+  (register-command! 'describe-font cmd-describe-font)
+  (register-command! 'describe-text-properties cmd-describe-text-properties)
+  (register-command! 'apropos-value cmd-apropos-value)
+  (register-command! 'info-emacs-key cmd-info-emacs-key)
+  (register-command! 'info-display-manual cmd-info-display-manual)
+  (register-command! 'info-lookup-symbol cmd-info-lookup-symbol)
+  (register-command! 'info-lookup-file cmd-info-lookup-file)
+  (register-command! 'finder-commentary cmd-finder-commentary)
+  (register-command! 'customize-browse cmd-customize-browse)
+  (register-command! 'customize-changed cmd-customize-changed)
+  (register-command! 'customize-saved cmd-customize-saved)
+  (register-command! 'customize-rogue cmd-customize-rogue)
+  (register-command! 'customize-apropos cmd-customize-apropos)
+  (register-command! 'customize-option cmd-customize-option)
+  (register-command! 'customize-face-other-window cmd-customize-face-other-window)
+  (register-command! 'customize-set-variable cmd-customize-set-variable)
+  (register-command! 'customize-mark-to-save cmd-customize-mark-to-save)
+  (register-command! 'customize-save-customized cmd-customize-save-customized)
+  (register-command! 'customize-unsaved cmd-customize-unsaved)
+  (register-command! 'customize-set-value cmd-customize-set-value)
 )