These functions augment the standard Emacs Lisp functions
put for operating on properties attached to objects.
There are also functions for working with property lists as
first-class data structures not attached to particular objects.
This function scans the list place as if it were a property
list, i.e., a list of alternating property names and values. If
an even-numbered element of place is found which is
to property, the following odd-numbered element is returned.
Otherwise, default is returned (or
nil if no default
(get sym prop) ≡ (getf (symbol-plist sym) prop)
It is legal to use
getf as a
setf place, in which case
its place argument must itself be a legal
The default argument, if any, is ignored in this context.
The effect is to change (via
setcar) the value cell in the
list that corresponds to property, or to cons a new property-value
pair onto the list if the property is not yet present.
(put sym prop val) ≡ (setf (getf (symbol-plist sym) prop) val)
get function is also
setf-able. The fact that
default is ignored can sometimes be useful:
(incf (get 'foo 'usage-count 0))
usage-count property is incremented
if it exists, or set to 1 (an incremented 0) otherwise.
When not used as a
getf is just a regular
function and its place argument can actually be any Lisp
This macro removes the property-value pair for property from
the property list stored at place, which is any
place expression. It returns true if the property was found. Note
that if property happens to be first on the list, this will
effectively do a
(setf place (cddr place)),
whereas if it occurs later, this simply uses
setcdr to splice
out the property and value cells.