Each symbol has a property list (or plist), this is a structure which associates an arbitrary Lisp object with a key (usually a symbol). The keys in a plist may not have any duplications (so that each property is only defined once).
The concept of a property list is very similar to an association list (see Association Lists) but there are two main differences:
((one . 1) (two . 2) (three . 3))
a property list would be,
(one 1 two 2 three 3)
This function searches the property list of the symbol symbol for
equal to property. If such a property is found
it is returned, otherwise false is returned.
(get 'if 'lisp-indent) ⇒ 2 (get 'set 'lisp-indent) ⇒ ()
put sets the value of the property property to
new-value in the property list of the symbol symbol. If
there is an existing value for this property (using
compare keys) it is overwritten. The value returned is new-value.
(put 'foo 'prop 200) ⇒ 200
Returns the property list of the symbol symbol.
(symbol-plist 'if) ⇒ (lisp-indent 2)
This function sets the property list of the symbol symbol to plist.
(setplist 'foo '(zombie yes)) ⇒ (zombie yes)