Round 178: EUDC, LDAP, BBDB-ext, Org-contacts commands

ober

e36cc78d4c46f53948a392bbfa51bbddfd72f347

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index e4cc444..3d7eb22 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 178 — EUDC, LDAP, BBDB-ext, Org-contacts
+
+| Feature | Status | Notes |
+|---|---|---|
+| eudc-query-form | :orange_circle: | Open EUDC query form |
+| eudc-expand-inline | :orange_circle: | Expand inline EUDC query |
+| eudc-get-phone | :orange_circle: | Look up phone number |
+| eudc-get-email | :orange_circle: | Look up email address |
+| eudc-set-server | :orange_circle: | Set EUDC server |
+| eudc-hotlist-add-server | :orange_circle: | Add server to hotlist |
+| eudc-hotlist-delete-server | :orange_circle: | Delete server from hotlist |
+| eudc-display-records | :orange_circle: | Display EUDC records |
+| ldap-search | :orange_circle: | Search LDAP directory |
+| ldap-host-query | :orange_circle: | Query LDAP host |
+| ldap-add-entry | :orange_circle: | Add LDAP entry |
+| bbdb-mail-aliases | :orange_circle: | Show BBDB mail aliases |
+| bbdb-toggle-records-layout | :orange_circle: | Toggle BBDB records layout |
+| bbdb-display-current-record | :orange_circle: | Display current BBDB record |
+| bbdb-copy-records-as-kill | :orange_circle: | Copy BBDB records to kill ring |
+| org-contacts-find | :orange_circle: | Find org contact |
+| org-contacts-complete-name | :orange_circle: | Complete contact name |
+| org-contacts-export-vcard | :orange_circle: | Export contacts as vCard |
+| org-contacts-import-vcard | :orange_circle: | Import vCard contacts |
+| org-contacts-anniversary-list | :orange_circle: | Show anniversary list |
+
 ### Round 177 — SES, Forms-mode, Enriched-text
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 50ed43d..80e9808 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -17108,3 +17108,50 @@
     (echo-read-string echo "Face: "
       (lambda (face)
         (echo-message! echo (str "Enriched: set face to " face))))))
+
+;; Round 178 — EUDC, LDAP, BBDB-ext, Org-contacts (batch 2)
+(def (cmd-ldap-add-entry app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "LDAP: adding new entry")))
+
+(def (cmd-bbdb-mail-aliases app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "BBDB: showing mail aliases")))
+
+(def (cmd-bbdb-toggle-records-layout app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "BBDB: toggled records layout")))
+
+(def (cmd-bbdb-display-current-record app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "BBDB: displaying current record")))
+
+(def (cmd-bbdb-copy-records-as-kill app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "BBDB: copied records to kill ring")))
+
+(def (cmd-org-contacts-find app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Find contact: "
+      (lambda (name)
+        (echo-message! echo (str "Org-contacts: found " name))))))
+
+(def (cmd-org-contacts-complete-name app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-contacts: completing name at point")))
+
+(def (cmd-org-contacts-export-vcard app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Export vCard to: "
+      (lambda (path)
+        (echo-message! echo (str "Org-contacts: exported to " path))))))
+
+(def (cmd-org-contacts-import-vcard app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Import vCard from: "
+      (lambda (path)
+        (echo-message! echo (str "Org-contacts: imported from " path))))))
+
+(def (cmd-org-contacts-anniversary-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-contacts: showing anniversary list")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 9eebf01..25a809b 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -17734,3 +17734,56 @@
     (echo-read-string echo "Cell (e.g. A1): "
       (lambda (cell)
         (echo-message! echo (str "SES: jumped to cell " cell))))))
+
+;; Round 178 — EUDC, LDAP, BBDB-ext, Org-contacts (batch 1)
+(def (cmd-eudc-query-form app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EUDC: opening query form")))
+
+(def (cmd-eudc-expand-inline app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EUDC: expanding inline query")))
+
+(def (cmd-eudc-get-phone app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Name: "
+      (lambda (name)
+        (echo-message! echo (str "EUDC: looking up phone for " name))))))
+
+(def (cmd-eudc-get-email app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Name: "
+      (lambda (name)
+        (echo-message! echo (str "EUDC: looking up email for " name))))))
+
+(def (cmd-eudc-set-server app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Server: "
+      (lambda (server)
+        (echo-message! echo (str "EUDC: set server to " server))))))
+
+(def (cmd-eudc-hotlist-add-server app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Add server: "
+      (lambda (server)
+        (echo-message! echo (str "EUDC: added " server " to hotlist"))))))
+
+(def (cmd-eudc-hotlist-delete-server app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EUDC: deleted server from hotlist")))
+
+(def (cmd-eudc-display-records app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EUDC: displaying query records")))
+
+(def (cmd-ldap-search app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "LDAP search: "
+      (lambda (query)
+        (echo-message! echo (str "LDAP: searching for " query))))))
+
+(def (cmd-ldap-host-query app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "LDAP host: "
+      (lambda (host)
+        (echo-message! echo (str "LDAP: querying host " host))))))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index acd0e5d..8d294b5 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5171,4 +5171,25 @@
   (register-command! 'forms-delete-record cmd-forms-delete-record)
   (register-command! 'enriched-toggle-markup cmd-enriched-toggle-markup)
   (register-command! 'enriched-set-face cmd-enriched-set-face)
+  ;; Round 178 — EUDC, LDAP, BBDB-ext, Org-contacts
+  (register-command! 'eudc-query-form cmd-eudc-query-form)
+  (register-command! 'eudc-expand-inline cmd-eudc-expand-inline)
+  (register-command! 'eudc-get-phone cmd-eudc-get-phone)
+  (register-command! 'eudc-get-email cmd-eudc-get-email)
+  (register-command! 'eudc-set-server cmd-eudc-set-server)
+  (register-command! 'eudc-hotlist-add-server cmd-eudc-hotlist-add-server)
+  (register-command! 'eudc-hotlist-delete-server cmd-eudc-hotlist-delete-server)
+  (register-command! 'eudc-display-records cmd-eudc-display-records)
+  (register-command! 'ldap-search cmd-ldap-search)
+  (register-command! 'ldap-host-query cmd-ldap-host-query)
+  (register-command! 'ldap-add-entry cmd-ldap-add-entry)
+  (register-command! 'bbdb-mail-aliases cmd-bbdb-mail-aliases)
+  (register-command! 'bbdb-toggle-records-layout cmd-bbdb-toggle-records-layout)
+  (register-command! 'bbdb-display-current-record cmd-bbdb-display-current-record)
+  (register-command! 'bbdb-copy-records-as-kill cmd-bbdb-copy-records-as-kill)
+  (register-command! 'org-contacts-find cmd-org-contacts-find)
+  (register-command! 'org-contacts-complete-name cmd-org-contacts-complete-name)
+  (register-command! 'org-contacts-export-vcard cmd-org-contacts-export-vcard)
+  (register-command! 'org-contacts-import-vcard cmd-org-contacts-import-vcard)
+  (register-command! 'org-contacts-anniversary-list cmd-org-contacts-anniversary-list)
 )