Skip to main content

5.9.2 Property Lists Outside Symbols

The following functions can be used to manipulate property lists. They all compare property names using eq.

function plist-get plist property​

This returns the value of the property property stored in the property list plist. It accepts a malformed plist argument. If property is not found in the plist, it returns nil. For example,

(plist-get '(foo 4) 'foo)
⇒ 4
(plist-get '(foo 4 bad) 'foo)
⇒ 4
(plist-get '(foo 4 bad) 'bad)
⇒ nil
(plist-get '(foo 4 bad) 'bar)
⇒ nil

function plist-put plist property value​

This stores value as the value of the property property in the property list plist. It may modify plist destructively, or it may construct a new list structure without altering the old. The function returns the modified property list, so you can store that back in the place where you got plist. For example,

(setq my-plist (list 'bar t 'foo 4))
⇒ (bar t foo 4)
(setq my-plist (plist-put my-plist 'foo 69))
⇒ (bar t foo 69)
(setq my-plist (plist-put my-plist 'quux '(a)))
⇒ (bar t foo 69 quux (a))

function lax-plist-get plist property​

Like plist-get except that it compares properties using equal instead of eq.

function lax-plist-put plist property value​

Like plist-put except that it compares properties using equal instead of eq.

function plist-member plist property​

This returns non-nil if plist contains the given property. Unlike plist-get, this allows you to distinguish between a missing property and a property with the value nil. The value is actually the tail of plist whose car is property.