Next: Creating Symbols, Previous: Symbols, Up: Symbols [Contents][Index]
These functions augment the standard Emacs Lisp functions get
and 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 eq
to property, the following odd-numbered element is returned.
Otherwise, default is returned (or nil if no default
is given).
In particular,
(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 setf place.
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)
The get function is also setf-able. The fact that
default is ignored can sometimes be useful:
(incf (get 'foo 'usage-count 0))
Here, symbol foo’s usage-count property is incremented
if it exists, or set to 1 (an incremented 0) otherwise.
When not used as a setf form, getf is just a regular
function and its place argument can actually be any Lisp
expression.
This macro removes the property-value pair for property from
the property list stored at place, which is any setf-able
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.
Next: Creating Symbols, Previous: Symbols, Up: Symbols [Contents][Index]