Emacs: What's Minor Mode?

By Xah Lee. Date: . Last updated: .

This page is a tutorial on emacs minor mode.

What's Minor Mode?

Minor modes are like “preference” settings. Each minor mode changes emacs behavior or display in some way.

Examples of minor mode:

Each buffer/file can have multiple minor modes on.

Show Current Minor Modes

emacs describe-mode list minor modes
describe-modeCtrl+h m

describe-modeCtrl+h m】lists currently enabled minor modes.

It's also stored in the variable minor-mode-list. (call describe-variable to see its value.)

Turn On/Off Minor Mode

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

For example, linum-mode is a command to turn on/off line numbers in margin. 〔►see Emacs: Display Line Numbers linum-mode

Minor mode's on/off command is a toggle.

Global Minor Mode vs Current Buffer

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

If you want to turn a minor mode globally but it doesn't have a global toggle, you have to write a hook. For example, see: Emacs: Change Major Mode Keys.

Turn On/Off Minor Mode in Emacs Init

When calling a mode function in init file, give it a argument 1 to turn on, and 0 for off, like this:

(global-linum-mode 1)

Note: the argument to minor mode changed in emacs 23.2 〔►see Emacs 23.2 Features (released 2010-05)

Current State of a Minor Mode

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

If you want to turn on/off a mode, call the function, not set the variable. For example:

(global-linum-mode 1) ; GOOD

(setq global-linum-mode t) ; WRONG!
(setq global-linum-mode 1) ; WRONG!

If you also need to check if a mode (package) is loaded, see: Emacs Lisp: Check If a {function, variable, feature} is Defined/Loaded

Like it? Buy Xah Emacs Tutorial. Thanks.

or, buy something from Best Keyboard for Emacs