Hi, I have noticed a problem recently in in the way packages modify the load path. I am attaching what the load-path var looks like in a freshly started emacs21. Please note that first in the path come local lisp directories, as they should. Then come directories added by add-on packages. Then come directories I have in /usr/local -- then come the standard directories in /usr/share --- including the directories of add-on packages, repeated!! The glaring problem with this is that the add-on packages (including my packages, gnus and vm) are violating emacs policy -- the /usr/local paths are supposed to have precedence over the paths of standard emacs packages installed by Debian. However, the add-on packages need to have their paths ahead of the standard paths -- so the order ought to be paths added by me --- /usr/local/ --- add-on packages -- standard This way, if I wish, I can override even stand alone packages, if I wish, by placing it in /usr/local (as I do with cvs versions of gnus, bbdb, and tramp). ====================================================================== 9) Emacs lisp load path. At a minimum, each emacs has the following directories in the given order in their load path: /etc/<flavor> /etc/emacs /usr/local/share/emacs/<upstream>/site-lisp /usr/local/share/emacs/site-lisp /usr/share/emacs/<upstream>/site-lisp /usr/share/emacs/site-lisp ====================================================================== The add-on packages ought to be using something like the function contributed by Sam Hartman <hartmans@mekinok.com>, which is also appended as an attachment below. This allows them to insert their path into the load-path *after* the local paths, but before the standard emacs paths. Perhaps add-after-local (or a renamed version of the function) should be provided by default, and policy changed to recommend the use of that function. I am copying this message to all packages currently violating the emacsen policy on load-paths. Please consider this fair warning for serious bugs to be filed when we reach a solution of this issue. manoj
load-path's value is ("/home/srivasta/lib/emacs/debian" "/home/srivasta/lib/emacs/x-support" "/home/srivasta/lib/emacs/modes" "/home/srivasta/lib/emacs/mail" "/home/srivasta/lib/emacs/lisp" "/home/srivasta/lib/emacs/bbdb" "/home/srivasta/lib/emacs/functions" "/home/srivasta/lib/emacs/config" "/home/srivasta/lib/emacs/emacs21" "/home/srivasta/lib/emacs" "/usr/share/emacs21/site-lisp/xae" "/usr/share/emacs21/site-lisp/tramp" "/usr/share/emacs21/site-lisp/speedbar" "/usr/share/emacs21/site-lisp/psgml" "/usr/share/emacs21/site-lisp/pcl-cvs/" "/usr/share/emacs21/site-lisp/maxima" "/usr/share/emacs21/site-lisp/gnuserv" "/usr/share/emacs21/site-lisp/erc" "/usr/share/emacs21/site-lisp/emacs-goodies-el" "/usr/share/emacs21/site-lisp/eieio" "/usr/share/emacs21/site-lisp/dpkg-dev-el" "/usr/share/emacs21/site-lisp/debbugs-el" "/usr/share/emacs/site-lisp/debbugs-el" "/usr/share/emacs21/site-lisp/cxref" "/usr/share/emacs21/site-lisp/calc" "/usr/share/emacs21/site-lisp/auctex/" "/usr/share/emacs21/site-lisp/elib/" "/usr/share/emacs21/site-lisp/gnus" "/etc/emacs21" "/etc/emacs" "/usr/local/share/emacs/21.1/site-lisp" "/usr/local/share/emacs/site-lisp" "/usr/local/share/emacs/site-lisp/bbdb-cvs" "/usr/local/share/emacs/site-lisp/dmacro" "/usr/local/share/emacs/site-lisp/functions" "/usr/local/share/emacs/site-lisp/gnus-cvs" "/usr/local/share/emacs/site-lisp/mailcrypt-cvs" "/usr/local/share/emacs/site-lisp/site-start.d" "/usr/local/share/emacs/site-lisp/tramp-cvs" "/usr/local/share/emacs/site-lisp/url-cvs" "/usr/local/share/emacs/site-lisp/w3-cvs" "/usr/local/share/emacs/site-lisp/bbdb-cvs/bits" "/usr/local/share/emacs/site-lisp/bbdb-cvs/html" "/usr/local/share/emacs/site-lisp/bbdb-cvs/lisp" "/usr/local/share/emacs/site-lisp/bbdb-cvs/misc" "/usr/local/share/emacs/site-lisp/bbdb-cvs/tex" "/usr/local/share/emacs/site-lisp/bbdb-cvs/texinfo" "/usr/local/share/emacs/site-lisp/bbdb-cvs/utils" "/usr/local/share/emacs/site-lisp/gnus-cvs/contrib" "/usr/local/share/emacs/site-lisp/gnus-cvs/debian" "/usr/local/share/emacs/site-lisp/gnus-cvs/etc" "/usr/local/share/emacs/site-lisp/gnus-cvs/lisp" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi" "/usr/local/share/emacs/site-lisp/tramp-cvs/lisp" "/usr/local/share/emacs/site-lisp/tramp-cvs/test" "/usr/local/share/emacs/site-lisp/tramp-cvs/texi" "/usr/local/share/emacs/site-lisp/url-cvs/lisp" "/usr/local/share/emacs/site-lisp/url-cvs/texi" "/usr/local/share/emacs/site-lisp/w3-cvs/contrib" "/usr/local/share/emacs/site-lisp/w3-cvs/etc" "/usr/local/share/emacs/site-lisp/w3-cvs/lisp" "/usr/local/share/emacs/site-lisp/w3-cvs/tests" "/usr/local/share/emacs/site-lisp/w3-cvs/texi" "/usr/local/share/emacs/site-lisp/bbdb-cvs/bits/bbdb-filters" "/usr/local/share/emacs/site-lisp/bbdb-cvs/html/images" "/usr/local/share/emacs/site-lisp/bbdb-cvs/html/patches" "/usr/local/share/emacs/site-lisp/gnus-cvs/etc/gnus" "/usr/local/share/emacs/site-lisp/gnus-cvs/etc/smilies" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/etc" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/herds" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/misc" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/picons" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/ps" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/screen" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/smilies" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/xface" "/usr/local/share/emacs/site-lisp/tramp-cvs/texi/tramp" "/usr/local/share/emacs/site-lisp/w3-cvs/etc/w3" "/usr/local/share/emacs/site-lisp/bbdb-cvs/bits/bbdb-filters/doc" "/usr/local/share/emacs/site-lisp/w3-cvs/etc/w3/pixmaps" "/usr/local/share/emacs/site-lisp/bbdb-cvs/bits/bbdb-filters/doc/formatted" "/usr/share/emacs/21.1/site-lisp" "/usr/share/emacs/site-lisp" "/usr/share/emacs/21.1/leim" "/usr/share/emacs/21.1/lisp" "/usr/share/emacs/21.1/lisp/toolbar" "/usr/share/emacs/21.1/lisp/textmodes" "/usr/share/emacs/21.1/lisp/progmodes" "/usr/share/emacs/21.1/lisp/play" "/usr/share/emacs/21.1/lisp/obsolete" "/usr/share/emacs/21.1/lisp/net" "/usr/share/emacs/21.1/lisp/mail" "/usr/share/emacs/21.1/lisp/language" "/usr/share/emacs/21.1/lisp/international" "/usr/share/emacs/21.1/lisp/gnus" "/usr/share/emacs/21.1/lisp/eshell" "/usr/share/emacs/21.1/lisp/emulation" "/usr/share/emacs/21.1/lisp/emacs-lisp" "/usr/share/emacs/21.1/lisp/calendar" "/usr/share/emacs21/site-lisp/url" "/usr/share/emacs21/site-lisp/vm" "/usr/share/emacs21/site-lisp/w3-el") Documentation: *List of directories to search for files to load. Each element is a string (directory name) or nil (try default directory). Initialized based on EMACSLOADPATH environment variable, if any, otherwise to default specified by file `epaths.h' when Emacs was built.
Attachment:
add-after-local.el
Description: add a path component after the /usr/local components
-- "You stay here, Audrey -- this is between me and the vegetable!" Seymour, from _Little Shop Of Horrors_ Manoj Srivastava <srivasta@debian.org> <http://www.debian.org/%7Esrivasta/> 1024R/C7261095 print CB D9 F4 12 68 07 E4 05 CC 2D 27 12 1D F5 E8 6E 1024D/BF24424C print 4966 F272 D093 B493 410B 924B 21BA DABB BF24 424C