Skip to main content

36.1 Abbrev Tables

This section describes how to create and manipulate abbrev tables.

function make-abbrev-table \&optional props

This function creates and returns a new, empty abbrev table—an obarray containing no symbols. It is a vector filled with zeros. props is a property list that is applied to the new table (see Abbrev Table Properties).

function abbrev-table-p object

This function returns a non-nil value if object is an abbrev table.

function clear-abbrev-table abbrev-table

This function undefines all the abbrevs in abbrev-table, leaving it empty.

function copy-abbrev-table abbrev-table

This function returns a copy of abbrev-table—a new abbrev table containing the same abbrev definitions. It does not copy any property lists; only the names, values, and functions.

function define-abbrev-table tabname definitions \&optional docstring \&rest props

This function defines tabname (a symbol) as an abbrev table name, i.e., as a variable whose value is an abbrev table. It defines abbrevs in the table according to definitions, a list of elements of the form (abbrevname expansion [hook] [props...]). These elements are passed as arguments to define-abbrev.

The optional string docstring is the documentation string of the variable tabname. The property list props is applied to the abbrev table (see Abbrev Table Properties).

If this function is called more than once for the same tabname, subsequent calls add the definitions in definitions to tabname, rather than overwriting the entire original contents. (A subsequent call only overrides abbrevs explicitly redefined or undefined in definitions.)

variable abbrev-table-name-list

This is a list of symbols whose values are abbrev tables. define-abbrev-table adds the new abbrev table name to this list.

function insert-abbrev-table-description name \&optional human

This function inserts before point a description of the abbrev table named name. The argument name is a symbol whose value is an abbrev table.

If human is non-nil, the description is human-oriented. System abbrevs are listed and identified as such. Otherwise the description is a Lisp expression—a call to define-abbrev-table that would define name as it is currently defined, but without the system abbrevs. (The mode or package using name is supposed to add these to name separately.)