[comp.emacs] Load order of 'site' files and '~/.emacs'

weiner@novavax.UUCP (Bob Weiner) (11/14/88)

I have seen quite a number of postings to this group that show that
user's believe that any operation they perform in their GNU Emacs
personal init files, e.g. .emacs, should override any system wide
settings.  I believe most people would want this behavior.

I can only speak from my use of version 18.49, but the emacs startup
code does not operate this way.  Look in
<GNUEMACS_DIR>/lisp/startup.el and I believe you will find that
'site-init' or 'site-load' is loaded AFTER your .emacs init file.
This may account for the fact that your init file works only if you
execute it manually after starting emacs.

I changed the source myself, but if this is still the same in version 18.52
someone should send a message to the wonderful people at the Free Software
Foundation to report it as a bug or at least an 'extremely
non-intuitive feature.'  I think the mailing list is gnu.bugs.
-- 
Bob Weiner, Motorola, Inc.,   USENET:  ...!gatech!uflorida!novavax!weiner
(407) 738-2087

jr@bbn.com (John Robinson) (11/15/88)

In article <812@novavax.UUCP>, weiner@novavax (Bob Weiner) writes:
>...
>I can only speak from my use of version 18.49, but the emacs startup
>code does not operate this way.  Look in
><GNUEMACS_DIR>/lisp/startup.el and I believe you will find that
>'site-init' or 'site-load' is loaded AFTER your .emacs init file.
>...
>I changed the source myself, but if this is still the same in version 18.52
>someone should send a message to the wonderful people at the Free Software

Well, this isn't true for version 18.52, and I seriously doubt that it
was in 18.49.  I did read startup.el, and checked the Changelog back
to well before 18.49.  It does load one file after the user's .emacs,
namely emacs/lisp/default.  No such file comes with the distribution,
so there is no system-wide default loaded after the user's .emacs.
However, the terminal-specific inits DO happen after .emacs, and there
is a hook (term-setup-hook) where you can hang code that wants to run
after the terminal type is set.

site-init and site-load are loaded by loadup.el, which should have
already been run when you built your dumped emacs (i.e., their results
are in the pure lisp code).  If your system can't dump, I still
believe that startup.el must run after loadup.el, hence after
site-*.el.
--

/jr
jr@bbn.com or bbn!jr

jbw@bucsb.UUCP (Joe Wells) (11/15/88)

In article <812@novavax.UUCP> weiner@novavax.UUCP (Bob Weiner) writes:
>...  Look in
><GNUEMACS_DIR>/lisp/startup.el and I believe you will find that
>'site-init' or 'site-load' is loaded AFTER your .emacs init file.
>This may account for the fact that your init file works only if you
>execute it manually after starting emacs.
[stuff deleted]
>-- 
>Bob Weiner, Motorola, Inc.,   USENET:  ...!gatech!uflorida!novavax!weiner
>(407) 738-2087

The code in lisp/startup.el does these things in this order:
1) Loads user's ~/.emacs file.
2) Loads system-wide lisp/default.el file.
3) Loads terminal-setup lisp/term/*.el file.
4) Processes most command-line arguments.
5) Runs term-setup-hook.
6) Runs window-setup-hook.

Anyone who needs something executed after the code in lisp/default.el
can put it on term-setup-hook or window-setup-hook.  lisp/site-init.el
and lisp/site-load.el are loaded from lisp/loadup.el which is normally
loaded before Emacs is dumped, on machines that support unexec.

--
Joe Wells
INTERNET: jbw%bucsf.bu.edu@bu-it.bu.edu
UUCP: ...!harvard!bu-cs!bucsf!jbw