Mercurial > emacs
annotate man/eudc.texi @ 76877:f965ea8c5333
** herberteuler@hotmail.com, Mar 28: select and META key
Fixed.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Sun, 01 Apr 2007 17:45:58 +0000 |
parents | 3d45362f1d38 |
children | 88224dc74061 95d0cdf160ea |
rev | line source |
---|---|
27316 | 1 \input texinfo.tex |
2 @c %**start of header | |
3 @setfilename ../info/eudc | |
4 @settitle Emacs Unified Directory Client (EUDC) Manual | |
5 @afourpaper | |
6 @c %**end of header | |
7 | |
47737
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
8 @copying |
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
9 This file documents EUDC v1.30b. |
27316 | 10 |
11 EUDC is the Emacs Unified Directory Client, a common interface to | |
12 directory servers using various protocols such as LDAP or the CCSO white | |
13 pages directory system (PH/QI) | |
14 | |
75348 | 15 Copyright @copyright{} 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 |
69681
11b616eddda4
@copyright{}, no indentation in @copying{}
Karl Berry <karl@gnu.org>
parents:
68639
diff
changeset
|
16 Free Software Foundation, Inc. |
27316 | 17 |
47737
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
18 @quotation |
37404
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
19 Permission is granted to copy, distribute and/or modify this document |
65555
69b3598a61c5
Update all manuals to specify GFDL version 1.2.
Romain Francoise <romain@orebokech.com>
parents:
64890
diff
changeset
|
20 under the terms of the GNU Free Documentation License, Version 1.2 or |
37404
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
21 any later version published by the Free Software Foundation; with no |
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
22 Invariant Sections, with the Front-Cover texts being ``A GNU |
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
23 Manual'', and with the Back-Cover Texts as in (a) below. A copy of the |
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
24 license is included in the section entitled ``GNU Free Documentation |
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
25 License'' in the Emacs manual. |
27316 | 26 |
37404
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
27 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify |
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
28 this GNU Manual, like GNU software. Copies published by the Free |
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
29 Software Foundation raise funds for GNU development.'' |
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
30 |
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
31 This document is part of a collection distributed under the GNU Free |
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
32 Documentation License. If you want to distribute this document |
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
33 separately from the collection, you can do so by adding a copy of the |
730f77edf073
Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents:
30009
diff
changeset
|
34 license to the document, as described in section 6 of the license. |
47737
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
35 @end quotation |
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
36 @end copying |
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
37 |
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
38 @dircategory Emacs |
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
39 @direntry |
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
40 * EUDC: (eudc). An Emacs client for directory servers (LDAP, PH). |
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
41 @end direntry |
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
42 |
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
43 @footnotestyle end |
27316 | 44 |
45 @titlepage | |
46 @title{EUDC Manual} | |
47 @subtitle{The Emacs Unified Directory Client} | |
48 @author by Oscar Figueiredo | |
49 @code{1.30b} | |
50 | |
51 @page | |
52 @vskip 0pt plus 1fill | |
47737
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
53 @insertcopying |
27316 | 54 @end titlepage |
55 | |
47737
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
56 @ifnottex |
27316 | 57 @node Top, Overview, (dir), (dir) |
58 @comment node-name, next, previous, up | |
59 | |
60 | |
61 This manual documents EUDC v1.30b, the Emacs Unified Directory Client. | |
62 | |
63 A common interface to directory servers using various protocols such as | |
64 LDAP or the CCSO white pages directory system (PH/QI) | |
65 | |
47737
0a70200bde27
use @copying instead of @ifinfo.
Karl Berry <karl@gnu.org>
parents:
43961
diff
changeset
|
66 @end ifnottex |
27316 | 67 |
68 @menu | |
69 * Overview:: Summary of EUDC features | |
70 * Installation:: How to install EUDC | |
71 * Usage:: The various usage possibilities explained | |
72 * Credits:: Who's done what | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
73 * Command and Function Index:: |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
74 * Variables Index:: |
27316 | 75 @end menu |
76 | |
77 | |
78 | |
79 | |
80 | |
81 @node Overview, Installation, Top, Top | |
82 @comment node-name, next, previous, up | |
83 @chapter Overview | |
84 | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
85 EUDC, the @dfn{Emacs Unified Directory Client}, provides a common user |
27316 | 86 interface to access directory servers using different directory |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
87 protocols. |
27316 | 88 |
89 Currently supported back-ends are: | |
90 | |
91 @itemize @bullet | |
92 @item | |
93 LDAP, Lightweight Directory Access Protocol | |
94 @item | |
95 CCSO PH/QI | |
96 @item | |
71224
b7261e09f8e4
* cc-mode.texi (Getting Started, Indentation Commands, Config Basics)
Romain Francoise <romain@orebokech.com>
parents:
69681
diff
changeset
|
97 BBDB, Big Brother's Insidious Database |
27316 | 98 @end itemize |
99 | |
100 The main features of the EUDC interface are: | |
101 | |
102 @itemize @bullet | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
103 @item |
27316 | 104 Queries using a customizable form |
105 @item | |
106 Inline query expansion (for instance you can expand a name | |
107 to an email address in a mail message buffer using a server as an | |
108 address book) | |
109 @item | |
110 Multiple servers can be tried in turn until a match is found for an | |
111 inline query | |
112 @item | |
113 Fast minibuffer queries for email addresses and phone numbers | |
114 @item | |
115 Interface to BBDB to let you insert server records into your own BBDB database | |
116 (@pxref{Top,,BBDB,bbdb,BBDB Manual}) | |
117 @end itemize | |
118 | |
119 @menu | |
120 * LDAP:: What is LDAP ? | |
121 * CCSO PH/QI:: What is CCSO, PH, QI ? | |
122 * BBDB:: What is BBDB ? | |
123 @end menu | |
124 | |
125 | |
126 | |
127 @node LDAP, CCSO PH/QI, Overview, Overview | |
128 @comment node-name, next, previous, up | |
129 @section LDAP | |
130 | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
131 LDAP, @dfn{the Lightweight Directory Access Protocol}, is a communication |
27316 | 132 protocol for directory applications defined in RFC 1777. |
133 | |
134 Quoted from RFC 1777: | |
135 | |
136 @quotation | |
137 [LDAP] is designed to provide access to the X.500 Directory while not | |
138 incurring the resource requirements of the Directory Access Protocol | |
139 (DAP). This protocol is specifically targeted at simple management | |
140 applications and browser applications that provide simple read/write | |
141 interactive access to the X.500 Directory, and is intended to be a | |
142 complement to the DAP itself. | |
143 @end quotation | |
144 | |
145 LDAP servers usually store (but are not limited to) information about | |
146 people such as their name, phone number, email address, office | |
147 location, etc@enddots{} More information about LDAP can be found at | |
148 @url{http://www.openldap.org/} | |
149 | |
150 EUDC requires external support to access LDAP directory servers | |
151 (@pxref{LDAP Requirements}) | |
152 | |
153 | |
154 @node CCSO PH/QI, BBDB, LDAP, Overview | |
155 @comment node-name, next, previous, up | |
156 @section CCSO PH/QI | |
157 | |
158 The Central Computing Services Office (CCSO) of the University of | |
159 Illinois at Urbana Champaign (UIUC) created and freely distributes a | |
160 directory system that is currently in use in more than 300 organizations | |
161 around the world. The system records information about people such as | |
162 their address, phone number, email, academic information or any other | |
163 details it was configured to. | |
164 | |
165 The system consists of two parts: a database server traditionally called | |
166 @samp{qi} and a command-line client called @samp{ph}. | |
167 @url{ftp://uiarchive.cso.uiuc.edu/pub/packages/ph} is the main | |
168 distribution site. @url{http://www.uiuc.edu/cgi-bin/ph/lookup?Query=.} | |
169 provides a listing of the active @samp{qi} servers. | |
170 | |
171 The original command-line @samp{ph} client that comes with the | |
172 @samp{ph/qi} distribution provides additional features like the | |
173 possibility to communicate with the server in login-mode which makes it | |
174 possible to change records in the database. This is not implemented in | |
175 EUDC. | |
176 | |
177 | |
178 @node BBDB, , CCSO PH/QI, Overview | |
179 @comment node-name, next, previous, up | |
180 @section BBDB | |
181 | |
71224
b7261e09f8e4
* cc-mode.texi (Getting Started, Indentation Commands, Config Basics)
Romain Francoise <romain@orebokech.com>
parents:
69681
diff
changeset
|
182 BBDB is the @dfn{Big Brother's Insidious Database}, a package for Emacs |
27316 | 183 originally written by Jamie Zawinski which provides rolodex-like |
184 database functionality featuring tight integration with the Emacs mail | |
185 and news readers. | |
186 | |
187 It is often used as an enhanced email address book. | |
188 | |
39267 | 189 EUDC considers BBDB as a directory server back end just like LDAP or |
190 PH/QI servers, though BBDB has no client/server protocol and thus always | |
27316 | 191 resides locally on your machine. The point in this is not to offer an |
192 alternate way to query your BBDB database (BBDB itself provides much | |
39267 | 193 more flexible ways to do that), but rather to offer an interface to your |
27316 | 194 local directory that is consistent with the interface to external |
195 directories (LDAP, PH/QI). This is particularly interesting when | |
196 performing queries on multiple servers. | |
197 | |
198 EUDC also offers a means to insert results from directory queries into | |
199 your own local BBDB (@pxref{Creating BBDB Records}) | |
200 | |
201 @node Installation, Usage, Overview, Top | |
202 @comment node-name, next, previous, up | |
203 @chapter Installation | |
204 | |
205 Add the following to your @file{.emacs} init file: | |
206 @lisp | |
207 (require 'eudc) | |
208 @end lisp | |
209 This will install EUDC at startup. | |
210 | |
211 After installing EUDC you will find (the next time you launch Emacs) a | |
212 new @code{Directory Search} submenu in the @samp{Tools} menu that will | |
213 give you access to EUDC. | |
214 | |
215 You may also find it useful to add the following to your @file{.emacs} | |
216 initialization file to add a shortcut for email address expansion in | |
217 email composition buffers (@pxref{Inline Query Expansion}) | |
218 | |
219 @lisp | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
220 (eval-after-load |
27316 | 221 "message" |
222 '(define-key message-mode-map [(control ?c) (tab)] 'eudc-expand-inline)) | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
223 (eval-after-load |
27316 | 224 "sendmail" |
225 '(define-key mail-mode-map [(control ?c) (tab)] 'eudc-expand-inline)) | |
226 @end lisp | |
227 | |
228 @menu | |
229 * LDAP Requirements:: EUDC needs external support for LDAP | |
230 @end menu | |
231 | |
232 @node LDAP Requirements, , Installation, Installation | |
233 @comment node-name, next, previous, up | |
234 @section LDAP Requirements | |
235 | |
236 LDAP support is added by means of @file{ldap.el} which is part of Emacs. | |
237 @file{ldap.el} needs an external command line utility named | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
238 @file{ldapsearch} which is available as part of LDAP toolkits: |
27316 | 239 |
240 @itemize @bullet | |
241 @item | |
242 Open LDAP Libraries | |
243 (@url{http://www.openldap.org/}) | |
244 @item | |
245 University of Michigan's LDAP Client software | |
246 (@url{http://www.umich.edu/~dirsvcs/ldap/}) | |
247 @end itemize | |
248 | |
249 | |
250 @node Usage, Credits, Installation, Top | |
251 @comment node-name, next, previous, up | |
252 @chapter Usage | |
253 | |
254 This chapter describes the usage of EUDC. Most functions and | |
255 customization options are available through the @samp{Directory Search} | |
256 submenu of the @samp{Tools} submenu. | |
257 | |
258 @menu | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
259 * Querying Servers:: How queries are performed and handled |
27316 | 260 * Query Form:: How to use and customize the query form |
261 * Display of Query Results:: Controlling how query results are presented | |
262 * Inline Query Expansion:: How to use and customize inline queries | |
263 * The Server Hotlist:: How to use and manage the server hotlist | |
39267 | 264 * Multi-server Queries:: How to query multiple servers successively |
27316 | 265 * Creating BBDB Records:: How to insert query results into your BBDB |
266 * Server/Protocol Locals:: Customizing on a per server/protocol basis | |
267 @end menu | |
268 | |
269 | |
270 @node Querying Servers, Query Form, Usage, Usage | |
271 @comment node-name, next, previous, up | |
272 @section Querying Servers | |
273 | |
274 EUDC's basic functionality is to let you query a directory server and | |
275 return the results back to you. There are several things you may want | |
276 to customize in this process. | |
277 | |
278 | |
279 @menu | |
280 * Selecting a Server:: The first thing to do | |
281 * Return Attributes:: Configuring what the server should return | |
282 * Duplicate Attributes:: What to do when records have duplicate attributes | |
283 @end menu | |
284 | |
285 @node Selecting a Server, Return Attributes, Querying Servers, Querying Servers | |
286 @subsection Selecting a Server | |
287 | |
288 Before doing any query you will need to set the directory server. You | |
289 need to specify the name of the host machine running the server software | |
290 and the protocol to use. If you do not set the server in any fashion, | |
291 EUDC will ask you for one when you make your first query. | |
292 | |
293 You can set the server by selecting one from your hotlist of servers | |
294 (@pxref{The Server Hotlist}) available in the @samp{Server} submenu or | |
295 by selecting @samp{New Server} in that same menu. | |
296 | |
297 LDAP servers generally require some configuration before you can perform | |
298 queries on them. In particular, the @dfn{search base} must be | |
299 configured. If the server you select has no configured search base then | |
300 EUDC will propose you to configure it at this point. A customization | |
301 buffer will be displayed where you can edit the search base and other | |
302 parameters for the server. | |
303 | |
304 @defvar eudc-server | |
305 The name or IP address of the remote directory server. A TCP port number | |
306 may be specified by appending a colon and a number to the name of the | |
307 server. You will not need this unless your server runs on a port other | |
308 than the default (which depends on the protocol). | |
309 If the directory server resides on your own computer (which is the case | |
39267 | 310 if you use the BBDB back end) then `localhost' is a reasonable value but |
27316 | 311 it will be ignored anyway. |
312 @end defvar | |
313 | |
314 @defvar eudc-protocol | |
315 The directory protocol to use to query the server. Currently supported | |
316 protocols in this version of EUDC are @code{ph}, @code{ldap} and @code{bbdb}. | |
317 @end defvar | |
318 | |
319 @deffn Command eudc-set-server | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
320 This command accessible from @samp{New Server} submenu lets you specify a |
27316 | 321 new directory server and protocol. |
322 @end deffn | |
323 | |
324 @node Return Attributes, Duplicate Attributes, Selecting a Server, Querying Servers | |
325 @subsection Return Attributes | |
326 | |
327 Directory servers may be configured to return a default set of | |
328 attributes for each record matching a query if the query specifies none. | |
329 The variable @code{eudc-default-return-attributes} controls the return | |
330 attributes you want to see, if different from the server defaults. | |
331 | |
332 @defvar eudc-default-return-attributes | |
333 A list of the default attributes to extract from directory entries. If | |
334 set to the symbol @code{all} then all available attributes are | |
335 returned. A value of @code{nil}, the default, means to return the | |
336 default attributes as configured in the server. | |
337 @end defvar | |
338 | |
339 The server may return several matching records to a query. Some of the | |
340 records may however not contain all the attributes you requested. You can | |
341 discard those records. | |
342 | |
343 @defopt eudc-strict-return-matches | |
344 If non-@code{nil}, entries that do not contain all the requested return | |
345 attributes are ignored. Default is @code{t}. | |
346 @end defopt | |
347 | |
348 @node Duplicate Attributes, , Return Attributes, Querying Servers | |
349 @subsection Duplicate Attributes | |
350 | |
351 Directory standards may authorize different instances of the same | |
352 attribute in a record. For instance the record of a person may contain | |
353 several email fields containing different email addresses. When using | |
354 a QI directory server this is difficult to distinguish from attributes | |
355 having multi-line values such as the postal address that may contain a | |
356 line for the street and another one for the zip code and city name. In | |
357 both cases, EUDC will consider the attribute duplicated. | |
358 | |
359 EUDC has several methods to deal with duplicated attributes. The | |
360 available methods are: | |
361 | |
362 @table @code | |
363 @item list | |
364 Makes a list with the different values of the duplicate attribute. The | |
365 record is returned with only one instance of the attribute with a list | |
366 of all the different values as a value. This is the default method that | |
367 is used to handle duplicate fields for which no other method has been | |
368 specified. | |
369 @item first | |
370 Discards all the duplicate values of the field keeping only the first | |
371 one. | |
372 @item concat | |
373 Concatenates the different values using a newline as a separator. The | |
374 record keeps only one instance of the field the value of which is a | |
375 single multi-line string. | |
376 @item duplicate | |
377 Duplicates the whole record into as many instances as there are different | |
378 values for the field. This is the default for the email field. Thus a | |
379 record containing 3 different email addresses is duplicated into three | |
380 different records each having a single email address. This is | |
381 particularly useful in combination with @code{select} as the method to | |
382 handle multiple matches in inline expansion queries (@pxref{Inline Query | |
383 Expansion}) because you are presented with the 3 addresses in a | |
384 selection buffer | |
385 @end table | |
386 | |
387 Because a method may not be applicable to all fields, the variable | |
388 @code{eudc-duplicate-attribute-handling-method} lets you specify either a | |
389 default method for all fields or a method for each individual field. | |
390 | |
391 @defvar eudc-duplicate-attribute-handling-method | |
392 A method to handle entries containing duplicate attributes. This is | |
39267 | 393 either an alist of elements @code{(@var{attr} . @var{method})}, or a symbol |
27316 | 394 @var{method}. The alist form of the variable associates a method to an |
39267 | 395 individual attribute name; the second form specifies a method applicable |
27316 | 396 to all attribute names. Available methods are: @code{list}, |
39267 | 397 @code{first}, @code{concat}, and @code{duplicate} (see above). The default is |
27316 | 398 @code{list}. |
399 @end defvar | |
400 | |
401 | |
402 | |
403 @node Query Form, Display of Query Results, Querying Servers, Usage | |
404 @comment node-name, next, previous, up | |
405 @section Query Form | |
406 | |
407 The simplest way to query your directory server is to use the query | |
408 form. You display the query form with the @samp{Query with Form} menu | |
409 item or by invoking the command @kbd{M-x eudc-query-form}. The attribute | |
410 names presented in this form are defined by the | |
411 @code{eudc-query-form-attributes} variable (unless a non-@code{nil} | |
412 argument is supplied to @code{eudc-query-form}). | |
413 | |
414 Since the different directory protocols to which EUDC interfaces may | |
415 use different names for equivalent attributes, EUDC defines its own set | |
416 of attribute names and a mapping between these names and their | |
417 protocol-specific equivalent through the variable | |
418 @code{eudc-protocol-attributes-translation-alist}. Names currently | |
419 defined by EUDC are @code{name}, @code{firstname}, @code{email} and | |
420 @code{phone}. | |
421 | |
422 @defvar eudc-query-form-attributes | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
423 @findex eudc-get-attribute-list |
27316 | 424 A list of attributes presented in the query form. Attribute names in |
425 this list should be either EUDC attribute names or valid attribute | |
426 names. You can get a list of valid attribute names for the current | |
427 protocol with the @samp{List Valid Attribute Names} menu item or the | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
428 @kbd{M-x eudc-get-attribute-list} command. Defaults to @code{name}, |
27316 | 429 @code{email} and @code{phone}. |
430 @end defvar | |
431 | |
432 @deffn Command eudc-query-form get-fields-from-server | |
433 Display a form to query the directory server. If given a non-@code{nil} | |
434 argument the function first queries the server for the existing fields | |
435 and displays a corresponding form. Not all protocols may support a | |
436 non-@code{nil} argument here. | |
437 @end deffn | |
438 | |
439 Since the names of the fields may not be explicit enough or adapted to | |
440 be directly displayed as prompt strings in the form, the variable | |
441 @code{eudc-user-attribute-names-alist} lets you define more explicit | |
442 names for directory attribute names. This variable is ignored if | |
443 @code{eudc-use-raw-directory-names} is non-@code{nil}. | |
444 | |
445 @defvar eudc-user-attribute-names-alist | |
446 This is an alist of user-defined names for the directory attributes used in | |
447 query/response forms. Prompt strings for attributes that are not in this | |
448 alist are derived by splitting the attribute name at underscores and | |
449 capitalizing the individual words. | |
450 @end defvar | |
451 | |
452 @defvar eudc-use-raw-directory-names | |
453 If non-@code{nil}, use attributes names as defined in the directory. | |
454 Otherwise, directory query/response forms display the user attribute | |
455 names defined in @code{eudc-user-attribute-names-alist}. | |
456 @end defvar | |
457 | |
458 @node Display of Query Results, Inline Query Expansion, Query Form, Usage | |
459 @comment node-name, next, previous, up | |
460 @section Display of Query Results | |
461 | |
462 Upon successful completion of a form query, EUDC will display a buffer | |
463 containing the results of the query. | |
464 | |
465 The fields that are returned for each record | |
466 are controlled by @code{eudc-default-return-attributes} (@pxref{Return | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
467 Attributes}). |
27316 | 468 |
469 The display of each individual field can be performed by an arbitrary | |
39267 | 470 function which allows specific processing for binary values, such as |
471 images or audio samples, as well as values with semantics, such as | |
472 URLs. | |
27316 | 473 |
474 @defvar eudc-attribute-display-method-alist | |
475 An alist specifying methods to display attribute values. Each member of | |
476 the list is of the form @code{(@var{name} . @var{func})} where | |
477 @var{name} is a lowercased string naming a directory attribute | |
478 (translated according to @code{eudc-user-attribute-names-alist} if | |
56279
b1ae5333057a
* ses.texi, viper.texi, search.texi, flymake.texi, faq.texi:
Jesper Harder <harder@ifa.au.dk>
parents:
52401
diff
changeset
|
479 @code{eudc-use-raw-directory-names} is non-@code{nil}) and @var{func} a |
27316 | 480 function that will be passed the corresponding attribute values for |
481 display. | |
482 @end defvar | |
483 | |
484 This variable has protocol-local definitions (see @pxref{Server/Protocol | |
485 Locals}). For instance, it is defined as follows for LDAP: | |
486 | |
487 @lisp | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
488 (eudc-protocol-set 'eudc-attribute-display-method-alist |
27316 | 489 '(("jpegphoto" . eudc-display-jpeg-inline) |
490 ("labeledurl" . eudc-display-url) | |
491 ("audio" . eudc-display-sound) | |
492 ("labeledurl" . eudc-display-url) | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
493 ("url" . eudc-display-url)) |
27316 | 494 'ldap) |
495 @end lisp | |
496 | |
497 EUDC provides a set of built-in functions to display binary value types: | |
498 | |
499 @defun eudc-display-generic-binary data | |
500 Display a button for unidentified binary @var{data}. | |
501 @end defun | |
502 | |
503 @defun eudc-display-url url | |
504 Display URL and make it clickable. | |
505 @end defun | |
506 | |
507 @defun eudc-display-sound data | |
508 Display a button to play the sound @var{data}. | |
509 @end defun | |
510 | |
511 @defun eudc-display-jpeg-inline data | |
512 Display the JPEG @var{data} inline at point if possible. | |
513 @end defun | |
514 | |
515 @defun eudc-display-jpeg-as-button data | |
516 Display a button for the JPEG @var{data}. | |
517 @end defun | |
518 | |
519 Right-clicking on a binary value button pops up a contextual menu with | |
520 options to process the value. Among these are saving the attribute | |
521 value to a file or sending it to an external viewer command. External | |
522 viewers should expect the value on their standard input and should | |
523 display it or perform arbitrary processing on it. Messages sent to | |
524 standard output are discarded. External viewers are listed in the | |
525 variable @code{eudc-external-viewers} which you can customize. | |
526 | |
527 @defvar eudc-external-viewers | |
528 This is a list of viewer program specifications. Each specification is | |
529 a list whose first element is a string naming the viewer for unique | |
530 identification, the second element is the executable program which | |
531 should be invoked and the following elements are arguments that should | |
532 be passed to the program. | |
533 @end defvar | |
534 | |
535 | |
536 @node Inline Query Expansion, The Server Hotlist, Display of Query Results, Usage | |
537 @comment node-name, next, previous, up | |
538 @section Inline Query Expansion | |
539 | |
540 Inline query expansion is a powerful method to get completion from your | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
541 directory server. The most common usage is for expanding names to email |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
542 addresses in mail message buffers. The expansion is performed by the |
27316 | 543 command @kbd{M-x eudc-expand-inline} which is available from the |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
544 @samp{Expand Inline Query} menu item but can also be conveniently |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
545 bound to a key shortcut (@pxref{Installation}). The operation is |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
546 controlled by the variables @code{eudc-inline-expansion-format}, |
27316 | 547 @code{eudc-inline-query-format}, |
548 @code{eudc-expanding-overwrites-query} and | |
549 @code{eudc-multiple-match-handling-method}. | |
550 | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
551 If the query fails for a server, other servers may be tried successively |
27316 | 552 until one of them finds a match (@pxref{Multi-server Queries}). |
553 | |
554 @deffn Command eudc-expand-inline replace-p | |
555 Query the server and expand the query string before point. The query | |
556 string consists of the buffer substring from the point back to the | |
557 preceding comma, colon or beginning of | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
558 line. @code{eudc-inline-query-format} controls how individual words |
27316 | 559 are mapped onto directory attribute names. After querying the server |
560 for the given string, the expansion specified by | |
561 @code{eudc-inline-expansion-format} is inserted in the buffer at | |
562 point. If @var{replace-p} is @code{t} then this expansion replaces the | |
563 query string in the buffer. If @code{eudc-expanding-overwrites-query} | |
564 is non-@code{nil} then the meaning of @var{replace-p} is negated. | |
565 @end deffn | |
566 | |
567 @defvar eudc-inline-query-format | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
568 Format of an inline expansion query. |
27316 | 569 This is actually a list of @var{format}s. A @var{format} is a list of |
570 one or more EUDC attribute names. A @var{format} applies if it contains | |
571 as many attributes as individual words in the inline query string. If | |
572 several @var{format}s apply then they are tried in order until a match | |
573 is found. If @code{nil} all the words will be mapped onto the default | |
574 server/protocol attribute name (generally @code{name}). | |
575 | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
576 For instance, use the following |
27316 | 577 @lisp |
578 (setq eudc-inline-query-format '((name) | |
579 (firstname) | |
580 (firstname name))) | |
581 @end lisp | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
582 @noindent |
27316 | 583 to indicate that single word expansion queries are to be considered as |
584 surnames and if no match is found then they should be tried as first | |
585 names. Inline queries consisting of two words are considered as | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
586 consisting of a first name followed by a surname. If the query consists |
27316 | 587 of more than two words, then the first one is considered as the first |
588 name and the remaining words are all considered as surname constituents. | |
589 | |
590 @var{format}s are in fact not limited to EUDC attribute names, you can | |
591 use server or protocol specific names in them. It may be safer if you | |
592 do so, to set the variable @code{eudc-inline-query-format} in a protocol | |
593 or server local fashion (see @pxref{Server/Protocol Locals}). | |
594 | |
595 For instance you could use the following to match up to three words | |
596 against the @code{cn} attribute of LDAP servers: | |
597 @lisp | |
598 (eudc-protocol-set 'eudc-inline-query-format | |
599 '((cn) | |
600 (cn cn) | |
601 (cn cn cn)) | |
602 'ldap) | |
603 @end lisp | |
604 @end defvar | |
605 | |
606 @defvar eudc-inline-expansion-format | |
607 This variable lets you control exactly what is inserted into the buffer | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
608 upon an inline expansion request. It is a list whose first element is a |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
609 string passed to @code{format}. Remaining elements are symbols |
27316 | 610 corresponding to directory attribute names. The corresponding attribute |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
611 values are passed as additional arguments to @code{format}. Default is |
27316 | 612 @code{("%s" email)} but you may want to consider a value like @code{("%s |
613 <%s>" name email)} | |
614 @end defvar | |
615 | |
616 @defvar eudc-multiple-match-handling-method | |
617 This variable controls what to do when multiple entries match a query | |
618 for an inline expansion. Possible values are: | |
619 @table @code | |
620 @item first | |
621 The first match is considered as being the only one, the others are | |
622 discarded. | |
623 @item select | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
624 A selection buffer pops up where you can choose a particular match. This |
27316 | 625 is the default value of the variable. |
626 @item all | |
627 The expansion uses all records successively | |
628 @item abort | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
629 An error is signaled. The expansion aborts. |
27316 | 630 @end table |
631 | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
632 Default is @code{select} |
27316 | 633 @end defvar |
634 | |
635 | |
636 | |
637 @node The Server Hotlist, Multi-server Queries, Inline Query Expansion, Usage | |
638 @comment node-name, next, previous, up | |
639 @section The Server Hotlist | |
640 | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
641 EUDC lets you maintain a list of frequently used servers so that you |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
642 can easily switch from one to another. This hotlist appears in the |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
643 @samp{Server} submenu. You select a server in this list by clicking on |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
644 its name. You can add the current server to the list with the command |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
645 @kbd{M-x eudc-bookmark-current-server}. The list is contained in the variable |
27316 | 646 @code{eudc-server-hotlist} which is stored in and retrieved from the file |
647 designated by @code{eudc-options-file}. EUDC also provides a facility to | |
648 edit the hotlist interactively (@pxref{The Hotlist Edit Buffer}). | |
649 | |
650 The hotlist is also used to make queries on multiple servers | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
651 successively (@pxref{Multi-server Queries}). The order in which the |
27316 | 652 servers are tried is the order they appear in the hotlist, therefore it |
653 is important to sort the hotlist appropriately. | |
654 | |
655 @deffn Command eudc-bookmark-server server | |
656 Add @var{server} to the hotlist of servers | |
657 @end deffn | |
658 | |
659 @deffn Command eudc-bookmark-current-server | |
660 Add the current server to the hotlist of servers | |
661 @end deffn | |
662 | |
663 @defvar eudc-options-file | |
664 The name of a file where EUDC stores its internal variables | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
665 (the hotlist and the current server). EUDC will try to load |
27316 | 666 that file upon initialization so, if you choose a file name |
667 different from the defaults @file{~/.eudc-options}, be sure to set this | |
668 variable to the appropriate value @emph{before} EUDC is itself | |
669 loaded. | |
670 @end defvar | |
671 | |
672 @menu | |
673 * The Hotlist Edit Buffer:: An interactive hotlist editing facility | |
674 @end menu | |
675 | |
676 @node The Hotlist Edit Buffer, , The Server Hotlist, The Server Hotlist | |
677 @comment node-name, next, previous, up | |
678 @subsection The Hotlist Edit Buffer | |
679 | |
680 The hotlist edit buffer offers a means to manage a list of frequently | |
681 used servers. Commands are available in the context pop-up menu | |
682 generally bound to the right mouse button. Those commands also have | |
39267 | 683 equivalent key bindings. |
27316 | 684 |
685 @deffn Command eudc-hotlist-add-server | |
686 Bound to @kbd{a}. | |
687 Add a new server to the hotlist on the line after point | |
688 @end deffn | |
689 | |
690 @deffn Command eudc-hotlist-delete-server | |
691 Bound to @kbd{d}. | |
692 Delete the server on the line point is on | |
693 @end deffn | |
694 | |
695 @deffn Command eudc-hotlist-select-server | |
696 Bound to @kbd{s}. | |
697 Select the server the point is on as the current directory server for | |
698 the next queries | |
699 @end deffn | |
700 | |
701 @deffn Command eudc-hotlist-transpose-servers | |
702 Bound to @kbd{t}. | |
703 Bubble up the server the point is on to the top of the list | |
704 @end deffn | |
705 | |
706 @deffn Command eudc-hotlist-quit-edit | |
707 Bound to @kbd{q}. | |
708 Save the changes and quit the hotlist edit buffer. Use @kbd{x} or | |
709 @kbd{M-x kill-buffer} to exit without saving. | |
710 @end deffn | |
711 | |
712 | |
713 @node Multi-server Queries, Creating BBDB Records, The Server Hotlist, Usage | |
714 @comment node-name, next, previous, up | |
715 @section Multi-server Queries | |
716 | |
717 When using inline query expansion (@pxref{Inline Query Expansion}), EUDC | |
718 can try to query successively a sequence of directory servers until one | |
719 of them successfully finds a match for the query. | |
720 | |
721 @defvar eudc-inline-expansion-servers | |
722 This variable controls which servers are tried and in which order when | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
723 trying to perform an inline query. Possible values are: |
27316 | 724 @table @code |
725 @item current-server | |
726 Only the current directory server is tried | |
727 @item hotlist | |
728 The servers in the hotlist are tried in order until one finds a match | |
729 for the query or `eudc-max-servers-to-query' is reached | |
730 @item server-then-hotlist | |
731 The current server then the servers in the hotlist are tried in the | |
732 order they appear in the hotlist until one of them finds a match or | |
733 `eudc-max-servers-to-query' is reached. This is the default. | |
734 @end table | |
735 @end defvar | |
736 | |
737 @defvar eudc-max-servers-to-query | |
738 This variable indicates the maximum number of servers to query when | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
739 performing a multi-server query. The default, @code{nil}, indicates |
27316 | 740 that all available servers should be tried. |
741 @end defvar | |
742 | |
743 | |
744 | |
745 @node Creating BBDB Records, Server/Protocol Locals, Multi-server Queries, Usage | |
746 @comment node-name, next, previous, up | |
747 @section Creating BBDB Records | |
748 | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
749 @findex eudc-insert-record-at-point-into-bbdb |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
750 @findex eudc-try-bbdb-insert |
27316 | 751 With EUDC, you can automatically create BBDB records |
752 (@pxref{Top,,BBDB,bbdb,BBDB Manual}) from records you get from a | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
753 directory server. You do this by moving point to the appropriate |
27316 | 754 record in a query result display buffer and invoking the command |
755 @kbd{M-x eudc-insert-record-at-point-into-bbdb} with the | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
756 keyboard binding @kbd{b}@footnote{This key binding does not actually |
27316 | 757 call @code{eudc-insert-record-at-point-into-bbdb} but uses |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
758 @code{eudc-try-bbdb-insert} instead.}, or with the menu. EUDC |
27316 | 759 cannot update an existing BBDB record and will signal an error if you |
760 try to insert a record matching an existing one. | |
761 | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
762 @findex eudc-batch-export-records-to-bbdb |
27316 | 763 It is also possible to export to BBDB the whole batch of records |
764 contained in the directory query result with the command | |
765 @kbd{M-x eudc-batch-export-records-to-bbdb}. | |
766 | |
767 Because directory systems may not enforce a strict record format, local | |
768 server installations may use different attribute names and have | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
769 different ways to organize the information. Furthermore BBDB has its own |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
770 record structure. For these reasons converting a record from its |
27316 | 771 external directory format to the BBDB format is a highly customizable |
772 process. | |
773 | |
774 @defvar eudc-bbdb-conversion-alist | |
775 The value of this variable should be a symbol naming an alist defining a | |
776 mapping between BBDB field names onto directory attribute names records. | |
777 This is a protocol-local variable and is initialized upon protocol | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
778 switch (@pxref{Server/Protocol Locals}). The alist is made of cells of the |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
779 form @code{(@var{bbdb-field} . @var{spec-or-list})}. |
27316 | 780 @var{bbdb-field} is the name of a field |
781 that must be defined in your BBDB environment (standard field names are | |
782 @code{name}, @code{company}, @code{net}, @code{phone}, @code{address} | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
783 and @code{notes}). |
27316 | 784 @var{spec-or-list} is either a single mapping specification or a list of |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
785 mapping specifications. Lists of mapping specifications are valid for |
27316 | 786 the @code{phone} and @code{address} BBDB fields only. @var{spec}s are |
787 actually s-expressions which are evaluated as follows: | |
788 | |
789 @table @asis | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
790 @item a string |
27316 | 791 evaluates to itself |
792 @item a symbol | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
793 evaluates to the symbol value. Symbols corresponding to directory |
27316 | 794 attribute names present in the record evaluate to the value of the field |
795 in the record | |
796 @item a form | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
797 is evaluated as a function. The argument list may contain attribute |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
798 names which evaluate to the corresponding values in the record. The form |
27316 | 799 evaluation should return something appropriate for the particular |
800 @var{bbdb-field} (see @code{bbdb-create-internal}). | |
801 @code{eudc-bbdbify-phone} and @code{eudc-bbdbify-address} are provided as | |
802 convenience functions to parse phones and addresses. | |
803 @end table | |
804 @end defvar | |
805 | |
806 The default value of the PH-specific value of that variable is | |
807 @code{eudc-ph-bbdb-conversion-alist}: | |
808 | |
809 @lisp | |
810 ((name . name) | |
811 (net . email) | |
812 (address . (eudc-bbdbify-address address "Address")) | |
813 (phone . ((eudc-bbdbify-phone phone "Phone") | |
814 (eudc-bbdbify-phone office_phone "Office Phone")))) | |
815 @end lisp | |
816 | |
817 This means that: | |
818 | |
819 @itemize @bullet | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
820 @item |
27316 | 821 the @code{name} field of the BBDB record gets its value |
822 from the @code{name} attribute of the directory record | |
823 @item | |
824 the @code{net} field of the BBDB record gets its value | |
825 from the @code{email} attribute of the directory record | |
826 @item | |
827 the @code{address} field of the BBDB record is obtained by parsing the | |
828 @code{address} attribute of the directory record with the function | |
829 @code{eudc-bbdbify-address} | |
830 @item | |
831 two @code{phone} fields are created (when possible) in the BBDB record. | |
832 The first one has @cite{Phone} for location and its value is obtained by | |
833 parsing the @code{phone} attribute of the PH/QI record with the function | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
834 @code{eudc-bbdbify-phone}. The second one has @cite{Office Phone} for location |
27316 | 835 its value is obtained by parsing the @code{office_phone} attribute of the |
836 PH/QI record with the function @code{eudc-bbdbify-phone}. | |
837 @end itemize | |
838 | |
839 @defun eudc-bbdbify-phone phone location | |
840 This is a convenience function provided for use in | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
841 @code{eudc-bbdb-conversion-alist}. It parses @var{phone} into a vector |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
842 compatible with @code{bbdb-create-internal}. @var{phone} is either a string |
27316 | 843 supposedly containing a phone number or a list of such strings which are |
844 concatenated. @var{location} is used as the phone location for BBDB. | |
845 @end defun | |
846 | |
847 @defun eudc-bbdbify-address addr location | |
848 This is a convenience function provided for use in | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
849 @code{eudc-bbdb-conversion-alist}. It parses @var{addr} into a vector |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
850 compatible with @code{bbdb-create-internal}. @var{addr} should be an |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
851 address string of no more than four lines or a list of lines. The last |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
852 line is searched for the zip code, city and state name. @var{location} |
27316 | 853 is used as the phone location for BBDB. |
854 @end defun | |
855 | |
856 Note that only a subset of the attributes you selected with | |
857 @code{eudc-default-return-attributes} and that are actually displayed may | |
858 actually be inserted as part of the newly created BBDB record. | |
859 | |
860 | |
861 @node Server/Protocol Locals, , Creating BBDB Records, Usage | |
862 @comment node-name, next, previous, up | |
863 @section Server/Protocol Locals | |
864 | |
865 EUDC can be customized independently for each server or directory | |
866 protocol. All variables can be given local bindings that are activated | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
867 when a particular server and/or protocol becomes active. This is much |
27316 | 868 like buffer-local bindings but on a per server or per protocol basis. |
869 | |
870 @menu | |
871 * Manipulating local bindings:: Functions to set and query local bindings | |
872 @end menu | |
873 | |
874 @node Manipulating local bindings, , Server/Protocol Locals, Server/Protocol Locals | |
875 @comment node-name, next, previous, up | |
876 @subsection Manipulating local bindings | |
877 | |
878 EUDC offers functions that let you set and query variables on a per | |
879 server or per protocol basis. | |
880 | |
881 The following predicates allow you to test the existence of | |
882 server/protocol local bindings for a particular variable. | |
883 | |
884 @defun eudc-server-local-variable-p var | |
885 Return non-@code{nil} if @var{var} has server-local bindings | |
886 @end defun | |
887 | |
888 @defun eudc-protocol-local-variable-p var | |
889 Return non-@code{nil} if @var{var} has protocol-local bindings | |
890 @end defun | |
891 | |
892 The following functions allow you to set the value of a variable with | |
39267 | 893 various degrees of locality. |
27316 | 894 |
895 @defun eudc-default-set var val | |
896 Set the EUDC default value of @var{var} to @var{val}. | |
897 The current binding of @var{var} (if local to the current server or | |
898 protocol) is not changed. | |
899 @end defun | |
900 | |
901 @defun eudc-protocol-set var val &optional protocol | |
902 Set the binding of @var{var} local to @var{protocol} to @var{val}. If | |
903 omitted, @var{protocol} defaults to the current value of | |
904 @code{eudc-protocol}. The current binding of @var{var} is changed only | |
905 if @var{protocol} is omitted. | |
906 @end defun | |
907 | |
908 @defun eudc-server-set var val &optional server | |
909 Set the binding of @var{var} local to @var{server} to @var{val}. If | |
910 omitted, @var{server} defaults to the current value of | |
911 @code{eudc-server}. The current binding of @var{var} is changed only if | |
912 @var{server} is omitted. | |
913 @end defun | |
914 | |
915 @defun eudc-set var val | |
916 Set the most local (server, protocol or default) binding of @var{var} to | |
917 @var{val}. The current binding of @var{var} is also set to @var{val}. | |
918 @end defun | |
919 | |
920 The following variables allow you to query the various bindings of a | |
921 variable (local or non-local). | |
922 | |
923 @defun eudc-variable-default-value var | |
924 Return the default binding of @var{var} (outside of a particular server | |
925 or protocol local binding). | |
926 Return @code{unbound} if @var{var} has no EUDC default value. | |
927 @end defun | |
928 | |
929 @defun eudc-variable-protocol-value var &optional protocol | |
930 Return the value of @var{var} local to @var{protocol}. Return | |
931 @code{unbound} if @var{var} has no value local to @var{protocol}. | |
932 @var{protocol} defaults to @code{eudc-protocol}. | |
933 @end defun | |
934 | |
935 @defun eudc-variable-server-value var [server] | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
936 Return the value of @var{var} local to @var{server}. |
27316 | 937 Return @code{unbound} if @var{var} has no value local to @var{server}. |
938 @var{server} defaults to @code{eudc-server}. | |
939 @end defun | |
940 | |
941 Changing a protocol-local or server-local value of a variable has no | |
942 effect on its current value. The following command is used to | |
943 synchronize the current values of variables with their local values | |
944 given the current @code{eudc-server} and @code{eudc-protocol}: | |
945 | |
946 @defun eudc-update-local-variables | |
947 Update all EUDC variables according to their local settings. | |
948 @end defun | |
949 | |
950 | |
951 | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
952 @node Credits, Command and Function Index, Usage, Top |
27316 | 953 @comment node-name, next, previous, up |
954 @chapter Credits | |
955 | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
47737
diff
changeset
|
956 EUDC was written by Oscar Figueiredo based on @file{ph.el} by the |
27316 | 957 same author. |
958 | |
959 Thanks to Soren Dayton for his suggestions, his enthusiasm and his help | |
960 in testing and proofreading the code and docs of @file{ph.el}. | |
961 | |
39366
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
962 @node Command and Function Index, Variables Index, Credits, Top |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
963 @comment node-name, next, previous, up |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
964 @unnumbered Command and Function Index |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
965 |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
966 @printindex fn |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
967 |
adb48d2fe809
Add a Command Index, for the sake of C-h C-f and C-h C-k.
Eli Zaretskii <eliz@gnu.org>
parents:
39267
diff
changeset
|
968 @node Variables Index, , Command and Function Index, Top |
27316 | 969 @comment node-name, next, previous, up |
970 @unnumbered Variables Index | |
971 | |
972 @printindex vr | |
973 | |
29713 | 974 @setchapternewpage odd |
27316 | 975 @contents |
976 @bye | |
52401 | 977 |
978 @ignore | |
979 arch-tag: 1b79460b-4ea1-441d-ab45-05ddd16ef241 | |
980 @end ignore |