Go to the first, previous, next, last section, table of contents.


Repeated Loading

You may load one 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, 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 Lisp library file, keep in mind that the file 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)))

To add an element to a list just once, use add-to-list (see section How to Alter a Variable Value).

Occasionally you will want to test explicitly whether a library has already been loaded. Here's one way to test, in a library, whether it has been loaded before:

(defvar foo-was-loaded)

(if (not (boundp 'foo-was-loaded))
    execute-first-time-only)

(setq foo-was-loaded t)

If the library uses provide to provide a named feature, you can use featurep to test whether the library has been loaded.


Go to the first, previous, next, last section, table of contents.