Round 300: Dpkg ext, Apt ext, RPM ext, Yum ext, Pacman ext (20 commands)

ober

246109867e284e69bbbee9a53496c3a52e98a171

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 10c48c1..06c9a5a 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 300 — Dpkg ext, Apt ext, RPM ext, Yum ext, Pacman ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| dpkg-list | :orange_circle: | List installed packages |
+| dpkg-install | :orange_circle: | Install deb package |
+| dpkg-remove | :orange_circle: | Remove deb package |
+| dpkg-info | :orange_circle: | Show package info |
+| apt-show | :orange_circle: | Show apt package |
+| apt-depends | :orange_circle: | Show dependencies |
+| apt-rdepends | :orange_circle: | Show reverse deps |
+| apt-policy | :orange_circle: | Show apt policy |
+| rpm-list | :orange_circle: | List RPM packages |
+| rpm-install | :orange_circle: | Install RPM package |
+| rpm-remove | :orange_circle: | Remove RPM package |
+| rpm-info | :orange_circle: | Show RPM info |
+| yum-search | :orange_circle: | Search yum packages |
+| yum-info | :orange_circle: | Show yum package info |
+| yum-depends | :orange_circle: | Show yum deps |
+| yum-history | :orange_circle: | Show yum history |
+| pacman-search | :orange_circle: | Search pacman packages |
+| pacman-info | :orange_circle: | Show pacman info |
+| pacman-files | :orange_circle: | List package files |
+| pacman-orphans | :orange_circle: | List orphaned packages |
+
 ### Round 299 — Ar ext, Pkg-config ext, Ldconfig ext, Locale ext, Timezone ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 518d735..91a9008 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -22913,4 +22913,62 @@
 
 (def (cmd-timezone-info app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Timezone: showing current timezone")))
\ No newline at end of file
+    (echo-message! echo "Timezone: showing current timezone")))
+
+;;; Round 300 — RPM ext, Yum ext, Pacman ext (batch 2)
+
+(def (cmd-rpm-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "RPM: removing " pkg))))))
+
+(def (cmd-rpm-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "RPM: info for " pkg))))))
+
+(def (cmd-yum-search app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Query: "
+      (lambda (q)
+        (echo-message! echo (str "Yum: searching " q))))))
+
+(def (cmd-yum-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Yum: info for " pkg))))))
+
+(def (cmd-yum-depends app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Yum: dependencies of " pkg))))))
+
+(def (cmd-yum-history app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Yum: showing transaction history")))
+
+(def (cmd-pacman-search app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Query: "
+      (lambda (q)
+        (echo-message! echo (str "Pacman: searching " q))))))
+
+(def (cmd-pacman-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Pacman: info for " pkg))))))
+
+(def (cmd-pacman-files app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Pacman: files in " pkg))))))
+
+(def (cmd-pacman-orphans app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Pacman: listing orphaned packages")))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index fc6ebce..ef3b89a 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -23636,3 +23636,61 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Ldconfig: listing libraries")))
 
+;;; Round 300 — Dpkg ext, Apt ext, RPM ext (batch 1)
+
+(def (cmd-dpkg-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dpkg: listing installed packages")))
+
+(def (cmd-dpkg-install app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package file: "
+      (lambda (pkg)
+        (echo-message! echo (str "Dpkg: installing " pkg))))))
+
+(def (cmd-dpkg-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Dpkg: removing " pkg))))))
+
+(def (cmd-dpkg-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Dpkg: info for " pkg))))))
+
+(def (cmd-apt-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Apt: showing " pkg))))))
+
+(def (cmd-apt-depends app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Apt: dependencies of " pkg))))))
+
+(def (cmd-apt-rdepends app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Apt: reverse deps of " pkg))))))
+
+(def (cmd-apt-policy app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Apt: policy for " pkg))))))
+
+(def (cmd-rpm-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "RPM: listing installed packages")))
+
+(def (cmd-rpm-install app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package file: "
+      (lambda (pkg)
+        (echo-message! echo (str "RPM: installing " pkg))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 50a474b..4d084c0 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7717,4 +7717,25 @@
   (register-command! 'timezone-list cmd-timezone-list)
   (register-command! 'timezone-set cmd-timezone-set)
   (register-command! 'timezone-info cmd-timezone-info)
+  ;; Round 300
+  (register-command! 'dpkg-list cmd-dpkg-list)
+  (register-command! 'dpkg-install cmd-dpkg-install)
+  (register-command! 'dpkg-remove cmd-dpkg-remove)
+  (register-command! 'dpkg-info cmd-dpkg-info)
+  (register-command! 'apt-show cmd-apt-show)
+  (register-command! 'apt-depends cmd-apt-depends)
+  (register-command! 'apt-rdepends cmd-apt-rdepends)
+  (register-command! 'apt-policy cmd-apt-policy)
+  (register-command! 'rpm-list cmd-rpm-list)
+  (register-command! 'rpm-install cmd-rpm-install)
+  (register-command! 'rpm-remove cmd-rpm-remove)
+  (register-command! 'rpm-info cmd-rpm-info)
+  (register-command! 'yum-search cmd-yum-search)
+  (register-command! 'yum-info cmd-yum-info)
+  (register-command! 'yum-depends cmd-yum-depends)
+  (register-command! 'yum-history cmd-yum-history)
+  (register-command! 'pacman-search cmd-pacman-search)
+  (register-command! 'pacman-info cmd-pacman-info)
+  (register-command! 'pacman-files cmd-pacman-files)
+  (register-command! 'pacman-orphans cmd-pacman-orphans)
 )