When Emacs is started up, it performs the following operations
normal-top-level in startup.el):
load-path, by running the file named subdirs.el in each directory in the list. Normally, this file adds the directory's subdirectories to the list, and those are scanned in their turn. The files subdirs.el are normally generated automatically when Emacs is installed.
load-path(see Library Search), skipping those directories containing the standard Emacs libraries (since leim-list.el should not exist in those directories).
before-init-timeto the value of
current-time(see Time of Day). It also sets
nil, which signals to Lisp programs that Emacs is being initialized.
initial-window-systemspecifies (see initial-window-system). The initialization function for each supported window system is specified by
window-system-initialization-alist. If the value of
initial-window-systemis windowsystem, then the appropriate initialization function is defined in the file term/windowsystem-win.el. This file should have been compiled into the Emacs executable when it was built.
custom-reevaluate-settingto re-initialize the members of the list
custom-delayed-init-variables. These are any pre-loaded user options whose default value depends on the run-time, rather than build-time, context. See custom-initialize-delay.
nil, nor if the options ‘-q’, ‘-Q’, or ‘--batch’ were specified.
abbrev-file-name, if that file exists and can be read (see abbrev-file-name). This is not done if the option ‘--batch’ was specified.
nil, it calls the function
package-initializeto activate any optional Emacs Lisp package that has been installed. See Packaging Basics.
after-init-timeto the value of
current-time. This variable was set to
nilearlier; setting it to the current time signals that the initialization phase is over, and, together with
before-init-time, provides the measurement of how long it took.
term-file-prefix(see Terminal-Specific). This is not done in
--batchmode, nor if
initial-buffer-choiceis a string, it visits the file with that name. If the *scratch* buffer exists and is empty, it inserts
initial-scratch-messageinto that buffer.
frame-notice-user-settings, which modifies the parameters of the selected frame according to whatever the init files specify.
window-setup-hook. See Window Systems.
nil, or if the ‘--no-splash’ or ‘-Q’ command-line options were specified.
--daemonwas specified, it calls
server-startand detaches from the controlling terminal. See Emacs Server.
emacs-session-restorepassing it as argument the ID of the previous session. See Session Management.
The following options affect some aspects of the startup sequence.
This variable, if non-
nil, inhibits the startup screen. In that case, Emacs typically displays the *scratch* buffer; but see
Do not set this variable in the init file of a new user, or in a way that affects more than one user, as that would prevent new users from receiving information about copyleft and basic Emacs usage.
nil, this variable is a string that specifies a file or directory for Emacs to display after starting up, instead of the startup screen.
This variable controls the display of the startup echo area message. You can suppress the startup echo area message by adding text with this form to your init file:(setq inhibit-startup-echo-area-message "your-login-name")
Emacs explicitly checks for an expression as shown above in your init file; your login name must appear in the expression as a Lisp string constant. You can also use the Customize interface. Other methods of setting
inhibit-startup-echo-area-messageto the same value do not inhibit the startup message. This way, you can easily inhibit the message for yourself if you wish, but thoughtless copying of your init file will not inhibit the message for someone else.
This variable, if non-
nil, should be a string, which is inserted into the *scratch* buffer when Emacs starts up. If it is
nil, the *scratch* buffer is empty.
The following command-line options affect some aspects of the startup sequence. See Initial Options.