Merge from origin/emacs-27
7d5b973959
(origin/emacs-27) * doc/misc/cl.texi (For Clauses): Minor ...4570781f8d
; * doc/lispref/files.texi (Directory Names): Add missing ...1b52fd538d
Minor update for make-tarball.txt8efb8491b2
* doc/misc/cl.texi (Iteration Clauses): fix `never' clause...0873134682
; Fix Texinfo in last change to minibuf.texi.cad8913c89
Improve filling-related documentation2b7eed23eb
; * doc/lispref/keymaps.texi (Easy Menu): Fix typo.47fc92cefc
Fix reference to "yanking" in the main Emacs manual1789dcdb35
Improve documentation of 'map-y-or-n-p'
This commit is contained in:
commit
6dabbddb5f
9 changed files with 153 additions and 93 deletions
|
@ -259,8 +259,9 @@ General steps (for each step, check for possible errors):
|
|||
|
||||
UPDATING THE EMACS WEB PAGES AFTER A RELEASE
|
||||
|
||||
As soon as possible after a release, the Emacs web pages should be updated.
|
||||
(See admin/notes/www for general information.)
|
||||
As soon as possible after a release, the Emacs web pages at
|
||||
https://www.gnu.org/software/emacs/ should be updated. (See
|
||||
admin/notes/www for general information.)
|
||||
|
||||
The pages to update are:
|
||||
|
||||
|
@ -270,7 +271,14 @@ add the new NEWS file as news/NEWS.xx.y
|
|||
|
||||
For every new release, a banner is displayed on top of the emacs.html
|
||||
page. Uncomment and the release banner in emacs.html. Keep it on the
|
||||
page for about a month, then comment it again.
|
||||
page for about a month, then comment it again. The new release banner
|
||||
looks like this:
|
||||
|
||||
<div class="release-banner">
|
||||
<div class="container">
|
||||
<h2><em>Emacs 27.1 is out</em>, download it <a href="download.html">here</a>!</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Regenerate the various manuals in manual/.
|
||||
The scripts admin/make-manuals and admin/upload-manuals summarize the process.
|
||||
|
|
|
@ -159,7 +159,7 @@ Fundamental Editing Commands
|
|||
|
||||
Important Text-Changing Commands
|
||||
* Mark:: The mark: how to delimit a region of text.
|
||||
* Killing:: Killing (cutting) and yanking (copying) text.
|
||||
* Killing:: Killing (cutting) and yanking (pasting) text.
|
||||
* Registers:: Saving a text string or a location in the buffer.
|
||||
* Display:: Controlling what text is displayed.
|
||||
* Search:: Finding or replacing occurrences of a string.
|
||||
|
|
|
@ -502,8 +502,8 @@ text.
|
|||
@cindex mode, Auto Fill
|
||||
|
||||
@dfn{Auto Fill} mode is a buffer-local minor mode (@pxref{Minor
|
||||
Modes}) in which lines are broken automatically at spaces when the
|
||||
line becomes too wide.
|
||||
Modes}) in which lines are broken automatically when the line becomes
|
||||
too wide and you type @kbd{@key{SPC}} or @kbd{@key{RET}}.
|
||||
|
||||
@table @kbd
|
||||
@item M-x auto-fill-mode
|
||||
|
@ -522,12 +522,21 @@ certain major modes, add @code{auto-fill-mode} to the mode hooks
|
|||
(@pxref{Major Modes}). When Auto Fill mode is enabled, the mode
|
||||
indicator @samp{Fill} appears in the mode line (@pxref{Mode Line}).
|
||||
|
||||
Auto Fill mode breaks lines automatically at spaces whenever they
|
||||
get longer than the desired width. This line breaking occurs only
|
||||
when you type @key{SPC} or @key{RET}. If you wish to insert a space
|
||||
or newline without permitting line-breaking, type @kbd{C-q @key{SPC}}
|
||||
or @kbd{C-q C-j} respectively. Also, @kbd{C-o} inserts a newline
|
||||
without line breaking.
|
||||
Auto Fill mode breaks lines automatically at the appropriate places
|
||||
whenever lines get longer than the desired width. This line breaking
|
||||
occurs only when you type @kbd{@key{SPC}} or @kbd{@key{RET}}. If you
|
||||
wish to insert a space or newline without permitting line-breaking,
|
||||
type @kbd{C-q @key{SPC}} or @kbd{C-q C-j} respectively. Also,
|
||||
@kbd{C-o} inserts a newline without line breaking.
|
||||
|
||||
@cindex kinsoku line-breaking rules
|
||||
The place where Auto Fill breaks a line depends on the line's
|
||||
characters. For characters from @acronym{ASCII}, Latin, and most
|
||||
other scripts Emacs breaks a line on space characters, to keep the
|
||||
words intact. But for CJK scripts, a line can be broken between any
|
||||
two characters. (If you load the @file{kinsoku} library, Emacs will
|
||||
avoid breaking a line between certain pairs of CJK characters, where
|
||||
special rules prohibit that.)
|
||||
|
||||
When Auto Fill mode breaks a line, it tries to obey the
|
||||
@dfn{adaptive fill prefix}: if a fill prefix can be deduced from the
|
||||
|
@ -549,6 +558,9 @@ described in the next section.
|
|||
(@pxref{Fill Commands}).
|
||||
@end ifnottex
|
||||
|
||||
A similar feature that wraps long lines automatically at display
|
||||
time is Visual Line Mode (@pxref{Visual Line Mode}).
|
||||
|
||||
@node Fill Commands
|
||||
@subsection Explicit Fill Commands
|
||||
|
||||
|
@ -571,7 +583,11 @@ Center a line.
|
|||
current paragraph. It redistributes the line breaks within the
|
||||
paragraph, and deletes any excess space and tab characters occurring
|
||||
within the paragraph, in such a way that the lines end up fitting
|
||||
within a certain maximum width.
|
||||
within a certain maximum width. Like Auto Fill mode, this and other
|
||||
filling commands usually break lines at space characters, but for CJK
|
||||
characters these commands can break a line between almost any two
|
||||
characters, and they can also obey the kinsoku rules. @xref{Auto
|
||||
Fill}.
|
||||
|
||||
@findex fill-region
|
||||
Normally, @kbd{M-q} acts on the paragraph where point is, but if
|
||||
|
@ -645,8 +661,8 @@ or before @samp{)}, @samp{:} or @samp{?}); and
|
|||
even if preceded by a non-whitespace character).
|
||||
|
||||
Emacs can display an indicator in the @code{fill-column} position
|
||||
using the Display fill column indicator mode
|
||||
(@pxref{Displaying Boundaries, display-fill-column-indicator}).
|
||||
using the Display fill column indicator mode (@pxref{Displaying
|
||||
Boundaries, display-fill-column-indicator}).
|
||||
|
||||
@node Fill Prefix
|
||||
@subsection The Fill Prefix
|
||||
|
|
|
@ -2244,7 +2244,7 @@ form.
|
|||
|
||||
A @dfn{directory name} is a string that must name a directory if it
|
||||
names any file at all. A directory is actually a kind of file, and it
|
||||
has a file name (called the @dfn{directory file name}, which is
|
||||
has a file name (called the @dfn{directory file name}), which is
|
||||
related to the directory name but is typically not identical. (This
|
||||
is not quite the same as the usual POSIX terminology.) These two
|
||||
names for the same entity are related by a syntactic transformation.
|
||||
|
|
|
@ -2920,7 +2920,7 @@ menu item.
|
|||
|
||||
@item :active @var{enable}
|
||||
@var{enable} is an expression; if it evaluates to @code{nil}, the item
|
||||
is make unselectable.. @code{:enable} is an alias for @code{:active}.
|
||||
is made unselectable. @code{:enable} is an alias for @code{:active}.
|
||||
|
||||
@item :visible @var{include}
|
||||
@var{include} is an expression; if it evaluates to @code{nil}, the
|
||||
|
|
|
@ -2239,9 +2239,10 @@ This function asks the user a series of questions, reading a
|
|||
single-character answer in the echo area for each one.
|
||||
|
||||
The value of @var{list} specifies the objects to ask questions about.
|
||||
It should be either a list of objects or a generator function. If it is
|
||||
a function, it should expect no arguments, and should return either the
|
||||
next object to ask about, or @code{nil}, meaning to stop asking questions.
|
||||
It should be either a list of objects or a generator function. If it
|
||||
is a function, it will be called with no arguments, and should return
|
||||
either the next object to ask about, or @code{nil}, meaning to stop
|
||||
asking questions.
|
||||
|
||||
The argument @var{prompter} specifies how to ask each question. If
|
||||
@var{prompter} is a string, the question text is computed like this:
|
||||
|
@ -2252,19 +2253,20 @@ The argument @var{prompter} specifies how to ask each question. If
|
|||
|
||||
@noindent
|
||||
where @var{object} is the next object to ask about (as obtained from
|
||||
@var{list}).
|
||||
@var{list}). @xref{Formatting Strings}, for more information about
|
||||
@code{format}.
|
||||
|
||||
If not a string, @var{prompter} should be a function of one argument
|
||||
(the next object to ask about) and should return the question text. If
|
||||
the value is a string, that is the question to ask the user. The
|
||||
function can also return @code{t}, meaning do act on this object (and
|
||||
don't ask the user), or @code{nil}, meaning ignore this object (and don't
|
||||
ask the user).
|
||||
If @var{prompter} is not a string, it should be a function of one
|
||||
argument (the object to ask about) and should return the question text
|
||||
for that object. If the value @var{prompter} returns is a string,
|
||||
that is the question to ask the user. The function can also return
|
||||
@code{t}, meaning to act on this object without asking the user, or
|
||||
@code{nil}, which means to silently ignore this object.
|
||||
|
||||
The argument @var{actor} says how to act on the answers that the user
|
||||
gives. It should be a function of one argument, and it is called with
|
||||
each object that the user says yes for. Its argument is always an
|
||||
object obtained from @var{list}.
|
||||
The argument @var{actor} says how to act on the objects for which the
|
||||
user answers yes. It should be a function of one argument, and will
|
||||
be called with each object from @var{list} for which the user answers
|
||||
yes.
|
||||
|
||||
If the argument @var{help} is given, it should be a list of this form:
|
||||
|
||||
|
@ -2274,34 +2276,49 @@ If the argument @var{help} is given, it should be a list of this form:
|
|||
|
||||
@noindent
|
||||
where @var{singular} is a string containing a singular noun that
|
||||
describes the objects conceptually being acted on, @var{plural} is the
|
||||
describes a single object to be acted on, @var{plural} is the
|
||||
corresponding plural noun, and @var{action} is a transitive verb
|
||||
describing what @var{actor} does.
|
||||
describing what @var{actor} does with the objects.
|
||||
|
||||
If you don't specify @var{help}, the default is @code{("object"
|
||||
"objects" "act on")}.
|
||||
If you don't specify @var{help}, it defaults to the list
|
||||
@w{@code{("object" "objects" "act on")}}.
|
||||
|
||||
Each time a question is asked, the user may enter @kbd{y}, @kbd{Y}, or
|
||||
@key{SPC} to act on that object; @kbd{n}, @kbd{N}, or @key{DEL} to skip
|
||||
that object; @kbd{!} to act on all following objects; @key{ESC} or
|
||||
@kbd{q} to exit (skip all following objects); @kbd{.} (period) to act on
|
||||
the current object and then exit; or @kbd{C-h} to get help. These are
|
||||
the same answers that @code{query-replace} accepts. The keymap
|
||||
@code{query-replace-map} defines their meaning for @code{map-y-or-n-p}
|
||||
as well as for @code{query-replace}; see @ref{Search and Replace}.
|
||||
Each time a question is asked, the user can answer as follows:
|
||||
|
||||
@table @asis
|
||||
@item @kbd{y}, @kbd{Y}, or @kbd{@key{SPC}}
|
||||
act on the object
|
||||
@item @kbd{n}, @kbd{N}, or @kbd{@key{DEL}}
|
||||
skip the object
|
||||
@item @kbd{!}
|
||||
act on all the following objects
|
||||
@item @kbd{@key{ESC}} or @kbd{q}
|
||||
exit (skip all following objects)
|
||||
@item @kbd{.} (period)
|
||||
act on the object and then exit
|
||||
@item @kbd{C-h}
|
||||
get help
|
||||
@end table
|
||||
|
||||
@noindent
|
||||
These are the same answers that @code{query-replace} accepts. The
|
||||
keymap @code{query-replace-map} defines their meaning for
|
||||
@code{map-y-or-n-p} as well as for @code{query-replace}; see
|
||||
@ref{Search and Replace}.
|
||||
|
||||
You can use @var{action-alist} to specify additional possible answers
|
||||
and what they mean. It is an alist of elements of the form
|
||||
@code{(@var{char} @var{function} @var{help})}, each of which defines one
|
||||
additional answer. In this element, @var{char} is a character (the
|
||||
and what they mean. If provided, @var{action-alist} should be an
|
||||
alist whose elements are of the form @w{@code{(@var{char}
|
||||
@var{function} @var{help})}}. Each of the alist elements defines one
|
||||
additional answer. In each element, @var{char} is a character (the
|
||||
answer); @var{function} is a function of one argument (an object from
|
||||
@var{list}); @var{help} is a string.
|
||||
|
||||
When the user responds with @var{char}, @code{map-y-or-n-p} calls
|
||||
@var{function}. If it returns non-@code{nil}, the object is considered
|
||||
acted upon, and @code{map-y-or-n-p} advances to the next object in
|
||||
@var{list}. If it returns @code{nil}, the prompt is repeated for the
|
||||
same object.
|
||||
@var{list}); and @var{help} is a string. When the user responds with
|
||||
@var{char}, @code{map-y-or-n-p} calls @var{function}. If it returns
|
||||
non-@code{nil}, the object is considered to have been acted upon, and
|
||||
@code{map-y-or-n-p} advances to the next object in @var{list}. If it
|
||||
returns @code{nil}, the prompt is repeated for the same object. If
|
||||
the user requests help, the text in @var{help} is used to describe
|
||||
these additional answers.
|
||||
|
||||
Normally, @code{map-y-or-n-p} binds @code{cursor-in-echo-area} while
|
||||
prompting. But if @var{no-cursor-in-echo-area} is non-@code{nil}, it
|
||||
|
|
|
@ -2084,14 +2084,15 @@ This clause also accepts optional @samp{from @var{pos}} and
|
|||
@samp{to @var{pos}} terms, limiting the clause to overlays which
|
||||
overlap the specified region.
|
||||
|
||||
@item for @var{var} being the intervals [of @var{buffer}] @dots{}
|
||||
This clause iterates over all intervals of a buffer with constant
|
||||
text properties. The variable @var{var} will be bound to conses
|
||||
of start and end positions, where one start position is always equal
|
||||
to the previous end position. The clause allows @code{of},
|
||||
@item for @var{var} being the intervals [of @var{object}] @dots{}
|
||||
This clause iterates over all intervals of a buffer or string with
|
||||
constant text properties. The variable @var{var} will be bound to
|
||||
conses of start and end positions, where one start position is always
|
||||
equal to the previous end position. The clause allows @code{of},
|
||||
@code{from}, @code{to}, and @code{property} terms, where the latter
|
||||
term restricts the search to just the specified property. The
|
||||
@code{of} term may specify either a buffer or a string.
|
||||
@code{of} term may specify either a buffer or a string. @xref{Text
|
||||
Properties,,,elisp}.
|
||||
|
||||
@item for @var{var} being the frames
|
||||
This clause iterates over all Emacs frames. The clause @code{screens} is
|
||||
|
@ -2238,7 +2239,7 @@ were non-@code{nil}, the loop returns @code{t}:
|
|||
|
||||
@item never @var{condition}
|
||||
This clause is like @code{always}, except that the loop returns
|
||||
@code{t} if any conditions were false, or @code{nil} otherwise.
|
||||
@code{t} if all conditions were false, or @code{nil} otherwise.
|
||||
|
||||
@item thereis @var{condition}
|
||||
This clause stops the loop when the specified form is non-@code{nil};
|
||||
|
|
|
@ -38,46 +38,62 @@
|
|||
|
||||
(defun map-y-or-n-p (prompter actor list &optional help action-alist
|
||||
no-cursor-in-echo-area)
|
||||
"Ask a series of boolean questions.
|
||||
Takes args PROMPTER ACTOR LIST, and optional args HELP and ACTION-ALIST.
|
||||
"Ask a boolean question per PROMPTER for each object in LIST, then call ACTOR.
|
||||
|
||||
LIST is a list of objects, or a function of no arguments to return the next
|
||||
object or nil.
|
||||
object; when it returns nil, the list of objects is considered exhausted.
|
||||
|
||||
If PROMPTER is a string, the prompt is \(format PROMPTER OBJECT). If not
|
||||
a string, PROMPTER is a function of one arg (an object from LIST), which
|
||||
returns a string to be used as the prompt for that object. If the return
|
||||
value is not a string, it may be nil to ignore the object or non-nil to act
|
||||
on the object without asking the user.
|
||||
If PROMPTER is a string, it should be a format string to be used to format
|
||||
the question as \(format PROMPTER OBJECT).
|
||||
If PROMPTER is not a string, it should be a function of one argument, an
|
||||
object from LIST, which returns a string to be used as the question for
|
||||
that object. If the function's return value is not a string, it may be
|
||||
nil to ignore the object, or non-nil to act on the object with ACTOR
|
||||
without asking the user.
|
||||
|
||||
ACTOR is a function of one arg (an object from LIST),
|
||||
which gets called with each object that the user answers `yes' for.
|
||||
ACTOR is a function of one argument, an object from LIST,
|
||||
which gets called with each object for which the user answers `yes'
|
||||
to the question presented by PROMPTER.
|
||||
|
||||
If HELP is given, it is a list (OBJECT OBJECTS ACTION),
|
||||
where OBJECT is a string giving the singular noun for an elt of LIST;
|
||||
OBJECTS is the plural noun for elts of LIST, and ACTION is a transitive
|
||||
verb describing ACTOR. The default is \(\"object\" \"objects\" \"act on\").
|
||||
The user's answers to the questions may be one of the following:
|
||||
|
||||
At the prompts, the user may enter y, Y, or SPC to act on that object;
|
||||
n, N, or DEL to skip that object; ! to act on all following objects;
|
||||
ESC or q to exit (skip all following objects); . (period) to act on the
|
||||
current object and then exit; or \\[help-command] to get help.
|
||||
- y, Y, or SPC to act on that object;
|
||||
- n, N, or DEL to skip that object;
|
||||
- ! to act on all following objects;
|
||||
- ESC or q to exit (skip all following objects);
|
||||
- . (period) to act on the current object and then exit; or
|
||||
- \\[help-command] to get help.
|
||||
|
||||
If ACTION-ALIST is given, it is an alist (KEY FUNCTION HELP) of extra keys
|
||||
that will be accepted. KEY is a character; FUNCTION is a function of one
|
||||
arg (an object from LIST); HELP is a string. When the user hits KEY,
|
||||
FUNCTION is called. If it returns non-nil, the object is considered
|
||||
\"acted upon\", and the next object from LIST is processed. If it returns
|
||||
nil, the prompt is repeated for the same object.
|
||||
HELP provides information for displaying help when the user
|
||||
types \\[help-command]. If HELP is given, it should be a list of
|
||||
the form (OBJECT OBJECTS ACTION), where OBJECT is a string giving
|
||||
the singular noun describing an element of LIST; OBJECTS is the
|
||||
plural noun describing several elements of LIST, and ACTION is a
|
||||
transitive verb describing action by ACTOR on one or more elements
|
||||
of LIST. If HELP is omitted or nil, it defaults
|
||||
to \(\"object\" \"objects\" \"act on\").
|
||||
|
||||
Final optional argument NO-CURSOR-IN-ECHO-AREA non-nil says not to set
|
||||
`cursor-in-echo-area' while prompting.
|
||||
If ACTION-ALIST is given, it is an alist specifying additional keys
|
||||
that will be accepted as an answer to the questions. Each element
|
||||
of the alist has the form (KEY FUNCTION HELP), where KEY is a character;
|
||||
FUNCTION is a function of one argument (an object from LIST); and HELP
|
||||
is a string. When the user presses KEY, FUNCTION is called; if it
|
||||
returns non-nil, the object is considered to have been \"acted upon\",
|
||||
and `map-y-or-n-p' proceeeds to the next object from LIST. If
|
||||
FUNCTION returns nil, the prompt is re-issued for the same object: this
|
||||
comes in handy if FUNCTION produces some display that will allow the
|
||||
user to make an intelligent decision whether the object in question
|
||||
should be acted upon. If the user types \\[help-command], the string
|
||||
given by HELP is used to describe the effect of KEY.
|
||||
|
||||
Optional argument NO-CURSOR-IN-ECHO-AREA, if non-nil, means not to set
|
||||
`cursor-in-echo-area' while prompting with the questions.
|
||||
|
||||
This function uses `query-replace-map' to define the standard responses,
|
||||
but not all of the responses which `query-replace' understands
|
||||
are meaningful here.
|
||||
but only some of the responses which `query-replace' understands
|
||||
are meaningful here, as described above.
|
||||
|
||||
Returns the number of actions taken."
|
||||
The function's value is the number of actions taken."
|
||||
(let* ((actions 0)
|
||||
(msg (current-message))
|
||||
user-keys mouse-event map prompt char elt def
|
||||
|
|
|
@ -49,10 +49,12 @@ A value of nil means that any change in indentation starts a new paragraph."
|
|||
|
||||
(defcustom fill-separate-heterogeneous-words-with-space nil
|
||||
"Non-nil means to use a space to separate words of a different kind.
|
||||
This will be done with a word in the end of a line and a word in
|
||||
the beginning of the next line when concatenating them for
|
||||
filling those lines. Whether to use a space depends on how the
|
||||
words are categorized."
|
||||
For example, when an English word at the end of a line and a CJK word
|
||||
at the beginning of the next line are joined into a single line, they
|
||||
will be separated by a space if this variable is non-nil.
|
||||
Whether to use a space to separate such words also depends on the entry
|
||||
in `fill-nospace-between-words-table' for the characters before and
|
||||
after the newline."
|
||||
:type 'boolean
|
||||
:version "26.1")
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue