9.4.2 Standard Symbol Properties

Here, we list the symbol properties which are used for special purposes in Emacs. In the following table, whenever we say “the named function”, that means the function whose name is the relevant symbol; similarly for “the named variable” etc.

:advertised-binding

This property value specifies the preferred key binding, when showing documentation, for the named function. See Substituting Key Bindings in Documentation.

char-table-extra-slots

The value, if non-nil, specifies the number of extra slots in the named char-table type. See Char-Tables.

customized-face
face-defface-spec
saved-face
theme-face

These properties are used to record a face’s standard, saved, customized, and themed face specs. Do not set them directly; they are managed by defface and related functions. See Defining Faces.

customized-value
saved-value
standard-value
theme-value

These properties are used to record a customizable variable’s standard value, saved value, customized-but-unsaved value, and themed values. Do not set them directly; they are managed by defcustom and related functions. See Defining Customization Variables.

definition-name
find-function-type-alist

These properties help find the definition of a symbol in the source code when it might be hard to find the definition by textual search of the source file, as when the symbol is defined by a macro. See Finding Definitions.

disabled

If the value is non-nil, the named function is disabled as a command. See Disabling Commands.

face-documentation

The value stores the documentation string of the named face. This is set automatically by defface. See Defining Faces.

history-length

The value, if non-nil, specifies the maximum minibuffer history length for the named history list variable. See Minibuffer History.

important-return-value

A non-nil value makes the byte compiler warn about code that calls the named function without using its returned value. This is useful for functions where doing so is likely to be a mistake. This property is normally added to a function with declare (see The declare Form).

interactive-form

The value is an interactive form for the named function. Normally, you should not set this directly; use the interactive special form instead. See Using interactive.

interactive-only

If the value is non-nil, the named function should not be called from Lisp. The value is an error string or the function to call instead. See Defining Commands.

menu-alias

If non-nil, this symbol is an alias menu entry, and its own key binding should not be shown. See Alias Menu Items.

menu-enable

The value is an expression for determining whether the named menu item should be enabled in menus. See Simple Menu Items.

mode-class

If the value is special, the named major mode is special. See Major Mode Conventions.

ignored-mouse-command
mouse-1-menu-command

These properties affect how commands bound to down-mouse-1 behave. See Touchscreen Events.

permanent-local

If the value is non-nil, the named variable is a buffer-local variable whose value should not be reset when changing major modes. See Creating and Deleting Buffer-Local Bindings.

permanent-local-hook

If the value is non-nil, the named function should not be deleted from the local value of a hook variable when changing major modes. See Setting Hooks.

pure

If the value is non-nil, the named function is considered to be pure (see What Is a Function?). Calls with constant arguments can be evaluated at compile time. This may shift run time errors to compile time. This property is normally added to a function with declare (see The declare Form).

risky-local-variable

If the value is non-nil, the named variable is considered risky as a file-local variable. See File Local Variables.

safe-function

If the value is non-nil, the named function is considered generally safe for evaluation. See Determining whether a Function is Safe to Call.

safe-local-eval-function

If the value is non-nil, the named function is safe to call in file-local evaluation forms. See File Local Variables.

safe-local-variable

The value specifies a function for determining safe file-local values for the named variable. See File Local Variables.

side-effect-free

A non-nil value indicates that the named function is free of side effects (see What Is a Function?), so the byte compiler may ignore a call whose value is unused. If the property’s value is error-free, the byte compiler may even delete such unused calls. In addition to byte compiler optimizations, this property is also used for determining function safety (see Determining whether a Function is Safe to Call). This property is normally added to a function with declare (see The declare Form).

undo-inhibit-region

If non-nil, the named function prevents the undo operation from being restricted to the active region, if undo is invoked immediately after the function. See Undo.

variable-documentation

If non-nil, this specifies the named variable’s documentation string. This is set automatically by defvar and related functions. See Documentation Basics.