Document `initial-buffer-choice' changes.
[bpt/emacs.git] / doc / emacs / entering.texi
CommitLineData
6bf7aab6 1@c This is part of the Emacs manual.
ab422c4d
PE
2@c Copyright (C) 1985-1987, 1993-1995, 2001-2013 Free Software
3@c Foundation, Inc.
6bf7aab6 4@c See file emacs.texi for copying conditions.
321ca37f 5@iftex
6bf7aab6 6@chapter Entering and Exiting Emacs
321ca37f
CY
7
8 This chapter explains how to enter Emacs, and how to exit it.
9@end iftex
10
11@ifnottex
12@raisesections
13@end ifnottex
14
abb9615e 15@node Entering Emacs
321ca37f 16@section Entering Emacs
6bf7aab6 17@cindex entering Emacs
177c0ea7 18@cindex starting Emacs
6bf7aab6 19
708bf232 20 The usual way to invoke Emacs is with the shell command
321ca37f 21@command{emacs}. From a terminal window running in the X Window
de0bde62
CY
22System, you can run Emacs in the background with @command{emacs &};
23this way, Emacs won't tie up the terminal window, so you can use it to
24run other shell commands.
321ca37f
CY
25
26@cindex startup screen
27 When Emacs starts up, the initial frame displays a special buffer
de0bde62
CY
28named @samp{*GNU Emacs*}. This @dfn{startup screen} contains
29information about Emacs and @dfn{links} to common tasks that are
30useful for beginning users. For instance, activating the @samp{Emacs
6edf847b
CY
31Tutorial} link opens the Emacs tutorial; this does the same thing as
32the command @kbd{C-h t} (@code{help-with-tutorial}). To activate a
33link, either move point onto it and type @kbd{@key{RET}}, or click on
34it with @kbd{mouse-1} (the left mouse button).
321ca37f
CY
35
36 Using a command line argument, you can tell Emacs to visit one or
de0bde62
CY
37more files as soon as it starts up. For example, @command{emacs
38foo.txt} starts Emacs with a buffer displaying the contents of the
39file @samp{foo.txt}. This feature exists mainly for compatibility
40with other editors, which are designed to be launched from the shell
41for short editing sessions. If you call Emacs this way, the initial
42frame is split into two windows---one showing the specified file, and
43the other showing the startup screen. @xref{Windows}.
44
45 Generally, it is unnecessary and wasteful to start Emacs afresh each
46time you want to edit a file. The recommended way to use Emacs is to
47start it just once, just after you log in, and do all your editing in
48the same Emacs session. @xref{Files}, for information on visiting
49more than one file. If you use Emacs this way, the Emacs session
50accumulates valuable context, such as the kill ring, registers, undo
51history, and mark ring data, which together make editing more
52convenient. These features are described later in the manual.
6bf7aab6 53
c9a769c8
RS
54 To edit a file from another program while Emacs is running, you can
55use the @command{emacsclient} helper program to open a file in the
de0bde62 56existing Emacs session. @xref{Emacs Server}.
9f1cc7eb 57
321ca37f 58 Emacs accepts other command line arguments that tell it to load
de0bde62
CY
59certain Lisp files, where to put the initial frame, and so forth.
60@xref{Emacs Invocation}.
6cca5de0 61
6edf847b 62@vindex inhibit-startup-screen
be77bd45
CY
63 If the variable @code{inhibit-startup-screen} is non-@code{nil},
64Emacs does not display the startup screen. In that case, if one or
65more files were specified on the command line, Emacs simply displays
1c64e6ed 66those files; otherwise, it displays a buffer named @file{*scratch*},
be77bd45
CY
67which can be used to evaluate Emacs Lisp expressions interactively.
68@xref{Lisp Interaction}. You can set the variable
69@code{inhibit-startup-screen} using the Customize facility
61b9fed1 70(@pxref{Easy Customization}), or by editing your initialization file
de0bde62
CY
71(@pxref{Init File}).@footnote{Setting @code{inhibit-startup-screen} in
72@file{site-start.el} doesn't work, because the startup screen is set
73up before reading @file{site-start.el}. @xref{Init File}, for
74information about @file{site-start.el}.}
6edf847b 75
be77bd45 76 You can also force Emacs to display a file or directory at startup
dfff9284
TH
77by setting the variable @code{initial-buffer-choice} to a a string
78naming that file or directory. The value of
79@code{initial-buffer-choice} may also be a function which should
80return a buffer which is then displayed. @code{initial-buffer-choice}
81may also be @code{t} in which case the @file{*scratch*} buffer will be
82shown. In any case, even if you specify one or more files on the
83command line, Emacs opens but does not display them if
84@code{initial-buffer-choice} is non-nil.
be77bd45 85
abb9615e 86@node Exiting
6bf7aab6
DL
87@section Exiting Emacs
88@cindex exiting
89@cindex killing Emacs
6bf7aab6
DL
90@cindex leaving Emacs
91@cindex quitting Emacs
92
6bf7aab6 93@table @kbd
321ca37f 94@item C-x C-c
a115d013 95Kill Emacs (@code{save-buffers-kill-terminal}).
6bf7aab6 96@item C-z
8ba46c89
CY
97On a text terminal, suspend Emacs; on a graphical display,
98``minimize'' the selected frame (@code{suspend-emacs}).
6bf7aab6
DL
99@end table
100
6bf7aab6 101@kindex C-x C-c
a115d013 102@findex save-buffers-kill-terminal
321ca37f 103 @dfn{Killing} Emacs means terminating the Emacs program. To do
a115d013 104this, type @kbd{C-x C-c} (@code{save-buffers-kill-terminal}). A
de0bde62
CY
105two-character key sequence is used to make it harder to type by
106accident. If there are any modified file-visiting buffers when you
107type @kbd{C-x C-c}, Emacs first offers to save these buffers. If you
108do not save them all, it asks for confirmation again, since the
109unsaved changes will be lost. Emacs also asks for confirmation if any
110subprocesses are still running, since killing Emacs will also kill the
111subprocesses (@pxref{Shell}).
321ca37f 112
a115d013
CY
113 @kbd{C-x C-c} behaves specially if you are using Emacs as a server.
114If you type it from a ``client frame'', it closes the client
115connection. @xref{Emacs Server}.
116
321ca37f
CY
117 Emacs can, optionally, record certain session information when you
118kill it, such as the files you were visiting at the time. This
119information is then available the next time you start Emacs.
120@xref{Saving Emacs Sessions}.
6bf7aab6 121
e020c833
EZ
122@vindex confirm-kill-emacs
123 If the value of the variable @code{confirm-kill-emacs} is
124non-@code{nil}, @kbd{C-x C-c} assumes that its value is a predicate
321ca37f
CY
125function, and calls that function. If the result of the function call
126is non-@code{nil}, the session is killed, otherwise Emacs continues to
127run. One convenient function to use as the value of
128@code{confirm-kill-emacs} is the function @code{yes-or-no-p}. The
129default value of @code{confirm-kill-emacs} is @code{nil}.
130
a115d013
CY
131@findex kill-emacs
132 To kill Emacs without being prompted about saving, type @kbd{M-x
133kill-emacs}.
134
321ca37f 135@kindex C-z
8ba46c89 136@findex suspend-frame
de0bde62
CY
137@cindex minimizing
138@cindex iconifying
139@cindex suspending
8ba46c89 140 @kbd{C-z} runs the command @code{suspend-frame}. On a graphical
de0bde62
CY
141display, this command @dfn{minimizes} (or @dfn{iconifies}) the
142selected Emacs frame, hiding it in a way that lets you bring it back
143later (exactly how this hiding occurs depends on the window system).
144On a text terminal, the @kbd{C-z} command @dfn{suspends} Emacs,
145stopping the program temporarily and returning control to the parent
146process (usually a shell); in most shells, you can resume Emacs after
147suspending it with the shell command @command{%emacs}.
321ca37f 148
0be641c0
CY
149 Text terminals usually listen for certain special characters whose
150meaning is to kill or suspend the program you are running. @b{This
151terminal feature is turned off while you are in Emacs.} The meanings
152of @kbd{C-z} and @kbd{C-x C-c} as keys in Emacs were inspired by the
153use of @kbd{C-z} and @kbd{C-c} on several operating systems as the
154characters for stopping or killing a program, but that is their only
155relationship with the operating system. You can customize these keys
156to run any commands of your choice (@pxref{Keymaps}).
ab5796a9 157
6cca5de0
LT
158@ifnottex
159@lowersections
160@end ifnottex