Reorganize confirm-nonexistent-file-or-buffer documentation in Emacs manual.

* doc/emacs/buffers.texi (Buffers): Tweak mention of mail buffer name.
(Select Buffer): Move confirmation discussion to Minibuffer Exit.

* doc/emacs/files.texi (File Names, Visiting): Move detailed discussion of
minibuffer confirmation to Minibuffer Exit.

* doc/emacs/mini.texi (Minibuffer Exit): Rename from Strict Completion.
Move confirm-nonexistent-file-or-buffer discussion here.
This commit is contained in:
Chong Yidong 2011-10-22 09:17:33 +08:00
parent a7dee7e773
commit a70e06c117
6 changed files with 135 additions and 117 deletions

View file

@ -1,3 +1,14 @@
2011-10-22 Chong Yidong <cyd@gnu.org>
* mini.texi (Minibuffer Exit): Rename from Strict Completion.
Move confirm-nonexistent-file-or-buffer discussion here.
* files.texi (File Names, Visiting): Move detailed discussion of
minibuffer confirmation to Minibuffer Exit.
* buffers.texi (Buffers): Tweak mention of mail buffer name.
(Select Buffer): Move confirmation discussion to Minibuffer Exit.
2011-10-21 Chong Yidong <cyd@gnu.org>
* files.texi (File Names, Visiting, Interlocking): Copyedits.

View file

@ -7,11 +7,11 @@
@cindex buffers
The text you are editing in Emacs resides in an object called a
@dfn{buffer}. Each time you visit a file, a buffer is created to hold the
file's text. Each time you invoke Dired, a buffer is created to hold the
directory listing. If you send a message with @kbd{C-x m}, a buffer named
@samp{*mail*} is used to hold the text of the message. When you ask for a
command's documentation, that appears in a buffer called @samp{*Help*}.
@dfn{buffer}. Each time you visit a file, a buffer is used to hold
the file's text. Each time you invoke Dired, a buffer is used to hold
the directory listing. If you send a message with @kbd{C-x m}, a
buffer is used to hold the text of the message. When you ask for a
command's documentation, that appears in a buffer named @samp{*Help*}.
Each buffer has a unique name, which can be of any length. When a
buffer is displayed in a window, its name is shown in the mode line
@ -19,35 +19,34 @@ buffer is displayed in a window, its name is shown in the mode line
matters in buffer names. Most buffers are made by visiting files, and
their names are derived from the files' names; however, you can also
create an empty buffer with any name you want. A newly started Emacs
has a buffer named @samp{*scratch*}, which is not associated with any
file and can be used for evaluating Lisp expressions in Emacs
(@pxref{Lisp Interaction}).
has several buffers, including one named @samp{*scratch*}, which can
be used for evaluating Lisp expressions and is not associated with any
file (@pxref{Lisp Interaction}).
@cindex selected buffer
@cindex current buffer
At any time, one and only one buffer is @dfn{current}. This is also
called the @dfn{selected buffer}. We often say that a command
operates on ``the buffer''; this really means that the command
operates on the current buffer (most commands do). When there is only
one Emacs window, the buffer displayed in that window is current.
When there are multiple windows present, the buffer displayed in the
@dfn{selected window} is current. @xref{Windows}.
At any time, one and only one buffer is @dfn{selected}; we call it
the @dfn{current buffer}. We sometimes say that a command operates on
``the buffer''; this really means that it operates on the current
buffer. When there is only one Emacs window, the buffer displayed in
that window is current. When there are multiple windows, the buffer
displayed in the @dfn{selected window} is current. @xref{Windows}.
Each buffer records individually what file it is visiting (if any),
whether it is modified, and what major mode and minor modes are in
effect (@pxref{Major Modes}). Any Emacs variable can be made
@dfn{local to} a particular buffer, meaning its value in that buffer
can be different from the value in other buffers. @xref{Locals}.
Aside from its textual contents, each buffer records several pieces
of information, such as what file it is visiting (if any), whether it
is modified, and what major mode and minor modes are in effect
(@pxref{Modes}). These are stored in @dfn{buffer-local
variables}---variables that can have a different value in each buffer.
@xref{Locals}.
@cindex buffer size, maximum
A buffer's size cannot be larger than some maximum, which is defined
by the largest buffer position representable by the @dfn{Emacs
integer} data type. This is because Emacs tracks buffer positions
using that data type. For typical 64-bit machines, the maximum buffer size
enforced by the data types is @math{2^61 - 2} bytes, or about 2 EiB.
For typical 32-bit machines, the maximum is @math{2^29 - 2} bytes, or
about 512 MiB. Buffer sizes are also limited by the size of Emacs's
virtual memory.
by the largest buffer position representable by @dfn{Emacs integers}.
This is because Emacs tracks buffer positions using that data type.
For typical 64-bit machines, this maximum buffer size is @math{2^61 -
2} bytes, or about 2 EiB. For typical 32-bit machines, the maximum is
usually @math{2^29 - 2} bytes, or about 512 MiB. Buffer sizes are
also limited by the amount of memory present in the system.
@menu
* Select Buffer:: Creating a new buffer or reselecting an old one.
@ -76,9 +75,9 @@ Similar, but select @var{buffer} in another window
Similar, but select @var{buffer} in a separate frame
(@code{switch-to-buffer-other-frame}).
@item C-x @key{LEFT}
Select the previous buffer in the list of existing buffers.
Select the previous buffer in the buffer list (@code{previous-buffer}).
@item C-x @key{RIGHT}
Select the next buffer in the list of existing buffers.
Select the next buffer in the buffer list (@code{next-buffer}).
@item C-u M-g M-g
@itemx C-u M-g g
Read a number @var{n} and move to line @var{n} in the most recently
@ -87,28 +86,21 @@ selected buffer other than the current buffer.
@kindex C-x b
@findex switch-to-buffer
To select the buffer named @var{bufname}, type @kbd{C-x b
@var{bufname} @key{RET}}. This runs the command
@code{switch-to-buffer} with argument @var{bufname}. While entering
the buffer name, you can use the usual minibuffer completion and
history commands (@pxref{Minibuffer}). An empty input specifies the
buffer that was current most recently among those not now displayed in
any window.
The @kbd{C-x b} (@code{switch-to-buffer}) command reads a buffer
name using the minibuffer. Then it makes that buffer current, and
displays it in the currently-selected window. An empty input
specifies the buffer that was current most recently among those not
now displayed in any window. If you specify a buffer that does not
exist, @kbd{C-x b} creates a new, empty buffer that is not visiting
any file, and selects it for editing.
@cindex minibuffer confirmation
@cindex confirming in the minibuffer
If you specify a buffer that does not exist, @kbd{C-x b} creates a
new, empty buffer that is not visiting any file, and selects it for
editing. First, however, Emacs might prompt you for confirmation, in
case you entered the wrong buffer name. Emacs asks for confirmation
only if the last key you typed, before submitting the minibuffer input
with @key{RET}, was @key{TAB} (@code{minibuffer-complete}). This
catches a common mistake, in which one types @key{RET} before
realizing that @key{TAB} did not complete far enough to yield the
desired buffer name (@pxref{Completion}). Emacs asks for confirmation
by putting the message @samp{[Confirm]} in the minibuffer; type
@key{RET} again to confirm and visit the buffer. @xref{Visiting}, for
information about modifying this behavior.
While entering the buffer name, you can use the usual completion and
history commands (@pxref{Minibuffer}). Note that @kbd{C-x b}, and
related commands, use ``permissive completion with confirmation'' for
minibuffer completion: if you type @key{RET} immediately after
completing up to a nonexistent buffer name, Emacs prints
@samp{[Confirm]} and you must type a second @key{RET} to submit that
buffer name. @xref{Completion Exit}, for details.
One reason to create a new buffer is to use it for making temporary
notes. If you try to save it, Emacs asks for the file name to use.

View file

@ -893,11 +893,12 @@ Move to a date specified in the Ethiopic calendar
(@code{calendar-ethiopic-goto-date}).
@end table
These commands ask you for a date on the other calendar, move point to
the Gregorian calendar date equivalent to that date, and display the
other calendar's date in the echo area. Emacs uses strict completion
(@pxref{Strict Completion}) whenever it asks you to type a month name, so you
don't have to worry about the spelling of Hebrew, Islamic, or French names.
These commands ask you for a date on the other calendar, move point
to the Gregorian calendar date equivalent to that date, and display
the other calendar's date in the echo area. Emacs uses strict
completion (@pxref{Completion Exit}) whenever it asks you to type a
month name, so you don't have to worry about the spelling of Hebrew,
Islamic, or French names.
@c FIXME move?
@findex calendar-hebrew-list-yahrzeits
@ -993,7 +994,7 @@ occurrence of that combination. Use @kbd{g m n c} to move point to the
next occurrence of a combination. These commands signal an error if the
haab/tzolkin date combination you have typed is impossible.
Emacs uses strict completion (@pxref{Strict Completion}) whenever it
Emacs uses strict completion (@pxref{Completion Exit}) whenever it
asks you to type a Mayan name, so you don't have to worry about
spelling.

View file

@ -281,7 +281,7 @@ Completion
* Completion Example:: Examples of using completion.
* Completion Commands:: A list of completion commands.
* Strict Completion:: Different types of completion.
* Completion Exit:: Completion and minibuffer text submission.
* Completion Styles:: How completion matches are chosen.
* Completion Options:: Options for completion.

View file

@ -49,11 +49,18 @@ on file directories.
@cindex default file name
Many Emacs commands that operate on a file require you to specify
the file name, using the minibuffer (@pxref{Minibuffer File}). You
can use @dfn{completion} to specify long file names
(@pxref{Completion}); note that file name completion ignores file
names whose extensions appear in the variable
the file name, using the minibuffer (@pxref{Minibuffer File}).
While in the minibuffer, you can use the usual completion and
history commands (@pxref{Minibuffer}). Note that file name completion
ignores file names whose extensions appear in the variable
@code{completion-ignored-extensions} (@pxref{Completion Options}).
Note also that most commands use ``permissive completion with
confirmation'' for reading file names: you are allowed to submit a
nonexistent file name, but if you type @key{RET} immediately after
completing up to a nonexistent file name, Emacs prints
@samp{[Confirm]} and you must type a second @key{RET} to confirm.
@xref{Completion Exit}, for details.
@cindex default directory
@vindex default-directory
@ -152,9 +159,9 @@ that you visit.
@kindex C-x C-f
@findex find-file
To visit a file, type @kbd{C-x C-f} (@code{find-file}) and use the
minibuffer to enter the name of the desired file (@pxref{File Names}).
While in the minibuffer, you can abort the command by typing
@kbd{C-g}.
minibuffer to enter the name of the desired file. While in the
minibuffer, you can abort the command by typing @kbd{C-g}. @xref{File
Names}, for details about entering file names into minibuffers.
If the specified file exists but the system does not allow you to
read it, an error message is displayed in the echo area. Otherwise,
@ -213,25 +220,6 @@ File Names}, for information on how to visit a file whose name
actually contains wildcard characters. You can disable the wildcard
feature by customizing @code{find-file-wildcards}.
@cindex minibuffer confirmation
@cindex confirming in the minibuffer
@vindex confirm-nonexistent-file-or-buffer
When @key{TAB} completion results in a nonexistent file name and you
type @key{RET} immediately to visit it, Emacs asks for confirmation;
this is because it's possible that you expected completion to go
further and give you an existing file's name. The string
@samp{[Confirm]} appears for a short time after the file name to
indicate the need to confirm in this way. Type @key{RET} to confirm
and visit the nonexistent file. The variable
@code{confirm-nonexistent-file-or-buffer} controls whether Emacs asks
for confirmation before visiting a new file. The default value,
@code{after-completion}, gives the behavior we have just described.
If the value is @code{nil}, Emacs never asks for confirmation; for any
other non-@code{nil} value, Emacs always asks for confirmation. This
variable also affects the @code{switch-to-buffer} command
(@pxref{Select Buffer}). @xref{Completion}, for more information
about completion.
@kindex C-x C-v
@findex find-alternate-file
If you visit the wrong file unintentionally by typing its name
@ -382,10 +370,10 @@ Wrote /u/rms/gnu/gnu.tasks
@end example
@noindent
If the selected buffer is not modified (no changes have been made in it
since the buffer was created or last saved), saving is not really done,
because it would have no effect. Instead, @kbd{C-x C-s} displays a message
like this in the echo area:
If the current buffer is not modified (no changes have been made in it
since the buffer was created or last saved), saving is not really
done, because it would have no effect. Instead, @kbd{C-x C-s}
displays a message like this in the echo area:
@example
(No changes need to be saved)

View file

@ -219,11 +219,11 @@ is sometimes available in ordinary buffers too. @xref{Symbol
Completion}.
@menu
* Example: Completion Example. Examples of using completion.
* Commands: Completion Commands. A list of completion commands.
* Strict Completion:: Different types of completion.
* Completion Styles:: How completion matches are chosen.
* Options: Completion Options. Options for completion.
* Completion Example:: Examples of using completion.
* Completion Commands:: A list of completion commands.
* Completion Exit:: Completion and minibuffer text submission.
* Completion Styles:: How completion matches are chosen.
* Completion Options:: Options for completion.
@end menu
@node Completion Example
@ -274,7 +274,7 @@ Complete up to one word from the minibuffer text before point
arguments that often include spaces, such as file names.
@item @key{RET}
Submit the text in the minibuffer as the argument, possibly completing
first (@code{minibuffer-complete-and-exit}). @xref{Strict Completion}.
first (@code{minibuffer-complete-and-exit}). @xref{Completion Exit}.
@item ?
Display a list of completions (@code{minibuffer-completion-help}).
@end table
@ -337,42 +337,68 @@ While in the completion list buffer, this moves point to the previous
completion alternative (@code{previous-completion}).
@end table
@node Strict Completion
@subsection Strict Completion
@node Completion Exit
@subsection Completion Exit
There are three ways that the @key{RET}
(@code{minibuffer-complete-and-exit}) completion command can act,
depending on how the argument will be used.
@kindex RET @r{(completion in minibuffer)}
@findex minibuffer-complete-and-exit
When a command reads an argument using the minibuffer with
completion, it also controls what happens when you type @key{RET}
(@code{minibuffer-complete-and-exit}) to submit the argument. There
are four types of behavior:
@itemize @bullet
@item
@dfn{Strict} completion accepts only known completion candidates. For
example, when @kbd{C-x k} reads the name of a buffer to kill, only the
name of an existing buffer makes sense. In strict completion,
@key{RET} refuses to exit if the text in the minibuffer does not
complete to an exact match.
@dfn{Strict completion} accepts only exact completion matches. Typing
@key{RET} exits the minibuffer only if the minibuffer text is an exact
match, or completes to one. Otherwise, Emacs refuses to exit the
minibuffer; instead it tries to complete, and if no completion can be
done it momentarily displays @samp{[No match]} after the minibuffer
text. (You can still leave the minibuffer by typing @kbd{C-g} to
cancel the command.)
An example of a command that uses this behavior is @kbd{M-x}, since it
is meaningless for it to accept a non-existent command name.
@item
@dfn{Cautious} completion is similar to strict completion, except that
@key{RET} exits only if the text is an already exact match.
Otherwise, @key{RET} does not exit, but it does complete the text. If
that completes to an exact match, a second @key{RET} will exit.
@dfn{Cautious completion} is like strict completion, except @key{RET}
exits only if the text is already an exact match. If the text
completes to an exact match, @key{RET} performs that completion but
does not exit yet; you must type a second @key{RET} to exit.
Cautious completion is used for reading file names for files that must
already exist, for example.
@item
@dfn{Permissive} completion allows any input; the completion
candidates are just suggestions. For example, when @kbd{C-x C-f}
reads the name of a file to visit, any file name is allowed, including
nonexistent file (in case you want to create a file). In permissive
completion, @key{RET} does not complete, it just submits the argument
as you have entered it.
@end itemize
@dfn{Permissive completion} allows any input; the completion
candidates are just suggestions. Typing @key{RET} does not complete,
it just submits the argument as you have entered it.
Like the other completion commands, @key{RET} displays a list of all
possible completions whenever it is supposed to complete but is unable
to complete any further.
@cindex minibuffer confirmation
@cindex confirming in the minibuffer
@item
@dfn{Permissive completion with confirmation} is like permissive
completion, with an exception: if you typed @key{TAB} and this
completed the text up to some intermediate state (i.e. one that is not
yet an exact completion match), typing @key{RET} right afterward does
not submit the argument. Instead, Emacs asks for confirmation by
momentarily displaying @samp{[Confirm]} after the text; type @key{RET}
again to confirm and submit the text. This catches a common mistake,
in which one types @key{RET} before realizing that @key{TAB} did not
complete as far as desired.
@vindex confirm-nonexistent-file-or-buffer
You can tweak the confirmation behavior by customizing the variable
@code{confirm-nonexistent-file-or-buffer}. The default value,
@code{after-completion}, gives the behavior we have just described.
If you change it to @code{nil}, Emacs does not ask for confirmation,
falling back on permissive completion. If you change it to any other
non-@code{nil} value, Emacs asks for confirmation whether or not the
preceding command was @key{TAB}.
This behavior is used by most commands that read file names, like
@kbd{C-x C-f}, and commands that read buffer names, like @kbd{C-x b}.
@end itemize
@node Completion Styles
@subsection How Completion Alternatives Are Chosen