Copyright (C) 2000-2012 |
GNU Info (elisp)Library SearchLibrary Search ============== When Emacs loads a Lisp library, it searches for the library in a list of directories specified by the variable `load-path'. - User Option: load-path The value of this variable is a list of directories to search when loading files with `load'. Each element is a string (which must be a directory name) or `nil' (which stands for the current working directory). The value of `load-path' is initialized from the environment variable `EMACSLOADPATH', if that exists; otherwise its default value is specified in `emacs/src/paths.h' when Emacs is built. Then the list is expanded by adding subdirectories of the directories in the list. The syntax of `EMACSLOADPATH' is the same as used for `PATH'; `:' (or `;', according to the operating system) separates directory names, and `.' is used for the current default directory. Here is an example of how to set your `EMACSLOADPATH' variable from a `csh' `.login' file: setenv EMACSLOADPATH .:/user/bil/emacs:/usr/local/share/emacs/20.3/lisp Here is how to set it using `sh': export EMACSLOADPATH EMACSLOADPATH=.:/user/bil/emacs:/usr/local/share/emacs/20.3/lisp Here is an example of code you can place in your init file (Note: Init File) to add several directories to the front of your default `load-path': (setq load-path (append (list nil "/user/bil/emacs" "/usr/local/lisplib" "~/emacs") load-path)) In this example, the path searches the current working directory first, followed then by the `/user/bil/emacs' directory, the `/usr/local/lisplib' directory, and the `~/emacs' directory, which are then followed by the standard directories for Lisp code. Dumping Emacs uses a special value of `load-path'. If the value of `load-path' at the end of dumping is unchanged (that is, still the same special value), the dumped Emacs switches to the ordinary `load-path' value when it starts up, as described above. But if `load-path' has any other value at the end of dumping, that value is used for execution of the dumped Emacs also. Therefore, if you want to change `load-path' temporarily for loading a few libraries in `site-init.el' or `site-load.el', you should bind `load-path' locally with `let' around the calls to `load'. The default value of `load-path', when running an Emacs which has been installed on the system, includes two special directories (and their subdirectories as well): "/usr/local/share/emacs/VERSION/site-lisp" and "/usr/local/share/emacs/site-lisp" The first one is for locally installed packages for a particular Emacs version; the second is for locally installed packages meant for use with all installed Emacs versions. There are several reasons why a Lisp package that works well in one Emacs version can cause trouble in another. Sometimes packages need updating for incompatible changes in Emacs; sometimes they depend on undocumented internal Emacs data that can change without notice; sometimes a newer Emacs version incorporates a version of the package, and should be used only with that version. Emacs finds these directories' subdirectories and adds them to `load-path' when it starts up. Both immediate subdirectories and subdirectories multiple levels down are added to `load-path'. Not all subdirectories are included, though. Subdirectories whose names do not start with a letter or digit are excluded. Subdirectories named `RCS' or `CVS' are excluded. Also, a subdirectory which contains a file named `.nosearch' is excluded. You can use these methods to prevent certain subdirectories of the `site-lisp' directories from being searched. If you run Emacs from the directory where it was built--that is, an executable that has not been formally installed--then `load-path' normally contains two additional directories. These are the `lisp' and `site-lisp' subdirectories of the main build directory. (Both are represented as absolute file names.) - Command: locate-library library &optional nosuffix path interactive-call This command finds the precise file name for library LIBRARY. It searches for the library in the same way `load' does, and the argument NOSUFFIX has the same meaning as in `load': don't add suffixes `.elc' or `.el' to the specified name LIBRARY. If the PATH is non-`nil', that list of directories is used instead of `load-path'. When `locate-library' is called from a program, it returns the file name as a string. When the user runs `locate-library' interactively, the argument INTERACTIVE-CALL is `t', and this tells `locate-library' to display the file name in the echo area. automatically generated by info2www version 1.2.2.9 |