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]