summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/emacs/anti.texi4
-rw-r--r--doc/emacs/calendar.texi19
-rw-r--r--doc/emacs/cmdargs.texi14
-rw-r--r--doc/emacs/commands.texi11
-rw-r--r--doc/emacs/dired.texi11
-rw-r--r--doc/emacs/emacs.texi4
-rw-r--r--doc/emacs/fixit.texi37
-rw-r--r--doc/emacs/frames.texi2
-rw-r--r--doc/emacs/macos.texi3
-rw-r--r--doc/emacs/mini.texi14
-rw-r--r--doc/emacs/misc.texi3
-rw-r--r--doc/emacs/xresources.texi2
-rw-r--r--etc/NEWS.2639
-rw-r--r--lisp/net/rlogin.el4
-rw-r--r--lisp/org/org.el1
-rw-r--r--lisp/simple.el32
-rw-r--r--lisp/vc/vc-git.el8
-rw-r--r--src/xdisp.c43
-rw-r--r--test/lisp/org/org-tests.el31
19 files changed, 181 insertions, 101 deletions
diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi
index 9c63e04dcbe..d4b68a2fac4 100644
--- a/doc/emacs/anti.texi
+++ b/doc/emacs/anti.texi
@@ -90,12 +90,12 @@ You can no longer disable attempts of recovery from fatal exceptions
such as C stack overflows and fatal signals. Since the recovery
included in Emacs is reliable enough, we decided there was no reason
to put your edits in danger of becoming lost when these situations
-happen. The variables @code{'attempt-stack-overflow-recovery} and
+happen. The variables @code{attempt-stack-overflow-recovery} and
@code{attempt-orderly-shutdown-on-fatal-signal} are therefore removed.
@item
The @code{list-timers} command was removed, as we decided timers are
-not user-level feature, and therefore users should not be allowed to
+not a user-level feature, and therefore users should not be allowed to
mess with them. Ask an Emacs Lisp guru near you for help if you have
a runaway timer in your session. (Of course, as you move back in
time, such runaway timers will become less and less frequent, and
diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi
index 7ce73a662b8..ed1f53fa70b 100644
--- a/doc/emacs/calendar.texi
+++ b/doc/emacs/calendar.texi
@@ -41,8 +41,6 @@ For more advanced topics,
* Lunar Phases:: Displaying phases of the moon.
* Other Calendars:: Converting dates to other calendar systems.
* Diary:: Displaying events from your diary.
-* Appointments:: Reminders when it's time to do something.
-* Importing Diary:: Converting diary events to/from other formats.
* Daylight Saving:: How to specify when daylight saving time is active.
* Time Intervals:: Keeping track of time intervals.
@ifnottex
@@ -936,6 +934,8 @@ entries.
* Date Formats:: Various ways you can specify dates.
* Adding to Diary:: Commands to create diary entries.
* Special Diary Entries:: Anniversaries, blocks of dates, cyclic entries, etc.
+* Appointments:: Reminders when it's time to do something.
+* Importing Diary:: Converting diary events to/from other formats.
@end menu
@node Format of Diary File
@@ -1363,7 +1363,7 @@ can perform arbitrary computations to determine when they apply.
@end ifnottex
@node Appointments
-@section Appointments
+@subsection Appointments
@cindex appointment notification
@vindex appt-display-format
@@ -1435,7 +1435,11 @@ also updated whenever the diary file (or a file it includes; see
@ifnottex
@ref{Fancy Diary Display})
@end ifnottex
-is saved.
+is saved. If you use the Org Mode and keep appointments in your Org
+agenda files, you can add those appointments to the list using the
+@code{org-agenda-to-appt} command. @xref{Weekly/daily agenda,
+Appointment reminders,,org, The Org Manual}, for more about that
+command.
@findex appt-add
@findex appt-delete
@@ -1446,7 +1450,7 @@ list without affecting your diary file. You delete entries from the
appointment list with @kbd{M-x appt-delete}.
@node Importing Diary
-@section Importing and Exporting Diary Entries
+@subsection Importing and Exporting Diary Entries
You can transfer diary entries between Emacs diary files and a
variety of other formats.
@@ -1581,10 +1585,13 @@ variables' values are 120.
@cindex time intervals, summing
@cindex summing time intervals
@cindex timeclock
+@cindex clocking time
The timeclock package adds up time intervals, so you can (for
instance) keep track of how much time you spend working on particular
-projects.
+projects. (A more advanced alternative is to use the Org Mode's
+facilities for clocking time, @pxref{Clocking work time,,,org, The Org
+Manual}).
@findex timeclock-in
@findex timeclock-out
diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi
index 1dbc1dc735e..63db2ac765b 100644
--- a/doc/emacs/cmdargs.texi
+++ b/doc/emacs/cmdargs.texi
@@ -101,13 +101,13 @@ displayed file is the last one specified on the command line; the
other files are visited but their buffers are not shown.
If the startup buffer is disabled (@pxref{Entering Emacs}), then
-@var{file} is visited in a single window if one file argument was
-supplied; with two file arguments, Emacs displays the files in two
-different windows; with more than two file argument, Emacs displays
-the last file specified in one window, plus a Buffer Menu in a
-different window (@pxref{Several Buffers}). To inhibit using the
-Buffer Menu for this, change the variable
-@code{inhibit-startup-buffer-menu} to @code{t}.
+starting Emacs with one file argument displays the buffer visiting
+@var{file} in a single window. With two file arguments, Emacs
+displays the files in two different windows. With more than two file
+argument, Emacs displays the last file specified in one window, plus
+another window with a Buffer Menu showing all the other files
+(@pxref{Several Buffers}). To inhibit using the Buffer Menu for this,
+change the variable @code{inhibit-startup-buffer-menu} to @code{t}.
@item +@var{linenum} @var{file}
@opindex +@var{linenum}
diff --git a/doc/emacs/commands.texi b/doc/emacs/commands.texi
index 2e65bfd3859..8b8b0c7aad9 100644
--- a/doc/emacs/commands.texi
+++ b/doc/emacs/commands.texi
@@ -56,11 +56,12 @@ characters, e.g., @kbd{C-@key{F1}} or @kbd{M-@key{LEFT}}.
@cindex @key{ESC} replacing @key{META} key
You can also type Meta characters using two-character sequences
starting with @key{ESC}. Thus, you can enter @kbd{M-a} by typing
-@kbd{@key{ESC} a}. You can enter @kbd{C-M-a} by typing @kbd{@key{ESC}
-C-a}. Unlike @key{META}, @key{ESC} is entered as a separate
-character. You don't hold down @key{ESC} while typing the next
-character; instead, press @key{ESC} and release it, then enter the
-next character. This feature is useful on certain text terminals
+@kbd{@key{ESC} a}. You can enter @kbd{C-M-a} (holding down both
+@key{Ctrl} and @key{Alt}, then pressing @kbd{a}) by typing
+@kbd{@key{ESC} C-a}. Unlike @key{META}, @key{ESC} is entered as a
+separate character. You don't hold down @key{ESC} while typing the
+next character; instead, press @key{ESC} and release it, then enter
+the next character. This feature is useful on certain text terminals
where the @key{META} key does not function reliably.
@cindex keys stolen by window manager
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 7fbb0b91cc7..71aea90a46e 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -738,8 +738,8 @@ this.)
@vindex dired-chown-program
The variable @code{dired-chown-program} specifies the name of the
-program to use to do the work (different systems put @command{chown}
-in different places).
+program to use to do the work. (This variable is necessary because
+different systems put @command{chown} in different places).
@findex dired-do-touch
@kindex T @r{(Dired)}
@@ -909,7 +909,7 @@ treat it specially.
Otherwise, if the command string contains @samp{?} surrounded by
whitespace or @samp{`?`}, Emacs runs the shell command once
@emph{for each file}, substituting the current file name for @samp{?}
-and @samp{`?`} each time. You can use both @samp{?} or @samp{`?`} more
+and @samp{`?`} each time. You can use both @samp{?} and @samp{`?`} more
than once in the command; the same file name replaces each occurrence.
If you mix them with @samp{*} the command signals an error.
@@ -1402,7 +1402,7 @@ display the next image. Typing @key{DEL}
the previous thumbnail and displays that instead.
@vindex image-dired-external-viewer
- To view and the image in its original size, either provide a prefix
+ To view the image in its original size, either provide a prefix
argument (@kbd{C-u}) before pressing @key{RET}, or type
@kbd{C-@key{RET}} (@code{image-dired-thumbnail-display-external}) to
display the image in an external viewer. You must first configure
@@ -1437,7 +1437,8 @@ a comment from Dired (@code{image-dired-dired-comment-files}).
Image-Dired also provides simple image manipulation. In the
thumbnail buffer, type @kbd{L} to rotate the original image 90 degrees
anti clockwise, and @kbd{R} to rotate it 90 degrees clockwise. This
-rotation is lossless, and uses an external utility called JpegTRAN.
+rotation is lossless, and uses an external utility called
+@command{jpegtran}, which you need to install first.
@node Misc Dired Features
@section Other Dired Features
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 0051868fee6..474c4e96e22 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -954,8 +954,6 @@ The Calendar and the Diary
* Lunar Phases:: Displaying phases of the moon.
* Other Calendars:: Converting dates to other calendar systems.
* Diary:: Displaying events from your diary.
-* Appointments:: Reminders when it's time to do something.
-* Importing Diary:: Converting diary events to/from other formats.
* Daylight Saving:: How to specify when daylight saving time is active.
* Time Intervals:: Keeping track of time intervals.
@ifnottex
@@ -983,6 +981,8 @@ The Diary
* Date Formats:: Various ways you can specify dates.
* Adding to Diary:: Commands to create diary entries.
* Special Diary Entries:: Anniversaries, blocks of dates, cyclic entries, etc.
+* Appointments:: Reminders when it's time to do something.
+* Importing Diary:: Converting diary events to/from other formats.
@ifnottex
More advanced features of the Calendar and Diary
diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi
index ced1ef9dbfc..aca85f3de07 100644
--- a/doc/emacs/fixit.texi
+++ b/doc/emacs/fixit.texi
@@ -159,9 +159,10 @@ last two characters on the line. So, if you catch your transposition error
right away, you can fix it with just a @kbd{C-t}. If you don't catch it so
fast, you must move the cursor back between the two transposed
characters before you type @kbd{C-t}. If you transposed a space with
-the last character of the word before it, the word motion commands are
-a good way of getting there. Otherwise, a reverse search (@kbd{C-r})
-is often the best way. @xref{Search}.
+the last character of the word before it, the word motion commands
+(@kbd{M-f}, @kbd{M-b}, etc.) are a good way of getting there.
+Otherwise, a reverse search (@kbd{C-r}) is often the best way.
+@xref{Search}.
@kindex C-x C-t
@findex transpose-lines
@@ -181,22 +182,23 @@ punctuation characters between the words do not move. For example,
@kbd{C-M-t} (@code{transpose-sexps}) is a similar command for
transposing two expressions (@pxref{Expressions}), and @kbd{C-x C-t}
(@code{transpose-lines}) exchanges lines. They work like @kbd{M-t}
-except as regards what units of text they transpose.
+except as regards the units of text they transpose.
A numeric argument to a transpose command serves as a repeat count: it
-tells the transpose command to move the character (word, expression, line)
-before or containing point across several other characters (words,
-expressions, lines). For example, @kbd{C-u 3 C-t} moves the character before
-point forward across three other characters. It would change
-@samp{f@point{}oobar} into @samp{oobf@point{}ar}. This is equivalent to
-repeating @kbd{C-t} three times. @kbd{C-u - 4 M-t} moves the word
-before point backward across four words. @kbd{C-u - C-M-t} would cancel
-the effect of plain @kbd{C-M-t}.
+tells the transpose command to move the character (or word or
+expression or line) before or containing point across several other
+characters (or words or expressions or lines). For example, @kbd{C-u
+3 C-t} moves the character before point forward across three other
+characters. It would change @samp{f@point{}oobar} into
+@samp{oobf@point{}ar}. This is equivalent to repeating @kbd{C-t}
+three times. @kbd{C-u - 4 M-t} moves the word before point backward
+across four words. @kbd{C-u - C-M-t} would cancel the effect of plain
+@kbd{C-M-t}.
A numeric argument of zero is assigned a special meaning (because
otherwise a command with a repeat count of zero would do nothing): to
-transpose the character (word, expression, line) ending after point
-with the one ending after the mark.
+transpose the character (or word or expression or line) ending after
+point with the one ending after the mark.
@node Fixing Case
@section Case Conversion
@@ -227,9 +229,10 @@ case-convert it and go on typing. @xref{Case}.
This section describes the commands to check the spelling of a
single word or of a portion of a buffer. These commands only work if
-the spelling checker program Hunspell, Aspell, Ispell or Enchant is installed.
-These programs are not part of Emacs, but one of them is usually
-installed in GNU/Linux and other free operating systems.
+a spelling checker program, one of Hunspell, Aspell, Ispell or
+Enchant, is installed. These programs are not part of Emacs, but one
+of them is usually installed in GNU/Linux and other free operating
+systems.
@ifnottex
@xref{Top, Aspell,, aspell, The Aspell Manual}.
@end ifnottex
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
index 7c1d36c720b..afdfa6c39c1 100644
--- a/doc/emacs/frames.texi
+++ b/doc/emacs/frames.texi
@@ -994,7 +994,7 @@ variable @code{scroll-bar-adjust-thumb-portion} to control
when the end of the buffer is visible. If its value is
non-@code{nil}, the scroll bar can be dragged downwards even if the
end of the buffer is shown; if @code{nil}, the thumb will be at the
-bottom when the end of the buffer is shown. You can not over-scroll
+bottom when the end of the buffer is shown. You cannot over-scroll
when the entire buffer is visible.
@cindex scroll-bar face
diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi
index cf4e48bacb8..dbde2c8f824 100644
--- a/doc/emacs/macos.texi
+++ b/doc/emacs/macos.texi
@@ -49,7 +49,8 @@ default). A value of @code{control}, @code{meta}, @code{alt},
@code{super}, or @code{hyper} makes them behave like the corresponding
modifier keys; a value to @code{left} means be the same key as
@code{ns-alternate-modifier}; a value of @code{none} tells Emacs to
-ignore them.
+ignore them, in which case you get the default behavior of macOS
+accentuation system from the right option key.
@kbd{S-mouse-1} adjusts the region to the click position,
just like @kbd{mouse-3} (@code{mouse-save-then-kill}); it does not pop
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi
index fcd229d817c..de16c44720e 100644
--- a/doc/emacs/mini.texi
+++ b/doc/emacs/mini.texi
@@ -119,6 +119,12 @@ second slash in the pair. In the example above,
the terminal allows it. (To disable this dimming, turn off File Name
Shadow mode with the command @kbd{M-x file-name-shadow-mode}.)
+ When completing remote file names (@pxref{Remote Files}), a double
+slash behaves slightly differently: it causes Emacs to ignore only the
+file-name part, leaving the rest (method, host and username, etc.)
+intact. Typing three slashes in a row ignores everything in remote
+file names. @xref{File name completion,,, tramp, The Tramp Manual}.
+
@cindex home directory shorthand
Emacs interprets @file{~/} as your home directory. Thus,
@file{~/foo/bar.txt} specifies a file named @file{bar.txt}, inside a
@@ -767,10 +773,10 @@ you type the required password, press @key{RET} to submit it. To
prevent others from seeing your password, every character you type is
displayed as a dot (@samp{.}) instead of its usual form.
- Most of the features and commands associated with the minibuffer can
-@emph{not} be used when entering a password. There is no history or
-completion, and you cannot change windows or perform any other action
-with Emacs until you have submitted the password.
+ Most of the features and commands associated with the minibuffer
+@emph{cannot} be used when entering a password. There is no history
+or completion, and you cannot change windows or perform any other
+action with Emacs until you have submitted the password.
While you are typing the password, you may press @key{DEL} to delete
backwards, removing the last character entered. @kbd{C-u} deletes
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 3300ed67c6e..1fb47c3c68e 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -791,7 +791,8 @@ the variable @code{explicit-shell-file-name}. If this is @code{nil}
exists. Otherwise, it usually uses the variable
@code{shell-file-name} (@pxref{Single Shell}); but if the default
directory is remote (@pxref{Remote Files}), it prompts you for the
-shell file name.
+shell file name. @xref{Minibuffer File}, for hints how to type remote
+file names effectively.
Emacs sends the new shell the contents of the file
@file{~/.emacs_@var{shellname}} as input, if it exists, where
diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi
index f192c0d4c96..d58c6b905eb 100644
--- a/doc/emacs/xresources.texi
+++ b/doc/emacs/xresources.texi
@@ -764,7 +764,7 @@ This is the state for data that has been selected by the user. It can
be selected text or items selected in a list. This state is not used
in Emacs.
@item INSENSITIVE
-This is the state for widgets that are visible, but they can not be
+This is the state for widgets that are visible, but they cannot be
manipulated in the usual way---for example, buttons that can't be
pressed, and disabled menu items. To display disabled menu items in
yellow, use @code{fg[INSENSITIVE] = "yellow"}.
diff --git a/etc/NEWS.26 b/etc/NEWS.26
index 76e6316ca2e..00ff9cda8ef 100644
--- a/etc/NEWS.26
+++ b/etc/NEWS.26
@@ -264,9 +264,9 @@ to non-nil moves point to the beginning of the region.
+++
** New user option 'mouse-drag-and-drop-region'.
-This option allows to drag the entire region of text to another place
-or another buffer. Its behavior is customizable via the new options
-'mouse-drag-and-drop-region-cut-when-buffers-differ',
+This option allows you to drag the entire region of text to another
+place or another buffer. Its behavior is customizable via the new
+options 'mouse-drag-and-drop-region-cut-when-buffers-differ',
'mouse-drag-and-drop-region-show-tooltip', and
'mouse-drag-and-drop-region-show-cursor'.
@@ -481,8 +481,8 @@ commands.
libraries: 'find-library-other-window' and 'find-library-other-frame'.
+++
-** The new variable 'display-raw-bytes-as-hex' allows to change the
-display of raw bytes from octal to hex.
+** The new variable 'display-raw-bytes-as-hex' allows you to change
+the display of raw bytes from octal to hex.
+++
** You can now provide explicit field numbers in format specifiers.
@@ -855,8 +855,8 @@ breakpoint (e.g. with "f" and "o") by customizing the new option
+++
*** New customizable option 'edebug-max-depth'.
-This allows to enlarge the maximum recursion depth when instrumenting
-code.
+This allows you to enlarge the maximum recursion depth when
+instrumenting code.
** Eshell
@@ -958,7 +958,7 @@ the function 'image-dired-setup-dired-keybindings'.
---
*** Thumbnail generation is now asynchronous.
The number of concurrent processes is limited by the variable
-'image-dired-thumb-job-limit'.
+'image-dired-queue-active-limit'.
---
*** 'image-dired-thumbnail-storage' has a new option 'standard-large'
@@ -1056,8 +1056,8 @@ A valid remote file name starts with "/method:host:" or
"/-::" is the shortest remote file name then.
+++
-*** The command 'tramp-change-syntax' allows to choose an alternative
-remote file name syntax.
+*** The command 'tramp-change-syntax' allows you to choose an
+alternative remote file name syntax.
+++
*** New connection method "sg", which supports editing files under a
@@ -1067,7 +1067,7 @@ different group ID.
*** New connection method "doas" for OpenBSD hosts.
+++
-*** New connection method "gdrive", which allows to access Google
+*** New connection method "gdrive", which allows access to Google
Drive onsite repositories.
+++
@@ -1169,6 +1169,9 @@ branch-related commands on a keymap bound to 'B'.
*** 'vc-region-history' is now bound to 'C-x v h', replacing the older
'vc-insert-headers' binding.
+*** New user option 'vc-git-print-log-follow' to follow renames in Git logs
+for a single file.
+
** CC mode
---
@@ -1868,10 +1871,11 @@ focus via the mouse.
frame.
+++
-**** 'width' and 'height' allow to specify pixel values and ratios now.
+**** 'width' and 'height' now allow the specification of pixel values
+and ratios.
+++
-**** 'left' and 'top' allow to specify ratios now.
+**** 'left' and 'top' now allow the specification of ratios.
+++
**** 'keep-ratio' preserves size and position of child frames when their
@@ -1892,7 +1896,7 @@ handle fitting a frame to its buffer individually.
+++
**** 'drag-internal-border', 'drag-with-header-line',
'drag-with-mode-line', 'snap-width', 'top-visible' and 'bottom-visible'
-allow to drag and resize frames with the mouse.
+allow dragging and resizing frames with the mouse.
+++
**** 'minibuffer' is now set to the default minibuffer window when
@@ -1939,8 +1943,9 @@ like a single live window - is now official. For details consult the
section "(elisp) Atomic Windows" in the ELisp manual.
+++
-*** New 'display-buffer' alist entry 'window-parameters' allows to
-assign window parameters to the window used for displaying the buffer.
+*** New 'display-buffer' alist entry 'window-parameters' allows the
+assignment of window parameters to the window used for displaying the
+buffer.
+++
*** New function 'display-buffer-reuse-mode-window' is an action function
@@ -1960,7 +1965,7 @@ its window gets deleted by 'delete-other-windows'.
+++
*** New window parameters 'mode-line-format' and 'header-line-format'
-allow to override the buffer-local formats for this window.
+allow the buffer-local formats for this window to be overridden.
+++
*** New command 'window-swap-states' swaps the states of two live
diff --git a/lisp/net/rlogin.el b/lisp/net/rlogin.el
index 646adef2f0a..3bfc4d7f356 100644
--- a/lisp/net/rlogin.el
+++ b/lisp/net/rlogin.el
@@ -219,7 +219,7 @@ variable."
;; function, to avoid a gratuitous resync check; the default
;; should be the user's home directory, be it local or remote.
(setq comint-file-name-prefix
- (concat "/" rlogin-remote-user "@" rlogin-host ":"))
+ (concat "/-:" rlogin-remote-user "@" rlogin-host ":"))
(cd-absolute comint-file-name-prefix))
((null rlogin-directory-tracking-mode))
(t
@@ -253,7 +253,7 @@ local one share the same directories (e.g. through NFS)."
(setq rlogin-directory-tracking-mode t)
(setq shell-dirtrackp t)
(setq comint-file-name-prefix
- (concat "/" rlogin-remote-user "@" rlogin-host ":")))
+ (concat "/-:" rlogin-remote-user "@" rlogin-host ":")))
((< prefix 0)
(setq rlogin-directory-tracking-mode nil)
(setq shell-dirtrackp nil))
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 5272061ccc9..4e4620549c5 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -7,6 +7,7 @@
;; Maintainer: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://orgmode.org
+;; Version: 9.1.6
;;
;; This file is part of GNU Emacs.
;;
diff --git a/lisp/simple.el b/lisp/simple.el
index 375ee31e9cb..0c54c8f2926 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -3356,15 +3356,15 @@ to execute it asynchronously.
The output appears in the buffer `*Async Shell Command*'.
That buffer is in shell mode.
-You can configure `async-shell-command-buffer' to specify what to do in
-case when `*Async Shell Command*' buffer is already taken by another
+You can configure `async-shell-command-buffer' to specify what to do
+when the `*Async Shell Command*' buffer is already taken by another
running shell command. To run COMMAND without displaying the output
in a window you can configure `display-buffer-alist' to use the action
`display-buffer-no-window' for the buffer `*Async Shell Command*'.
In Elisp, you will often be better served by calling `start-process'
-directly, since it offers more control and does not impose the use of a
-shell (with its need to quote arguments)."
+directly, since it offers more control and does not impose the use of
+a shell (with its need to quote arguments)."
(interactive
(list
(read-shell-command "Async shell command: " nil nil
@@ -3433,8 +3433,8 @@ In an interactive call, the variable `shell-command-default-error-buffer'
specifies the value of ERROR-BUFFER.
In Elisp, you will often be better served by calling `call-process' or
-`start-process' directly, since it offers more control and does not impose
-the use of a shell (with its need to quote arguments)."
+`start-process' directly, since they offer more control and do not
+impose the use of a shell (with its need to quote arguments)."
(interactive
(list
@@ -3552,14 +3552,20 @@ the use of a shell (with its need to quote arguments)."
;; carriage motion (see comint-inhibit-carriage-motion).
(set-process-filter proc 'comint-output-filter)
(if async-shell-command-display-buffer
+ ;; Display buffer immediately.
(display-buffer buffer '(nil (allow-no-window . t)))
- (add-function :before (process-filter proc)
- (lambda (process _string)
- (let ((buf (process-buffer process)))
- (when (and (zerop (buffer-size buf))
- (string= (buffer-name buf)
- bname))
- (display-buffer buf))))))))
+ ;; Defer displaying buffer until first process output.
+ ;; Use disposable named advice so that the buffer is
+ ;; displayed at most once per process lifetime.
+ (let ((nonce (make-symbol "nonce")))
+ (add-function :before (process-filter proc)
+ (lambda (proc _string)
+ (let ((buf (process-buffer proc)))
+ (when (buffer-live-p buf)
+ (remove-function (process-filter proc)
+ nonce)
+ (display-buffer buf))))
+ `((name . ,nonce)))))))
;; Otherwise, command is executed synchronously.
(shell-command-on-region (point) (point) command
output-buffer nil error-buffer)))))))
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 2d6ca1386a3..47172dd52fa 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -999,7 +999,7 @@ This prompts for a branch to merge from."
(autoload 'vc-setup-buffer "vc-dispatcher")
(defcustom vc-git-print-log-follow nil
- "If true, follow renames in Git logs for files."
+ "If true, follow renames in Git logs for a single file."
:type 'boolean
:version "26.1")
@@ -1024,8 +1024,10 @@ If LIMIT is non-nil, show no more than this many entries."
(append
'("log" "--no-color")
(when (and vc-git-print-log-follow
- (not (cl-some #'file-directory-p files)))
- ;; "--follow" on directories is broken
+ (null (cdr files))
+ (car files)
+ (not (file-directory-p (car files))))
+ ;; "--follow" on directories or multiple files is broken
;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=8756
;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=16422
(list "--follow"))
diff --git a/src/xdisp.c b/src/xdisp.c
index 17a3cc3b89a..55f3151b4f2 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -34,26 +34,41 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
in xdisp.c is the only entry into the inner redisplay code.
The following diagram shows how redisplay code is invoked. As you
- can see, Lisp calls redisplay and vice versa. Under window systems
- like X, some portions of the redisplay code are also called
- asynchronously during mouse movement or expose events. It is very
- important that these code parts do NOT use the C library (malloc,
- free) because many C libraries under Unix are not reentrant. They
- may also NOT call functions of the Lisp interpreter which could
- change the interpreter's state. If you don't follow these rules,
- you will encounter bugs which are very hard to explain.
+ can see, Lisp calls redisplay and vice versa.
+
+ Under window systems like X, some portions of the redisplay code
+ are also called asynchronously, due to mouse movement or expose
+ events. "Asynchronously" in this context means that any C function
+ which calls maybe_quit or process_pending_signals could enter
+ redisplay via expose_frame and/or note_mouse_highlight, if X events
+ were recently reported to Emacs about mouse movements or frame(s)
+ that were exposed. And such redisplay could invoke the Lisp
+ interpreter, e.g. via the :eval forms in mode-line-format, and as
+ result the global state could change. It is therefore very
+ important that C functions which might cause such "asynchronous"
+ redisplay, but cannot tolerate the results, use
+ block_input/unblock_input around code fragments which assume that
+ global Lisp state doesn't change. If you don't follow this rule,
+ you will encounter bugs which are very hard to explain. One place
+ that needs to take such precautions is timer_check, some of whose
+ code cannot tolerate changes in timer alists while it processes
+ timers.
+--------------+ redisplay +----------------+
| Lisp machine |---------------->| Redisplay code |<--+
+--------------+ (xdisp.c) +----------------+ |
^ | |
+----------------------------------+ |
- Don't use this path when called |
- asynchronously! |
- |
- expose_window (asynchronous) |
- |
- X expose events -----+
+ Block input to prevent this when |
+ called asynchronously! |
+ |
+ note_mouse_highlight (asynchronous) |
+ |
+ X mouse events -----+
+ |
+ expose_frame (asynchronous) |
+ |
+ X expose events -----+
What does redisplay do? Obviously, it has to figure out somehow what
has been changed since the last time the display has been updated,
diff --git a/test/lisp/org/org-tests.el b/test/lisp/org/org-tests.el
new file mode 100644
index 00000000000..a2201888563
--- /dev/null
+++ b/test/lisp/org/org-tests.el
@@ -0,0 +1,31 @@
+;;; org-tests.el --- tests for org/org.el
+
+;; Copyright (C) 2018 Free Software Foundation, Inc.
+
+;; Maintainer: emacs-devel@gnu.org
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(ert-deftest org-package-version ()
+ "Test Version: header is present and correct.
+Ref <https://debbugs.gnu.org/30310>."
+ (should (require 'org-version nil t))
+ (should (equal (version-to-list (org-release))
+ (cdr (assq 'org package--builtin-versions)))))