From mboxrd@z Thu Jan 1 00:00:00 1970 From: Feng Shu Subject: Re: [patch] [3update] Add functions, Insert a exist contact name at point Date: Tue, 04 Jun 2013 17:41:53 +0800 Message-ID: <87li6q1ace.fsf@news.tumashu-localhost.org> References: <87vc5vm96n.fsf@news.tumashu-localhost.org> <87r4gin68g.fsf@news.tumashu-localhost.org> <87txle1rkl.fsf_-_@news.tumashu-localhost.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:38585) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ujnlt-000382-9J for emacs-orgmode@gnu.org; Tue, 04 Jun 2013 05:43:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ujnlm-0000od-Ie for emacs-orgmode@gnu.org; Tue, 04 Jun 2013 05:43:17 -0400 Received: from mail-pd0-f171.google.com ([209.85.192.171]:49453) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ujnlm-0000oW-Bp for emacs-orgmode@gnu.org; Tue, 04 Jun 2013 05:43:10 -0400 Received: by mail-pd0-f171.google.com with SMTP id z11so7010415pdj.16 for ; Tue, 04 Jun 2013 02:43:09 -0700 (PDT) Received: from tumashu ([110.97.82.245]) by mx.google.com with ESMTPSA id cc15sm66915905pac.1.2013.06.04.02.43.05 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Tue, 04 Jun 2013 02:43:08 -0700 (PDT) Received: from feng by news.tumashu-localhost.org with local (Exim 4.80) (envelope-from ) id 1UjnkX-0002h2-KW for emacs-orgmode@gnu.org; Tue, 04 Jun 2013 17:41:53 +0800 In-Reply-To: <87txle1rkl.fsf_-_@news.tumashu-localhost.org> (Feng Shu's message of "Tue, 04 Jun 2013 11:29:46 +0800") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org --=-=-= Content-Type: text/plain This is 4 update: --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: inline; filename=0001-Insert-a-exist-contact-name-s-at-point.patch Content-Transfer-Encoding: quoted-printable >From 326642e8cdcfcb507d82a2508e1cde91e9236540 Mon Sep 17 00:00:00 2001 From: Feng Shu Date: Mon, 3 Jun 2013 23:17:57 +0800 Subject: [PATCH] Insert (a) exist contact name(s) at point * org-contacts.el (org-contacts-get-exist-contact-name-list): New function, which can get exist contact name(s) matched 'string, return a list. (org-contacts-get-exist-contact-name-string): New macro, get exist contact name(s) matched 'string, return names string. (org-contacts-insert-contact-name): New function, which can insert (a) exist contact name(s) matched user's input at point. Add new functions, which can insert (a) exist contact name(s) at point, which is matched user's input. --- contrib/lisp/org-contacts.el | 36 ++++++++++++++++++++++++++++++++++++ 1 =E4=B8=AA=E6=96=87=E4=BB=B6=E8=A2=AB=E4=BF=AE=E6=94=B9=EF=BC=8C=E6=8F=92= =E5=85=A5 36 =E8=A1=8C(+) diff --git a/contrib/lisp/org-contacts.el b/contrib/lisp/org-contacts.el index 5d63fcc..70a78e1 100644 --- a/contrib/lisp/org-contacts.el +++ b/contrib/lisp/org-contacts.el @@ -967,6 +967,42 @@ is created and the VCard is written into that buffer." (current-buffer) (progn (save-buffer) (kill-buffer))))) =20 +(defun org-contacts-get-exist-contact-name-list (string) + "Get exist contact name(s) matched 'string, return a list." + (let ((contact-list (nconc + (org-contacts-filter + nil nil + (cons org-contacts-alias-property string)) + (org-contacts-filter string)))) + (setq result-name-list + (delete-dups + (loop for contact in contact-list + collect + (substring-no-properties + ((lambda (contact) + (let* ((name + (org-contacts-vcard-escape (car contact)))) name)) + contact)))))) + (if result-name-list result-name-list (list string))) + +(defmacro org-contacts-get-exist-contact-name-string (string) + "Get exist contact name(s) matched 'string, return names string." + (if (stringp string) + `(mapconcat 'identity (org-contacts-get-exist-contact-name-list ,stri= ng) " ") + `(mapconcat 'identity (org-contacts-get-exist-contact-name-list (symbo= l-name (quote ,string))) " "))) + +(defun org-contacts-insert-contact-name (string) + "At point insert (a) exist contact name(s) matched 'input." + (interactive (list (read-string "Contact Alias or Name: "))) + (current-buffer) + (let ((inhibit-read-only t))) + (when (fboundp 'set-buffer-file-coding-system) + (set-buffer-file-coding-system coding-system-for-write)) + (let ((name-list (org-contacts-get-exist-contact-name-list string))) + (while name-list + (insert (concat (car name-list) " ")) + (setq name-list (cdr name-list))))) + (defun org-contacts-show-map (&optional name) "Show contacts on a map. Requires google-maps-el." --=20 1.7.10.4 --=-=-=--