Emacs: What is Minor Mode

By Xah Lee. Date: . Last updated: .

What is Minor Mode

Minor modes are like “preference” settings. Each minor mode changes emacs behavior or add some features.

The behavior change may be keys, or mouse behavior, or editing behavior, or visual display, or it can be anything emacs does.

Each buffer/file can have more than one minor modes on.

Example of Minor Modes

Show Current Minor Modes

emacs describe-mode list minor modes
Alt+x describe-mode
Alt+x describe-mode
list enabled minor modes of current buffer.
minor-mode-list
variable. Value is a list of all minor mode functions. [see Emacs: Show Variable Value]

Toggle On/Off Minor Mode

Minor modes typically have a command to toggle it on/off.

For example, global-display-line-numbers-mode is a command to turn on/off line numbers in margin. [see Emacs Init: Show Line Numbers]

Turn On/Off Minor Mode in Emacs Init

When calling a mode function in lisp init file, give it an argument:

;; turn on
(global-display-line-numbers-mode 1)

;; turn off
(global-display-line-numbers-mode -1)

Note: the argument to minor mode changed in emacs 23.2 [see Emacs 23.2 (Released 2010-05)]

Global Minor Mode vs Current Buffer

For those per-buffer minor modes, it may not have a command to toggle on/off for all buffers. For example, auto-fill-mode will toggle for current buffer, but no global command.

Current State of a Minor Mode

Typically, if a mode has a command named “xx-mode”, it also has a variable of the same name “xx-mode”. Its value is t if the mode is on, else nil. You can check this variable for the mode's on/off state.

[see Emacs: Show Variable Value]

(If you want to turn on/off a mode, call the function, not set the variable.)

If you also need to check if a mode (package) is loaded, see: ELisp: Check If a function/variable is Defined

Major Mode, Minor Mode, Minibuffer, Hook