There are conventions for writing minor modes just as there are for major modes. Several of the major mode conventions apply to minor modes as well: those regarding the name of the mode initialization function, the names of global symbols, and the use of keymaps and other tables.
In addition, there are several conventions that are specific to minor modes.
nil
to disable; anything else to
enable).
If it is possible, implement the mode so that setting the variable
automatically enables or disables the mode. Then the minor mode command
does not need to do anything except set the variable.
This variable is used in conjunction with the minor-mode-alist
to
display the minor mode name in the mode line. It can also enable
or disable a minor mode keymap. Individual commands or hooks can also
check the variable's value.
If you want the minor mode to be enabled separately in each buffer,
make the variable buffer-local.
nil
, it should toggle the mode (turn it on if it is off, and off
if it is on). Otherwise, it should turn the mode on if the argument is
a positive integer, a symbol other than nil
or -
, or a
list whose CAR is such an integer or symbol; it should turn the
mode off otherwise.
Here is an example taken from the definition of transient-mark-mode
.
It shows the use of transient-mark-mode
as a variable that enables or
disables the mode's behavior, and also shows the proper way to toggle,
enable or disable the minor mode based on the raw prefix argument value.
(setq transient-mark-mode (if (null arg) (not transient-mark-mode) (> (prefix-numeric-value arg) 0)))
minor-mode-alist
for each minor mode
(see section Variables Used in the Mode Line), if you want to indicate the minor mode in
the mode line. This element should be a list of the following form:
(mode-variable string)Here mode-variable is the variable that controls enabling of the minor mode, and string is a short string, starting with a space, to represent the mode in the mode line. These strings must be short so that there is room for several of them at once. When you add an element to
minor-mode-alist
, use assq
to
check for an existing element, to avoid duplication. For example:
(or (assq 'leif-mode minor-mode-alist) (setq minor-mode-alist (cons '(leif-mode " Leif") minor-mode-alist)))
You can also use add-to-list
to add an element to this list
just once (see section How to Alter a Variable Value).
Go to the first, previous, next, last section, table of contents.