Round 169: Nerd-icons, All-the-icons, SVG-lib, Ligature commands

ober

e862750e8c530f0cd79fa965037b8dcf2259db3a

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 218ef8c..66241b7 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 169 — Nerd-icons, All-the-icons, SVG-lib, Ligature
+
+| Feature | Status | Notes |
+|---|---|---|
+| nerd-icons-install-fonts | :orange_circle: | Install Nerd Font icon fonts |
+| nerd-icons-insert | :orange_circle: | Insert a Nerd Font icon by name |
+| nerd-icons-icon-for-mode | :orange_circle: | Get icon for a given major mode |
+| nerd-icons-icon-for-file | :orange_circle: | Get icon for a given filename |
+| nerd-icons-icon-for-dir | :orange_circle: | Get icon for a given directory |
+| nerd-icons-icon-for-buffer | :orange_circle: | Get icon for current buffer |
+| all-the-icons-icon-for-mode | :orange_circle: | Get all-the-icons icon for mode |
+| all-the-icons-icon-for-file | :orange_circle: | Get all-the-icons icon for file |
+| all-the-icons-icon-for-dir | :orange_circle: | Get all-the-icons icon for dir |
+| all-the-icons-icon-for-buffer | :orange_circle: | Get all-the-icons icon for buffer |
+| all-the-icons-insert | :orange_circle: | Insert an all-the-icons icon |
+| svg-lib-tag | :orange_circle: | Create SVG tag element |
+| svg-lib-progress-bar | :orange_circle: | Create SVG progress bar |
+| svg-lib-icon | :orange_circle: | Create SVG icon element |
+| ligature-set-ligatures | :orange_circle: | Configure ligature mappings |
+| text-scale-mode | :orange_circle: | Toggle text scaling mode |
+| nerd-icons-completion-mode | :orange_circle: | Nerd icons in completion UI |
+| nerd-icons-ibuffer-mode | :orange_circle: | Nerd icons in ibuffer |
+| all-the-icons-completion-mode | :orange_circle: | All-the-icons in completion UI |
+| global-ligature-mode | :orange_circle: | Toggle global ligature display |
+
 ### Round 168 — Tempel, Yasnippet Extended, Auto-yasnippet
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index bdbc3db..84d410b 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -16659,3 +16659,68 @@
     (echo-read-string echo "Directory to compile: "
       (lambda (dir)
         (echo-message! echo (str "YAS: compiled snippets in " dir))))))
+
+;; ============================================================
+;; Round 169 — Icons, SVG, Ligature, Text-scale (batch 2)
+;; ============================================================
+
+(def (cmd-all-the-icons-insert app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "All-the-icons name: "
+      (lambda (name)
+        (echo-message! echo (str "All-the-icons: inserted " name))))))
+
+(def (cmd-svg-lib-tag app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "SVG tag label: "
+      (lambda (label)
+        (echo-message! echo (str "SVG-lib: created tag '" label "'"))))))
+
+(def (cmd-svg-lib-progress-bar app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SVG-lib: created progress bar")))
+
+(def (cmd-svg-lib-icon app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "SVG icon name: "
+      (lambda (name)
+        (echo-message! echo (str "SVG-lib: created icon " name))))))
+
+(def (cmd-ligature-set-ligatures app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ligature: set ligatures for current mode")))
+
+(def (cmd-text-scale-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'text-scale)
+    (if (mode-enabled? app 'text-scale)
+      (echo-message! echo "Text-scale mode enabled")
+      (echo-message! echo "Text-scale mode disabled"))))
+
+(def (cmd-nerd-icons-completion-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'nerd-icons-completion)
+    (if (mode-enabled? app 'nerd-icons-completion)
+      (echo-message! echo "Nerd-icons completion mode enabled")
+      (echo-message! echo "Nerd-icons completion mode disabled"))))
+
+(def (cmd-nerd-icons-ibuffer-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'nerd-icons-ibuffer)
+    (if (mode-enabled? app 'nerd-icons-ibuffer)
+      (echo-message! echo "Nerd-icons ibuffer mode enabled")
+      (echo-message! echo "Nerd-icons ibuffer mode disabled"))))
+
+(def (cmd-all-the-icons-completion-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'all-the-icons-completion)
+    (if (mode-enabled? app 'all-the-icons-completion)
+      (echo-message! echo "All-the-icons completion mode enabled")
+      (echo-message! echo "All-the-icons completion mode disabled"))))
+
+(def (cmd-global-ligature-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'global-ligature)
+    (if (mode-enabled? app 'global-ligature)
+      (echo-message! echo "Global ligature mode enabled")
+      (echo-message! echo "Global ligature mode disabled"))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 1f7fbd5..10df513 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -17295,3 +17295,49 @@
 (def (cmd-yas-abort-snippet app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "YAS: aborted current snippet")))
+
+;; ============================================================
+;; Round 169 — Nerd-icons, All-the-icons, SVG-lib, Ligature (batch 1)
+;; ============================================================
+
+(def (cmd-nerd-icons-install-fonts app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nerd-icons: installing fonts...")))
+
+(def (cmd-nerd-icons-insert app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Icon name: "
+      (lambda (name)
+        (echo-message! echo (str "Nerd-icons: inserted icon " name))))))
+
+(def (cmd-nerd-icons-icon-for-mode app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nerd-icons: showing icon for current mode")))
+
+(def (cmd-nerd-icons-icon-for-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nerd-icons: showing icon for current file")))
+
+(def (cmd-nerd-icons-icon-for-dir app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nerd-icons: showing icon for directory")))
+
+(def (cmd-nerd-icons-icon-for-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nerd-icons: showing icon for buffer")))
+
+(def (cmd-all-the-icons-icon-for-mode app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "All-the-icons: showing icon for mode")))
+
+(def (cmd-all-the-icons-icon-for-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "All-the-icons: showing icon for file")))
+
+(def (cmd-all-the-icons-icon-for-dir app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "All-the-icons: showing icon for directory")))
+
+(def (cmd-all-the-icons-icon-for-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "All-the-icons: showing icon for buffer")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 5593296..4ca9c63 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -4982,4 +4982,25 @@
   (register-command! 'yas-deactivate-extra-mode cmd-yas-deactivate-extra-mode)
   (register-command! 'yas-visit-snippet-file cmd-yas-visit-snippet-file)
   (register-command! 'yas-compile-directory cmd-yas-compile-directory)
+  ;; Round 169 — Nerd-icons, All-the-icons, SVG-lib, Ligature
+  (register-command! 'nerd-icons-install-fonts cmd-nerd-icons-install-fonts)
+  (register-command! 'nerd-icons-insert cmd-nerd-icons-insert)
+  (register-command! 'nerd-icons-icon-for-mode cmd-nerd-icons-icon-for-mode)
+  (register-command! 'nerd-icons-icon-for-file cmd-nerd-icons-icon-for-file)
+  (register-command! 'nerd-icons-icon-for-dir cmd-nerd-icons-icon-for-dir)
+  (register-command! 'nerd-icons-icon-for-buffer cmd-nerd-icons-icon-for-buffer)
+  (register-command! 'all-the-icons-icon-for-mode cmd-all-the-icons-icon-for-mode)
+  (register-command! 'all-the-icons-icon-for-file cmd-all-the-icons-icon-for-file)
+  (register-command! 'all-the-icons-icon-for-dir cmd-all-the-icons-icon-for-dir)
+  (register-command! 'all-the-icons-icon-for-buffer cmd-all-the-icons-icon-for-buffer)
+  (register-command! 'all-the-icons-insert cmd-all-the-icons-insert)
+  (register-command! 'svg-lib-tag cmd-svg-lib-tag)
+  (register-command! 'svg-lib-progress-bar cmd-svg-lib-progress-bar)
+  (register-command! 'svg-lib-icon cmd-svg-lib-icon)
+  (register-command! 'ligature-set-ligatures cmd-ligature-set-ligatures)
+  (register-command! 'text-scale-mode cmd-text-scale-mode)
+  (register-command! 'nerd-icons-completion-mode cmd-nerd-icons-completion-mode)
+  (register-command! 'nerd-icons-ibuffer-mode cmd-nerd-icons-ibuffer-mode)
+  (register-command! 'all-the-icons-completion-mode cmd-all-the-icons-completion-mode)
+  (register-command! 'global-ligature-mode cmd-global-ligature-mode)
 )