Go to the previous, next section.
You may load a file more than once in an Emacs session. For example, after you have rewritten and reinstalled a function definition by editing it in a buffer, you may wish to return to the original version; you can do this by reloading the file in which it is located.
When you load or reload files, bear in mind that the load and
load-library functions automatically load a byte-compiled file
rather than a non-compiled file of similar name. If you rewrite a file
that you intend to save and reinstall, remember to byte-compile it if
necessary; otherwise you may find yourself inadvertently reloading the
older, byte-compiled file instead of your newer, non-compiled file!
When writing the forms in a library, keep in mind that the library
might be loaded more than once. For example, the choice of
defvar vs. defconst for defining a variable depends on
whether it is desirable to reinitialize the variable if the library is
reloaded: defconst does so, and defvar does not.
(See section Defining Global Variables.)
The simplest way to add an element to an alist is like this:
(setq minor-mode-alist
(cons '(leif-mode " Leif") minor-mode-alist))
But this would add multiple elements if the library is reloaded. To avoid the problem, write this:
(or (assq 'leif-mode minor-mode-alist)
(setq minor-mode-alist
(cons '(leif-mode " Leif") minor-mode-alist)))
Occasionally you will want to test explicitly whether a library has already been loaded; you can do so as follows:
(if (not (boundp 'foo-was-loaded))
execute-first-time-only)
(setq foo-was-loaded t)
Go to the previous, next section.