* Renato Pontefice [2022-10-08 00:26]: > I'm unable to find documentation about this package. > Could someone tell me where I can find it? Hyperbole link: {M-x find-library RET org-contacts RET M-x goto-line RET 28 RET} ;;; Commentary: ;; This file contains the code for managing your contacts into Org-mode. ;; To enter new contacts, you can use `org-capture' and a minimal template just like ;; this: ;; ("c" "Contacts" entry (file "~/Org/contacts.org") ;; "* %(org-contacts-template-name) ;; :PROPERTIES: ;; :EMAIL: %(org-contacts-template-email) ;; :END:"))) ;; ;; You can also use a complex template, for example: ;; ;; ("c" "Contacts" entry (file "~/Org/contacts.org") ;; "* %(org-contacts-template-name) ;; :PROPERTIES: ;; :EMAIL: %(org-contacts-template-email) ;; :PHONE: ;; :ALIAS: ;; :NICKNAME: ;; :IGNORE: ;; :ICON: ;; :NOTE: ;; :ADDRESS: ;; :BIRTHDAY: ;; :END:"))) ;; How to search? ;; - You can use [M-x org-contacts] command to search. ;; ;; - You can use `org-sparse-tree' [C-c / p] to filter based on a ;; specific property. Or other matcher on `org-sparse-tree'. That is about that. One is supposed to record contact in Org properties so that Org facilities help in searching and "managing" such contacts. In my opinion it gives headaches to user. You can as well just write freely your contacts in Org headlines however you wish and then search for it. It asks you to add every single property yourself. Sorry, but I don't like ideas that expand and develop human effort instead of shortening it. Inserting new contacts shall helpfully ask user: - to which main group of people such person belongs? - phone and e-mail - address and minimum country Then the contact information shall be in front of the user to be edited quickly, such as: - how was that contact found? By mailing list, personally, somebody recommended or introduced the contact, from yellow pages, etc. ID 376527 Date created "2022-10-08 08:17:27.964896+03" Date modified "2022-10-08 08:19:56.069822+03" Prefix nil First name "Renato" Middle names nil Last name (People List Name) "Pontefice" Suffix nil Hyperdocument Set #1 nil Profile Image nil ID Document nil Lead source "Mailing List" Title nil Department nil Date of birth or Begin Date nil End date nil Don't contact nil Description nil Modified by username "maddox" Created by username "maddox" Introduced by "Jean Louis" Other names nil Tokens nil Rank 0 Assigned to nil People type "Individual Person" Reports to nil Communication Language nil SIC Code nil Industry nil Tag #1 nil Tag #2 nil Tag #3 nil Active "Active" FROM Identity "GNU.Support" Internal information nil Contact may have multiple relations: 284576 Renato Pontefice member Org Users (Emacs) 284577 Renato Pontefice member Emacs Users think of brother, mother, sister, member, accomplice, etc. In different relations person may have various titles, departments, start and end of relation, etc. and contact may have multiple assigned or related tasks, headings, Org files, passwords, addresses, cash transactions, mailings received, locations, conditions, reminders, reports, SMS, tags, etc. Then the variety of views or summaries of such information shall rather be presented inside of the Org file or any other markup. It means storage for people management shall be separate from any kind of markup including the editor, as that way it gets the capacity to help human in variety of ways. I can understand how people may tell that database is not needed. Some may tend towards RDBMS: ndwarshuis/org-sql: SQL backend for Emacs Org-Mode: https://github.com/ndwarshuis/org-sql Which I find good. It is logical step forward. It also shows that all the structured and ordered data could be managed by RBDMS: https://raw.githubusercontent.com/ndwarshuis/org-sql/master/doc/erd/erd-postgres.png It is yet another Org database wish. It is however good example of design of ordered information. Instead of using Org for management of contacts, I use Org for presentation. That way Org file may remain clean without properties. But it could also contain all the various links as well. This is my way of universal interpolation. Function `rcd-sql-first' invokes SQL for the list of people ID 376526 which is "Org Users". Macro `rcd-db-hyperbole-insert-after' is just for demo, it moves cursor forward and executes function. (defmacro rcd-db-hyperbole-insert-after (after &rest body) "Skip AFTER lines and insert BODY." `(progn (next-line ,after) (insert ,@body))) Hyperbole allows me to activate the button: ⟦ (rcd-db-hyperbole-insert-after 2 (rcd-sql-first "SELECT people_org_basic_list(376526)" cf-db)) ⟧ --snip-- * Org Users (Emacs) ** Mr. Vicente Ramirez, Communications and Reporting Officer, Executive Division People ID: 3 Groups: People who do not exist, Org Users (Emacs) E-mail (Default): vicente.ramirez@example.com Phone (Work): +01987654321 Phone (Mobile): +12345678910 ** Payas Relekar People ID: 376525 Groups: Org Users (Emacs) E-mail (Default): relekarpayas@gmail.com ** Renato Pontefice People ID: 376527 Groups: Emacs Users, Org Users (Emacs) E-mail (Default): renato.pontefice@gmail.com --snip-- and now one can also imagine that each of those communication lines suhc as phones, emails, cell phones, XMPP, etc. can be presented as links for easier access from Org. -- Jean Take action in Free Software Foundation campaigns: https://www.fsf.org/campaigns In support of Richard M. Stallman https://stallmansupport.org/