From 798f07f1509ac973a379db921bd796e0df7f2982 Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Sun, 8 Oct 2017 17:25:31 +0200 Subject: [PATCH] Document that mode commands should be idempotent. * doc/lispref/modes.texi (Major Mode Conventions, Minor Mode Conventions): Document that the mode commands should be idempotent. --- doc/lispref/modes.texi | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index bd94aeadf15..1a601baee86 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -313,6 +313,11 @@ The major mode command should set the variable @code{mode-name} to the Data}, for other possible forms). The name of the mode appears in the mode line. +@item +Calling the major mode command twice in direct succession should not +fail and should do the same thing as calling the command only once. +In other words, the major mode command should be idempotent. + @item @cindex functions in modes Since all global names are in the same name space, all the global @@ -1412,6 +1417,10 @@ a minor mode in a mode hook is a little uglier: @noindent However, this is not very commonly done. + Enabling or disabling a minor mode twice in direct succession should +not fail and should do the same thing as enabling or disabling it only +once. In other words, the minor mode command should be idempotent. + @item Add an element to @code{minor-mode-alist} for each minor mode (@pxref{Definition of minor-mode-alist}), if you want to indicate the -- 2.39.2