elisp: Symbol Plists

 
 8.4.1 Accessing Symbol Properties
 ---------------------------------
 
 The following functions can be used to access symbol properties.
 
  -- Function: get symbol property
      This function returns the value of the property named PROPERTY in
      SYMBOL’s property list.  If there is no such property, it returns
      ‘nil’.  Thus, there is no distinction between a value of ‘nil’ and
      the absence of the property.
 
      The name PROPERTY is compared with the existing property names
      using ‘eq’, so any object is a legitimate property.
 
      See ‘put’ for an example.
 
  -- Function: put symbol property value
      This function puts VALUE onto SYMBOL’s property list under the
      property name PROPERTY, replacing any previous property value.  The
      ‘put’ function returns VALUE.
 
           (put 'fly 'verb 'transitive)
                ⇒'transitive
           (put 'fly 'noun '(a buzzing little bug))
                ⇒ (a buzzing little bug)
           (get 'fly 'verb)
                ⇒ transitive
           (symbol-plist 'fly)
                ⇒ (verb transitive noun (a buzzing little bug))
 
  -- Function: symbol-plist symbol
      This function returns the property list of SYMBOL.
 
  -- Function: setplist symbol plist
      This function sets SYMBOL’s property list to PLIST.  Normally,
      PLIST should be a well-formed property list, but this is not
      enforced.  The return value is PLIST.
 
           (setplist 'foo '(a 1 b (2 3) c nil))
                ⇒ (a 1 b (2 3) c nil)
           (symbol-plist 'foo)
                ⇒ (a 1 b (2 3) c nil)
 
      For symbols in special obarrays, which are not used for ordinary
      purposes, it may make sense to use the property list cell in a
      nonstandard fashion; in fact, the abbrev mechanism does so (See
      Abbrevs).
 
      You could define ‘put’ in terms of ‘setplist’ and ‘plist-put’, as
      follows:
 
           (defun put (symbol prop value)
             (setplist symbol
                       (plist-put (symbol-plist symbol) prop value)))
 
  -- Function: function-get symbol property &optional autoload
      This function is identical to ‘get’, except that if SYMBOL is the
      name of a function alias, it looks in the property list of the
      symbol naming the actual function.  SeeDefining Functions.  If
      the optional argument AUTOLOAD is non-‘nil’, and SYMBOL is
      auto-loaded, this function will try to autoload it, since
      autoloading might set PROPERTY of SYMBOL.  If AUTOLOAD is the
      symbol ‘macro’, only try autoloading if SYMBOL is an auto-loaded
      macro.
 
  -- Function: function-put function property value
      This function sets PROPERTY of FUNCTION to VALUE.  FUNCTION should
      be a symbol.  This function is preferred to calling ‘put’ for
      setting properties of a function, because it will allow us some day
      to implement remapping of old properties to new ones.