From 6080af9fa0183bde6946cd7036d4b30937a10a39 Mon Sep 17 00:00:00 2001 From: Feng Shu Date: Mon, 3 Jun 2013 23:17:57 +0800 Subject: [PATCH] Quickly insert (a) template(s) in current buffer * contrib/lisp/org-contacts.el (org-contacts-build-template-with-exist-contact):Build a contact template with exist contact, It is useful when you want to update exist contact(s). (org-contacts-build-template-with-string): Build contact template with a string, It is useful when you want to add a new contact. (org-contacts-insert-template): Insert contact template(s) at point, the template(s) will be built with the input string and exist contacts informations. Add a new function, which can quickly insert (a) contact templete(s), the templete(s) are built using user's input and the exist contacts information. --- contrib/lisp/org-contacts.el | 49 ++++++++++++++++++++++++++++++++++++++++++ 1 个文件被修改,插入 49 行(+) diff --git a/contrib/lisp/org-contacts.el b/contrib/lisp/org-contacts.el index ffd17a1..84c4473 100644 --- a/contrib/lisp/org-contacts.el +++ b/contrib/lisp/org-contacts.el @@ -951,6 +951,55 @@ is created and the VCard is written into that buffer." (current-buffer) (progn (save-buffer) (kill-buffer))))) +(defun org-contacts-build-template-with-exist-contact (contact) + "Build a contact template with exist contact, It is useful +when you want to update exist contact(s)." + (let* ((properties (caddr contact)) + (name (org-contacts-vcard-escape (car contact))) + (n (org-contacts-vcard-encode-name name)) + (alias (cdr (assoc-string org-contacts-alias-property properties)))) + (concat "** " name "\n" + ":PROPERTIES:\n" + ":" org-contacts-alias-property ": " alias "\n" + ":" org-contacts-note-property ":\n" + ":" org-contacts-email-property ":\n" + ":" org-contacts-tel-property ":\n" + ":" org-contacts-ignore-property ":\n" + ":END:\n\n"))) + +(defun org-contacts-build-template-with-string (string) + "Build contact template with a string, It is useful +when you want to add a new contact." + (concat "** " string "\n" + ":PROPERTIES:\n" + ":" org-contacts-alias-property ": " string "\n" + ":" org-contacts-note-property ":\n" + ":" org-contacts-email-property ":\n" + ":" org-contacts-tel-property ":\n" + ":" org-contacts-ignore-property ":\n" + ":END:\n\n")) + +(defun org-contacts-insert-template (string) + "Insert contact template(s) at point, the template(s) will be built +with the input string and exist contacts informations." + (interactive (list (read-string "Name or Alias: "))) + (let ((point (point)) + (contact-list + (delete-dups (nconc + (org-contacts-filter + nil nil + (cons org-contacts-alias-property string)) + (org-contacts-filter string))))) + (current-buffer) + (let ((inhibit-read-only t))) + (fundamental-mode) + (when (fboundp 'set-buffer-file-coding-system) + (set-buffer-file-coding-system coding-system-for-write)) + (loop for contact in contact-list + do (insert (org-contacts-build-template-with-exist-contact contact))) + (if contact-list nil (insert (org-contacts-build-template-with-string string))) + (goto-char point))) + (defun org-contacts-show-map (&optional name) "Show contacts on a map. Requires google-maps-el." -- 1.7.10.4