[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] [patch] [2update] Add functions, which can quickly insert org-co
From: |
Feng Shu |
Subject: |
Re: [O] [patch] [2update] Add functions, which can quickly insert org-contacts template(s) in current buffer |
Date: |
Tue, 04 Jun 2013 07:07:27 +0800 |
User-agent: |
Gnus/5.130008 (Ma Gnus v0.8) Emacs/24.2 (gnu/linux) |
Feng Shu <address@hidden> writes:
I will change this patch again, hard coding a templates in functions
is not a good way , maybe it is a complex method to solve a simpe things.
> From 938c2d0e3eb04faf2fd9708a382da9bac43d0bf9 Mon Sep 17 00:00:00 2001
> From: Feng Shu <address@hidden>
> 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 | 48
> ++++++++++++++++++++++++++++++++++++++++++
> 1 个文件被修改,插入 48 行(+)
>
> diff --git a/contrib/lisp/org-contacts.el b/contrib/lisp/org-contacts.el
> index ffd17a1..78e7fef 100644
> --- a/contrib/lisp/org-contacts.el
> +++ b/contrib/lisp/org-contacts.el
> @@ -951,6 +951,54 @@ 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)))
> + (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
--