contrib/lisp/org-contacts.el: Various formatting improvements and bug fixes

* contrib/lisp/org-contacts.el (org-contacts-ignore-property): Improve
formatting and spelling.
(org-contacts-complete-name): Improve formatting.
(org-contacts-vcard-format): Improve formatting and silent byte compiler.
(org-contacts-split-property): Fix a bug where `omit-nulls' were not
forced to `t' when `separators' was nil.
This commit is contained in:
Grégoire Jadi 2013-05-31 01:54:19 +02:00
parent e6b5811004
commit fa4869123d

View file

@ -87,7 +87,8 @@ When set to nil, all your Org files will be used."
:group 'org-contacts) :group 'org-contacts)
(defcustom org-contacts-ignore-property "IGNORE" (defcustom org-contacts-ignore-property "IGNORE"
"Name of the property, which values will be ignored when complete or export to vcard." "Name of the property, which values will be ignored when
completing or exporting to vcard."
:type 'string :type 'string
:group 'org-contacts) :group 'org-contacts)
@ -502,14 +503,15 @@ A group FOO is composed of contacts with the tag FOO."
;; Build the list of the email addresses which has ;; Build the list of the email addresses which has
;; been expired ;; been expired
for ignore-list = (org-contacts-split-property (or for ignore-list = (org-contacts-split-property
(cdr (assoc-string org-contacts-ignore-property (or (cdr (assoc-string org-contacts-ignore-property
(caddr contact))) "")) (caddr contact))) ""))
;; Build the list of the user email addresses. ;; Build the list of the user email addresses.
for email-list = (org-contacts-remove-ignored-property-values ignore-list for email-list = (org-contacts-remove-ignored-property-values
(org-contacts-split-property (or ignore-list
(cdr (assoc-string org-contacts-email-property (org-contacts-split-property
(caddr contact))) ""))) (or (cdr (assoc-string org-contacts-email-property
(caddr contact))) "")))
;; If the user has email addresses… ;; If the user has email addresses…
if email-list if email-list
;; … append a list of USER <EMAIL>. ;; … append a list of USER <EMAIL>.
@ -890,14 +892,15 @@ to do our best."
(name (org-contacts-vcard-escape (car contact))) (name (org-contacts-vcard-escape (car contact)))
(n (org-contacts-vcard-encode-name name)) (n (org-contacts-vcard-encode-name name))
(email (cdr (assoc-string org-contacts-email-property properties))) (email (cdr (assoc-string org-contacts-email-property properties)))
(tel (cdr (assoc-string org-contacts-tel-property properties))) (tel (cdr (assoc-string org-contacts-tel-property properties)))
(ignore (cdr (assoc-string org-contacts-ignore-property properties))) (ignore-list (cdr (assoc-string org-contacts-ignore-property properties)))
(ignore-list (when ignore-list
(org-contacts-split-property ignore-list)))
(note (cdr (assoc-string org-contacts-note-property properties))) (note (cdr (assoc-string org-contacts-note-property properties)))
(bday (org-contacts-vcard-escape (cdr (assoc-string org-contacts-birthday-property properties)))) (bday (org-contacts-vcard-escape (cdr (assoc-string org-contacts-birthday-property properties))))
(addr (cdr (assoc-string org-contacts-address-property properties))) (addr (cdr (assoc-string org-contacts-address-property properties)))
(nick (org-contacts-vcard-escape (cdr (assoc-string org-contacts-nickname-property properties)))) (nick (org-contacts-vcard-escape (cdr (assoc-string org-contacts-nickname-property properties))))
(head (format "BEGIN:VCARD\nVERSION:3.0\nN:%s\nFN:%s\n" n name)) (head (format "BEGIN:VCARD\nVERSION:3.0\nN:%s\nFN:%s\n" n name))
(ignore-list (when ignore (setq ignore-list (org-contacts-split-property ignore))))
emails-list result phones-list) emails-list result phones-list)
(concat head (concat head
(when email (progn (when email (progn
@ -995,12 +998,12 @@ normally \"[,; \f\t\n\r\v]+\", and OMIT-NULLS is forced to t.
If OMIT-NULLS is t, zero-length substrings are omitted from the list \(so If OMIT-NULLS is t, zero-length substrings are omitted from the list \(so
that for the default value of SEPARATORS leading and trailing whitespace that for the default value of SEPARATORS leading and trailing whitespace
are effectively trimmed). If nil, all zero-length substrings are retained." are effectively trimmed). If nil, all zero-length substrings are retained."
(let* ((keep-nulls (or nil omit-nulls)) (let* ((omit-nulls (if separators omit-nulls t))
(rexp (or separators org-contacts-property-values-separators)) (rexp (or separators org-contacts-property-values-separators))
(inputlist (split-string string rexp keep-nulls)) (inputlist (split-string string rexp omit-nulls))
(linkstring "") (linkstring "")
(bufferstring "") (bufferstring "")
(proplist (list ""))) (proplist (list "")))
(while inputlist (while inputlist
(setq bufferstring (pop inputlist)) (setq bufferstring (pop inputlist))
(if (string-match "\\[\\[" bufferstring) (if (string-match "\\[\\[" bufferstring)