Commit 3b63afd7 authored by Glenn Morris's avatar Glenn Morris

Merge from origin/emacs-26

0589de55 (origin/emacs-26) Fix markup of fake keys in the ELisp manual
82d4b987 Avoid errors in Auto Revert mode
a3b19351 Mention empty strings in file name expansion, emacs lisp refe...
a38da0d4 cc-mode.texi: Work around makeinfo alignment bug.  Fix proble...
464ee80e Warn against recursive invocations of 'buffer-list-update-hoo...
60b5c109 Provide more details in doc-string of 'delete-windows-on' (Bu...
f0be0f1b Improve documentation of 'delete-windows-on'
f1bddc78 * lisp/frame.el (make-frame-command): Doc fix.  (Bug#34715)
28486234 Avoid undefined behavior in gdb-mi.el
dbf18379 * lisp/window.el (fit-frame-to-buffer): Make doc-string more ...
099ef446 Minor spelling and grammar fixes (bug#34756)
52fd4006 Minor improvement of documentation of '(when CONDITION . SPEC)'
f872b65b Improve documentation of 'auto-coding-functions'
04cad5e8 Fix visiting XML files with non-Unix EOL format
a89fabe9 Update example major mode code in Elisp manual

# Conflicts:
#	lisp/autorevert.el
#	lisp/window.el
parents e1819a25 0589de55
Pipeline #962 failed with stage
in 60 minutes and 1 second
......@@ -262,6 +262,8 @@ Delete all windows in the selected frame except the selected window
Delete the selected window and kill the buffer that was showing in it
(@code{kill-buffer-and-window}). The last character in this key
sequence is a zero.
@item M-x delete-windows-on @key{RET} @var{buffer} @key{RET}
Delete windows showing the specified @var{buffer}.
@item C-x ^
Make selected window taller (@code{enlarge-window}).
@item C-x @}
......@@ -297,6 +299,11 @@ selected window.
whole frame. (This command cannot be used while the minibuffer window
is active; attempting to do so signals an error.)
@kbd{M-x delete-windows-on} deletes windows that show a specific
buffer. It prompts for the buffer, defaulting to the current buffer.
With prefix argument of zero, @kbd{C-u 0}, this command deletes
windows only on the current display's frames.
@cindex resize window
@cindex resizing windows
@kindex C-x ^
......
......@@ -14825,7 +14825,7 @@ According to its documentation as shown by @kbd{C-h f} (the
@code{describe-function} command), the @code{find-file-noselect}
function reads the named file into a buffer and returns the buffer.
(Its most recent version includes an optional @var{wildcards} argument,
too, as well as another to read a file literally and an other you
too, as well as another to read a file literally and another to
suppress warning messages. These optional arguments are irrelevant.)
However, the @code{find-file-noselect} function does not select the
......
......@@ -935,6 +935,10 @@ This is a normal hook run whenever the buffer list changes. Functions
(@pxref{Creating Buffers}), @code{rename-buffer} (@pxref{Buffer Names}),
@code{kill-buffer} (@pxref{Killing Buffers}), @code{bury-buffer} (see
above) and @code{select-window} (@pxref{Selecting Windows}).
Functions run by this hook should avoid calling @code{select-window}
with a nil @var{norecord} argument or @code{with-temp-buffer} since
either may lead to infinite recursion.
@end defvar
@node Creating Buffers
......
......@@ -4894,6 +4894,16 @@ and the buffer position where the @code{display} property was found,
respectively. Both positions can be different when @code{object} is a
string.
Note that @var{condition} will only be evaluated when redisplay
examines the text where this display spec is located, so this feature
is best suited for conditions that are relatively stable, i.e.@:
yield, for each particular buffer position, the same results on every
evaluation. If the results change for the same text location, e.g.,
if the result depends on the position of point, then the conditional
specification might not do what you want, because redisplay examines
only those parts of buffer text where it has reasons to assume that
something changed since the last display cycle.
@node Display Margins
@subsection Displaying in the Margins
@cindex display margins
......
......@@ -16,7 +16,7 @@ described in @ref{Backups and Auto-Saving}.
names. A file name is a string. Most of these functions expand file
name arguments using the function @code{expand-file-name}, so that
@file{~} is handled correctly, as are relative file names (including
@file{../}). @xref{File Name Expansion}.
@file{../} and the empty string). @xref{File Name Expansion}.
In addition, certain @dfn{magic} file names are handled specially.
For example, when a remote file name is specified, Emacs accesses the
......@@ -2402,6 +2402,17 @@ This is for the sake of filesystems that have the concept of a
superroot above the root directory @file{/}. On other filesystems,
@file{/../} is interpreted exactly the same as @file{/}.
Expanding @file{.} or the empty string returns the default directory:
@example
@group
(expand-file-name "." "/usr/spool/")
@result{} "/usr/spool"
(expand-file-name "" "/usr/spool/")
@result{} "/usr/spool"
@end group
@end example
Note that @code{expand-file-name} does @emph{not} expand environment
variables; only @code{substitute-in-file-name} does that:
......
......@@ -2502,7 +2502,7 @@ can do it this way:
Emacs usually shows a @dfn{menu bar} at the top of each frame.
@xref{Menu Bars,,,emacs, The GNU Emacs Manual}. Menu bar items are
subcommands of the fake function key @code{menu-bar}, as defined
subcommands of the fake function key @key{MENU-BAR}, as defined
in the active keymaps.
To add an item to the menu bar, invent a fake function key of your
......@@ -2554,9 +2554,10 @@ bar item:
@end example
@noindent
Here, @code{edit} is the fake function key used by the global map for
the @samp{Edit} menu bar item. The main reason to suppress a global
menu bar item is to regain space for mode-specific items.
Here, @code{edit} is the symbol produced by a fake function key, it is
used by the global map for the @samp{Edit} menu bar item. The main
reason to suppress a global menu bar item is to regain space for
mode-specific items.
@defvar menu-bar-final-items
Normally the menu bar shows global items followed by items defined by the
......@@ -2601,7 +2602,7 @@ If the value is @code{grow-only}, the tool bar expands automatically,
but does not contract automatically.
The tool bar contents are controlled by a menu keymap attached to a
fake function key called @code{tool-bar} (much like the way the menu
fake function key called @key{TOOL-BAR} (much like the way the menu
bar is controlled). So you define a tool bar item using
@code{define-key}, like this:
......
......@@ -1237,6 +1237,7 @@ the conventions listed above:
(modify-syntax-entry ?\\ ". " st)
;; Add 'p' so M-c on 'hello' leads to 'Hello', not 'hello'.
(modify-syntax-entry ?' "w p" st)
@dots{}
st)
"Syntax table used while in `text-mode'.")
@end group
......@@ -1246,6 +1247,7 @@ the conventions listed above:
(defvar text-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "\e\t" 'ispell-complete-word)
@dots{}
map)
"Keymap for `text-mode'.
Many other modes, such as `mail-mode', `outline-mode' and
......@@ -1289,11 +1291,11 @@ illustrate how these modes are written.
@smallexample
@group
;; @r{Create mode-specific table variables.}
(defvar lisp-mode-abbrev-table nil)
(define-abbrev-table 'lisp-mode-abbrev-table ())
(define-abbrev-table 'lisp-mode-abbrev-table ()
"Abbrev table for Lisp mode.")
(defvar lisp-mode-syntax-table
(let ((table (copy-syntax-table emacs-lisp-mode-syntax-table)))
(let ((table (make-syntax-table lisp--mode-syntax-table)))
(modify-syntax-entry ?\[ "_ " table)
(modify-syntax-entry ?\] "_ " table)
(modify-syntax-entry ?# "' 14" table)
......@@ -1308,10 +1310,9 @@ each calls the following function to set various variables:
@smallexample
@group
(defun lisp-mode-variables (&optional syntax keywords-case-insensitive)
(defun lisp-mode-variables (&optional syntax keywords-case-insensitive elisp)
(when syntax
(set-syntax-table lisp-mode-syntax-table))
(setq local-abbrev-table lisp-mode-abbrev-table)
@dots{}
@end group
@end smallexample
......@@ -1322,8 +1323,7 @@ variable to handle Lisp comments:
@smallexample
@group
(make-local-variable 'comment-start)
(setq comment-start ";")
(setq-local comment-start ";")
@dots{}
@end group
@end smallexample
......@@ -1337,6 +1337,7 @@ common. The following code sets up the common commands:
@group
(defvar lisp-mode-shared-map
(let ((map (make-sparse-keymap)))
(set-keymap-parent map prog-mode-map)
(define-key map "\e\C-q" 'indent-sexp)
(define-key map "\177" 'backward-delete-char-untabify)
map)
......@@ -1351,7 +1352,7 @@ And here is the code to set up the keymap for Lisp mode:
@group
(defvar lisp-mode-map
(let ((map (make-sparse-keymap))
(menu-map (make-sparse-keymap "Lisp")))
(menu-map (make-sparse-keymap "Lisp")))
(set-keymap-parent map lisp-mode-shared-map)
(define-key map "\e\C-x" 'lisp-eval-defun)
(define-key map "\C-c\C-z" 'run-lisp)
......@@ -1375,17 +1376,13 @@ Blank lines separate paragraphs. Semicolons start comments.
\\@{lisp-mode-map@}
Note that `run-lisp' may be used either to start an inferior Lisp job
or to switch back to an existing one.
or to switch back to an existing one."
@end group
@group
Entry to this mode calls the value of `lisp-mode-hook'
if that value is non-nil."
(lisp-mode-variables nil t)
(set (make-local-variable 'find-tag-default-function)
'lisp-find-tag-default)
(set (make-local-variable 'comment-start-skip)
"\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *")
(setq-local find-tag-default-function 'lisp-find-tag-default)
(setq-local comment-start-skip
"\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *")
(setq imenu-case-fold-search t))
@end group
@end smallexample
......
......@@ -1632,11 +1632,16 @@ coding system for a file based on its undecoded contents.
Each function in this list should be written to look at text in the
current buffer, but should not modify it in any way. The buffer will
contain undecoded text of parts of the file. Each function should
take one argument, @var{size}, which tells it how many characters to
look at, starting from point. If the function succeeds in determining
a coding system for the file, it should return that coding system.
Otherwise, it should return @code{nil}.
contain the text of parts of the file. Each function should take one
argument, @var{size}, which tells it how many characters to look at,
starting from point. If the function succeeds in determining a coding
system for the file, it should return that coding system. Otherwise,
it should return @code{nil}.
The functions in this list could be called either when the file is
visited and Emacs wants to decode its contents, and/or when the file's
buffer is about to be saved and Emacs wants to determine how to encode
its contents.
If a file has a @samp{coding:} tag, that takes precedence, so these
functions won't be called.
......
......@@ -148,7 +148,17 @@ CC Mode
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@comment Define an index for syntactic symbols.
@c Version for Texinfo <= 4.x
@ifclear txicommandconditionals
@ifnottex @c In texi2dvi, the @defindex would create an empty cc-mode.ss
@c For Info, unlike tex, @syncodeindex needs a matching @defindex.
@defindex ss
@end ifnottex
@end ifclear
@c Version for Texinfo >= 5.x
@ifset txicommandconditionals
@defindex ss
@end ifset
@comment Combine key, syntactic symbol and concept indices into one.
@syncodeindex ss cp
......@@ -2282,6 +2292,8 @@ method, ``Top-level commands or the customization interface''.
If you make conflicting settings in several of these ways, the way
that takes precedence is the one that appears latest in this list:
@c Version of list for Texinfo <= 4.x
@ifclear txicommandconditionals
@itemize @w{}
@item
@table @asis
......@@ -2292,6 +2304,18 @@ that takes precedence is the one that appears latest in this list:
@itemx File Local Variable setting
@end table
@end itemize
@end ifclear
@c Version of list for Texinfo >= 5.x
@ifset txicommandconditionals
@itemize @asis
@item Style
@item File Style@footnote{In earlier versions of @ccmode{}, a File Style setting took precedence over any other setting apart from a File Local Variable setting.}
@item Top-level command or ``customization interface''
@item Hook
@item File Local Variable setting
@end itemize
@end ifset
Here is a summary of the different ways of writing your configuration
settings:
......@@ -2548,7 +2572,7 @@ Basics}).
@item
The style variable @code{c-offsets-alist} (@pxref{c-offsets-alist}) is
an association list with an element for each syntactic symbol. It's
handled a little differently from the other style variables. It's
handled a little differently from the other style variables. Its
default global binding is the empty list @code{nil}, rather than
@code{set-from-style}. Before the style system is initialized, you
can add individual elements to @code{c-offsets-alist} by calling
......@@ -5286,7 +5310,7 @@ The simplest and most used kind of ``offset'' setting in
@defopt c-basic-offset
@vindex basic-offset @r{(c-)}
This style variable holds the basic offset between indentation levels.
It's factory default is 4, but all the built-in styles set it
Its factory default is 4, but all the built-in styles set it
themselves, to some value between 2 (for @code{gnu} style) and 8 (for
@code{bsd}, @code{linux}, and @code{python} styles).
@end defopt
......
......@@ -1038,7 +1038,7 @@ details on using @eieio{} to extending classes, and writing methods.
If you intend to extend @ede{}, it is most likely that a new target type is
needed in one of the existing project types. The rest of this chapter
will discuss extending the @code{ede-project} class, and it's targets.
will discuss extending the @code{ede-project} class, and its targets.
See @file{project-am.el} for basic details on adding targets to it.
For the @code{ede-project} type, the core target class is called
......@@ -1477,7 +1477,7 @@ Get the inode of the directory project @var{PROJ} is in.
@end deffn
@deffn Method ede-project-root :AFTER this
If a project knows it's root, return it here.
If a project knows its root, return it here.
Allows for one-project-object-for-a-tree type systems.
@end deffn
......@@ -1486,7 +1486,7 @@ Find a subproject of @var{PROJ} that corresponds to @var{DIR}.
@end deffn
@deffn Method ede-project-root-directory :AFTER this &optional file
If a project knows it's root, return it here.
If a project knows its root, return it here.
Allows for one-project-object-for-a-tree type systems.
Optional @var{FILE} is the file to test. It is ignored in preference
of the anchor file for the project.
......@@ -2516,7 +2516,7 @@ In sources for @var{THIS}, change version numbers to @var{VERSION}.
@end deffn
@deffn Method project-delete-target :AFTER ot
Delete the current target @var{OT} from it's parent project.
Delete the current target @var{OT} from its parent project.
@end deffn
@deffn Method ede-target-sourcecode :AFTER this
......@@ -2715,7 +2715,7 @@ Converts all symbols into the objects to be used.
@end deffn
@deffn Method project-delete-target :AFTER this
Delete the current target @var{THIS} from it's parent project.
Delete the current target @var{THIS} from its parent project.
@end deffn
@deffn Method ede-proj-makefile-target-name :AFTER this
......@@ -4013,7 +4013,7 @@ Type: @code{list}
The commands used to execute this compiler.
The object which uses this compiler will place these commands after
it's rule definition.
its rule definition.
@item :autoconf
Type: @code{list} @*
......@@ -4125,7 +4125,7 @@ Type: @code{list}
The commands used to execute this compiler.
The object which uses this compiler will place these commands after
it's rule definition.
its rule definition.
@item :objectextention
Type: @code{string}
......@@ -4265,7 +4265,7 @@ Type: @code{list}
The commands used to execute this compiler.
The object which uses this compiler will place these commands after
it's rule definition.
its rule definition.
@item :objectextention
Type: @code{string}
......
......@@ -284,7 +284,7 @@ what's this?
@subsubheading Answer
You get the message described in the q/a pair above while
starting Gnus, right? It's an other symptom for the same
starting Gnus, right? It's another symptom for the same
problem, so read the answer above.
@node FAQ 2-3
......
......@@ -9416,7 +9416,7 @@ function must return @code{mid}, @code{mail}, @code{invalid} or
@item gnus-button-mid-or-mail-heuristic
@findex gnus-button-mid-or-mail-heuristic
Function that guesses whether its argument is a message ID or a mail
address. Returns @code{mid} if it's a message IDs, @code{mail} if
address. Returns @code{mid} if it's a message ID, @code{mail} if
it's a mail address, @code{ask} if unsure and @code{invalid} if the
string is invalid.
......@@ -816,7 +816,7 @@ the timer when no buffers need to be checked."
(when (and (not global-auto-revert-mode)
(null auto-revert-buffer-list))
(if (timerp auto-revert-timer)
(cancel-timer auto-revert-timer))
(cancel-timer auto-revert-timer))
(setq auto-revert-timer nil)))))
......
......@@ -736,7 +736,9 @@ If DISPLAY is nil, that stands for the selected frame's display."
(defun make-frame-command ()
"Make a new frame, on the same terminal as the selected frame.
If the terminal is a text-only terminal, this also selects the
new frame."
new frame.
When called from Lisp, returns the new frame."
(interactive)
(if (display-graphic-p)
(make-frame)
......
......@@ -7473,7 +7473,7 @@ must return `mid', `mail', `invalid' or `ask'."
(2.0 . "^[A-Z][a-z][A-Z][a-z][a-z][^a-z]")) ;; ^[A-Z][a-z]{4,4}
"An alist of (RATE . REGEXP) pairs for `gnus-button-mid-or-mail-heuristic'.
A negative RATE indicates a message IDs, whereas a positive indicates a mail
A negative RATE indicates a message ID, whereas a positive indicates a mail
address. The REGEXP is processed with `case-fold-search' set to nil."
:version "22.1"
:group 'gnus-article-buttons
......@@ -7482,7 +7482,7 @@ address. The REGEXP is processed with `case-fold-search' set to nil."
(defun gnus-button-mid-or-mail-heuristic (mid-or-mail)
"Guess whether MID-OR-MAIL is a message ID or a mail address.
Returns `mid' if MID-OR-MAIL is a message IDs, `mail' if it's a mail
Returns `mid' if MID-OR-MAIL is a message ID, `mail' if it's a mail
address, `ask' if unsure and `invalid' if the string is invalid."
(let ((case-fold-search nil)
(list gnus-button-mid-or-mail-heuristic-alist)
......
......@@ -1732,7 +1732,7 @@ no, only reply back to the author."
:type 'boolean)
(defcustom message-user-fqdn nil
"Domain part of Message-Ids."
"Domain part of Message-IDs."
:version "22.1"
:group 'message-headers
:link '(custom-manual "(message)News Headers")
......
......@@ -1852,9 +1852,12 @@ or nil."
Each function in this list should be written to operate on the
current buffer, but should not modify it in any way. The buffer
will contain undecoded text of parts of the file. Each function
will contain the text of parts of the file. Each function
should take one argument, SIZE, which says how many characters
\(starting from point) it should look at.
\(starting from point) it should look at. The function might be
called both when the file is visited and Emacs wants to decode
its contents, and when the file's buffer is about to be saved
and Emacs wants to determine how to encode its contents.
If one of these functions succeeds in determining a coding
system, it should return that coding system. Otherwise, it
......@@ -2501,10 +2504,17 @@ This function is intended to be added to `auto-coding-functions'."
(let ((sym-type (coding-system-type sym))
(bfcs-type
(coding-system-type buffer-file-coding-system)))
;; 'charset' will signal an error in
;; coding-system-equal, since it isn't a
;; coding-system. So test that up front.
(if (and (not (equal sym-type 'charset))
;; If the buffer is unibyte, its encoding is
;; immaterial (it is just the default value of
;; buffer-file-coding-system), so we ignore it.
;; This situation happens when this function is
;; called as part of visiting a file, as opposed
;; to when saving a buffer to a file.
(if (and enable-multibyte-characters
;; 'charset' will signal an error in
;; coding-system-equal, since it isn't a
;; coding-system. So test that up front.
(not (equal sym-type 'charset))
(coding-system-equal 'utf-8 sym-type)
(coding-system-equal 'utf-8 bfcs-type))
buffer-file-coding-system
......@@ -2556,7 +2566,8 @@ This function is intended to be added to `auto-coding-functions'."
(let ((sym-type (coding-system-type sym))
(bfcs-type
(coding-system-type buffer-file-coding-system)))
(if (and (coding-system-equal 'utf-8 sym-type)
(if (and enable-multibyte-characters
(coding-system-equal 'utf-8 sym-type)
(coding-system-equal 'utf-8 bfcs-type))
buffer-file-coding-system
sym))
......
......@@ -1843,7 +1843,7 @@ commands to be prefixed by \"-interpreter-exec console\".")
;; Python and Guile commands that have an argument don't enter the
;; recursive reading loop.
(let* ((control-command-p (string-match gdb-control-commands-regexp string))
(command-arg (match-string 3 string))
(command-arg (and control-command-p (match-string 3 string)))
(python-or-guile-p (string-match gdb-python-guile-commands-regexp
string)))
(if (and control-command-p
......
......@@ -4697,6 +4697,8 @@ displayed there."
BUFFER-OR-NAME may be a buffer or the name of an existing buffer
and defaults to the current buffer.
Interactively, prompt for the buffer.
The following non-nil values of the optional argument FRAME
have special meanings:
......@@ -4713,9 +4715,25 @@ have special meanings:
Any other value of FRAME means consider all windows on all
frames.
When a window showing BUFFER-OR-NAME is dedicated and the only
window of its frame, that frame is deleted when there are other
frames left."
Interactively, FRAME is the prefix argument, so you can
use \\[universal-argument] 0 to specify all windows only on
the current terminal's frames.
If a frame's root window shows the buffer specified by
BUFFER-OR-NAME and is dedicated to that buffer and that frame
does not host the active minibuffer window and there is at least
one other frame on that frame's terminal, delete that frame.
Otherwise, do not delete a frame's root window if it shows the
buffer specified by BUFFER-OR-NAME and do not delete any frame's
main window showing that buffer either. Rather, in any such
case, call `switch-to-prev-buffer' to show another buffer in that
window and make sure the window is no more dedicated to its
buffer.
If the buffer specified by BUFFER-OR-NAME is shown in a
minibuffer window, do nothing for that window. For any window
that does not show that buffer, remove the buffer from that
window's lists of previous and next buffers."
(interactive "bDelete windows on (buffer):\nP")
(let ((buffer (window-normalize-buffer buffer-or-name))
;; Handle the "inverted" meaning of the FRAME argument wrt other
......
......@@ -6256,9 +6256,11 @@ The function `kill-all-local-variables' runs this before doing anything else. *
DEFVAR_LISP ("buffer-list-update-hook", Vbuffer_list_update_hook,
doc: /* Hook run when the buffer list changes.
Functions running this hook are, `get-buffer-create',
`make-indirect-buffer', `rename-buffer', `kill-buffer',
`bury-buffer-internal' and `select-window'. */);
Functions (implicitly) running this hook are `get-buffer-create',
`make-indirect-buffer', `rename-buffer', `kill-buffer', `bury-buffer'
and `select-window'. Functions run by this hook should avoid calling
`select-window' with a nil NORECORD argument or `with-temp-buffer'
since either may lead to infinite recursion. */);
Vbuffer_list_update_hook = Qnil;
DEFSYM (Qbuffer_list_update_hook, "buffer-list-update-hook");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment