[O] org-contacts: how to manage contacts; structure of meta data (was: No completion in Gnus)

2011-10-05 Thread Karl Voit
* Thorsten quintf...@googlemail.com wrote:

 I have a org-contacts file with a few contacts with EMAIL property,
 taken from gnus using org-capture as described in the org-contacts
 manual. The contacts are tagged with some tags. 

[...]

 PS
 One further org-contacts related question: there is a predefined
 property ADDRESS, without any inner structure. Am I supposed to write my own
 org-capture template for that property? How would that look like - just
 one single string? If I want something more structured (street, city,
 zip-code etc), I have to define one property for each info-piece, or is
 there something like a compound property? 

I moved all of my approx. 1000 contacts from jPilot contacts to
org-contacts a few months ago. I faced the same questions you are
mentioning since org-contacts[1] does only mention the :EMAIL:
property.

A short research with my favourite search engine did not result in
any (ISO?) standard that relates to «how to define/describe contact
meta data».

Without describing further attempts, I ended up with following
yasnippet[2] template for a new contact:

,
| # name : Org-contacts template for a person or a company
| # --
| ** $1 $2  :$1$2:
| :PROPERTIES:
| :TYPE: ${3:$$(yas/choose-value '(person company))}
| :TITLE:
| :EMAIL: $4
| :URL:
| :MOBILE: 0043/
| :HOMEPHONE:
| :WORKPHONE:
| :PHONE:
| :COMPANY:
| :STREET:
| :POSTALCODE:
| :CITY:
| :COUNTRY: Österreich
| :END:
|
| first contact: $0
`

My current tags for contacts are defined in the header of my
contacts.org:

,[ first line of my contacts.org ]
| #+TAGS: job(j) friends(f) health(e) hotels(o) restaurants_bars(r) \
| sport(s) students_TU(t) relatives(r) company(c)
`

... but this is pretty much related to my previous system
(jPilot/datebk6/PalmOS) which offered only one single category for
each contact. I might re-think these tags in future.


A very handy bonus feature is referencing my contacts. In my .emacs
I do have following:

,[ .emacs (excerpt) ]
| (setq org-link-abbrev-alist
|   '(
| (contact . ~/org/contacts.org::/\*.*%s/)
| ))
`

Combined with following yasnippet template it results in very comfty
contact handling:

,[ contact yasnippet ]
| # name : expand link to contact
| # --
| [[contact:$1][${2:$$(unless yas/modified-p
|  (let ((field (nth 0 (yas/snippet-fields (first (yas/snippets-at-point))
|(concat (buffer-substring (yas/field-start field) (yas/field-end 
field)}]] $0
`

Basically, you have to enter the name of the snippet, press «TAB»
and then you type in the name (or anything of the heading line of a
contact). Then it results in [[contact:foo bar][foo bar]] which is a
clickable link to any contact which relates to «foo bar».

Whenever I rename my contacts.org or put it in another folder, I
just have to modify the line in my .emacs and not each link.

I like this system.

HTH

  1. http://julien.danjou.info/org-contacts.html
  2. http://code.google.com/p/yasnippet/
-- 
Karl Voit




Re: [O] org-contacts: how to manage contacts; structure of meta data (was: No completion in Gnus)

2011-10-05 Thread Thorsten
Karl Voit devn...@karl-voit.at writes:

 One further org-contacts related question: there is a predefined
 property ADDRESS, without any inner structure. Am I supposed to write my own
 org-capture template for that property? How would that look like - just
 one single string? If I want something more structured (street, city,
 zip-code etc), I have to define one property for each info-piece, or is
 there something like a compound property? 

 I moved all of my approx. 1000 contacts from jPilot contacts to
 org-contacts a few months ago. I faced the same questions you are
 mentioning since org-contacts[1] does only mention the :EMAIL:
 property.

 A short research with my favourite search engine did not result in
 any (ISO?) standard that relates to «how to define/describe contact
 meta data».

 Without describing further attempts, I ended up with following
 yasnippet[2] template for a new contact:

Do you think that yasnippet is superior to org-capture or is it just a
casuality that you prefered it to org-capture?


 ,
 | # name : Org-contacts template for a person or a company
 | # --
 | ** $1 $2  :$1$2:
 | :PROPERTIES:
 | :TYPE: ${3:$$(yas/choose-value '(person company))}
 | :TITLE:
 | :EMAIL: $4
 | :URL:
 | :MOBILE: 0043/
 | :HOMEPHONE:
 | :WORKPHONE:
 | :PHONE:
 | :COMPANY:
 | :STREET:
 | :POSTALCODE:
 | :CITY:
 | :COUNTRY: Österreich
 | :END:
 |
 | first contact: $0
 `

Thats what I thought, that a single :ADDRESS: property is not very
usefull or practical. So there is not something like a nested property,
each piece of information needs its own property. I think your list is
pretty complete and usable. 


 My current tags for contacts are defined in the header of my
 contacts.org:

 ,[ first line of my contacts.org ]
 | #+TAGS: job(j) friends(f) health(e) hotels(o) restaurants_bars(r) \
 | sport(s) students_TU(t) relatives(r) company(c)
 `

[how do you produce this nice insertions in your email?]

 A very handy bonus feature is referencing my contacts. In my .emacs
 I do have following:

 ,[ .emacs (excerpt) ]
 | (setq org-link-abbrev-alist
 |   '(
 | (contact . ~/org/contacts.org::/\*.*%s/)
 | ))
 `

 Combined with following yasnippet template it results in very comfty
 contact handling:

 ,[ contact yasnippet ]
 | # name : expand link to contact
 | # --
 | [[contact:$1][${2:$$(unless yas/modified-p
 |  (let ((field (nth 0 (yas/snippet-fields (first (yas/snippets-at-point))
 |(concat (buffer-substring (yas/field-start field) (yas/field-end 
 field)}]] $0
 `

 Basically, you have to enter the name of the snippet, press «TAB»
 and then you type in the name (or anything of the heading line of a
 contact). Then it results in [[contact:foo bar][foo bar]] which is a
 clickable link to any contact which relates to «foo bar».

Great, I'll give that a try too.

Thanks for your help
Cheers

-- 
Thorsten