When Emacs is started up, it performs the following operations (see 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 directories. This file is intended for registering input methods. The search is only for any personal leim-list.el files that you may have created; it skips the directories containing the standard Emacs libraries (these should contain only a single leim-list.el file, which is compiled into the Emacs executable). before-init-time to the value of current-time (see Time of Day). It also sets after-init-time to nil, which signals to Lisp programs that Emacs is being initialized. LANG. package-activate-all to activate any optional Emacs Lisp package that has been installed. See Packaging Basics. However, Emacs doesn’t activate the packages when package-enable-at-startup is nil or when it’s started with one of the options ‘-q’, ‘-Q’, or ‘--batch’. To activate the packages in the latter case, package-activate-all should be called explicitly (e.g., via the ‘--funcall’ option). initial-window-system specifies (see initial-window-system). The initialization function, window-system-initialization, is a generic function (see Generic Functions) whose actual implementation is different for each supported window system. If the value of initial-window-system is windowsystem, then the appropriate implementation of the 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. before-init-hook. initial-frame-alist and default-frame-alist (see Initial Parameters) for the graphical frame, by calling the window-system-initialization function for that window system. This is not done in batch (noninteractive) or daemon mode. custom-reevaluate-setting to 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. inhibit-default-init is non-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. after-init-time to the value of current-time. This variable was set to nil earlier; 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. after-init-hook. initial-major-mode. tty-setup-hook. This is not done in --batch mode, nor if term-file-prefix is nil. inhibit-startup-echo-area-message. --batch was specified. (substitute-command-keys initial-scratch-message) into that buffer. initial-buffer-choice is a string, it visits the file (or directory) with that name. If it is a function, it calls the function with no arguments and selects the buffer that it returns. If one file is given as a command line argument, that file is visited and its buffer displayed alongside initial-buffer-choice. If more than one file is given, all of the files are visited and the *Buffer List* buffer is displayed alongside initial-buffer-choice. emacs-startup-hook. frame-notice-user-settings, which modifies the parameters of the selected frame according to whatever the init files specify. window-setup-hook. The only difference between this hook and emacs-startup-hook is that this one runs after the previously mentioned modifications to the frame parameters. inhibit-startup-screen or initial-buffer-choice are non-nil, or if the ‘--no-splash’ or ‘-Q’ command-line options were specified. server-start. (On POSIX systems, if a background daemon was requested, it then detaches from the controlling terminal.) See Emacs Server in The GNU Emacs Manual. emacs-session-restore passing 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 initial-buffer-choice, below.
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.
inhibit-startup-message and inhibit-splash-screen are aliases for this variable.
If non-nil, this variable is a string that specifies a file or directory for Emacs to display after starting up, instead of the startup screen. If its value is a function, Emacs calls that function which must return a buffer which is then displayed. If its value is t, Emacs displays the *scratch* buffer.
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-message to 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 treated as documentation to be 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 in The GNU Emacs Manual.
--no-splashDo not display a splash screen.
--batchRun without an interactive terminal. See Batch Mode.
--daemon--bg-daemon--fg-daemonDo not initialize any display; just start a server. (A “background” daemon automatically runs in the background.)
--no-init-file-qDo not load either the init file, or the default library.
--no-site-fileDo not load the site-start library.
--quick-QEquivalent to ‘-q --no-site-file --no-splash’.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html