Michael Strey <mst...@strey.biz> writes: > Robert, > > On Mo, Apr 08, 2013 at 09:44:12 -0500, Robert Goldman wrote: >> Michael Strey wrote: >> > Currently org-phone.el as well as my org-dial.el are incompatible with >> > org-contacts. The only idea behind my proposal was to make the >> > contributors >> > of both packages aware of each other. >> >> Can you explain what makes org-phone incompatible with org-contacts? >> Maybe my naming of some function? > > The problem is on the side of org-contacts. Org-contacts does not > support links in its properties. Thus, currently the only solution to > use the advantages of org-contacts and org-phone is to give the > information twice, like in the following example. > #+BEGIN_SRC org > * Strey, Michael > :PROPERTIES: > :EMAIL: mst...@strey.biz f...@bar.com > :PHONE: +493514129535 +491263213 > :END: > > [[mailto:mst...@strey.biz]] > [[mailto:f...@bar.com]] > [[phone:+49 (0)351 41295-35]] > [[phone:+49 126 3213]] > #+END_SRC
I use a export function which can export all contacts to the format: #+begin_example * NAME ** EMAIL: [[mailto:n...@n.com]] ** EMAIL: [[mailto:n...@n.com]] ** PHONE: [[tel:123456789]] ** PHONE: [[tel:123456789]] #+end_example It it only a temporary solution, may be someone will need it ,but adding it to the master may be not a good idea.
>From 2c73cdfdf54fe4c882a3bc0d3ce3cd268555100e Mon Sep 17 00:00:00 2001 From: Feng Shu <tuma...@gmail.com> Date: Sat, 13 Apr 2013 22:00:03 +0800 Subject: [PATCH] org-contacts.el, export contacts to outline-format * contrib/lisp/org-contacts.el (org-contacts-outline-file): new variable (org-contacts-outline-format): new function which formats a contact to outline-format (org-contacts-export-as-outline-format): new function, formats all contacts to outline-format * NAME :PROPERTIES: :EMAIL: n...@n.com n...@n.com :PHONE: 123456789 :END: export as: * NAME ** EMAIL: [[mailto:n...@n.com]] ** EMAIL: [[mailto:n...@n.com]] ** PHONE: [[tel:123456789]] ** PHONE: [[tel:123456789]] --- contrib/lisp/org-contacts.el | 69 ++++++++++++++++++++++++++++++++++++++++++ 1 个文件被修改,插入 69 行(+) diff --git a/contrib/lisp/org-contacts.el b/contrib/lisp/org-contacts.el index a3c4aed..dd89251 100644 --- a/contrib/lisp/org-contacts.el +++ b/contrib/lisp/org-contacts.el @@ -156,6 +156,12 @@ This overrides `org-email-link-description-format' if set." :group 'org-contacts :type 'file) +(defcustom org-contacts-outline-file "contacts-outline.org" + "Default file for outline-format export." + :group 'org-contacts + :type 'file) + + (defcustom org-contacts-enable-completion t "Enable or not the completion in `message-mode' with `org-contacts'." :group 'org-contacts @@ -896,6 +902,69 @@ is created and the VCard is written into that buffer." (current-buffer) (progn (save-buffer) (kill-buffer))))) +(defun org-contacts-outline-format (contact) + "Formats CONTACT in outline format." + (let* ((properties (caddr contact)) + (name (org-contacts-vcard-escape (car contact))) + (n (org-contacts-vcard-encode-name name)) + (email (cdr (assoc-string org-contacts-email-property properties))) + (tel (cdr (assoc-string org-contacts-tel-property properties))) + (note (cdr (assoc-string org-contacts-note-property properties))) + (bday (org-contacts-vcard-escape (cdr (assoc-string org-contacts-birthday-property properties)))) + (addr (cdr (assoc-string org-contacts-address-property properties))) + (nick (org-contacts-vcard-escape (cdr (assoc-string org-contacts-nickname-property properties)))) + (head (format "* %s\n" name))) + (concat head + (when email (progn + (setq emails-list (split-string email "[,;: ]+")) + (setq result "") + (while emails-list + (setq result (concat result "** EMAIL: " (concat "[[mailto:" (car emails-list) "]]") "\n")) + (setq emails-list (cdr emails-list))) + result)) + (when addr + (format "** ADRESS: " (replace-regexp-in-string "\\, ?" ";" addr))) + (when tel (progn + (setq phones-list (split-string tel "[,;: ]+")) + (setq result "") + (while phones-list + (setq result (concat result "** TEL: " (concat "[[tel:" (car phones-list) "]]" ) "\n")) + (setq phones-list (cdr phones-list))) + result)) + (when bday + (let ((cal-bday (calendar-gregorian-from-absolute (org-time-string-to-absolute bday)))) + (format "** BDAY:%04d-%02d-%02d\n" + (calendar-extract-year cal-bday) + (calendar-extract-month cal-bday) + (calendar-extract-day cal-bday)))) + (when nick (format "** NICKNAME: %s\n" nick)) + (when note (format "** NOTE: %s\n" note))))) + + + +(defun org-contacts-export-as-outline-format (&optional name file to-buffer) + "Export all contacts matching NAME as outline format +If TO-BUFFER is nil, the content is written to FILE or +`org-contacts-outline-file'. If TO-BUFFER is non-nil, the buffer +is created and the outlines is written into that buffer." + (interactive) ; TODO ask for name? + (let* ((filename (or file org-contacts-outline-file)) + (buffer (if to-buffer + (get-buffer-create to-buffer) + (find-file-noselect filename)))) + (message "Exporting...") + (set-buffer buffer) + (let ((inhibit-read-only t)) (erase-buffer)) + (fundamental-mode) + (when (fboundp 'set-buffer-file-coding-system) + (set-buffer-file-coding-system coding-system-for-write)) + (loop for contact in (org-contacts-filter name) + do (insert (org-contacts-outline-format contact))) + (if to-buffer + (current-buffer) + (progn (save-buffer) (kill-buffer))))) + + (defun org-contacts-show-map (&optional name) "Show contacts on a map. Requires google-maps-el." -- 1.7.10.4
> > This shortcoming effects not only the phone links but email links as > well. > > Regards --