15.6 Repeated Loading

You can load a given 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 it came from.

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, you need to byte-compile the new
version; otherwise Emacs will load the older, byte-compiled file instead
of your newer, non-compiled file! If that happens, the message
displayed when loading the file includes, ‘(compiled; note, source is
newer)’, to remind you to recompile it.

When writing the forms in a Lisp library file, keep in mind that the
file might be loaded more than once. For example, think about whether
each variable should be reinitialized when you reload the library;
defvar does not change the value if the variable is already
initialized. (See Defining Variables.)

The simplest way to add an element to an alist is like this:

(push '(leif-mode " Leif") minor-mode-alist)

But this would add multiple elements if the library is reloaded. To
avoid the problem, use add-to-list (see List Variables):

(add-to-list 'minor-mode-alist '(leif-mode " Leif"))

Occasionally you will want to test explicitly whether a library has
already been loaded. If the library uses provide to provide a
named feature, you can use featurep earlier in the file to test
whether the provide call has been executed before (see Named Features). Alternatively, you could use something like this: