elisp: Init File

 
 38.1.2 The Init File
 --------------------
 
 When you start Emacs, it normally attempts to load your “init file”.
 This is either a file named ‘.emacs’ or ‘.emacs.el’ in your home
 directory, or a file named ‘init.el’ in a subdirectory named ‘.emacs.d’
 in your home directory.
 
    The command-line switches ‘-q’, ‘-Q’, and ‘-u’ control whether and
 where to find the init file; ‘-q’ (and the stronger ‘-Q’) says not to
 load an init file, while ‘-u USER’ says to load USER’s init file instead
 of yours.  See(emacs)Entering Emacs.  If neither option is
 specified, Emacs uses the ‘LOGNAME’ environment variable, or the ‘USER’
 (most systems) or ‘USERNAME’ (MS systems) variable, to find your home
 directory and thus your init file; this way, even if you have su’d,
 Emacs still loads your own init file.  If those environment variables
 are absent, though, Emacs uses your user-id to find your home directory.
 
    An Emacs installation may have a “default init file”, which is a Lisp
 library named ‘default.el’.  Emacs finds this file through the standard
 search path for libraries (SeeHow Programs Do Loading).  The Emacs
 distribution does not come with this file; it is intended for local
 customizations.  If the default init file exists, it is loaded whenever
 you start Emacs.  But your own personal init file, if any, is loaded
 first; if it sets ‘inhibit-default-init’ to a non-‘nil’ value, then
 Emacs does not subsequently load the ‘default.el’ file.  In batch mode,
 or if you specify ‘-q’ (or ‘-Q’), Emacs loads neither your personal init
 file nor the default init file.
 
    Another file for site-customization is ‘site-start.el’.  Emacs loads
 this _before_ the user’s init file.  You can inhibit the loading of this
 file with the option ‘--no-site-file’.
 
  -- User Option: site-run-file
      This variable specifies the site-customization file to load before
      the user’s init file.  Its normal value is ‘"site-start"’.  The
      only way you can change it with real effect is to do so before
      dumping Emacs.
 
    SeeInit File Examples (emacs)Init Examples, for examples of how
 to make various commonly desired customizations in your ‘.emacs’ file.
 
  -- User Option: inhibit-default-init
      If this variable is non-‘nil’, it prevents Emacs from loading the
      default initialization library file.  The default value is ‘nil’.
 
  -- Variable: before-init-hook
      This normal hook is run, once, just before loading all the init
      files (‘site-start.el’, your init file, and ‘default.el’).  (The
      only way to change it with real effect is before dumping Emacs.)
 
  -- Variable: after-init-hook
      This normal hook is run, once, just after loading all the init
      files (‘site-start.el’, your init file, and ‘default.el’), before
      loading the terminal-specific library (if started on a text
      terminal) and processing the command-line action arguments.
 
  -- Variable: emacs-startup-hook
      This normal hook is run, once, just after handling the command line
      arguments.  In batch mode, Emacs does not run this hook.
 
  -- Variable: window-setup-hook
      This normal hook is very similar to ‘emacs-startup-hook’.  The only
      difference is that it runs slightly later, after setting of the
      frame parameters.  Seewindow-setup-hook Startup Summary.
 
  -- Variable: user-init-file
      This variable holds the absolute file name of the user’s init file.
      If the actual init file loaded is a compiled file, such as
      ‘.emacs.elc’, the value refers to the corresponding source file.
 
  -- Variable: user-emacs-directory
      This variable holds the name of the ‘.emacs.d’ directory.  It is
      ‘~/.emacs.d’ on all platforms but MS-DOS.