| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
BBDB is a rolodex-like database program for GNU Emacs. BBDB stands for Insidious Big Brother Database, and is not, repeat, not an obscure reference to the Buck Rogers TV series.
It provides the following features:
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This program consists of several groups of files, organized by directory:
lisp - the main program code for the BBDB
tex - TeX support files for See section 1.8.2 |
| 1.1.1 General Prerequisites | General BBDB requirements | |
| File Installation | ||
|---|---|---|
| 1.1.2 Normal User Installation | "Normal" Installations | |
| 1.1.3 XEmacs Package Installation | Installing as an XEmacs package | |
| Initial Configuration | ||
| 1.1.4 Initial Configuration | How to initially set up the BBDB | |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Various parts of the BBDB require extra packages to be available
that are not part of the BBDB distribution. Please note that with
one exception no extra packages (beyond those which ship with both GNU
Emacs and XEmacs) are required for the use of BBDB core
functionality.(1) This one exception
applies to XEmacs 20.5 users - the xemacs-base package must be
installed for the correct operation of the core BBDB functionality.
The table below lists the requirements of the various portions of the
BBDB. Please note that the absence of any of the below optional
packages will not affect core BBDB functionality.
BBDB file |
Package needed | GNU 19.34 | GNU 20.2 | XEmacs @center >=20.4 | XEmacs @center 20.5 |
bbdb-ftp |
EFS or Ange-FTP | @center B | @center B | @center B | @center P |
bbdb-gnus |
Gnus[1] | @center B | @center B | @center B | @center P |
bbdb-mhe |
MH-E | @center B | @center B | @center B | @center P |
bbdb-reportmail |
Reportmail | @center B | @center P[2] | ||
bbdb-sc |
Supercite | @center B | @center B | @center P | |
bbdb-srv |
gnuserv and itimer
| @center B | @center B | ||
bbdb-vm |
VM[4] | @center B | @center P | ||
bbdb-w3 |
browse-url
| @center B | @center B | @center B | @center P[3] |
NOTES:
edit-utils package.
browse-url is
available as part of the mail-lib package.
Please also note that the XEmacs package locations are as of this writing. As the XEmacs 20.5 package system is still in development, the locations may change without warning.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
First of all, you should run the configure script at the toplevel
of the distribution. This script will perform a number of checks on
your system and generate the `Makefile''s accordingly.
The configure script also comes with a number of options that
lets you customize the compilation process. These options are described
below where appropriate.
First, you need to byte-compile the appropriate BBDB Lisp files. While this is in theory an optional step, it is virtually required in practice due to speed reasons.
In order to byte-compile the lisp files, an Emacs of some sort must be
used. By default (at configure time), emacs and
xemacs will be tried in that order. If you want to use a special
Emacs flavor (or if you want to use xemacs at the first place),
you should pass the --with-emacs=PROG option to configure.
In order to successfully compile the BBDB, the build process also
needs to know the location of the various optional packages. If the
directories containing these optional packages are in the default Emacs
search path (the load-path variable), no other changes need be
made for the build process to complete successfully.
If the optional packages are not in the default search path, the build
process will not find them unless explicitly told of their location(s).
To tell the build process where to find Gnus, MH-E, and/or VM, use the
configure options --with-gnus-dir=DIR,
--with-mhe-dir=DIR, and/or --with-vm-dir=DIR variables
respectively. To tell the build process where to find any other
package(s), pass the directories containing the lisp files for the
package(s) to the configure option --with-other-dirs=DIRS.
If multiple directories are to be added, they should be separated by
spaces or colons, and should not be quoted. For example, to
add the `/p/local/elisp/footnote' and `/p/local/elisp/sc'
directories, call the configure script as follows:
|
After configuring, run one of the following commands:
|
You can also combine the above make commands. For example, to
build the BBDB with support for Gnus and VM, you can
do so by typing:
make gnus vm |
As stated above, the `lisp' subdirectory contains the Emacs Lisp source
files for the BBDB. Therefore, these files must be in the Emacs
load-path. There are several ways of doing this, three of which are
described below:
load-path. This will allow you to run the BBDB in-place. This
method is recommended for normal users or BBDB developers, especially if
disk usage is an issue. It is not recommended for site-wide
installations.
load-path when Emacs starts.
load-path when Emacs starts. This is the best of the three listed here,
as it allows for a degree of separation between the (possibly changing) source
tree and the production code.
The `tex' subdirectory contains the TeX support files for
bbdb-print, the BBDB printing utility (See section 1.8.2 bbdb-print.). The
three support files, `bbdb-cols.tex', `bbdb-print.tex', and
`bbdb-print-brief.tex', must be placed in a directory that is
either on the default TeX search path or is listed in the
TEXINPUTS environment variable. If neither of these two options
is taken, TeX will not be able to process the file output by
bbdb-print.
The `bbdb.info' file in this directory contains the documentation
for the BBDB. This file should either be linked or copied to a
directory on the default path for the info program or listed in
the INFOPATH environment variable.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
NOTE: XEmacs packages are currently supported only under XEmacs versions after and including 20.5. If you are not running such a version of XEmacs, you should install the BBDB according to the instructions in 1.1.2 Normal User Installation.
The configuration and byte-compilation procedures are the same as in the Normal User installation. See 1.1.2 Normal User Installation.
Support is provided for the automatic installation of the BBDB in an
XEmacs package directory. The following configure options are
available for you:
--with-package-dir=DIR
--with-symlinks
--with-linkpath=PATH
pwd to determine the current directory. If something else should
be used, you should provide an alternate name for the BBDB toplevel
directory by using --with-linkpath. If, for example, pwd
returns `/p/local/elisp/bbdb', but you prefer to use
`/usr/local/elisp/bbdb/...' for the links, usr this:
configure --with-linkpath=/usr/local/elisp/bbdb. This option is
ignored if --with-symlinks is not used.
To perform the (un)installation, use the command make (un)install-pkg.
This will compile the `lisp/auto-autoloads.el' file and will
install the appropriate files to the appropriate places. The final
installation tree will take the following form:
$(PACKAGEDIR)/
lisp/
bbdb/
.el and .elc files from the `lisp' source directory,
or is a symbolic link to it.
info/
bbdb.info*
etc/
bbdb/
tex/
utils/
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The simplest way to configure the BBDB is to include the following forms in your Emacs configuration file:
|
Note: The forms above replace the autoloads needed for previous versions of the BBDB.
This will set up the BBDB for basic querying and record manipulation
(the Core Functionality referred to in the Prerequisites section). It
will not enable any of the mailreader-, newsreader- or other
package-specific BBDB features. To enable some or all of these
features, the (bbdb-initialize) form can be enable as shown
below. Alternatively, the features can be enabled manually as described
in the following sections.
(bbdb-initialize)
The bbdb-initialize function can be used to enable the various
package-specific BBDB functions. This feature activation is
accomplished through the passing of symbols which tell the function
which features to activate. These symbols are outlined below and in the
Emacs documentation for the bbdb-initialize(2)
gnus
gnus symbol, you should
probably also pass the message symbol.
mh-e
rmail
sendmail
vm
message
reportmail
sc
w3
To initialize support for Gnus 5.5, Message mode, Supercite, and Web browsers, the following forms would be used:
(require 'bbdb) (bbdb-initialize 'gnus 'message 'sc 'w3) |
If your initialization needs exceed those provided by
bbdb-initialize, refer to the following sections for a
description of the procedures necessary for enabling BBDB support
for the packages listed above. The procedures described are the same as
those carried out by the bbdb-initialize function when passed the
appropriate symbols. That is, the procedure listed in the RMAIL Prep
section below is the same as than executed by bbdb-initialize
when the rmail symbol is passed.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
To take advantage of the Gnus features of the BBDB, add one of the following forms to your Emacs configuration file:
For Gnus 3.14 or older:
(add-hook 'gnus-Startup-hook 'bbdb-insinuate-gnus)
For Gnus 3.15 or newer:
(add-hook 'gnus-startup-hook 'bbdb-insinuate-gnus)
bbdb-insinuate-gnus adds bindings for the default keys to
Gnus and configures Gnus to notify the BBDB when new
messages are loaded. This notification is required if the BBDB is
to be able to display BBDB entries for messages displayed in
Gnus.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
To take advantage of the MH-E features of the BBDB, add the following form to your Emacs configuration file:
(add-hook 'mh-folder-mode-hook 'bbdb-insinuate-mh) |
bbdb-insinuate-mh adds bindings for the default keys to
MH-E and configures MH-E to notify the BBDB when new
messages are loaded. This notification is required if the BBDB is
to be able to display BBDB entries for messages displayed in
MH-E.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
To take advantage of the RMAIL features of the BBDB, add the following form to your Emacs configuration file:
(add-hook 'rmail-mode-hook 'bbdb-insinuate-rmail) |
bbdb-insinuate-rmail adds bindings for the default keys to
RMAIL and configures RMAIL to notify the BBDB when new
messages are loaded. This notification is required if the BBDB is
to be able to display BBDB entries for messages displayed in
RMAIL.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
To take advantage of send-mail-mode (the one invoked with M-x
mail) features of the BBDB, add the following form to your Emacs
configuration file:
(add-hook 'mail-setup-hook 'bbdb-insinuate-sendmail) |
bbdb-insinuate-sendmail enables auto-completion in
send-mail-mode.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
To take advantage of the VM features of the BBDB, either add
'vm to the parameters of the (bbdb-initialize) form, or
add the following form to your `~/.vm' file:
|
bbdb-insinuate-vm adds bindings for the default keys to VM
and configures VM to notify the BBDB when new messages are
loaded. This notification is required if the BBDB is to be able to
display BBDB entries for messages displayed in VM.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
To allow the BBDB to be used in Message mode, add the following form to your Emacs initialization file:
|
bbdb-insinuate-message adds a binding for M-TAB to Message
mode. This will enable completion of addressees based on BBDB
records. See 1.6.1 Using the BBDB with Message Mode for more details on the operation
of Message mode BBDB record completion.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
To allow the Reportmail package to report information from BBDB records for new mail, add the following form to your Emacs initialization file:
|
bbdb-insinuate-reportmail adds to the
display-time-get-field function to allow access to BBDB
records during new mail information display. See 1.6.2 Using the BBDB with Reportmail
for more details on the operation of Reportmail with the BBDB.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
To allow the BBDB to assist in the storage of Supercite citations, add the following form to your Emacs initialization file:
|
bbdb-insinuate-sc adds BBDB functions to two Supercite hooks
- sc-post-hook and sc-attribs-postselect-hook. See
1.6.3 Using the BBDB with Supercite for more details on the operation of Supercite
citation management using the BBDB.
Three other Supercite variables must be set/modified to allow the BBDB to work with it. These variables are not automatically set as it would be impossible to reliably set them without interfering with other user customizations. The modifications are:
sc-preferred-attribution-list
"sc-consult" should be added to the list. An example
configuration is:
(setq sc-preferred-attribution-list
'("sc-lastchoice" "x-attribution" "sc-consult"
"initials" "firstname" "lastname"))
|
sc-attrib-selection-list
sc-attrib-selection-list:
'(("sc-from-address"
((".*" . (bbdb/sc-consult-attr
(sc-mail-field "sc-from-address"))))))
|
sc-mail-glom-frame
sc-mail-glom-frame, to
allow the retrieval of the name of a person who is a) in the BBDB
and b) has only included their net address in the message in question.
("^$" (progn (bbdb/sc-default)
(list 'abort '(step . 0))))
|
An example configuration is as follows:
|
The above is also documented in `bbdb-sc.el'. The
bbdb/sc-setup-variables function has been provided as an example for
Supercite variable initialization. Please note that while
bbdb/sc-setup-variables makes every attempt to safely configure
the Supercite variables, it will not always work. Specifically, the
variables sc-attrib-selection-list and sc-mail-glom-frame
will not be overridden if they have already been defined.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
To allow URLs to be added to BBDB records, add the following form to your Emacs initialization file:
|
bbdb-insinuate-w3 adds the definition of : to the W3
keymap.
The other bbdb-w3 functions, specifically the passing of URLs
from BBDB records to Web browsers, do not require initialization
within the BBDB. They do, however, require the configuration of the
browse-url package so it knows to which Web browser URLs are to
be passed. For more details on the operation of bbdb-w3, see
1.6.4 Using the BBDB with Web Browsers.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This section discusses the basics of the BBDB - an overview of the database's layout, and a discussion of the basic BBDB manipulation commands.
The database itself lives in a file which is named by the variable
bbdb-file. If this variable is not set, the database is assumed
to be in `~/.bbdb'.
| 1.2.1 Database Fields | Description of database fields | |
| 1.2.2 Basic searching commands | Basic database searching commands | |
| 1.2.3 Advanced searching commands | Advanced database searching commands | |
| 1.2.4 Manual record addition | Adding records by hand |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The database is organized as a set of records, where each record corresponds to one person or organization. Each record has several fields, and each field is of one of several types. Below, the built-in types are listed, followed by a description of how and why some types can be used more than once in a single record:
| Type | Description | Notes |
name |
The name of this person, or none if the record corresponds to an organization. | Single value, single instance. |
company |
The name of this person's organization, or none. | Single value, single instance. |
AKA |
A list of other names for this person. | Multiple values through commas. |
net |
A list of this person's network addresses. | Multiple values through commas. |
address |
A list of postal (physical) addresses for this person. | Multiple values through multiple occurences. |
phone |
A list of telephone numbers for this person. | Multiple values through multiple occurences. |
notes |
Random commentary. | Multiple values through multiple occurences. |
The field types listed above can be classified into four categories, as indicated by the comments in the `Notes' column.
Field types marked as "Single value, single occurrence" may only occur
once per record. Each occurrence can only have a single value. For
example, there will be only one field of type name in a record.
It will be named name, and will contain a single value (the
person's name).
The types marked as "Multiple values through commas" are essentially the
same as the single value, single occurrence field types, but with one
crucial difference: they can contain multiple values in the form of a
comma-separated list. So, for example, while a name field with a
value of "foo, bar" would be treated as if it contained the single value
"foo, bar", a net field with the same data would be thought of as
having two separate values - "foo" and "bar". As in the single
occurrence, single value field types, there will be only one occurrence
of each "Multiple values through commas" field type, and the occurrence
will have the same name as the type.
The "Multiple values through multiple occurrences" field type is the
most flexible of the four listed here. There can be multiple
occurrences of each type. This type necessarily does not have the name
restriction imposed by the previous two types. For example, there can
be multiple fields of the address type, none of which have to be
named address. One could be named home, and the other
could be named work.
Special properties of the notes field type: All user-defined
fields that don't fit into the other predefined field types
(name, company, AKA, net, address,
and phone) will be created as a notes-type field. In
addition, several of the user-defined field names are "special". That
is, the BBDB treats the values of these "special" fields differently
than it does other user-defined fields. The "special" fields are:
attribution
bbdb/sc-attribution-field.
aka
face
compface, and commonly found in
X-Face: headers in messages. If face support has been compiled
into XEmacs, the image contained in the face header will be
displayed when the record is viewed.
finger-host
bbdb-finger-host-field.
gnus-score
bbdb/gnus-score-field.
mail-alias
name for completion. See section 1.4.3 Mail Sending Interfaces.
mail-name
mark-char
tex-name
name field when
printing the database using bbdb-print. See section 1.8.2 bbdb-print.
www
bbdb-snarf (see section 1.8.3 bbdb-snarf) and the BBDB/Web Browser
functionality (for initialization details, see 1.1.4.9 Initializing BBDB support for Web Browsers. For
usage details, see 1.6.4 Using the BBDB with Web Browsers).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
You can list the contents of the database with the command M-x bbdb. You will be prompted for a regular expression, and all records which match that regexp in the name, company, network address, or any notes fields will be displayed.
A narrower search may be made by using the commands bbdb-name, bbdb-company, bbdb-net, or bbdb-notes. These commands limit their searches to the name, company, email address, and notes fields, respectively. If these commands are given a prefix argument, the listing displayed will be one line per entry; otherwise, the full database entry will be shown on multiple lines.
The functions described above are predefined to certain keys in the
*BBDB* buffer. See section 1.3 BBDB Mode. for more details.
The bbdb-notes command will prompt for the notes field to search
(RET for all). In this way you can limit your searches to the
contents of one particular user-defined notes field. (You can add
user-defined fields with the bbdb-insert-new-field command;
See section 1.3 BBDB Mode.)
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The following functions can be used to search for records based on
creation and/or modification dates. These functions will match records
that have timestamp and/or creation-date fields (as
appropriate. See section 1.7.3 Predefined Hooks. for more information on these
fields, which are created by default.
bbdb-timestamp-older
bbdb-timestamp-newer
bbdb-creation-older
bbdb-creation-newer
bbdb-creation-no-change
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
There are several ways to add new entries to the Insidious Big Brother Database; the most straightforward is to use M-x bbdb-create, which will prompt you for all relevant information. However, the easiest way is to allow them to be added automatically by one of the mail or news-reading interfaces (See section 1.4 Interfaces.).
There is als bbdb-snarf (See section 1.8.3 bbdb-snarf), which will
attempt to create a record from a text block. Note that this depends
on particular formatting and may not do exactly what you want.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
When the `*BBDB*' buffer is active (either summoned by one of the commands in the previous section [See section 1.2 The BBDB.] or by your mail or news program), a variety of commands become available for database manipulation. Some of the commands listed below take numeric arguments. These arguments can be generated by entering the number before pressing the key(s) corresponding to the desired command. The output (if any) of the listed commands will be displayed in the `*BBDB*' buffer, and can be navigated through using the usual cursor motion commands.
bbdb-edit-current-field) Edit the field on the current line. If
the cursor is in the middle of a multi-line field, such as an address or
comments section, then the entire field is edited, not just the current
line.
bbdb-edit-notes) A shortcut for editing the notes field.
bbdb-delete-current-field-or-record) Delete the field on the
current line. If the current line is the first line of a record, the
BBDB will, after prompting the user, delete the entire record from
the database. This may also be applied to multiple records at once by
*.
bbdb-insert-new-field) Inserts a new field into the current
record. You are prompted (with completion) for the type of field to
insert (phone, address, notes, etc); if the string you type
is not a known field type, you will be asked whether to add a new field
with the entered name of type notes.
If you are inserting a new phone-number field, you can control whether
it is a North American or European phone number by providing a prefix
argument. A prefix arg of ^U means it's to be a euronumber, and
any other prefix arg means it's to be a a structured North American
number. If no prefix argument is supplied, the style used is controlled
by the variable bbdb-north-american-phone-numbers-p.
bbdb-transpose-fields) This is like the transpose-lines
command, but it is for BBDB fields. If the cursor is on a field of
a BBDB record, that field and the previous field will be
transposed.With non-zero numeric argument ARG, the previous field is moved past ARG fields. With argument 0, the field indicated by point is interchanged with the one indicated by mark.
Both fields must be in the same record, and must be of the same basic type (that is, you can use this command to change the order in which phone-number fields are listed, but you can't use it to make an address appear before a phone number; the order of field types is fixed.)
bbdb-next-record, bbdb-prev-record) Move to the next and
previous displayed record, respectively.
bbdb-toggle-records-display-layout) Toggles the display layout of a
record. With a numeric argument
of 0, the current record will be made displayed in one line layout; with any
other argument, the current record will be shown in multi-line layout. If *t is used instead of simply t, then the state of all records will be changed instead of just the one at point. In this case, a numeric argument of 0 means that all records will unconditionally be made one-line layout; any other numeric argument means that all of the records will unconditionally be shown expanded; and no numeric argument means that the records are made to be in the opposite state of the record under point.
bbdb-display-record-completely)
Show all the fields of the current record.
The display layout `full-multi-line' is used for this.
bbdb-omit-record) Removes the current record from the display,
but does not delete it from the database; it merely makes it seem as if
the most recent search had not matched this record. With a numeric
argument, omit the next N records. With a negative argument, go
backwards.
bbdb-send-mail) Begin composing mail to the person represented
by the current record. The first email address is used. Normally, the
mail-sending package which is used is determined by which mail-reading
package is loaded; that is, if MH-E is loaded, then mh-send
will be used; if VM is loaded, then vm-mail is used; if
message is loaded, then it is used; otherwise, mail is used.
You can override this by setting the variable
bbdb-send-mail-style to one of the symbols vm, mh,
message, or mail. If *m is used instead of simply m, then mail will be sent to all of the folks listed in the `*BBDB*' buffer instead of just the person under point.
This function does not at present use the facility provided by
compose-mail and mail-user-agent. In a future version of
the BBDB, it will.
bbdb-save-db) Saves the BBDB file to disk.
bbdb-refile-record) Merge the current record into some other record;
that is, delete the record under point after copying all of the data
within it into some other record. this is useful if you realize that
somehow a redundant record has gotten into the database, and you want to
merge it with another.
If both records have names and/or companies, you are asked which to use.
Phone numbers, addresses, and network addresses are simply concatenated.
The first record is the record under the point; the second is prompted
for. Completion behavior is as dictated by the variable
bbdb-completion-type.
bbdb-dial) This command will attempt to dial the phone number
currently at point, or if point is at the start of a record, the first
phone number in the record. An extension, if present, is disregarded.
The method of dialling is controlled by bbdb-modem-dial. If this
variable is nil, the BBDB will play touchtones corresponding to the
number to be dialled. Otherwise, this variable is treated as a modem
command string to be prepended to the number prior to feeding it to
bbdb-modem-device.
The BBDB plays touchtones using bbdb-sound-player to play the
sounds and the elements of bbdb-sound-files as the audio to be
played. The first ten elements of bbdb-sound-files correspond to
the touchtones for the digits `0' to `9', while the eleventh
and twelfth elements correspond to `#' and `*'
respectively. The default configuration assumes a Solaris[tm]
installation with the demonstration sound files in
/usr/demo/SOUND/sounds.
The actual number dialled depends on the following variables:
bbdb-dial-local-prefix-alist
(bbdb-default-area-code) (i.e. the value of that variable, in
parenthesis) from the start of the number to be dialled.Note: If this procedure produces a transformed number then no further modifications (such as prefix additions, below) will be made to the number before dialling.
Using a prefix argument to bbdb-dial disables the processing of
this variable. The other modifiers, below, are not affected by
this.
bbdb-dial-local-prefix
bbdb-dial-local-prefix is prepended to it (see
note above concerning bbdb-dial-local-prefix-alist processing,
however).
bbdb-dial-long-distance-prefix
bbdb-dial-long-distance-prefix is
prepended to it (see note above concerning
bbdb-dial-local-prefix-alist processing, however).
bbdb-finger) This command fingers the network address of a
BBDB record. If this command is executed from the `*BBDB*' buffer,
it fingers the network address of the record which is at point; otherwise,
it prompts in the minibuffer (with completion) for a user to finger. With a
numeric prefix argument, it fingers the Nth network address of the
current record; with a prefix argument of ^U, it fingers all of them.
The `*finger*' buffer is filled asynchronously, meaning that you don't
have to wait around for it to finish; but fingering another user before
the first finger has finished could have unpredictable results.If this command is executed from the `*BBDB*' buffer, it may be prefixed with * (as in *f instead of simply f), meaning to finger all of the users currently listed instead of just the one under point. The numeric prefix argument has the same interpretation.
You can define a special network address to "finger" by defining a field
finger-host. The name of the field to be fingered can be changed
by setting bbdb-finger-host-field.
bbdb-bury-buffer) Hides the `*BBDB*' buffer. Note:
This command does not kill the `*BBDB*' buffer.
bbdb-help) This displays a one-line help message in the
minibuffer, showing some of the most common bbdb-mode commands.
bbdb-info) This documentation is displayed. Please note that
either `bbdb' or `bbdb.info' must be installed in one of the
info directories known to Emacs for this command to work.
bbdb-info-file
bbdb-info command will use this file
instead.
bbdb-www) Displays the Web page listed in the www field
of the current record. See section 1.6.4 Using the BBDB with Web Browsers.
bbdb-print) Creates a TeX file that contains a pretty-printed version
of BBDB records. If prefixed by *, only the records currently
displayed will print. See section 1.8.2 bbdb-print.
other-window function.
bbdb-create) Create a new database record from information
supplied by the user.
bbdb-changed) Display all records that have been changed since
the last time the database was saved.
bbdb) Begin a new database search. The results of the new
search will be displayed in place of the results of the old search.
bbdb-net, bbdb-company, bbdb-notes,
bbdb-name)
bbdb-append-records will make the next display/search
command to append its results to the BBDB buffer instead of replacing its
content.
With an prefix arg (C-u) toggle between always append and no append. With an prefix arg that is a positive number append will be enabled for that many times. With any other argument append will be enabled once."
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
bbdb-kill-older
timestamp
field. See section 1.7.3 Predefined Hooks. If called non-interactively with a
date (in `yyyy-mm-dd' format), a comparison function and an action
function, the comparison function is applied to the timestamp
field of all records, and the action function applied to those for whom
the comparison function returns true. If `nil' is supplied as the
comparison function, string-lessp is used.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The BBDB interfaces itself with several message-handling packages, but certain parameters control its behavior depending on whether it is being used from within a mail reader or a news reader.
In all of these packages, two new keybindings will be added:
bbdb/package-show-sender) Displays the BBDB entry corresponding
to the author of the current message. If there is none, you will be
asked whether to create one. The function called is
bbdb/package-show-sender, where package is either
gnus, mh, rmail, or vm, depending on the
mail or news program being used when the command is invoked.
bbdb/package-annotate-sender) Lets you edit the `notes'
field of the BBDB record corresponding to the sender of the current
message. If there is no record for the current author, you will be
asked whether to create one. The function called is
bbdb/package-annotate-sender, where package is
either gnus, mh, rmail, or vm, depending on
the mail or news program being used when the command is invoked.
These keybindings (and several other features) will not be available unless you call the appropriate "insinuation" function; See section 1.1 Installation.
It is possible to configure BBDB so that it automatically creates a record when it sees a message from a person who is not in the database. It is also possible to have text automatically added to the notes field of the corresponding record depending on the contents of the message headers. See section 1.7.2 Customization Hooks.
| 1.4.1 Mail Reading Interfaces | ||
| 1.4.2 News Reading Interfaces | ||
| 1.4.3 Mail Sending Interfaces |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
There are BBDB interfaces for the following mail readers:
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
There are BBDB interfaces for the following news readers:
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
When sending mail, the keystroke M-TAB is bound to the
function bbdb-complete-name. This will take the string that
you have typed (from point back to the preceding colon, comma, or
the beginning of the line) and will complete that against the
contents of the database. What you have typed may be an initial
subsequence of a person's full name or network address; if it
completes ambiguously, then what you have typed will be replaced
with the common portion of the matches. Typing M-TAB again will
show a list of possible completions. If it completes unambiguously,
then an address will be inserted. The variable
bbdb-completion-type controls whether completion is done on real
names, or network addresses, or both. The address inserted is normally
of the form User Name <email-address>; however, if
User Name has an address of the form
<user.name@somedomain>, only the <email-address> portion
is inserted. This can be overridden by setting
bbdb-dwim-net-address-allow-redundancy to t.
This binding is automatically set by the various insinuation functions documented earlier in this manual. (See section 1.1.4 Initial Configuration.) Briefly, the forms for these functions are:
(add-hook 'gnus-Startup-hook 'bbdb-insinuate-gnus) for Gnus 3.14 or older(add-hook 'gnus-startup-hook 'bbdb-insinuate-gnus) for Gnus 3.15 or newer
(add-hook 'mh-folder-mode-hook 'bbdb-insinuate-mh)
(add-hook 'rmail-mode-hook 'bbdb-insinuate-rmail)
(add-hook 'mail-setup-hook 'bbdb-insinuate-sendmail)
(bbdb-insinuate-vm) Add to `~/.vm' file
The above forms should be added to your Emacs initialization file, except where otherwise noted.
You can control what "real name" is inserted with the
mail-alias field: if a record has a mail-alias
field, then that is used instead of their name field.
If the variable bbdb-completion-display-record is true (the
default) then when you successfully complete an address with
M-TAB, the corresponding record will be appended to
the `*BBDB*' buffer. The buffer will not be displayed if it
is not already visible, but the record will be displayed there.
When sending mail, you can use the command bbdb-yank-addresses
to CC the current message to the people currently displayed in
the `*BBDB*' buffer. This is useful if you are in the midst of
sending or replying to a message, and you decide to add some recipients.
You can use one of the M-x bbdb commands to display the set of
people that you want to CC the message to, and then execute this command
to add them to the list.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If you are using Jamie Zawinski's `mail-abbrevs.el' package, which uses the word-abbrev mechanism for mail aliases, then you can store your mail aliases in the BBDB instead of duplicating the information elsewhere.
If you want a mail alias to be defined for a person, simply add a
mail-alias field to their record. You may have multiple aliases
for the same person; simply separate them with commas.
For convenience there is the function bbdb-add-or-remove-mail-alias
bound to a which adds an alias to one or multiple records when prefixed
by a *. Called with a prefix argument C-u it will remove
the given alias.
If more than one person has the same mail-alias, then that alias expands to the addresses of all of those people; in this way you can maintain mailing lists within the BBDB.
When you want to group aliases as in .mailrc you may just
retained the group aliases in your .mailrc.
To actually define the aliases which are stored in the BBDB, call the
function bbdb-define-all-aliases from your
mail-setup-hook (or message-setup-hook if you use
Message mode coming with Gnus). This will search the database, and
call define-mail-alias to define each of the resulting
aliases.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
There are features of the BBDB that are available only for specific mail- and news-readers. These features are described below.
The headers which are parsed for email addresses and what records are
displayed can be controlled by the following variables:
bbdb-get-addresses-from-headers controls which headers are parsed
for sender addresses when calling the show-sender function of your MUA.
bbdb-get-addresses-to-headers controls which headers are parsed
for recipients addresses when calling the show-all-recipients function
of your MUA. When using the pop up feature it will search for the
addresses in bbdb-get-addresses-headers and display them. By
default it will list only the first address, but by setting
bbdb-get-only-first-address-p to nil one will will get
records for all addresses.
If there is no MUA specific variable for ignoring certain addresses then
those addresses matching bbdb-user-mail-names will be ignored.
BBDB adds the bindings : for showing all senders and ; for editing the notes of the sender.
| 1.5.1 Gnus-specific Features | ||
| 1.5.2 VM-specific features | VM-specific Features |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The BBDB can be used to provide score information, or to integrate database information into the Gnus Summary buffer or the GNUS Subject List.
| 1.5.1.1 Scoring | Store score adjustments in the BBDB | |
| 1.5.1.2 Gnus Summary Buffer Enhancements | BBDB information in the Summary buffer | |
| 1.5.1.3 GNUS Summary Buffer Enhancements | BBDB information in the Subject List |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The BBDB can provide scoring information to Gnus in one of two ways.
gnus-score fields will have their scores adjusted by the value
contained in that field.
gnus-score fields will have their scores adjusted by
bbdb/gnus-score-default. If bbdb/gnus-score-default is
nil, no score adjustment will be made.
The BBDB by default searches the field contained in
bbdb/gnus-score-field for score values. To have the BBDB use
a different field, change the value of this variable.
To enable BBDB-assisted scoring, add the bbdb/gnus-score
function to gnus-score-find-score-files-function. Assuming that
you want to preserve the default value of this variable, use a form
similar to the following:
(setq gnus-score-find-score-files-function
'(gnus-score-find-bnews bbdb/gnus-score))
|
Note: The default value in Gnus 5.5 is gnus-score-find-bnews.
Check your configuration before using the above code, as your values may
be different.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gnus can use the BBDB to do one of two things:
Authors with records in the BBDB can be marked either with a
user-defined mark character, or with a default one. The marking is
enabled by the use of a Gnus user format code, as determined by
bbdb/gnus-summary-in-bbdb-format-letter. This variable, which
defaults to `b', is used to create a format code which is intended
for use in gnus-summary-line-format. The format code is created
by concatenating `%u' with the value of
bbdb/gnus-summary-in-bbdb-format-letter. In the default case
this results in the creation of the format code `%ub'.
Posts are marked as follows: If the record for the poster has the field
indicated in bbdb-message-marker-field (the default is
mark-char), the value of that field is used as the mark
character.(5) If no such field is present, the value of
bbdb/gnus-summary-known-poster-mark will be used instead. If the
author is not in the BBDB, a space will be used as the mark character.
The names reported for authors of posts in the Summary buffer can be
altered to conform to the values present in their respective BBDB
records (if any). This rewriting is enabled by the use of a Gnus user
format code, as determined by
bbdb/gnus-summary-user-format-letter. This variable, which
defaults to `B', is used to create a format code which is intended
for use in gnus-summary-line-format. The format code is created
by concatenating `%u' with the value of
bbdb/gnus-summary-user-format-letter. In the default case this
results in the creation of the format code `%uB'. This format code
is intended to replace the format code previously used in the Summary
buffer format line to indicate the author and/or net address (usually
`%a', `%n', and/or `$N').
The effects of this format code are in two independent parts - the
marking of known posters, and the rewriting of posters names. The
first, the marking of posters, occurs only when
bbdb/gnus-summary-mark-known-posters is t (the default)
and the posters have entries in the BBDB. When this variable is
true, the marking occurs as described in the previous section, Marking
Posters, above.
The poster name rewriting is done for all posters - not just for those with records in the BBDB. That said, rewriting rules for posters in the BBDB are more flexible than for those not listed. The rewriting is governed by two variables, as described below.
bbdb/gnus-summary-prefer-real-names can have one of three values -
`t', `bbdb', or nil. In general, this variable governs
the preference between net addresses and names. If it is `t', the
name (if any) will be used. If `nil', the net address will be
used. The third value, `bbdb', can be used as a method for
distinguishing between authors with records in the BBDB and those
without. If the variable is set to `bbdb', the name from the
BBDB record will be used if the author has a record in the
BBDB. If the author is not in the BBDB, the net address from
the message will be printed. This variable makes little sense if
bbdb/gnus-summary-prefer-bbdb-data is `nil', as no names
will be printed in the Summary buffer in this case - only net addresses.
bbdb/gnus-summary-prefer-bbdb-data is used to (dis)allow use of
the BBDB for author data retrieval. If it is `t', data from
the BBDB will be used if available. If it is `nil', data from
the BBDB will not be used.
In the following examples, assume the following:
From: Jamie <jwz@netscape.com>From: Matt <simmonmt@acm.org>
bbdb/gnus-summary-prefer-bbdb-data |
@center t
| @center t
| @center nil
|
bbdb/gnus-summary-prefer-real-names |
@center t
| @center bbdb
| @center t
|
| Printed in Summary buffer for | |||
| @center Case 1 | @center Jamie | @center jwz@netscape.com | @center Jamie |
| @center Case 2 | @center Matthew | @center Matthew | @center Matt |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This section is remarkably terse, as I don't have a copy of GNUS. If anybody can provide more descriptive information, please let me know.
(autoload 'bbdb/gnus-lines-and-from "bbdb-gnus") (setq gnus-optional-headers 'bbdb/gnus-lines-and-from) |
bbdb/gnus-mark-known-posters
t (the default), then the GNUS subject list will contain an
indication of those messages posted by people who have entries in
the Insidious Big Brother Database (they will be marked with an
asterisk.)
You can change the character used to mark records on a record-by-record
basis by adding a mark-char property to the record, whose value
is be the string to display (preferably one character.)
bbdb/gnus-header-prefer-real-names
nil. if t, then the GNUS subject list will
display real names instead of network addresses.
bbdb/gnus-header-show-bbdb-names
t. If both this variable and
the bbdb/gnus-header-prefer-real-names variable are true, then
for news messages from people who are in your database, the name displayed
will be the primary name from the database, rather than the one from
the `From:' line of the message. This doesn't affect the names of
people who aren't in the database, of course.
bbdb/gnus-lines-and-from-length
gnus-optional-headers to
bbdb/gnus-lines-and-from. | [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The BBDB can be used to integrate database information into the message summary.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
VM users can cause their summary buffer to display the name of the message sender according to BB