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. (Note: Defining 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, you can also use `add-to-list' (Note: Setting Variables). 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 nil) (unless 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' earlier in the file to test whether the `provide' call has been executed before. Note: Named Features.
automatically generated by info2www version 18.104.22.168