Merge from origin/emacs-26

c787a49 (origin/emacs-26) * lisp/vc/vc-git.el (vc-git-print-log): Res...
b654791 * doc/emacs/misc.texi (Interactive Shell): Refer to node "Min...
f1102d2 Yet another round of fixing the Emacs manual
76b5a68 * etc/NEWS: Expunge the solecism "allow(s)" + infinitive
b4ff8cc Two minor fixes in Antinews
aafcd12 * etc/NEWS: Rename image-dired-thumb-job-limit
a893924 * lisp/simple.el (async-shell-command, shell-command): Fix gr...
699081f Fix deferred display of async shell-command buffers
d2d5e54 Mention remote file name completion in Emacs manual
f589f5a Yest another round of manual copyedits
1ed4089 Update xdisp.c commentary
e23de39 Fix Bug#30324
e1a9dc0 Recognize Org as builtin package (bug#30310)

Conflicts:
	etc/NEWS
This commit is contained in:
Glenn Morris 2018-02-05 07:50:22 -08:00
commit a0c7157a16
19 changed files with 181 additions and 101 deletions

View file

@ -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

View file

@ -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

View file

@ -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}

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"}.

View file

@ -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

View file

@ -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))

View file

@ -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.
;;

View file

@ -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)))))))

View file

@ -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"))

View file

@ -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,

View file

@ -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)))))