Merge from origin/emacs-26

11bd8aa24b Fix flymake's loading of subr-x
b500e06f4d Fix Bug#28896
d815de017b Skip a Flymake test for old gcc versions
fd3d8610b2 Make :align-to account for display-line-numbers
831eafc8ae Augment Flymake API for third-party extensions
ddd547fada Improve treatment of Fortran's "class default"
234b1e3864 Flymake backends must check proc obsoleteness in source bu...
3ea6a4d4ba Skip an rsync test in tramp-tests.el
25f83fa7c5 ; Indentation fixes
4d578d432d On Windows default a frame's border width to zero (Bug#28873)
6f1dea5c74 Spelling fixes
b8433b0954 Use pop-to-buffer-same-window instead of switch-to-buffer
2f7163fb72 Fix the MSDOS build.
2551d28fe8 Fix line number display after 'widen'
dc8812829b Remove resizable attribute on macOS undecorated frames (bu...
b970a4a52a Fix handling of `border-width' in `frameset--restore-frame...
445e92658f Mention how to send CC to > 1 address in a bug report
8ca6fa585a Improve format-time-string doc
2e1b3522b8 Improve documentation of 'line-number-display-width'
5b6e59cfdb Implement vc-default-dir-extra-headers for vc-rcs
22adeca42a In NEWS give advice on use of `switch-to-buffer' (Bug#28645)
2c3e6f1ddc Dont update primary selection with winner-undo
b38724ab67 Work around ImageMagick bug 825
20cc68e871 Document rectangle-preview option more (Bug#27974)
a0b7b301dd Do not reject https://gnu.org in commit messages
fb4200a875 Fix Edebug spec for cl-defun (bug#24255)
db68cefe72 Fix errors in kmacro.el post-command-hook
c63b344c3d Fix range-error in image-dired.el
081d2187c4 Fix 'line-number-display-width' in hscrolled windows
16e85456e7 Fix error in tramp-smb-handle-insert-directory
613db8d35c Don't reject PBM header whitespace unnecessarily
3205b12a78 Fix regression in display of PPM images
1ca9ae7069 Require subr-x when compiling nnimap.el
de60992053 Fix ert-test finding by symbol (Bug#28849)
51615a8082 Don't remember old debugger window (Bug#17882)
5980de3727 Disable python native completion on w32 (Bug#28580)
616b4c5956 Let select-frame-by-name choose any frame when called from...
8eb3c01dbd * lisp/dired-aux.el (dired-create-directory): Doc fix.
325dfdae13 Avoid compilation warnings in optimized builds
f79382819c ; * src/composite.c (Fclear_composition_cache): Fix last c...
f95cd5cd70 Improve customization of arabic-shaper-ZWNJ-handling.
a7f154688d Improve customization type of 'mouse-drag-and-drop-region'
864734d112 ; Prefer https: to http: in GNU URLs
3c78960a47 Encourage https: in commit messages
def9715282 ; Cleanup of etc/NEWS
4e59ecc646 Fix wording in Elisp manual's child frames section (Bug#28...
eda9f5018c Another fix for C mode fontification of w32 source files
05aadd8990 Fix fontification of ALIGN_STACK functions
aa0c38f358 Make sure thread stack is properly aligned on MS-Windows
d7038020aa Do not under-align pseudovectors
ff33053012 Fix indentation bug in multi-line CSS selectors
8968be822e ; * etc/NEWS: Grammar and spelling fixes
716b84034d gnutls_mac_get_nonce_size has been added in gnutls 3.3
55e313f7be ; * CONTRIBUTE: More suggestions for using US English.
622c675648 * CONTRIBUTE: Suggest American English.

# Conflicts:
#	etc/NEWS
#	msdos/sed2v2.inp
This commit is contained in:
Paul Eggert 2017-10-20 22:44:13 -07:00
commit 3155cb1585
82 changed files with 1110 additions and 710 deletions

View file

@ -2,7 +2,7 @@
(sentence-end-double-space . t) (sentence-end-double-space . t)
(fill-column . 70))) (fill-column . 70)))
(c-mode . ((c-file-style . "GNU") (c-mode . ((c-file-style . "GNU")
(c-noise-macro-names . ("UNINIT")))) (c-noise-macro-names . ("UNINIT" "CALLBACK" "ALIGN_STACK"))))
(objc-mode . ((c-file-style . "GNU"))) (objc-mode . ((c-file-style . "GNU")))
(log-edit-mode . ((log-edit-font-lock-gnu-style . t) (log-edit-mode . ((log-edit-font-lock-gnu-style . t)
(log-edit-setup-add-author . t))) (log-edit-setup-add-author . t)))

View file

@ -82,8 +82,9 @@ Doc-strings should be updated together with the code.
Think about whether your change requires updating the manuals. If you Think about whether your change requires updating the manuals. If you
know it does not, mark the NEWS entry with "---". If you know know it does not, mark the NEWS entry with "---". If you know
that *all* the necessary documentation updates have been made, mark that *all* the necessary documentation updates have been made as part
the entry with "+++". Otherwise do not mark it. of your changes or those by others, mark the entry with "+++".
Otherwise do not mark it.
If your change requires updating the manuals to document new If your change requires updating the manuals to document new
functions/commands/variables/faces, then use the proper Texinfo functions/commands/variables/faces, then use the proper Texinfo
@ -92,6 +93,10 @@ command to index them; for instance, use @vindex for variables and
https://www.gnu.org/software/texinfo/manual/texinfo/html_node/Predefined-Indices.html https://www.gnu.org/software/texinfo/manual/texinfo/html_node/Predefined-Indices.html
or run the shell command 'info "(texinfo)Predefined Indices"'. or run the shell command 'info "(texinfo)Predefined Indices"'.
We prefer American English both in doc strings and in the manuals.
That includes both spelling (e.g., "behavior", not "behaviour") and
the convention of leaving 2 spaces between sentences.
For more specific tips on Emacs's doc style, see For more specific tips on Emacs's doc style, see
https://www.gnu.org/software/emacs/manual/html_node/elisp/Documentation-Tips.html https://www.gnu.org/software/emacs/manual/html_node/elisp/Documentation-Tips.html
Use 'checkdoc' to check for documentation errors before submitting a patch. Use 'checkdoc' to check for documentation errors before submitting a patch.
@ -170,6 +175,9 @@ them right the first time, so here are guidelines for formatting them:
bug number NNNNN in the debbugs database. This string is often bug number NNNNN in the debbugs database. This string is often
parenthesized, as in "(Bug#19003)". parenthesized, as in "(Bug#19003)".
- When citing URLs, prefer https: to http: when either will do. In
particular, gnu.org and fsf.org URLs should start with "https:".
- Commit messages should contain only printable UTF-8 characters. - Commit messages should contain only printable UTF-8 characters.
- Commit messages should not contain the "Signed-off-by:" lines that - Commit messages should not contain the "Signed-off-by:" lines that
@ -195,7 +203,9 @@ them right the first time, so here are guidelines for formatting them:
sentences starting with a capital and ending with a period (except sentences starting with a capital and ending with a period (except
the summary line should not end in a period). See the summary line should not end in a period). See
https://www.gnu.org/prep/standards/html_node/Comments.html https://www.gnu.org/prep/standards/html_node/Comments.html
or run 'info "(standards)Comments"'. or run 'info "(standards)Comments"'. American English is preferred
in Emacs; that includes spelling and leaving 2 blanks between
sentences.
They are preserved indefinitely, and have a reasonable chance of They are preserved indefinitely, and have a reasonable chance of
being read in the future, so it's better that they have good being read in the future, so it's better that they have good

View file

@ -425,7 +425,7 @@
Fix bug in recent styled_format change Fix bug in recent styled_format change
Problem reported by Kaushal Modi in: Problem reported by Kaushal Modi in:
http://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00141.html https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00141.html
* src/editfns.c (styled_format): Fix bug where USE_SAFE_ALLOCA was * src/editfns.c (styled_format): Fix bug where USE_SAFE_ALLOCA was
not always followed by SAFE_FREE. This bug was introduced in my not always followed by SAFE_FREE. This bug was introduced in my
patch 2017-09-26T23:31:57Z!eggert@cs.ucla.edu entitled "Avoid some patch 2017-09-26T23:31:57Z!eggert@cs.ucla.edu entitled "Avoid some
@ -926,7 +926,7 @@
constrained to call REPORT-FN exactly once. It may do so any number constrained to call REPORT-FN exactly once. It may do so any number
of times, cumulatively reporting diagnostics. Flymake keeps track of of times, cumulatively reporting diagnostics. Flymake keeps track of
outdated REPORT-FN instances and disconsiders obsolete reports. outdated REPORT-FN instances and disconsiders obsolete reports.
Backends should avoid reporting obsolete data by cancelling any Backends should avoid reporting obsolete data by canceling any
ongoing processing at every renewed call to the backend function. ongoing processing at every renewed call to the backend function.
Consolidated flymake.el internal data structures to require less Consolidated flymake.el internal data structures to require less
@ -2074,7 +2074,7 @@
* doc/emacs/maintaining.texi (VC Change Log): Mention the new binding. * doc/emacs/maintaining.texi (VC Change Log): Mention the new binding.
* doc/emacs/vc1-xtra.texi (Version Headers): Remove the association of * doc/emacs/vc1-xtra.texi (Version Headers): Remove the association of
'C-x v h' with `vc-insert-headers'. 'C-x v h' with `vc-insert-headers'.
(http://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00957.html) (https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00957.html)
2017-09-30 Allen Li <vianchielfaura@gmail.com> (tiny change) 2017-09-30 Allen Li <vianchielfaura@gmail.com> (tiny change)
@ -2648,7 +2648,7 @@
* doc/emacs/cmdargs.texi (Action Arguments): Don't mention * doc/emacs/cmdargs.texi (Action Arguments): Don't mention
'find-file', as the implementation has changed. Reported by 'find-file', as the implementation has changed. Reported by
Everton J. Carpes <everton.carpes@gmail.com> in Everton J. Carpes <everton.carpes@gmail.com> in
http://lists.gnu.org/archive/html/help-gnu-emacs/2017-09/msg00146.html. https://lists.gnu.org/archive/html/help-gnu-emacs/2017-09/msg00146.html.
2017-09-19 Eli Zaretskii <eliz@gnu.org> 2017-09-19 Eli Zaretskii <eliz@gnu.org>
@ -2843,7 +2843,7 @@
* src/eval.c (push_handler_nosignal): Use CACHEABLE to work around * src/eval.c (push_handler_nosignal): Use CACHEABLE to work around
GCC compilation warning. Suggested by Paul Eggert <eggert@cs.ucla.edu> GCC compilation warning. Suggested by Paul Eggert <eggert@cs.ucla.edu>
in http://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00492.html. in https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00492.html.
2017-09-17 Michael Albinus <michael.albinus@gmx.de> 2017-09-17 Michael Albinus <michael.albinus@gmx.de>
@ -3162,7 +3162,7 @@
* src/lisp.h (pI) [__MINGW32__]: Provide definition that will * src/lisp.h (pI) [__MINGW32__]: Provide definition that will
hopefully DTRT with both MinGW64 and mingw.org's MinGW. See hopefully DTRT with both MinGW64 and mingw.org's MinGW. See
http://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00171.html https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00171.html
for the details. for the details.
* src/conf_post.h (PRINTF_ARCHETYPE) [MINGW_W64]: Separate * src/conf_post.h (PRINTF_ARCHETYPE) [MINGW_W64]: Separate
definition specific to MinGW64. definition specific to MinGW64.
@ -3198,7 +3198,7 @@
Port renameat_noreplace to openSUSE 12.3 Port renameat_noreplace to openSUSE 12.3
Problem reported by M. Nomiya in: Problem reported by M. Nomiya in:
http://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00363.html https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00363.html
* src/sysdep.c (renameat_noreplace): * src/sysdep.c (renameat_noreplace):
Call renameat2 only if CYGWIN. Call renameat2 only if CYGWIN.
@ -3402,7 +3402,7 @@
* doc/misc/gnus.texi (Saving Articles): * doc/misc/gnus.texi (Saving Articles):
Document behavior with directory name targets (Bug#27986). Document behavior with directory name targets (Bug#27986).
Problem reported by Katsumi Yamaoka in: Problem reported by Katsumi Yamaoka in:
http://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00216.html https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00216.html
2017-09-12 Mark Oteiza <mvoteiza@udel.edu> 2017-09-12 Mark Oteiza <mvoteiza@udel.edu>
@ -3774,7 +3774,7 @@
* configure.ac (srcdir) [mingw32]: Downcase the drive letter, to * configure.ac (srcdir) [mingw32]: Downcase the drive letter, to
avoid warnings from find-file-noselect when making autoloads. For avoid warnings from find-file-noselect when making autoloads. For
the details, see the details, see
http://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00049.html. https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00049.html.
2017-09-10 Mark Oteiza <mvoteiza@udel.edu> 2017-09-10 Mark Oteiza <mvoteiza@udel.edu>
@ -4006,7 +4006,7 @@
bit-shifting, to avoid compiler warnings. bit-shifting, to avoid compiler warnings.
(w32font_text_extents): Tell GCC NGLYPHS is non-negative, to avoid (w32font_text_extents): Tell GCC NGLYPHS is non-negative, to avoid
a warning. For details of the warning, see a warning. For details of the warning, see
http://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00093.html. https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00093.html.
* src/term.c (keys) [WINDOWSNT]: Don't define, as it is not used * src/term.c (keys) [WINDOWSNT]: Don't define, as it is not used
in that build. in that build.
* src/sound.c (sound_perror): Ifdef away on WINDOWSNT, as this * src/sound.c (sound_perror): Ifdef away on WINDOWSNT, as this
@ -4093,7 +4093,7 @@
autogen.sh: omit bogus chatter if no .git autogen.sh: omit bogus chatter if no .git
Problem reported by Angelo Graziosi in: Problem reported by Angelo Graziosi in:
http://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00045.html https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00045.html
* autogen.sh (git_config): Do not execut 'git' if $do_git fails. * autogen.sh (git_config): Do not execut 'git' if $do_git fails.
2017-09-07 Glenn Morris <rgm@gnu.org> 2017-09-07 Glenn Morris <rgm@gnu.org>
@ -4112,7 +4112,7 @@
* doc/lispref/functions.texi (Mapping Functions): Fix the order of * doc/lispref/functions.texi (Mapping Functions): Fix the order of
@example and @group. For the details, see @example and @group. For the details, see
http://lists.gnu.org/archive/html/bug-texinfo/2017-09/msg00007.html. https://lists.gnu.org/archive/html/bug-texinfo/2017-09/msg00007.html.
2017-09-06 Mark Oteiza <mvoteiza@udel.edu> 2017-09-06 Mark Oteiza <mvoteiza@udel.edu>
@ -4240,7 +4240,7 @@
Revert recent float→double Motif change Revert recent float→double Motif change
Problem reported by Martin Rudalics in: Problem reported by Martin Rudalics in:
http://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00014.html https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00014.html
* src/xterm.c (xm_scroll_callback, xaw_jump_callback) * src/xterm.c (xm_scroll_callback, xaw_jump_callback)
(x_set_toolkit_scroll_bar_thumb) (x_set_toolkit_scroll_bar_thumb)
(x_set_toolkit_horizontal_scroll_bar_thumb): (x_set_toolkit_horizontal_scroll_bar_thumb):
@ -5390,7 +5390,7 @@
* src/w32term.c (x_get_scale_factor): * src/w32term.c (x_get_scale_factor):
* src/xterm.c (x_get_scale_factor): Don't let the scale factors * src/xterm.c (x_get_scale_factor): Don't let the scale factors
become less than 1. Reported by Yuri D'Elia <wavexx@thregr.org> in become less than 1. Reported by Yuri D'Elia <wavexx@thregr.org> in
http://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00459.html. https://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00459.html.
2017-08-21 Sam Steingold <sds@gnu.org> 2017-08-21 Sam Steingold <sds@gnu.org>
@ -5940,7 +5940,7 @@
Apparently Gitlab doesnt create .git/hooks, like regular Git does. Apparently Gitlab doesnt create .git/hooks, like regular Git does.
Problem reported by Ted Zlatanov in: Problem reported by Ted Zlatanov in:
http://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00380.html https://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00380.html
* autogen.sh (git_sample_hook_src): New function. Use it to work * autogen.sh (git_sample_hook_src): New function. Use it to work
even if .git/hooks or its samples do not exist. even if .git/hooks or its samples do not exist.
@ -6209,7 +6209,7 @@
Default autogen.sh to 'all' Default autogen.sh to 'all'
This addresses a problem noted by RMS in: This addresses a problem noted by RMS in:
http://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00052.html https://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00052.html
* autogen.sh (do_git): Set to true if this script is invoked * autogen.sh (do_git): Set to true if this script is invoked
with no arguments and there is a .git subdirectory. with no arguments and there is a .git subdirectory.
@ -6689,7 +6689,7 @@
Fix some crashes on self-modifying Elisp code Fix some crashes on self-modifying Elisp code
Prompted by a problem report by Alex in: Prompted by a problem report by Alex in:
http://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00143.html https://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00143.html
* src/eval.c (For, Fprogn, Fsetq, FletX, eval_sub): * src/eval.c (For, Fprogn, Fsetq, FletX, eval_sub):
Compute XCDR (x) near XCAR (x); although this doesn't fix any bugs, Compute XCDR (x) near XCAR (x); although this doesn't fix any bugs,
it is likely to run a bit faster with typical hardware caches. it is likely to run a bit faster with typical hardware caches.
@ -6976,7 +6976,7 @@
Port recent rename changes to RHEL 7 + NFS Port recent rename changes to RHEL 7 + NFS
Problem reported by Ted Zlatanov in: Problem reported by Ted Zlatanov in:
http://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00082.html https://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00082.html
* src/fileio.c (Frename_file): On RHEL 7 + NFS, renameat2 can fail * src/fileio.c (Frename_file): On RHEL 7 + NFS, renameat2 can fail
with errno == EINVAL when it is not supported. So treat that case with errno == EINVAL when it is not supported. So treat that case
like errno == ENOSYS. Also, when ok_if_already_exists is neither like errno == ENOSYS. Also, when ok_if_already_exists is neither
@ -7009,7 +7009,7 @@
* configure.ac (with_mailutils): Default to 'yes' if GNU Mailutils * configure.ac (with_mailutils): Default to 'yes' if GNU Mailutils
is installed. See: is installed. See:
http://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00054.html https://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00054.html
2017-08-02 Paul Eggert <eggert@cs.ucla.edu> 2017-08-02 Paul Eggert <eggert@cs.ucla.edu>
@ -8075,7 +8075,7 @@
bury-buffer to exit todo-mode. This restores the desired behavior bury-buffer to exit todo-mode. This restores the desired behavior
of not immediately returning to the exited todo-mode buffer on of not immediately returning to the exited todo-mode buffer on
quitting another buffer, which a dired bug fix had changed (see quitting another buffer, which a dired bug fix had changed (see
http://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00739.html). https://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00739.html).
2017-07-19 Tino Calancha <tino.calancha@gmail.com> 2017-07-19 Tino Calancha <tino.calancha@gmail.com>
@ -8146,8 +8146,8 @@
Port gnutls.c to older (buggier?) GnuTLS Port gnutls.c to older (buggier?) GnuTLS
Problem reported for GnuTLS 3.2.1 by Glenn Morris in: Problem reported for GnuTLS 3.2.1 by Glenn Morris in:
http://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00716.html https://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00716.html
http://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00742.html https://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00742.html
Although I don't see how this bug can occur with vanilla GnuTLS 3.2.1, Although I don't see how this bug can occur with vanilla GnuTLS 3.2.1,
perhaps hydra was using a modified GnuTLS. perhaps hydra was using a modified GnuTLS.
* src/gnutls.c (Fgnutls_ciphers): Don't assume GNUTLS_CIPHER_NULL * src/gnutls.c (Fgnutls_ciphers): Don't assume GNUTLS_CIPHER_NULL
@ -8663,8 +8663,8 @@
* lisp/faces.el (line-number): Don't use a fixed-pitch font, by * lisp/faces.el (line-number): Don't use a fixed-pitch font, by
popular demand. For relevant discussions, see popular demand. For relevant discussions, see
http://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00433.html https://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00433.html
http://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00445.html https://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00445.html
2017-07-14 Paul Eggert <eggert@cs.ucla.edu> 2017-07-14 Paul Eggert <eggert@cs.ucla.edu>
@ -10603,7 +10603,7 @@
Adjust lm-verify to accept current notices Adjust lm-verify to accept current notices
Problem reported by Mike Kupfer in: Problem reported by Mike Kupfer in:
http://lists.gnu.org/archive/html/emacs-devel/2017-06/msg00512.html https://lists.gnu.org/archive/html/emacs-devel/2017-06/msg00512.html
* lisp/emacs-lisp/lisp-mnt.el (lm-crack-copyright): * lisp/emacs-lisp/lisp-mnt.el (lm-crack-copyright):
Do not require later lines in a copyright notice to have more Do not require later lines in a copyright notice to have more
indentation than earlier lines. indentation than earlier lines.
@ -12009,7 +12009,7 @@
(gdb-send): Don't increment gdb-control-level if the command (gdb-send): Don't increment gdb-control-level if the command
matches gdb-python-guile-commands-regexp and has non-empty matches gdb-python-guile-commands-regexp and has non-empty
arguments. Reported by David Boles <boles@ieee.org> in arguments. Reported by David Boles <boles@ieee.org> in
http://lists.gnu.org/archive/html/emacs-devel/2017-06/msg00009.html. https://lists.gnu.org/archive/html/emacs-devel/2017-06/msg00009.html.
2017-06-10 Eli Zaretskii <eliz@gnu.org> 2017-06-10 Eli Zaretskii <eliz@gnu.org>
@ -12707,7 +12707,7 @@
* src/doprnt.c (doprnt): Format "%%" correctly. * src/doprnt.c (doprnt): Format "%%" correctly.
Problem reported by Philipp Stephani in: Problem reported by Philipp Stephani in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00901.html https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00901.html
2017-06-01 Paul Eggert <eggert@cs.ucla.edu> 2017-06-01 Paul Eggert <eggert@cs.ucla.edu>
@ -12806,7 +12806,7 @@
* lisp/emacs-lisp/eldoc.el (eldoc--supported-p): New function. * lisp/emacs-lisp/eldoc.el (eldoc--supported-p): New function.
(turn-on-eldoc-mode, eldoc-mode): Use it. (turn-on-eldoc-mode, eldoc-mode): Use it.
(http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00865.html) (https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00865.html)
2017-05-30 Glenn Morris <rgm@gnu.org> 2017-05-30 Glenn Morris <rgm@gnu.org>
@ -13638,7 +13638,7 @@
* lisp/net/tls.el (tls-program, tls-checktrust): Remove s_client. * lisp/net/tls.el (tls-program, tls-checktrust): Remove s_client.
Ref http://bugs.debian.org/766397 Ref http://bugs.debian.org/766397
http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00803.html https://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00803.html
(cherry picked from commit 6e45de6bacc508db11b15b2c8ba86aad8c0570df) (cherry picked from commit 6e45de6bacc508db11b15b2c8ba86aad8c0570df)
@ -14070,7 +14070,7 @@
* src/emacs-module.c (module_reset_handlerlist): * src/emacs-module.c (module_reset_handlerlist):
Check handlerlist. Suggested by Philipp Stephani in: Check handlerlist. Suggested by Philipp Stephani in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00521.html https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00521.html
2017-05-20 Paul Eggert <eggert@cs.ucla.edu> 2017-05-20 Paul Eggert <eggert@cs.ucla.edu>
@ -14078,7 +14078,7 @@
* configure.ac (WERROR_CFLAGS): Omit -Wmissing-braces for Clang, * configure.ac (WERROR_CFLAGS): Omit -Wmissing-braces for Clang,
to shut off a false alarm. Problem reportd by Philipp Stephani in: to shut off a false alarm. Problem reportd by Philipp Stephani in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00521.html https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00521.html
2017-05-20 Noam Postavsky <npostavs@gmail.com> 2017-05-20 Noam Postavsky <npostavs@gmail.com>
@ -14150,7 +14150,7 @@
* etc/PROBLEMS: Describe problems with Microsoft Intellipoint and * etc/PROBLEMS: Describe problems with Microsoft Intellipoint and
mouse-2 events. For the details, see mouse-2 events. For the details, see
http://lists.gnu.org/archive/html/help-emacs-windows/2017-05/msg00009.html. https://lists.gnu.org/archive/html/help-emacs-windows/2017-05/msg00009.html.
2017-05-19 Nick Helm <nick@tenpoint.co.nz> (tiny change) 2017-05-19 Nick Helm <nick@tenpoint.co.nz> (tiny change)
@ -14245,7 +14245,7 @@
Attempt to work around macOS vfork bug Attempt to work around macOS vfork bug
Problem reported by YAMAMOTO Mitsuharu in: Problem reported by YAMAMOTO Mitsuharu in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00342.html https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00342.html
This is related to the fix for Bug#26397. This is related to the fix for Bug#26397.
* src/callproc.c (call_process_cleanup, call_process) [!MSDOS]: * src/callproc.c (call_process_cleanup, call_process) [!MSDOS]:
Report internal error if wait_for_termination fails. Report internal error if wait_for_termination fails.
@ -14269,7 +14269,7 @@
Dont compile the (DARWIN_OS_CASE_SENSITIVE_FIXME == 2) Dont compile the (DARWIN_OS_CASE_SENSITIVE_FIXME == 2)
code unless DARWIN_OS_CASE_SENSITIVE_FIXME is 2. code unless DARWIN_OS_CASE_SENSITIVE_FIXME is 2.
Problem reported by Philipp Stephani in: Problem reported by Philipp Stephani in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00495.html https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00495.html
2017-05-19 Paul Eggert <eggert@cs.ucla.edu> 2017-05-19 Paul Eggert <eggert@cs.ucla.edu>
@ -14277,7 +14277,7 @@
* configure.ac (WERROR_CFLAGS): Omit -Wdouble-promotion if clang. * configure.ac (WERROR_CFLAGS): Omit -Wdouble-promotion if clang.
Problem reported by Philipp Stephani in: Problem reported by Philipp Stephani in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00495.html https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00495.html
2017-05-19 Paul Eggert <eggert@cs.ucla.edu> 2017-05-19 Paul Eggert <eggert@cs.ucla.edu>
@ -14362,7 +14362,7 @@
Avoid undefined behavior in struct sockaddr Avoid undefined behavior in struct sockaddr
Problem noted by Philipp Stephani in: Problem noted by Philipp Stephani in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00391.html https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00391.html
* src/conf_post.h (ATTRIBUTE_MAY_ALIAS, DECLARE_POINTER_ALIAS): * src/conf_post.h (ATTRIBUTE_MAY_ALIAS, DECLARE_POINTER_ALIAS):
New macros. New macros.
* src/process.c (conv_sockaddr_to_lisp, conv_lisp_to_sockaddr) * src/process.c (conv_sockaddr_to_lisp, conv_lisp_to_sockaddr)
@ -14387,7 +14387,7 @@
Work around AddressSanitizer bug with vfork Work around AddressSanitizer bug with vfork
Problem reported by Jim Meyering in: Problem reported by Jim Meyering in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00246.html https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00246.html
* src/conf_post.h (vfork) [ADDRESS_SANITIZER]: Define to fork. * src/conf_post.h (vfork) [ADDRESS_SANITIZER]: Define to fork.
Unfortunately with the AddressSanitizer in Fedora 25 x86-64, the Unfortunately with the AddressSanitizer in Fedora 25 x86-64, the
vforked child messes up the parents shadow memory. This is too vforked child messes up the parents shadow memory. This is too
@ -14452,7 +14452,7 @@
multiple calls and struct literals in the last case of a switch. multiple calls and struct literals in the last case of a switch.
The old code ran afoul of GCC bug 80659, which caused an internal The old code ran afoul of GCC bug 80659, which caused an internal
compiler error. Problem reported by Jim Meyering in: compiler error. Problem reported by Jim Meyering in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00182.html https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00182.html
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80659 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80659
2017-05-16 Paul Eggert <eggert@cs.ucla.edu> 2017-05-16 Paul Eggert <eggert@cs.ucla.edu>
@ -14563,9 +14563,9 @@
* src/process.c (connect_network_socket): * src/process.c (connect_network_socket):
Use struct sockaddr_storage, not struct sockaddr_in, to store info Use struct sockaddr_storage, not struct sockaddr_in, to store info
about a socket address. Problem reported by Philipp Stephani in: about a socket address. Problem reported by Philipp Stephani in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00314.html https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00314.html
This fix is based on a patch by Philipp in: This fix is based on a patch by Philipp in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00357.html https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00357.html
2017-05-14 Gemini Lasswell <gazally@runbox.com> 2017-05-14 Gemini Lasswell <gazally@runbox.com>
@ -15156,7 +15156,7 @@
Compare unqualified type to Lisp_Object, to do the right thing Compare unqualified type to Lisp_Object, to do the right thing
when the expression has type Lisp_Object const. when the expression has type Lisp_Object const.
Problem reported by Eli Zaretskii in: Problem reported by Eli Zaretskii in:
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00138.html https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00138.html
2017-05-06 Paul Eggert <eggert@cs.ucla.edu> 2017-05-06 Paul Eggert <eggert@cs.ucla.edu>
@ -15295,7 +15295,7 @@
* lisp/emacs-lisp/cl-generic.el (cl-defmethod): Denote the * lisp/emacs-lisp/cl-generic.el (cl-defmethod): Denote the
edebug spec part for qualifiers as [&rest atom], per edebug spec part for qualifiers as [&rest atom], per
http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00053.html. https://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00053.html.
2017-05-05 Mike Kupfer <mkupfer@alum.berkeley.edu> 2017-05-05 Mike Kupfer <mkupfer@alum.berkeley.edu>
@ -16077,7 +16077,7 @@
* lisp/net/tls.el (tls-program, tls-checktrust): Remove s_client. * lisp/net/tls.el (tls-program, tls-checktrust): Remove s_client.
Ref http://bugs.debian.org/766397 Ref http://bugs.debian.org/766397
http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00803.html https://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00803.html
2017-04-25 Glenn Morris <rgm@gnu.org> 2017-04-25 Glenn Morris <rgm@gnu.org>
@ -16706,7 +16706,7 @@
* src/lisp.h (STRING_SET_CHARS): Add an assertion and commentary * src/lisp.h (STRING_SET_CHARS): Add an assertion and commentary
to prevent incorrect usage. For details, see this discussion: to prevent incorrect usage. For details, see this discussion:
http://lists.gnu.org/archive/html/emacs-devel/2017-04/msg00412.html. https://lists.gnu.org/archive/html/emacs-devel/2017-04/msg00412.html.
2017-04-16 Eli Zaretskii <eliz@gnu.org> 2017-04-16 Eli Zaretskii <eliz@gnu.org>
@ -18130,7 +18130,7 @@
* lisp/emacs-lisp/package.el (package-archives): * lisp/emacs-lisp/package.el (package-archives):
Default to https for elpa.gnu.org if gnutls is available. Ref: Default to https for elpa.gnu.org if gnutls is available. Ref:
http://lists.gnu.org/archive/html/emacs-devel/2015-05/msg00130.html https://lists.gnu.org/archive/html/emacs-devel/2015-05/msg00130.html
2017-04-04 Paul Eggert <eggert@cs.ucla.edu> 2017-04-04 Paul Eggert <eggert@cs.ucla.edu>
@ -18314,7 +18314,7 @@
Throw a `search-failed' derived error in Info search Throw a `search-failed' derived error in Info search
The original fix for Bug#6106 switched from signalling `search-failed' The original fix for Bug#6106 switched from signaling `search-failed'
to `user-error'. However, this breaks incremental searching over to `user-error'. However, this breaks incremental searching over
multiple nodes because the isearch code doesn't expect a `user-error'. multiple nodes because the isearch code doesn't expect a `user-error'.
@ -18369,7 +18369,7 @@
Fix bugs in simplified test dependencies Fix bugs in simplified test dependencies
Problem reported by Glenn Morris in: Problem reported by Glenn Morris in:
http://lists.gnu.org/archive/html/emacs-devel/2017-04/msg00017.html https://lists.gnu.org/archive/html/emacs-devel/2017-04/msg00017.html
* test/Makefile.in (LOGFILES, TESTS): Omit leading "./". * test/Makefile.in (LOGFILES, TESTS): Omit leading "./".
(TESTS): Omit unnecessary patsubst. (TESTS): Omit unnecessary patsubst.
(test_template): Redo dependency heuristic, hopefully (test_template): Redo dependency heuristic, hopefully
@ -18778,7 +18778,7 @@
Fix redisplay glitches due to recent change in redisplay_internal Fix redisplay glitches due to recent change in redisplay_internal
* src/xdisp.c (redisplay_internal): A better fix for bug#26097. * src/xdisp.c (redisplay_internal): A better fix for bug#26097.
See http://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00695.html See https://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00695.html
for the problems caused by the original fix. for the problems caused by the original fix.
2017-03-26 Michael Albinus <michael.albinus@gmx.de> 2017-03-26 Michael Albinus <michael.albinus@gmx.de>
@ -18938,7 +18938,7 @@
Dont require chown/chgrp for game installation Dont require chown/chgrp for game installation
Problem reported by Joseph Mingrone in: Problem reported by Joseph Mingrone in:
http://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00622.html https://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00622.html
* lib-src/Makefile.in (exp_archlibdir): Dont fail if chown or * lib-src/Makefile.in (exp_archlibdir): Dont fail if chown or
chgrp fails with update-game-score and the game directory. chgrp fails with update-game-score and the game directory.
Instead, expect the installer to fix this up afterwards. Instead, expect the installer to fix this up afterwards.
@ -19072,7 +19072,7 @@
Dont remove dependency files when configuring Dont remove dependency files when configuring
Problem reported by Tom Tromey in: Problem reported by Tom Tromey in:
http://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00533.html https://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00533.html
* configure.ac: Dont remove */*.o and */deps/* when * configure.ac: Dont remove */*.o and */deps/* when
--enable-autodepend is in effect. --enable-autodepend is in effect.
@ -19081,7 +19081,7 @@
Make --without-pop the default. Make --without-pop the default.
Suggested by Angelo Graziosi in: Suggested by Angelo Graziosi in:
http://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00431.html https://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00431.html
* configure.ac: Change the default from --with-pop to * configure.ac: Change the default from --with-pop to
--without-pop. Adjust diagnostics to match. --without-pop. Adjust diagnostics to match.
@ -19118,7 +19118,7 @@
org-src fontify buffers" the hooks were enabled also for modifications org-src fontify buffers" the hooks were enabled also for modifications
to the original org buffer. This causes fontification errors when to the original org buffer. This causes fontification errors when
combined with certain packages, as reported in combined with certain packages, as reported in
http://lists.gnu.org/archive/html/emacs-orgmode/2017-03/msg00420.html. https://lists.gnu.org/archive/html/emacs-orgmode/2017-03/msg00420.html.
* lisp/org/org-src.el (org-src-font-lock-fontify-block): Reduce scope * lisp/org/org-src.el (org-src-font-lock-fontify-block): Reduce scope
of inhibit-modification-hooks let-binding. of inhibit-modification-hooks let-binding.
@ -19175,7 +19175,7 @@
Fix problem with out-of-date dependencies Fix problem with out-of-date dependencies
Problem reported by Robert Marshall in: Problem reported by Robert Marshall in:
http://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00501.html https://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00501.html
Although this problem has been with us for a while, the recent Although this problem has been with us for a while, the recent
change from Automake to GNU Make exposed it again. change from Automake to GNU Make exposed it again.
* configure.ac (AUTO_DEPEND): When autodepending, clean out any * configure.ac (AUTO_DEPEND): When autodepending, clean out any
@ -19405,7 +19405,7 @@
Port out-of-source builds to windows-nt Port out-of-source builds to windows-nt
Problem reported by Angelo Graziosi in: Problem reported by Angelo Graziosi in:
http://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00431.html https://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00431.html
* lib/Makefile.in: Prepend $(srcdir) to ../nt/gnulib-cfg.mk, * lib/Makefile.in: Prepend $(srcdir) to ../nt/gnulib-cfg.mk,
to handle out-of-source builds if windows-nt. to handle out-of-source builds if windows-nt.
@ -20082,7 +20082,7 @@
overlay, protect against that overlay's end point being outside of overlay, protect against that overlay's end point being outside of
the narrowed region. the narrowed region.
Reported by Filipe Silva <filipe.silva@gmail.com> in Reported by Filipe Silva <filipe.silva@gmail.com> in
http://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00176.html. https://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00176.html.
2017-03-10 Glenn Morris <rgm@gnu.org> 2017-03-10 Glenn Morris <rgm@gnu.org>
@ -20221,7 +20221,7 @@
min and max should not return markers min and max should not return markers
Problem reported by Glenn Morris in: Problem reported by Glenn Morris in:
http://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00147.html https://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00147.html
* src/data.c (minmax_driver): Convert any marker result to an * src/data.c (minmax_driver): Convert any marker result to an
integer, since some callers assume this. integer, since some callers assume this.
* test/src/data-tests.el (data-tests-max, data-tests-min): * test/src/data-tests.el (data-tests-max, data-tests-min):
@ -22803,9 +22803,9 @@
Make FOR_EACH_TAIL more like other FOR_EACH macros Make FOR_EACH_TAIL more like other FOR_EACH macros
See comments by Stefan Monnier in: See comments by Stefan Monnier in:
http://lists.gnu.org/archive/html/emacs-devel/2017-02/msg00181.html https://lists.gnu.org/archive/html/emacs-devel/2017-02/msg00181.html
and by Eli Zaretskii in: and by Eli Zaretskii in:
http://lists.gnu.org/archive/html/emacs-devel/2017-02/msg00207.html https://lists.gnu.org/archive/html/emacs-devel/2017-02/msg00207.html
* src/fns.c (internal_equal): Do not bypass check for depth * src/fns.c (internal_equal): Do not bypass check for depth
overflow when tail-recursing via a dotted list tail or an overlay overflow when tail-recursing via a dotted list tail or an overlay
plist, to avoid a rare infloop. plist, to avoid a rare infloop.
@ -23174,7 +23174,7 @@
* lisp/progmodes/xref.el (xref-collect-matches): Use '-E' * lisp/progmodes/xref.el (xref-collect-matches): Use '-E'
together with '-e', as suggested by Noam Postavsky together with '-e', as suggested by Noam Postavsky
(http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00780.html). (https://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00780.html).
2017-02-03 Paul Eggert <eggert@cs.ucla.edu> 2017-02-03 Paul Eggert <eggert@cs.ucla.edu>
@ -23301,7 +23301,7 @@
Fix quitting bug when buffers are frozen Fix quitting bug when buffers are frozen
Problem noted by Eli Zaretskii in: Problem noted by Eli Zaretskii in:
http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00721.html https://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00721.html
This patch also fixes some other issues in that report. This patch also fixes some other issues in that report.
* src/lisp.h (incr_rarely_quit): Remove. * src/lisp.h (incr_rarely_quit): Remove.
All callers changed to use rarely_quit directly. All callers changed to use rarely_quit directly.
@ -23319,7 +23319,7 @@
This fixes some infinite loops that cannot be quitted out of, This fixes some infinite loops that cannot be quitted out of,
e.g., (defun foo () (nth most-positive-fixnum '#1=(1 . #1#))) e.g., (defun foo () (nth most-positive-fixnum '#1=(1 . #1#)))
when byte-compiled and when run under X. See: when byte-compiled and when run under X. See:
http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00577.html https://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00577.html
This also attempts to keep the performance improvements I recently This also attempts to keep the performance improvements I recently
added, as much as possible under the constraint that the infloops added, as much as possible under the constraint that the infloops
must be caught. In some cases this fixes infloop bugs recently must be caught. In some cases this fixes infloop bugs recently
@ -23448,7 +23448,7 @@
* lisp/net/tramp.el (tramp-accept-process-output): Change argument * lisp/net/tramp.el (tramp-accept-process-output): Change argument
list. Make it work when called inside a timer. See list. Make it work when called inside a timer. See
<http://lists.gnu.org/archive/html/tramp-devel/2017-01/msg00010.html>. <https://lists.gnu.org/archive/html/tramp-devel/2017-01/msg00010.html>.
2017-01-31 Eli Zaretskii <eliz@gnu.org> 2017-01-31 Eli Zaretskii <eliz@gnu.org>
@ -23835,7 +23835,7 @@
* lisp/textmodes/reftex-vars.el (reftex-cite-format-builtin): Add * lisp/textmodes/reftex-vars.el (reftex-cite-format-builtin): Add
\citetitle[*] to `reftex-cite-format' and bind them to keys i/I \citetitle[*] to `reftex-cite-format' and bind them to keys i/I
per user request per user request
http://lists.gnu.org/archive/html/auctex/2017-01/msg00049.html. https://lists.gnu.org/archive/html/auctex/2017-01/msg00049.html.
2017-01-27 Lars Ingebrigtsen <larsi@gnus.org> 2017-01-27 Lars Ingebrigtsen <larsi@gnus.org>
@ -23872,7 +23872,7 @@
* lisp/shell.el (shell-mode): Use setq-local. Set * lisp/shell.el (shell-mode): Use setq-local. Set
scroll-conservatively to 101 locally. See the discussion at scroll-conservatively to 101 locally. See the discussion at
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00736.html https://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00736.html
for the reasons. for the reasons.
2017-01-27 Michael Hoffman <emacs-hoffman@sneakemail.com> (tiny change) 2017-01-27 Michael Hoffman <emacs-hoffman@sneakemail.com> (tiny change)
@ -24534,7 +24534,7 @@
* lisp/simple.el (region-bounds): New function. * lisp/simple.el (region-bounds): New function.
(region-noncontiguous-p): Use it. (region-noncontiguous-p): Use it.
http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00044.html https://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00044.html
2017-01-21 Alan Mackenzie <acm@muc.de> 2017-01-21 Alan Mackenzie <acm@muc.de>
@ -25369,7 +25369,7 @@
* lisp/textmodes/ispell.el (ispell-begin-skip-region-regexp): * lisp/textmodes/ispell.el (ispell-begin-skip-region-regexp):
Protect against 'ispell-skip-region-alist' being nil. Reported by Protect against 'ispell-skip-region-alist' being nil. Reported by
Ernest Adrogué <nfdisco@gmail.com>, see Ernest Adrogué <nfdisco@gmail.com>, see
http://lists.gnu.org/archive/html/help-gnu-emacs/2017-01/msg00007.html. https://lists.gnu.org/archive/html/help-gnu-emacs/2017-01/msg00007.html.
2017-01-06 Philipp Stephani <phst@google.com> 2017-01-06 Philipp Stephani <phst@google.com>
@ -25662,7 +25662,7 @@
Remove mistakenly-added files Remove mistakenly-added files
Problem reported by Glenn Morris in: Problem reported by Glenn Morris in:
http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00008.html https://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00008.html
* lisp/gnus/gnus-ems.el, lisp/gnus/gnus-sync.el: * lisp/gnus/gnus-ems.el, lisp/gnus/gnus-sync.el:
* lisp/gnus/messcompat.el, lisp/nxml/nxml-glyph.el: * lisp/gnus/messcompat.el, lisp/nxml/nxml-glyph.el:
* lisp/nxml/nxml-uchnm.el, lisp/obsolete/awk-mode.el: * lisp/nxml/nxml-uchnm.el, lisp/obsolete/awk-mode.el:
@ -25982,7 +25982,7 @@
This avoids the confusion of using two different phrases "main thread" This avoids the confusion of using two different phrases "main thread"
and "primary thread" internally to mean the same thing. See: and "primary thread" internally to mean the same thing. See:
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg01142.html https://lists.gnu.org/archive/html/emacs-devel/2016-12/msg01142.html
* src/thread.c (main_thread): Rename from primary_thread, * src/thread.c (main_thread): Rename from primary_thread,
since the new name no longer clashes with main_thread_id since the new name no longer clashes with main_thread_id
and Emacs internals normally call this the "main thread". and Emacs internals normally call this the "main thread".
@ -26175,7 +26175,7 @@
Simplify prog1 implementation Simplify prog1 implementation
Inspired by a suggestion from Chris Gregory in: Inspired by a suggestion from Chris Gregory in:
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00965.html https://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00965.html
On my platform, this generates exactly the same machine insns. On my platform, this generates exactly the same machine insns.
* src/eval.c (prog_ignore): Rename from unwind_body, since * src/eval.c (prog_ignore): Rename from unwind_body, since
its more general than that. All callers changed. its more general than that. All callers changed.
@ -26326,7 +26326,7 @@
This fixes a regression introduced in This fixes a regression introduced in
http://git.savannah.gnu.org/gitweb/?p=emacs.git;a=commit;h=2c8a7e50d24daf19ea7d86f1cfeaa98a41c56085 https://git.savannah.gnu.org/gitweb/?p=emacs.git;a=commit;h=2c8a7e50d24daf19ea7d86f1cfeaa98a41c56085
This bug was filed in This bug was filed in
@ -26585,7 +26585,7 @@
therefore don't need to be inserted into the red-black tree, so therefore don't need to be inserted into the red-black tree, so
mem_find will never find them. Reported by Daniel Colascione mem_find will never find them. Reported by Daniel Colascione
<dancol@dancol.org> in <dancol@dancol.org> in
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00817.html. https://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00817.html.
2016-12-21 Stefan Monnier <monnier@iro.umontreal.ca> 2016-12-21 Stefan Monnier <monnier@iro.umontreal.ca>
@ -26618,7 +26618,7 @@
Port dumping better to WSL Port dumping better to WSL
Problem reported by Angelo Graziosi in: Problem reported by Angelo Graziosi in:
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00822.html https://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00822.html
* src/sysdep.c (disable_address_randomization): * src/sysdep.c (disable_address_randomization):
Detect buggy platforms where 'personality' always returns 0. Detect buggy platforms where 'personality' always returns 0.
@ -26967,7 +26967,7 @@
needs to be, which then causes copy_executable_and_dump_data to needs to be, which then causes copy_executable_and_dump_data to
write beyond the requested size of the file mapping, thus relying write beyond the requested size of the file mapping, thus relying
on the OS roundup to page boundary to save us from ourselves. See on the OS roundup to page boundary to save us from ourselves. See
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00642.html https://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00642.html
for the details. for the details.
* lib/stdio-impl.h: Revert the workaround fix of not including * lib/stdio-impl.h: Revert the workaround fix of not including
@ -27501,7 +27501,7 @@
Use C99 syntax for font drivers Use C99 syntax for font drivers
Problem reported by Daniel Colascione in: Problem reported by Daniel Colascione in:
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00515.html https://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00515.html
* src/ftcrfont.c (ftcrfont_driver): * src/ftcrfont.c (ftcrfont_driver):
* src/ftfont.c (ftfont_driver): * src/ftfont.c (ftfont_driver):
* src/ftxfont.c (ftxfont_driver): * src/ftxfont.c (ftxfont_driver):
@ -28599,7 +28599,7 @@
http://trac.common-lisp.net/bordeaux-threads/wiki/ApiDocumentation http://trac.common-lisp.net/bordeaux-threads/wiki/ApiDocumentation
... but not identically. In particular I chose not to implement ... but not identically. In particular I chose not to implement
interrupt-thread or destroy-thread, but instead a thread-signalling interrupt-thread or destroy-thread, but instead a thread-signaling
approach. approach.
I'm still undecided about *default-special-bindings* (which I did not I'm still undecided about *default-special-bindings* (which I did not

View file

@ -114,7 +114,7 @@ Root must be the root of an Emacs source tree."
;; configure.ac with sed, rather than duplicating the information. ;; configure.ac with sed, rather than duplicating the information.
(set-version-in-file root "msdos/sed2v2.inp" version (set-version-in-file root "msdos/sed2v2.inp" version
(rx (and bol "/^#undef " (1+ not-newline) (rx (and bol "/^#undef " (1+ not-newline)
"define VERSION" (1+ space) "\"" "define PACKAGE_VERSION" (1+ space) "\""
(submatch (1+ (in "0-9.")))))) (submatch (1+ (in "0-9."))))))
;; Major version only. ;; Major version only.
(when (string-match "\\([0-9]\\{2,\\}\\)" version) (when (string-match "\\([0-9]\\{2,\\}\\)" version)

View file

@ -95,13 +95,16 @@ normal bug reporting.)
** When reporting a new bug, to send a Cc to another address ** When reporting a new bug, to send a Cc to another address
(e.g. bug-cc-mode@gnu.org), do NOT just use a Cc: header. (e.g. bug-cc-mode@gnu.org), do NOT just use a Cc: header.
Instead, use "X-Debbugs-CC:". This ensures the Cc address will get a Instead, use "X-Debbugs-CC:". This ensures the Cc address(es) will get a
mail with the bug report number in. If you do not do this, each reply mail with the bug report number in. If you do not do this, each reply
in the subsequent discussion might end up creating a new bug. in the subsequent discussion might end up creating a new bug.
This is annoying. (So annoying that a form of message-id tracking has This is annoying. (So annoying that a form of message-id tracking has
been implemented to hopefully stop this happening, but it is still been implemented to hopefully stop this happening, but it is still
better to use X-Debbugs-CC.) better to use X-Debbugs-CC.)
If you want to send copies to more than one address, add them
comma-separated in only one X-Debbugs-CC line.
Like any X-Debbugs- header, this one can also be specified in the Like any X-Debbugs- header, this one can also be specified in the
pseudo-header (see below), if your mail client does not let you add pseudo-header (see below), if your mail client does not let you add
"X-" headers. "X-" headers.

View file

@ -44,7 +44,7 @@ if test "$at_sign" != @; then
fi fi
# Check the log entry. # Check the log entry.
exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" ' exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" -v file="$1" '
BEGIN { BEGIN {
# These regular expressions assume traditional Unix unibyte behavior. # These regular expressions assume traditional Unix unibyte behavior.
# They are needed for old or broken versions of awk, e.g., # They are needed for old or broken versions of awk, e.g.,
@ -66,8 +66,12 @@ exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" '
non_print = "[^[:print:]]" non_print = "[^[:print:]]"
} }
} }
c_lower = "abcdefghijklmnopqrstuvwxyz"
unsafe_gnu_url = "(http|ftp)://([" c_lower ".]*\\.)?(gnu|fsf)\\.org"
} }
{ input[NR] = $0 }
/^#/ { /^#/ {
# Ignore every line after a scissors line. # Ignore every line after a scissors line.
if (/^# *---* *(>[8%]|[8%]<) *---* *$/) { exit } if (/^# *---* *(>[8%]|[8%]<) *---* *$/) { exit }
@ -125,6 +129,10 @@ exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" '
status = 1 status = 1
} }
$0 ~ unsafe_gnu_url {
needs_rewriting = 1
}
$0 ~ non_print { $0 ~ non_print {
print "Unprintable character in commit message" print "Unprintable character in commit message"
status = 1 status = 1
@ -135,6 +143,21 @@ exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" '
print "Empty commit message" print "Empty commit message"
status = 1 status = 1
} }
if (status == 0 && needs_rewriting) {
for (i = 1; i <= NR; i++) {
line = input[i]
while (match(line, unsafe_gnu_url)) {
prefix = substr(line, 1, RSTART - 1)
suffix = substr(line, RSTART)
line = prefix "https:" substr(suffix, 5 + (suffix ~ /^http:/))
}
print line >file
}
if (close(file) != 0) {
print "Cannot rewrite: " file
status = 1
}
}
if (status != 0) { if (status != 0) {
print "Commit aborted; please see the file 'CONTRIBUTE'" print "Commit aborted; please see the file 'CONTRIBUTE'"
} }

View file

@ -189,9 +189,6 @@ rm -f junk.c junk junk.exe
update config.h2 config.h >nul update config.h2 config.h >nul
rm -f config.tmp config.h2 rm -f config.tmp config.h2
rem On my system dir.h gets in the way. It's a VMS file so who cares.
if exist dir.h ren dir.h vmsdir.h
rem Create "makefile" from "makefile.in". rem Create "makefile" from "makefile.in".
rm -f Makefile makefile.tmp rm -f Makefile makefile.tmp
copy Makefile.in+deps.mk makefile.tmp copy Makefile.in+deps.mk makefile.tmp
@ -222,6 +219,10 @@ sed -e "/^LIBXML2_LIBS *=/s/=/= -lxml2 -lz -liconv/" <Makefile >makefile.tmp
sed -e "/^LIBXML2_CFLAGS *=/s|=|= -I/dev/env/DJDIR/include/libxml2|" <makefile.tmp >Makefile sed -e "/^LIBXML2_CFLAGS *=/s|=|= -I/dev/env/DJDIR/include/libxml2|" <makefile.tmp >Makefile
rm -f makefile.tmp rm -f makefile.tmp
:src7 :src7
Rem Create .d files for new files in src/
If Not Exist deps\stamp mkdir deps
for %%f in (*.c) do @call ..\msdos\depfiles.bat %%f
echo deps-stamp > deps\stamp
cd .. cd ..
rem ---------------------------------------------------------------------- rem ----------------------------------------------------------------------
Echo Configuring the library source directory... Echo Configuring the library source directory...
@ -273,6 +274,7 @@ Echo Configuring the lib directory...
If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h
cd lib cd lib
Rem Rename files like djtar on plain DOS filesystem would. Rem Rename files like djtar on plain DOS filesystem would.
If Exist c++defs.h update c++defs.h cxxdefs.h
If Exist alloca.in.h update alloca.in.h alloca.in-h If Exist alloca.in.h update alloca.in.h alloca.in-h
If Exist byteswap.in.h update byteswap.in.h byteswap.in-h If Exist byteswap.in.h update byteswap.in.h byteswap.in-h
If Exist dirent.in.h update dirent.in.h dirent.in-h If Exist dirent.in.h update dirent.in.h dirent.in-h
@ -280,12 +282,12 @@ If Exist errno.in.h update errno.in.h errno.in-h
If Exist execinfo.in.h update execinfo.in.h execinfo.in-h If Exist execinfo.in.h update execinfo.in.h execinfo.in-h
If Exist fcntl.in.h update fcntl.in.h fcntl.in-h If Exist fcntl.in.h update fcntl.in.h fcntl.in-h
If Exist getopt.in.h update getopt.in.h getopt.in-h If Exist getopt.in.h update getopt.in.h getopt.in-h
If Exist getopt-cdefs.in.h update getopt-cdefs.in.h getopt-cdefs.in-h
If Exist inttypes.in.h update inttypes.in.h inttypes.in-h If Exist inttypes.in.h update inttypes.in.h inttypes.in-h
If Exist stdarg.in.h update stdarg.in.h stdarg.in-h If Exist limits.in.h update limits.in.h limits.in-h
If Exist stdalign.in.h update stdalign.in.h stdalign.in-h
If Exist stdbool.in.h update stdbool.in.h stdbool.in-h
If Exist signal.in.h update signal.in.h signal.in-h If Exist signal.in.h update signal.in.h signal.in-h
If Exist stdalign.in.h update stdalign.in.h stdalign.in-h If Exist signal.in.h update signal.in.h signal.in-h
If Exist stdalign.in.h update stdalign.in.h stdalign.in-h
If Exist stddef.in.h update stddef.in.h stddef.in-h If Exist stddef.in.h update stddef.in.h stddef.in-h
If Exist stdint.in.h update stdint.in.h stdint.in-h If Exist stdint.in.h update stdint.in.h stdint.in-h
If Exist stdio.in.h update stdio.in.h stdio.in-h If Exist stdio.in.h update stdio.in.h stdio.in-h
@ -293,16 +295,20 @@ If Exist stdlib.in.h update stdlib.in.h stdlib.in-h
If Exist string.in.h update string.in.h string.in-h If Exist string.in.h update string.in.h string.in-h
If Exist sys_select.in.h update sys_select.in.h sys_select.in-h If Exist sys_select.in.h update sys_select.in.h sys_select.in-h
If Exist sys_stat.in.h update sys_stat.in.h sys_stat.in-h If Exist sys_stat.in.h update sys_stat.in.h sys_stat.in-h
If Exist sys_types.in.h update sys_types.in.h sys_types.in-h
If Exist sys_time.in.h update sys_time.in.h sys_time.in-h If Exist sys_time.in.h update sys_time.in.h sys_time.in-h
If Exist sys_types.in.h update sys_types.in.h sys_types.in-h
If Exist time.in.h update time.in.h time.in-h If Exist time.in.h update time.in.h time.in-h
If Exist unistd.in.h update unistd.in.h unistd.in-h If Exist unistd.in.h update unistd.in.h unistd.in-h
If Exist gnulib.mk.in update gnulib.mk.in gnulib.mk-in
Rem Only repository has the msdos/autogen directory Rem Only repository has the msdos/autogen directory
If Exist Makefile.in sed -f ../msdos/sedlibcf.inp < Makefile.in > makefile.tmp If Exist Makefile.in sed -f ../msdos/sedlibcf.inp < Makefile.in > makefile.tmp
If Exist ..\msdos\autogen\Makefile.in sed -f ../msdos/sedlibcf.inp < ..\msdos\autogen\Makefile.in > makefile.tmp If Exist ..\msdos\autogen\Makefile.in sed -f ../msdos/sedlibcf.inp < ..\msdos\autogen\Makefile.in > makefile.tmp
sed -f ../msdos/sedlibmk.inp < makefile.tmp > Makefile sed -f ../msdos/sedlibmk.inp < makefile.tmp > Makefile
rm -f makefile.tmp rm -f makefile.tmp
Rem Create .Po files for new files in lib/ sed -f ../msdos/sedlibcf.inp < gnulib.mk-in > gnulib.tmp
sed -f ../msdos/sedlibmk.inp < gnulib.tmp > gnulib.mk
rm -f gnulib.tmp
Rem Create .d files for new files in lib/
If Not Exist deps\stamp mkdir deps If Not Exist deps\stamp mkdir deps
for %%f in (*.c) do @call ..\msdos\depfiles.bat %%f for %%f in (*.c) do @call ..\msdos\depfiles.bat %%f
echo deps-stamp > deps\stamp echo deps-stamp > deps\stamp

View file

@ -2050,13 +2050,17 @@ calculations.
@defun line-number-display-width &optional pixelwise @defun line-number-display-width &optional pixelwise
This function returns the width used for displaying the line numbers This function returns the width used for displaying the line numbers
in the selected window. Optional argument @var{pixelwise}, if in the selected window. If the optional argument @var{pixelwise} is
non-@code{nil}, means return the value in pixels; otherwise the value the symbol @code{columns}, the return value is a float number of the
is returned in column units of the font defined for the frame's canonical columns; if @var{pixelwise} is @code{t} or any other
@code{line-number} face. If line numbers are not displayed in the non-@code{nil} value, the value is an integer and is measured in
selected window, the value is zero. Use @code{with-selected-window} pixels. If @var{pixelwise} is omitted or @code{nil}, the value is the
(@pxref{Selecting Windows}) if you need this information about another integer number of columns of the font defined for the
window. @code{line-number} face, and doesn't include the 2 columns used to pad
the numbers on display. If line numbers are not displayed in the
selected window, the value is zero regardless of the value of
@var{pixelwise}. Use @code{with-selected-window} (@pxref{Selecting
Windows}) if you need this information about another window.
@end defun @end defun
@ -4635,7 +4639,7 @@ as an absolute number of pixels.
@smallexample @smallexample
@group @group
@var{expr} ::= @var{num} | (@var{num}) | @var{unit} | @var{elem} | @var{pos} | @var{image} | @var{form} @var{expr} ::= @var{num} | (@var{num}) | @var{unit} | @var{elem} | @var{pos} | @var{image} | @var{xwidget} | @var{form}
@var{num} ::= @var{integer} | @var{float} | @var{symbol} @var{num} ::= @var{integer} | @var{float} | @var{symbol}
@var{unit} ::= in | mm | cm | width | height @var{unit} ::= in | mm | cm | width | height
@end group @end group
@ -4651,22 +4655,34 @@ as an absolute number of pixels.
The form @var{num} specifies a fraction of the default frame font The form @var{num} specifies a fraction of the default frame font
height or width. The form @code{(@var{num})} specifies an absolute height or width. The form @code{(@var{num})} specifies an absolute
number of pixels. If @var{num} is a symbol, @var{symbol}, its number of pixels. If @var{num} is a symbol, @var{symbol}, its
buffer-local variable binding is used. buffer-local variable binding is used; that binding can be either a
number or a cons cell of the forms shown above (including yet another
cons cell whose @code{car} is a symbol that has a buffer-local
binding).
The @code{in}, @code{mm}, and @code{cm} units specify the number of The @code{in}, @code{mm}, and @code{cm} units specify the number of
pixels per inch, millimeter, and centimeter, respectively. The pixels per inch, millimeter, and centimeter, respectively. The
@code{width} and @code{height} units correspond to the default width @code{width} and @code{height} units correspond to the default width
and height of the current face. An image specification @code{image} and height of the current face. An image specification of the form
corresponds to the width or height of the image. @w{@code{(image . @var{props})}} (@pxref{Image Descriptors})
corresponds to the width or height of the specified image. Similarly,
an xwidget specification of the form @w{@code{(xwidget . @var{props})}}
stands for the width or height of the specified xwidget.
@xref{Xwidgets}.
The elements @code{left-fringe}, @code{right-fringe}, The elements @code{left-fringe}, @code{right-fringe},
@code{left-margin}, @code{right-margin}, @code{scroll-bar}, and @code{left-margin}, @code{right-margin}, @code{scroll-bar}, and
@code{text} specify to the width of the corresponding area of the @code{text} specify the width of the corresponding area of the window.
window. When the window displays line numbers (@pxref{Size of Displayed
Text}), the width of the @code{text} area is decreased by the screen
space taken by the line-number display.
The @code{left}, @code{center}, and @code{right} positions can be The @code{left}, @code{center}, and @code{right} positions can be
used with @code{:align-to} to specify a position relative to the left used with @code{:align-to} to specify a position relative to the left
edge, center, or right edge of the text area. edge, center, or right edge of the text area. When the window
displays line numbers, the @code{left} and the @code{center} positions
are offset to account for the screen space taken by the line-number
display.
Any of the above window elements (except @code{text}) can also be Any of the above window elements (except @code{text}) can also be
used with @code{:align-to} to specify that the position is relative to used with @code{:align-to} to specify that the position is relative to
@ -4682,13 +4698,15 @@ the left-margin, use
If no specific base offset is set for alignment, it is always relative If no specific base offset is set for alignment, it is always relative
to the left edge of the text area. For example, @samp{:align-to 0} in a to the left edge of the text area. For example, @samp{:align-to 0} in a
header-line aligns with the first text column in the text area. header-line aligns with the first text column in the text area. When
the window displays line numbers, the text is considered to start where
the space used for line-number display ends.
A value of the form @code{(@var{num} . @var{expr})} stands for the A value of the form @code{(@var{num} . @var{expr})} stands for the
product of the values of @var{num} and @var{expr}. For example, product of the values of @var{num} and @var{expr}. For example,
@code{(2 . in)} specifies a width of 2 inches, while @code{(0.5 . @code{(2 . in)} specifies a width of 2 inches, while @code{(0.5 .
@var{image})} specifies half the width (or height) of the specified @var{image})} specifies half the width (or height) of the specified
image. @var{image} (which should be given by its image spec).
The form @code{(+ @var{expr} ...)} adds up the value of the The form @code{(+ @var{expr} ...)} adds up the value of the
expressions. The form @code{(- @var{expr} ...)} negates or subtracts expressions. The form @code{(- @var{expr} ...)} negates or subtracts

View file

@ -3202,7 +3202,7 @@ a number of other ways as well. Here we sketch a few of them:
@item @item
The semantics of maximizing and iconifying child frames is highly The semantics of maximizing and iconifying child frames is highly
window-system dependent. As a rule, applications should never invoke window-system dependent. As a rule, applications should never invoke
these operations for on frames. By default, invoking these operations on child frames. By default, invoking
@code{iconify-frame} on a child frame will try to iconify the top-level @code{iconify-frame} on a child frame will try to iconify the top-level
frame corresponding to that child frame instead. To obtain a different frame corresponding to that child frame instead. To obtain a different
behavior, users may customize the option @code{iconify-child-frame} behavior, users may customize the option @code{iconify-child-frame}

View file

@ -1486,8 +1486,8 @@ This stands for the full name of the month.
@item %c @item %c
This is a synonym for @samp{%x %X}. This is a synonym for @samp{%x %X}.
@item %C @item %C
This has a locale-specific meaning. In the default locale (named C), it This stands for the century, that is, the year divided by 100,
is equivalent to @samp{%A, %B %e, %Y}. truncated toward zero.
@item %d @item %d
This stands for the day of month, zero-padded. This stands for the day of month, zero-padded.
@item %D @item %D
@ -1530,8 +1530,11 @@ This stands for the calendar quarter (1--4).
This is a synonym for @samp{%I:%M:%S %p}. This is a synonym for @samp{%I:%M:%S %p}.
@item %R @item %R
This is a synonym for @samp{%H:%M}. This is a synonym for @samp{%H:%M}.
@item %s
This stands for the integer number of seconds since the epoch.
@item %S @item %S
This stands for the seconds (00--59). This stands for the second (00--59, or 00--60 on platforms
that support leap seconds).
@item %t @item %t
This stands for a tab character. This stands for a tab character.
@item %T @item %T
@ -1561,22 +1564,31 @@ This stands for the year with century.
@item %Z @item %Z
This stands for the time zone abbreviation (e.g., @samp{EST}). This stands for the time zone abbreviation (e.g., @samp{EST}).
@item %z @item %z
This stands for the time zone numerical offset (e.g., @samp{-0500}). This stands for the time zone numerical offset. The @samp{z} can be
preceded by one, two, or three colons; if plain @samp{%z} stands for
@samp{-0500}, then @samp{%:z} stands for @samp{-05:00}, @samp{%::z}
stands for @samp{-05:00:00}, and @samp{%:::z} is like @samp{%::z}
except it suppresses trailing instances of @samp{:00} so it stands for
@samp{-05} in the same example.
@item %%
This stands for a single @samp{%}.
@end table @end table
One or more flag characters can appear immediately after the @samp{%}.
@samp{0} pads with zeros, @samp{_} pads with blanks, @samp{-}
suppresses padding, @samp{^} upper-cases letters, and @samp{#}
reverses the case of letters.
You can also specify the field width and type of padding for any of You can also specify the field width and type of padding for any of
these @samp{%}-sequences. This works as in @code{printf}: you write these @samp{%}-sequences. This works as in @code{printf}: you write
the field width as digits in the middle of a @samp{%}-sequences. If you the field width as digits in a @samp{%}-sequence, after any flags.
start the field width with @samp{0}, it means to pad with zeros. If you
start the field width with @samp{_}, it means to pad with spaces.
For example, @samp{%S} specifies the number of seconds since the minute; For example, @samp{%S} specifies the number of seconds since the minute;
@samp{%03S} means to pad this with zeros to 3 positions, @samp{%_3S} to @samp{%03S} means to pad this with zeros to 3 positions, @samp{%_3S} to
pad with spaces to 3 positions. Plain @samp{%3S} pads with zeros, pad with spaces to 3 positions. Plain @samp{%3S} pads with zeros,
because that is how @samp{%S} normally pads to two positions. because that is how @samp{%S} normally pads to two positions.
The characters @samp{E} and @samp{O} act as modifiers when used between The characters @samp{E} and @samp{O} act as modifiers when used after
@samp{%} and one of the letters in the table above. @samp{E} specifies any flags and field widths in a @samp{%}-sequence. @samp{E} specifies
using the current locale's alternative version of the date and time. using the current locale's alternative version of the date and time.
In a Japanese locale, for example, @code{%Ex} might yield a date format In a Japanese locale, for example, @code{%Ex} might yield a date format
based on the Japanese Emperors' reigns. @samp{E} is allowed in based on the Japanese Emperors' reigns. @samp{E} is allowed in
@ -1587,6 +1599,11 @@ based on the Japanese Emperors' reigns. @samp{E} is allowed in
representation of numbers, instead of the ordinary decimal digits. This representation of numbers, instead of the ordinary decimal digits. This
is allowed with most letters, all the ones that output numbers. is allowed with most letters, all the ones that output numbers.
To help debug programs, unrecognized @samp{%}-sequences stand for
themselves and are output as-is. Programs should not rely on this
behavior, as future versions of Emacs may recognize new
@samp{%}-sequences as extensions.
This function uses the C library function @code{strftime} This function uses the C library function @code{strftime}
(@pxref{Formatting Calendar Time,,, libc, The GNU C Library Reference (@pxref{Formatting Calendar Time,,, libc, The GNU C Library Reference
Manual}) to do most of the work. In order to communicate with that Manual}) to do most of the work. In order to communicate with that

View file

@ -361,34 +361,38 @@ priority but without an overlay face.
(flymake-category . flymake-note)))) (flymake-category . flymake-note))))
@end example @end example
@vindex flymake-text @vindex flymake-diagnostics
@vindex flymake-diagnostic-backend
@vindex flymake-diagnostic-buffer
@vindex flymake-diagnostic-text
@vindex flymake-diagnostic-beg
@vindex flymake-diagnostic-end
As you might have guessed, Flymake's annotations are implemented as As you might have guessed, Flymake's annotations are implemented as
overlays (@pxref{Overlays,,, elisp, The Emacs Lisp Reference Manual}). overlays (@pxref{Overlays,,, elisp, The Emacs Lisp Reference Manual}).
Along with the properties that you specify for the specific type of Along with the properties that you specify for the specific type of
diagnostic, Flymake adds the property @code{flymake-text} to these diagnostic, Flymake adds the property @code{flymake-diagnostic} to
overlays, and sets it to the message string that the backend used to these overlays, and sets it to the object that the backend created
describe the diagnostic. with @code{flymake-make-diagnostic}.
Since overlays also support arbitrary keymaps, you can use this Since overlays also support arbitrary keymaps, you can use this along
property @code{flymake-text} to create interactive annotations, such with the functions @code{flymake-diagnostics} and
as in the following example of binding a @kbd{mouse-3} event (middle @code{flymake-diagnostic-text} (@pxref{Flymake utility functions}) to
mouse button click) to an Internet search for the text of a create interactive annotations, such as in the following example of
@code{:warning} or @code{:error}. binding a @code{mouse-3} event (middle mouse button click) to an
Internet search for the text of a @code{:warning} or @code{:error}.
@example @example
(defun my-search-for-message (event) (defun my-search-for-message (event)
(interactive "e") (interactive "e")
(let ((ovs (overlays-at (posn-point (event-start event)))) (let* ((diags (flymake-diagnostics (posn-point (event-start event))))
ov) (topmost-diag (car diags)))
;; loop until flymake overlay we clicked on is recovered (eww-browse-url
(while (not (overlay-get (setq ov (pop ovs)) 'flymake-text))) (concat
(when ov "https://duckduckgo.com/?q="
(eww-browse-url (replace-regexp-in-string " "
(concat "https://duckduckgo.com/?q=" "+"
(replace-regexp-in-string " " (flymake-diagnostic-text topmost-diag)))
"+" t)))
(overlay-get ov 'flymake-text)))
t))))
(dolist (type '(:warning :error)) (dolist (type '(:warning :error))
(let ((a (assoc type flymake-diagnostic-types-alist))) (let ((a (assoc type flymake-diagnostic-types-alist)))
@ -513,6 +517,24 @@ Make a Flymake diagnostic for @var{buffer}'s region from @var{beg} to
of the problem detected in this region. of the problem detected in this region.
@end deffn @end deffn
@cindex access diagnostic object
These objects' properties can be accessed with the functions
@code{flymake-diagnostic-backend}, @code{flymake-diagnostic-buffer},
@code{flymake-diagnostic-text}, @code{flymake-diagnostic-beg},
@code{flymake-diagnostic-end} and @code{flymake-diagnostic-type}.
Additionally, the function @code{flymake-diagnostics} will collect
such objects in the region you specify.
@cindex collect diagnostic objects
@deffn Function flymake-diagnostics beg end
Get a list of Flymake diagnostics in the region determined by
@var{beg} and @var{end}. If neither @var{beg} or @var{end} is
supplied, use the whole buffer, otherwise if @var{beg} is
non-@code{nil} and @var{end} is @code{nil}, consider only diagnostics
at @var{beg}.
@end deffn
@cindex buffer position from line and column number @cindex buffer position from line and column number
It is often the case with external syntax tools that a diagnostic's It is often the case with external syntax tools that a diagnostic's
position is reported in terms of a line number, and sometimes a column position is reported in terms of a line number, and sometimes a column
@ -520,9 +542,10 @@ number. To convert this information into a buffer position, backends
can use the following function: can use the following function:
@deffn Function flymake-diag-region buffer line &optional col @deffn Function flymake-diag-region buffer line &optional col
Compute @var{buffer}'s region (@var{beg} . @var{end}) corresponding to Compute @var{buffer}'s region (@var{beg} . @var{end}) corresponding
@var{line} and @var{col}. If @var{col} is nil, return a region just to @var{line} and @var{col}. If @var{col} is @code{nil}, return a
for @var{line}. Return nil if the region is invalid. region just for @var{line}. Return @code{nil} if the region is
invalid.
@end deffn @end deffn
@cindex add a log message @cindex add a log message
@ -560,7 +583,7 @@ Binding,,, elisp, The Emacs Lisp Reference Manual}) to be active.
(defun ruby-flymake (report-fn &rest _args) (defun ruby-flymake (report-fn &rest _args)
;; Not having a ruby interpreter is a serious problem which should cause ;; Not having a ruby interpreter is a serious problem which should cause
;; the backend to disable itself, so an @code{error} is signalled. ;; the backend to disable itself, so an @code{error} is signaled.
;; ;;
(unless (executable-find (unless (executable-find
"ruby") (error "Cannot find a suitable ruby")) "ruby") (error "Cannot find a suitable ruby"))
@ -600,7 +623,7 @@ Binding,,, elisp, The Emacs Lisp Reference Manual}) to be active.
;; `ruby--flymake-proc', which indicates that ;; `ruby--flymake-proc', which indicates that
;; `proc' is not an obsolete process. ;; `proc' is not an obsolete process.
;; ;;
(if (eq proc ruby--flymake-proc) (if (with-current-buffer source (eq proc ruby--flymake-proc))
(with-current-buffer (process-buffer proc) (with-current-buffer (process-buffer proc)
(goto-char (point-min)) (goto-char (point-min))
;; Parse the output buffer for diagnostic's ;; Parse the output buffer for diagnostic's
@ -625,7 +648,7 @@ Binding,,, elisp, The Emacs Lisp Reference Manual}) to be active.
msg) msg)
into diags into diags
finally (funcall report-fn diags))) finally (funcall report-fn diags)))
(flymake-log :warning "Cancelling obsolete check %s" (flymake-log :warning "Canceling obsolete check %s"
proc)) proc))
;; Cleanup the temporary buffer used to hold the ;; Cleanup the temporary buffer used to hold the
;; check's output. ;; check's output.

View file

@ -712,7 +712,9 @@ CLOS class and slot documentation.
*** Rectangle Mark mode can have corners past EOL or in the middle of a TAB. *** Rectangle Mark mode can have corners past EOL or in the middle of a TAB.
*** 'C-x C-x' in 'rectangle-mark-mode' now cycles through the four corners. *** 'C-x C-x' in 'rectangle-mark-mode' now cycles through the four corners.
*** 'string-rectangle' provides on-the-fly preview of the result. *** 'string-rectangle' provides on-the-fly preview of the result.
Customize 'rectangle-preview' to nil for the old behavior.
** New font-lock functions 'font-lock-ensure' and 'font-lock-flush'. ** New font-lock functions 'font-lock-ensure' and 'font-lock-flush'.
These should be used in preference to 'font-lock-fontify-buffer' when These should be used in preference to 'font-lock-fontify-buffer' when

View file

@ -5643,7 +5643,7 @@
1998-04-06 Andreas Schwab <schwab@gnu.org> 1998-04-06 Andreas Schwab <schwab@gnu.org>
Silence -Wimplicit: Silence -Wimplicit:
* movemail.c: Move cancelations up. Include <stdlib.h> if * movemail.c: Move cancellations up. Include <stdlib.h> if
available. available.
* fakemail.c (_XOPEN_SOURCE): Define for declaration of cuserid. * fakemail.c (_XOPEN_SOURCE): Define for declaration of cuserid.
(parse_header): Explicitly declare return type. (parse_header): Explicitly declare return type.

View file

@ -1530,7 +1530,7 @@ process_file_name (char *file, language *lang)
fdesc *fdp; fdesc *fdp;
compressor *compr; compressor *compr;
char *compressed_name, *uncompressed_name; char *compressed_name, *uncompressed_name;
char *ext, *real_name UNINIT, *tmp_name; char *ext, *real_name UNINIT, *tmp_name UNINIT;
int retval; int retval;
canonicalize_filename (file); canonicalize_filename (file);

View file

@ -347,7 +347,7 @@ Only works for tags in the global namespace."
(push-mark) (push-mark)
(semantic-go-to-tag target) (semantic-go-to-tag target)
(switch-to-buffer (current-buffer)) (pop-to-buffer-same-window (current-buffer))
(semantic-momentary-highlight-tag target)) (semantic-momentary-highlight-tag target))
) )

View file

@ -2120,7 +2120,7 @@ completion works."
(when (semantic-tag-p tag) (when (semantic-tag-p tag)
(push-mark) (push-mark)
(semantic-go-to-tag tag) (semantic-go-to-tag tag)
(switch-to-buffer (current-buffer)) (pop-to-buffer-same-window (current-buffer))
(semantic-momentary-highlight-tag tag) (semantic-momentary-highlight-tag tag)
(message "%S: %s " (message "%S: %s "
(semantic-tag-class tag) (semantic-tag-class tag)

View file

@ -467,7 +467,7 @@ its contents.
(error "Could not location include %s" (error "Could not location include %s"
(semantic-tag-name tag))) (semantic-tag-name tag)))
((get-file-buffer file) ((get-file-buffer file)
(switch-to-buffer (get-file-buffer file))) (pop-to-buffer-same-window (get-file-buffer file)))
((stringp file) ((stringp file)
(find-file file)) (find-file file))
)))) ))))

View file

@ -113,7 +113,7 @@ Uses `semantic-go-to-tag' and highlighting."
(forward-char o)) (forward-char o))
(error nil)) (error nil))
;; make it visible ;; make it visible
(switch-to-buffer (current-buffer)) (pop-to-buffer-same-window (current-buffer))
(semantic-momentary-highlight-tag tag) (semantic-momentary-highlight-tag tag)
)) ))

View file

@ -530,11 +530,11 @@ Some tags such as includes have other reference features."
;; A tag ;; A tag
((semantic-tag-p result) ((semantic-tag-p result)
(semantic-go-to-tag result) (semantic-go-to-tag result)
(switch-to-buffer (current-buffer)) (pop-to-buffer-same-window (current-buffer))
(semantic-momentary-highlight-tag result)) (semantic-momentary-highlight-tag result))
;; Buffers ;; Buffers
((bufferp result) ((bufferp result)
(switch-to-buffer result) (pop-to-buffer-same-window result)
(pulse-momentary-highlight-one-line (point))) (pulse-momentary-highlight-one-line (point)))
;; Files ;; Files
((and (stringp result) (file-exists-p result)) ((and (stringp result) (file-exists-p result))

View file

@ -1985,6 +1985,7 @@ Optional arg HOW-TO determines how to treat the target.
;;;###autoload ;;;###autoload
(defun dired-create-directory (directory) (defun dired-create-directory (directory)
"Create a directory called DIRECTORY. "Create a directory called DIRECTORY.
Parent directories of DIRECTORY are created as needed.
If DIRECTORY already exists, signal an error." If DIRECTORY already exists, signal an error."
(interactive (interactive
(list (read-file-name "Create directory: " (dired-current-directory)))) (list (read-file-name "Create directory: " (dired-current-directory))))

View file

@ -193,20 +193,34 @@ The name is made by appending a number to PREFIX, default \"T\"."
(&or lambda-doc cl-declarations)) (&or lambda-doc cl-declarations))
(def-edebug-spec cl-lambda-list (def-edebug-spec cl-lambda-list
(([&rest arg] (([&rest cl-lambda-arg]
[&optional ["&optional" cl-&optional-arg &rest cl-&optional-arg]] [&optional ["&optional" cl-&optional-arg &rest cl-&optional-arg]]
[&optional ["&rest" arg]] [&optional ["&rest" cl-lambda-arg]]
[&optional ["&key" [cl-&key-arg &rest cl-&key-arg] [&optional ["&key" [cl-&key-arg &rest cl-&key-arg]
&optional "&allow-other-keys"]] &optional "&allow-other-keys"]]
[&optional ["&aux" &rest [&optional ["&aux" &rest
&or (symbolp &optional def-form) symbolp]] &or (symbolp &optional def-form) symbolp]]
))) . [&or arg nil])))
(def-edebug-spec cl-&optional-arg (def-edebug-spec cl-&optional-arg
(&or (arg &optional def-form arg) arg)) (&or (cl-lambda-arg &optional def-form arg) arg))
(def-edebug-spec cl-&key-arg (def-edebug-spec cl-&key-arg
(&or ([&or (symbolp arg) arg] &optional def-form arg) arg)) (&or ([&or (symbolp cl-lambda-arg) arg] &optional def-form arg) arg))
(def-edebug-spec cl-lambda-arg
(&or arg cl-lambda-list1))
(def-edebug-spec cl-lambda-list1
(([&optional ["&whole" arg]] ;; only allowed at lower levels
[&rest cl-lambda-arg]
[&optional ["&optional" cl-&optional-arg &rest cl-&optional-arg]]
[&optional ["&rest" cl-lambda-arg]]
[&optional ["&key" cl-&key-arg &rest cl-&key-arg
&optional "&allow-other-keys"]]
[&optional ["&aux" &rest
&or (symbolp &optional def-form) symbolp]]
. [&or arg nil])))
(def-edebug-spec cl-type-spec sexp) (def-edebug-spec cl-type-spec sexp)
@ -336,8 +350,8 @@ The full form of a Common Lisp function argument list is
[&key (([KEYWORD] VAR) [INITFORM [SVAR]])... [&allow-other-keys]] [&key (([KEYWORD] VAR) [INITFORM [SVAR]])... [&allow-other-keys]]
[&aux (VAR [INITFORM])...]) [&aux (VAR [INITFORM])...])
VAR maybe be replaced recursively with an argument list for VAR may be replaced recursively with an argument list for
destructing, `&whole' is supported within these sublists. If destructuring, `&whole' is supported within these sublists. If
SVAR, INITFORM, and KEYWORD are all omitted, then `(VAR)' may be SVAR, INITFORM, and KEYWORD are all omitted, then `(VAR)' may be
written simply `VAR'. See the Info node `(cl)Argument Lists' for written simply `VAR'. See the Info node `(cl)Argument Lists' for
more details. more details.
@ -430,8 +444,8 @@ The full form of a Common Lisp macro argument list is
[&aux (VAR [INITFORM])...] [&aux (VAR [INITFORM])...]
[&environment VAR]) [&environment VAR])
VAR maybe be replaced recursively with an argument list for VAR may be replaced recursively with an argument list for
destructing, `&whole' is supported within these sublists. If destructuring, `&whole' is supported within these sublists. If
SVAR, INITFORM, and KEYWORD are all omitted, then `(VAR)' may be SVAR, INITFORM, and KEYWORD are all omitted, then `(VAR)' may be
written simply `VAR'. See the Info node `(cl)Argument Lists' for written simply `VAR'. See the Info node `(cl)Argument Lists' for
more details. more details.

View file

@ -253,7 +253,9 @@ first will be printed into the backtrace buffer."
;; Unshow debugger-buffer. ;; Unshow debugger-buffer.
(quit-restore-window debugger-window debugger-bury-or-kill) (quit-restore-window debugger-window debugger-bury-or-kill)
;; Restore current buffer (Bug#12502). ;; Restore current buffer (Bug#12502).
(set-buffer debugger-old-buffer)))) (set-buffer debugger-old-buffer)))
;; Forget debugger window, it won't be back (Bug#17882).
(setq debugger-previous-window nil))
;; Restore previous state of debugger-buffer in case we were ;; Restore previous state of debugger-buffer in case we were
;; in a recursive invocation of the debugger, otherwise just ;; in a recursive invocation of the debugger, otherwise just
;; erase the buffer and put it into fundamental mode. ;; erase the buffer and put it into fundamental mode.

View file

@ -1625,7 +1625,7 @@ default (if any)."
(defun ert-find-test-other-window (test-name) (defun ert-find-test-other-window (test-name)
"Find, in another window, the definition of TEST-NAME." "Find, in another window, the definition of TEST-NAME."
(interactive (list (ert-read-test-name-at-point "Find test definition: "))) (interactive (list (ert-read-test-name-at-point "Find test definition: ")))
(find-function-do-it test-name 'ert-deftest 'switch-to-buffer-other-window)) (find-function-do-it test-name 'ert--test 'switch-to-buffer-other-window))
(defun ert-delete-test (test-name) (defun ert-delete-test (test-name)
"Make the test TEST-NAME unbound. "Make the test TEST-NAME unbound.
@ -2594,7 +2594,7 @@ To be used in the ERT results buffer."
;;; Actions on load/unload. ;;; Actions on load/unload.
(add-to-list 'find-function-regexp-alist '(ert-deftest . ert--find-test-regexp)) (add-to-list 'find-function-regexp-alist '(ert--test . ert--find-test-regexp))
(add-to-list 'minor-mode-alist '(ert--current-run-stats (add-to-list 'minor-mode-alist '(ert--current-run-stats
(:eval (:eval
(ert--tests-running-mode-line-indicator)))) (ert--tests-running-mode-line-indicator))))

View file

@ -17,7 +17,7 @@
;; GNU General Public License for more details. ;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License ;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary: ;;; Commentary:

View file

@ -193,10 +193,10 @@ Populated by `tabulated-list-init-header'.")
;; is displayed. ;; is displayed.
(if (not display-line-numbers) (if (not display-line-numbers)
0 0
(let ((cbuf-window (get-buffer-window (current-buffer)))) (let ((cbuf-window (get-buffer-window (current-buffer) t)))
(if (window-live-p cbuf-window) (if (window-live-p cbuf-window)
(with-selected-window cbuf-window (with-selected-window cbuf-window
(+ (line-number-display-width) 2)) (line-number-display-width 'columns))
4)))) 4))))
(defun tabulated-list-init-header () (defun tabulated-list-init-header ()
@ -329,8 +329,6 @@ Check the current row, the previous one and the next row."
(string-width (if (stringp nt) nt (car nt))))) (string-width (if (stringp nt) nt (car nt)))))
tabulated-list--near-rows))) tabulated-list--near-rows)))
(defvar tabulated-list-entry-lnum-width nil)
(defun tabulated-list-print (&optional remember-pos update) (defun tabulated-list-print (&optional remember-pos update)
"Populate the current Tabulated List mode buffer. "Populate the current Tabulated List mode buffer.
This sorts the `tabulated-list-entries' list if sorting is This sorts the `tabulated-list-entries' list if sorting is
@ -373,7 +371,6 @@ changing `tabulated-list-sort-key'."
(unless tabulated-list-use-header-line (unless tabulated-list-use-header-line
(tabulated-list-print-fake-header))) (tabulated-list-print-fake-header)))
;; Finally, print the resulting list. ;; Finally, print the resulting list.
(setq tabulated-list-entry-lnum-width (tabulated-list-line-number-width))
(while entries (while entries
(let* ((elt (car entries)) (let* ((elt (car entries))
(tabulated-list--near-rows (tabulated-list--near-rows
@ -428,9 +425,8 @@ of column descriptors."
(x (max tabulated-list-padding 0)) (x (max tabulated-list-padding 0))
(ncols (length tabulated-list-format)) (ncols (length tabulated-list-format))
(inhibit-read-only t)) (inhibit-read-only t))
(setq x (+ x tabulated-list-entry-lnum-width))
(if (> tabulated-list-padding 0) (if (> tabulated-list-padding 0)
(insert (make-string (- x tabulated-list-entry-lnum-width) ?\s))) (insert (make-string x ?\s)))
(let ((tabulated-list--near-rows ; Bind it if not bound yet (Bug#25506). (let ((tabulated-list--near-rows ; Bind it if not bound yet (Bug#25506).
(or (bound-and-true-p tabulated-list--near-rows) (or (bound-and-true-p tabulated-list--near-rows)
(list (or (tabulated-list-get-entry (point-at-bol 0)) (list (or (tabulated-list-get-entry (point-at-bol 0))
@ -601,6 +597,14 @@ With a numeric prefix argument N, sort the Nth column."
(tabulated-list-init-header) (tabulated-list-init-header)
(tabulated-list-print t))) (tabulated-list-print t)))
(defvar tabulated-list--current-lnum-width nil)
(defun tabulated-list-watch-line-number-width (_window)
(if display-line-numbers
(let ((lnum-width (tabulated-list-line-number-width)))
(when (not (= tabulated-list--current-lnum-width lnum-width))
(setq-local tabulated-list--current-lnum-width lnum-width)
(tabulated-list-revert)))))
;;; The mode definition: ;;; The mode definition:
(define-derived-mode tabulated-list-mode special-mode "Tabulated" (define-derived-mode tabulated-list-mode special-mode "Tabulated"
@ -645,7 +649,12 @@ as the ewoc pretty-printer."
;; column of the first entry happens to begin with a R2L letter. ;; column of the first entry happens to begin with a R2L letter.
(setq bidi-paragraph-direction 'left-to-right) (setq bidi-paragraph-direction 'left-to-right)
;; This is for if/when they turn on display-line-numbers ;; This is for if/when they turn on display-line-numbers
(add-hook 'display-line-numbers-mode-hook #'tabulated-list-revert nil t)) (add-hook 'display-line-numbers-mode-hook #'tabulated-list-revert nil t)
;; This is for if/when they customize the line-number face or when
;; the line-number width needs to change due to scrolling.
(setq-local tabulated-list--current-lnum-width 0)
(add-hook 'pre-redisplay-functions
#'tabulated-list-watch-line-number-width nil t))
(put 'tabulated-list-mode 'mode-class 'special) (put 'tabulated-list-mode 'mode-class 'special)

View file

@ -892,7 +892,8 @@ Calls `suspend-emacs' if invoked from the controlling tty device,
(defvar frame-name-history nil) (defvar frame-name-history nil)
(defun select-frame-by-name (name) (defun select-frame-by-name (name)
"Select the frame on the current terminal whose name is NAME and raise it. "Select the frame whose name is NAME and raise it.
Frames on the current terminal are checked first.
If there is no frame by that name, signal an error." If there is no frame by that name, signal an error."
(interactive (interactive
(let* ((frame-names-alist (make-frame-names-alist)) (let* ((frame-names-alist (make-frame-names-alist))
@ -903,11 +904,14 @@ If there is no frame by that name, signal an error."
(if (= (length input) 0) (if (= (length input) 0)
(list default) (list default)
(list input)))) (list input))))
(let* ((frame-names-alist (make-frame-names-alist)) (select-frame-set-input-focus
(frame (cdr (assoc name frame-names-alist)))) ;; Prefer frames on the current display.
(if frame (or (cdr (assoc name (make-frame-names-alist)))
(select-frame-set-input-focus frame) (catch 'done
(error "There is no frame named `%s'" name)))) (dolist (frame (frame-list))
(when (equal (frame-parameter frame 'name) name)
(throw 'done frame))))
(error "There is no frame named `%s'" name))))
;;;; Background mode. ;;;; Background mode.

View file

@ -1035,6 +1035,12 @@ Internal use only."
(frameset--initial-params filtered-cfg)))) (frameset--initial-params filtered-cfg))))
(puthash frame :created frameset--action-map)) (puthash frame :created frameset--action-map))
;; Remove `border-width' from the list of parameters. If it has not
;; been assigned via `make-frame-on-display', any attempt to assign
;; it now via `modify-frame-parameters' may result in an error on X
;; (Bug#28873).
(setq filtered-cfg (assq-delete-all 'border-width filtered-cfg))
;; Try to assign parent-frame right here - it will improve things ;; Try to assign parent-frame right here - it will improve things
;; for minibuffer-less child frames. ;; for minibuffer-less child frames.
(let* ((frame-id (frame-parameter frame 'frameset--parent-frame)) (let* ((frame-id (frame-parameter frame 'frameset--parent-frame))

View file

@ -27,7 +27,8 @@
;;; Code: ;;; Code:
(eval-when-compile (eval-when-compile
(require 'cl)) (require 'cl)
(require 'subr-x))
(require 'nnheader) (require 'nnheader)
(require 'gnus-util) (require 'gnus-util)

View file

@ -748,7 +748,10 @@ Increase at own risk.")
'image-dired-cmd-create-thumbnail-program) 'image-dired-cmd-create-thumbnail-program)
(let* ((width (int-to-string (image-dired-thumb-size 'width))) (let* ((width (int-to-string (image-dired-thumb-size 'width)))
(height (int-to-string (image-dired-thumb-size 'height))) (height (int-to-string (image-dired-thumb-size 'height)))
(modif-time (floor (float-time (nth 5 (file-attributes original-file))))) (modif-time
(format "%.0f"
(ffloor (float-time
(nth 5 (file-attributes original-file))))))
(thumbnail-nq8-file (replace-regexp-in-string ".png\\'" "-nq8.png" (thumbnail-nq8-file (replace-regexp-in-string ".png\\'" "-nq8.png"
thumbnail-file)) thumbnail-file))
(spec (spec

View file

@ -34,8 +34,8 @@
(defconst image-type-header-regexps (defconst image-type-header-regexps
`(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm) `(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm)
("\\`P[1-6]\\(?:\ ("\\`P[1-6]\\(?:\
\\(?:\\(?:#[^\r\n]*[\r\n]\\)?[[:space:]]\\)+\ \\(?:\\(?:#[^\r\n]*[\r\n]\\)*[[:space:]]\\)+\
\\(?:\\(?:#[^\r\n]*[\r\n]\\)?[0-9]\\)+\ \\(?:\\(?:#[^\r\n]*[\r\n]\\)*[0-9]\\)+\
\\)\\{2\\}" . pbm) \\)\\{2\\}" . pbm)
("\\`GIF8[79]a" . gif) ("\\`GIF8[79]a" . gif)
("\\`\x89PNG\r\n\x1a\n" . png) ("\\`\x89PNG\r\n\x1a\n" . png)

View file

@ -937,7 +937,7 @@ without repeating the prefix."
;;; Single-step editing of keyboard macros ;;; Single-step editing of keyboard macros
(defvar kmacro-step-edit-active) ;; step-editing active (defvar kmacro-step-edit-active nil) ;; step-editing active
(defvar kmacro-step-edit-new-macro) ;; storage for new macro (defvar kmacro-step-edit-new-macro) ;; storage for new macro
(defvar kmacro-step-edit-inserting) ;; inserting into macro (defvar kmacro-step-edit-inserting) ;; inserting into macro
(defvar kmacro-step-edit-appending) ;; append to end of macro (defvar kmacro-step-edit-appending) ;; append to end of macro

View file

@ -95,7 +95,10 @@ Customizing the value takes effect when you start Emacs next time."
:type '(choice :type '(choice
(const :tag "default" nil) (const :tag "default" nil)
(const :tag "as space" as-space) (const :tag "as space" as-space)
(const :tag "absorb" absorb))) (const :tag "absorb" absorb))
:set (lambda (sym val)
(set-default sym val)
(clear-composition-cache)))
;; Record error in arabic-change-gstring. ;; Record error in arabic-change-gstring.
(defvar arabic-shape-log nil) (defvar arabic-shape-log nil)

View file

@ -2349,7 +2349,15 @@ choose a font."
If the value is a modifier, such as `control' or `shift' or `meta', If the value is a modifier, such as `control' or `shift' or `meta',
then if that modifier key is pressed when dropping the region, region then if that modifier key is pressed when dropping the region, region
text is copied instead of being cut." text is copied instead of being cut."
:type 'symbol :type `(choice
(const :tag "Disable dragging the region" nil)
,@(mapcar
(lambda (modifier)
`(const :tag ,(format "Enable, but copy with the %s modifier"
modifier)
modifier))
'(alt super hyper shift control meta))
(other :tag "Enable dragging the region" t))
:version "26.1" :version "26.1"
:group 'mouse) :group 'mouse)

View file

@ -802,38 +802,43 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(setq filename (expand-file-name filename) (setq filename (expand-file-name filename)
newname (expand-file-name newname)) newname (expand-file-name newname))
(let ((t1 (tramp-tramp-file-p filename)) (if (file-directory-p filename)
(t2 (tramp-tramp-file-p newname))) (progn
(with-parsed-tramp-file-name (if t1 filename newname) nil (copy-directory filename newname t t)
(with-tramp-progress-reporter (delete-directory filename 'recursive))
v 0 (format "Renaming %s to %s" filename newname)
(if (and t1 t2 (let ((t1 (tramp-tramp-file-p filename))
(tramp-equal-remote filename newname) (t2 (tramp-tramp-file-p newname)))
(not (file-directory-p filename))) (with-parsed-tramp-file-name (if t1 filename newname) nil
(let ((l1 (file-remote-p filename 'localname)) (with-tramp-progress-reporter
(l2 (file-remote-p newname 'localname))) v 0 (format "Renaming %s to %s" filename newname)
(when (and (not ok-if-already-exists)
(file-exists-p newname))
(tramp-error v 'file-already-exists newname))
;; We must also flush the cache of the directory, because
;; `file-attributes' reads the values from there.
(tramp-flush-file-property v (file-name-directory l1))
(tramp-flush-file-property v l1)
(tramp-flush-file-property v (file-name-directory l2))
(tramp-flush-file-property v l2)
;; Short track.
(tramp-adb-barf-unless-okay
v (format
"mv -f %s %s"
(tramp-shell-quote-argument l1)
(tramp-shell-quote-argument l2))
"Error renaming %s to %s" filename newname))
;; Rename by copy. (if (and t1 t2
(copy-file (tramp-equal-remote filename newname)
filename newname ok-if-already-exists 'keep-time 'preserve-uid-gid) (not (file-directory-p filename)))
(delete-file filename)))))) (let ((l1 (file-remote-p filename 'localname))
(l2 (file-remote-p newname 'localname)))
(when (and (not ok-if-already-exists)
(file-exists-p newname))
(tramp-error v 'file-already-exists newname))
;; We must also flush the cache of the directory, because
;; `file-attributes' reads the values from there.
(tramp-flush-file-property v (file-name-directory l1))
(tramp-flush-file-property v l1)
(tramp-flush-file-property v (file-name-directory l2))
(tramp-flush-file-property v l2)
;; Short track.
(tramp-adb-barf-unless-okay
v (format
"mv -f %s %s"
(tramp-shell-quote-argument l1)
(tramp-shell-quote-argument l2))
"Error renaming %s to %s" filename newname))
;; Rename by copy.
(copy-file
filename newname ok-if-already-exists 'keep-time 'preserve-uid-gid)
(delete-file filename)))))))
(defun tramp-adb-handle-process-file (defun tramp-adb-handle-process-file
(program &optional infile destination display &rest args) (program &optional infile destination display &rest args)

View file

@ -675,6 +675,11 @@ file names."
(unless (memq op '(copy rename)) (unless (memq op '(copy rename))
(error "Unknown operation `%s', must be `copy' or `rename'" op)) (error "Unknown operation `%s', must be `copy' or `rename'" op))
(if (file-directory-p filename)
(progn
(copy-directory filename newname keep-date t)
(when (eq op 'rename) (delete-directory filename 'recursive)))
(let ((t1 (tramp-tramp-file-p filename)) (let ((t1 (tramp-tramp-file-p filename))
(t2 (tramp-tramp-file-p newname)) (t2 (tramp-tramp-file-p newname))
(equal-remote (tramp-equal-remote filename newname)) (equal-remote (tramp-equal-remote filename newname))
@ -738,7 +743,7 @@ file names."
(when t2 (when t2
(with-parsed-tramp-file-name newname nil (with-parsed-tramp-file-name newname nil
(tramp-flush-file-property v (file-name-directory localname)) (tramp-flush-file-property v (file-name-directory localname))
(tramp-flush-file-property v localname))))))) (tramp-flush-file-property v localname))))))))
(defun tramp-gvfs-handle-copy-file (defun tramp-gvfs-handle-copy-file
(filename newname &optional ok-if-already-exists keep-date (filename newname &optional ok-if-already-exists keep-date

View file

@ -2039,96 +2039,102 @@ of `copy' and `rename'. FILENAME and NEWNAME must be absolute
file names." file names."
(unless (memq op '(copy rename)) (unless (memq op '(copy rename))
(error "Unknown operation `%s', must be `copy' or `rename'" op)) (error "Unknown operation `%s', must be `copy' or `rename'" op))
(let ((t1 (tramp-tramp-file-p filename))
(t2 (tramp-tramp-file-p newname))
(length (tramp-compat-file-attribute-size
(file-attributes (file-truename filename))))
(attributes (and preserve-extended-attributes
(apply 'file-extended-attributes (list filename)))))
(with-parsed-tramp-file-name (if t1 filename newname) nil (if (file-directory-p filename)
(when (and (not ok-if-already-exists) (file-exists-p newname)) (progn
(tramp-error v 'file-already-exists newname)) (copy-directory filename newname keep-date t)
(when (eq op 'rename) (delete-directory filename 'recursive)))
(with-tramp-progress-reporter (let ((t1 (tramp-tramp-file-p filename))
v 0 (format "%s %s to %s" (t2 (tramp-tramp-file-p newname))
(if (eq op 'copy) "Copying" "Renaming") (length (tramp-compat-file-attribute-size
filename newname) (file-attributes (file-truename filename))))
(attributes (and preserve-extended-attributes
(apply 'file-extended-attributes (list filename)))))
(cond (with-parsed-tramp-file-name (if t1 filename newname) nil
;; Both are Tramp files. (when (and (not ok-if-already-exists) (file-exists-p newname))
((and t1 t2) (tramp-error v 'file-already-exists newname))
(with-parsed-tramp-file-name filename v1
(with-parsed-tramp-file-name newname v2
(cond
;; Shortcut: if method, host, user are the same for
;; both files, we invoke `cp' or `mv' on the remote
;; host directly.
((tramp-equal-remote filename newname)
(tramp-do-copy-or-rename-file-directly
op filename newname
ok-if-already-exists keep-date preserve-uid-gid))
;; Try out-of-band operation. (with-tramp-progress-reporter
((and v 0 (format "%s %s to %s"
(tramp-method-out-of-band-p v1 length) (if (eq op 'copy) "Copying" "Renaming")
(tramp-method-out-of-band-p v2 length)) filename newname)
(tramp-do-copy-or-rename-file-out-of-band
op filename newname keep-date))
;; No shortcut was possible. So we copy the file
;; first. If the operation was `rename', we go back
;; and delete the original file (if the copy was
;; successful). The approach is simple-minded: we
;; create a new buffer, insert the contents of the
;; source file into it, then write out the buffer to
;; the target file. The advantage is that it doesn't
;; matter which file name handlers are used for the
;; source and target file.
(t
(tramp-do-copy-or-rename-file-via-buffer
op filename newname keep-date))))))
;; One file is a Tramp file, the other one is local.
((or t1 t2)
(cond (cond
;; Fast track on local machine. ;; Both are Tramp files.
((tramp-local-host-p v) ((and t1 t2)
(tramp-do-copy-or-rename-file-directly (with-parsed-tramp-file-name filename v1
op filename newname (with-parsed-tramp-file-name newname v2
ok-if-already-exists keep-date preserve-uid-gid)) (cond
;; Shortcut: if method, host, user are the same for
;; both files, we invoke `cp' or `mv' on the remote
;; host directly.
((tramp-equal-remote filename newname)
(tramp-do-copy-or-rename-file-directly
op filename newname
ok-if-already-exists keep-date preserve-uid-gid))
;; If the Tramp file has an out-of-band method, the ;; Try out-of-band operation.
;; corresponding copy-program can be invoked. ((and
((tramp-method-out-of-band-p v length) (tramp-method-out-of-band-p v1 length)
(tramp-do-copy-or-rename-file-out-of-band (tramp-method-out-of-band-p v2 length))
op filename newname keep-date)) (tramp-do-copy-or-rename-file-out-of-band
op filename newname keep-date))
;; Use the inline method via a Tramp buffer. ;; No shortcut was possible. So we copy the file
(t (tramp-do-copy-or-rename-file-via-buffer ;; first. If the operation was `rename', we go back
op filename newname keep-date)))) ;; and delete the original file (if the copy was
;; successful). The approach is simple-minded: we
;; create a new buffer, insert the contents of the
;; source file into it, then write out the buffer to
;; the target file. The advantage is that it doesn't
;; matter which file name handlers are used for the
;; source and target file.
(t
(tramp-do-copy-or-rename-file-via-buffer
op filename newname keep-date))))))
(t ;; One file is a Tramp file, the other one is local.
;; One of them must be a Tramp file. ((or t1 t2)
(error "Tramp implementation says this cannot happen"))) (cond
;; Fast track on local machine.
((tramp-local-host-p v)
(tramp-do-copy-or-rename-file-directly
op filename newname
ok-if-already-exists keep-date preserve-uid-gid))
;; Handle `preserve-extended-attributes'. We ignore possible ;; If the Tramp file has an out-of-band method, the
;; errors, because ACL strings could be incompatible. ;; corresponding copy-program can be invoked.
(when attributes ((tramp-method-out-of-band-p v length)
(ignore-errors (tramp-do-copy-or-rename-file-out-of-band
(apply 'set-file-extended-attributes (list newname attributes)))) op filename newname keep-date))
;; In case of `rename', we must flush the cache of the source file. ;; Use the inline method via a Tramp buffer.
(when (and t1 (eq op 'rename)) (t (tramp-do-copy-or-rename-file-via-buffer
(with-parsed-tramp-file-name filename v1 op filename newname keep-date))))
(tramp-flush-file-property v1 (file-name-directory v1-localname))
(tramp-flush-file-property v1 v1-localname)))
;; When newname did exist, we have wrong cached values. (t
(when t2 ;; One of them must be a Tramp file.
(with-parsed-tramp-file-name newname v2 (error "Tramp implementation says this cannot happen")))
(tramp-flush-file-property v2 (file-name-directory v2-localname))
(tramp-flush-file-property v2 v2-localname))))))) ;; Handle `preserve-extended-attributes'. We ignore possible
;; errors, because ACL strings could be incompatible.
(when attributes
(ignore-errors
(apply 'set-file-extended-attributes (list newname attributes))))
;; In case of `rename', we must flush the cache of the source file.
(when (and t1 (eq op 'rename))
(with-parsed-tramp-file-name filename v1
(tramp-flush-file-property v1 (file-name-directory v1-localname))
(tramp-flush-file-property v1 v1-localname)))
;; When newname did exist, we have wrong cached values.
(when t2
(with-parsed-tramp-file-name newname v2
(tramp-flush-file-property v2 (file-name-directory v2-localname))
(tramp-flush-file-property v2 v2-localname))))))))
(defun tramp-do-copy-or-rename-file-via-buffer (op filename newname keep-date) (defun tramp-do-copy-or-rename-file-via-buffer (op filename newname keep-date)
"Use an Emacs buffer to copy or rename a file. "Use an Emacs buffer to copy or rename a file.

View file

@ -1073,10 +1073,11 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
entries)) entries))
;; Insert size information. ;; Insert size information.
(insert (when full-directory-p
(if avail (insert
(format "total used in directory %s available %s\n" used avail) (if avail
(format "total %s\n" used))) (format "total used in directory %s available %s\n" used avail)
(format "total %s\n" used))))
;; Print entries. ;; Print entries.
(mapc (mapc

View file

@ -604,7 +604,8 @@ Important: the match ends just after the marker.")
"Return header line for Proced buffer." "Return header line for Proced buffer."
(list (propertize " " (list (propertize " "
'display 'display
(list 'space :align-to (+ 2 (line-number-display-width)))) (list 'space :align-to
(line-number-display-width 'columns)))
(if (<= (window-hscroll) (length proced-header-line)) (if (<= (window-hscroll) (length proced-header-line))
(replace-regexp-in-string ;; preserve text properties (replace-regexp-in-string ;; preserve text properties
"\\(%\\)" "\\1\\1" "\\(%\\)" "\\1\\1"

View file

@ -1693,7 +1693,8 @@ current buffer state and calls REPORT-FN when done."
(when (eq (process-status proc) 'exit) (when (eq (process-status proc) 'exit)
(unwind-protect (unwind-protect
(cond (cond
((not (eq proc elisp-flymake--byte-compile-process)) ((not (eq proc (with-current-buffer source-buffer
elisp-flymake--byte-compile-process)))
(flymake-log :warning "byte-compile process %s obsolete" proc)) (flymake-log :warning "byte-compile process %s obsolete" proc))
((zerop (process-exit-status proc)) ((zerop (process-exit-status proc))
(elisp-flymake--byte-compile-done report-fn (elisp-flymake--byte-compile-done report-fn

View file

@ -909,6 +909,8 @@ Can be overridden by the value of `font-lock-maximum-decoration'.")
[ \t]*\\(\\(?:\\sw\\|\\s_\\)+\\)" [ \t]*\\(\\(?:\\sw\\|\\s_\\)+\\)"
"Regexp matching the definition of a derived type.") "Regexp matching the definition of a derived type.")
;; Maybe this should include "class default", but the constant is no
;; longer used.
(defconst f90-typeis-re (defconst f90-typeis-re
"\\_<\\(class\\|type\\)[ \t]*is[ \t]*(" "\\_<\\(class\\|type\\)[ \t]*is[ \t]*("
"Regexp matching a CLASS/TYPE IS statement.") "Regexp matching a CLASS/TYPE IS statement.")
@ -955,10 +957,14 @@ Used in the F90 entry in `hs-special-modes-alist'.")
;; Avoid F2003 "type is" in "select type", ;; Avoid F2003 "type is" in "select type",
;; and also variables of derived type "type (foo)". ;; and also variables of derived type "type (foo)".
;; "type, foo" must be a block (?). ;; "type, foo" must be a block (?).
;; And a partial effort to avoid "class default".
"\\(?:type\\|class\\)[ \t,]\\(" "\\(?:type\\|class\\)[ \t,]\\("
"[^i(!\n\"& \t]\\|" ; not-i( "[^id(!\n\"& \t]\\|" ; not-id(
"i[^s!\n\"& \t]\\|" ; i not-s "i[^s!\n\"& \t]\\|" ; i not-s
"is\\(?:\\sw\\|\\s_\\)\\)\\|" "d[^e!\n\"& \t]\\|" ; d not-e
"de[^f!\n\"& \t]\\|" ; de not-f
"def[^a!\n\"& \t]\\|" ; def not-a
"\\(?:is\\|default\\)\\(?:\\sw\\|\\s_\\)\\)\\|"
;; "abstract interface" is F2003; "submodule" is F2008. ;; "abstract interface" is F2003; "submodule" is F2008.
"program\\|\\(?:abstract[ \t]*\\)?interface\\|\\(?:sub\\)?module\\|" "program\\|\\(?:abstract[ \t]*\\)?interface\\|\\(?:sub\\)?module\\|"
;; "enum", but not "enumerator". ;; "enum", but not "enumerator".
@ -1454,7 +1460,7 @@ if all else fails."
(not (or (looking-at "end") (not (or (looking-at "end")
(looking-at "\\(do\\|if\\|else\\(if\\|where\\)?\ (looking-at "\\(do\\|if\\|else\\(if\\|where\\)?\
\\|select[ \t]*\\(case\\|type\\)\\|case\\|where\\|forall\\|\ \\|select[ \t]*\\(case\\|type\\)\\|case\\|where\\|forall\\|\
\\(?:class\\|type\\)[ \t]*is\\|\ \\(?:class\\|type\\)[ \t]*is\\|class[ \t]*default\\|\
block\\|critical\\|enum\\|associate\\)\\_>") block\\|critical\\|enum\\|associate\\)\\_>")
(looking-at "\\(program\\|\\(?:sub\\)?module\\|\ (looking-at "\\(program\\|\\(?:sub\\)?module\\|\
\\(?:abstract[ \t]*\\)?interface\\|block[ \t]*data\\)\\_>") \\(?:abstract[ \t]*\\)?interface\\|block[ \t]*data\\)\\_>")

View file

@ -20,7 +20,7 @@
;; GNU General Public License for more details. ;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License ;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary: ;;; Commentary:
;; ;;

View file

@ -20,7 +20,7 @@
;; GNU General Public License for more details. ;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License ;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary: ;;; Commentary:
;; ;;
@ -48,7 +48,8 @@
(require 'thingatpt) ; end-of-thing (require 'thingatpt) ; end-of-thing
(require 'warnings) ; warning-numeric-level, display-warning (require 'warnings) ; warning-numeric-level, display-warning
(require 'compile) ; for some faces (require 'compile) ; for some faces
(require 'subr-x) ; when-let*, if-let*, hash-table-keys, hash-table-values ;; when-let*, if-let*, hash-table-keys, hash-table-values:
(eval-when-compile (require 'subr-x))
(defgroup flymake nil (defgroup flymake nil
"Universal on-the-fly syntax checker." "Universal on-the-fly syntax checker."
@ -228,6 +229,29 @@ TYPE is a key to `flymake-diagnostic-types-alist' and TEXT is a
description of the problem detected in this region." description of the problem detected in this region."
(flymake--diag-make :buffer buffer :beg beg :end end :type type :text text)) (flymake--diag-make :buffer buffer :beg beg :end end :type type :text text))
;;;###autoload
(defun flymake-diagnostics (&optional beg end)
"Get Flymake diagnostics in region determined by BEG and END.
If neither BEG or END is supplied, use the whole buffer,
otherwise if BEG is non-nil and END is nil, consider only
diagnostics at BEG."
(mapcar (lambda (ov) (overlay-get ov 'flymake-diagnostic))
(flymake--overlays :beg beg :end end)))
(defmacro flymake--diag-accessor (public internal thing)
"Make PUBLIC an alias for INTERNAL, add doc using THING."
`(defsubst ,public (diag)
,(format "Get Flymake diagnostic DIAG's %s." (symbol-name thing))
(,internal diag)))
(flymake--diag-accessor flymake-diagnostic-buffer flymake--diag-buffer buffer)
(flymake--diag-accessor flymake-diagnostic-text flymake--diag-text text)
(flymake--diag-accessor flymake-diagnostic-type flymake--diag-type type)
(flymake--diag-accessor flymake-diagnostic-beg flymake--diag-beg beg)
(flymake--diag-accessor flymake-diagnostic-end flymake--diag-end end)
(flymake--diag-accessor flymake-diagnostic-backend flymake--diag-backend backend)
(cl-defun flymake--overlays (&key beg end filter compare key) (cl-defun flymake--overlays (&key beg end filter compare key)
"Get flymake-related overlays. "Get flymake-related overlays.
If BEG is non-nil and END is nil, consider only `overlays-at' If BEG is non-nil and END is nil, consider only `overlays-at'
@ -238,7 +262,7 @@ verify FILTER, a function, and sort them by COMPARE (using KEY)."
(widen) (widen)
(let ((ovs (cl-remove-if-not (let ((ovs (cl-remove-if-not
(lambda (ov) (lambda (ov)
(and (overlay-get ov 'flymake) (and (overlay-get ov 'flymake-diagnostic)
(or (not filter) (or (not filter)
(funcall filter ov)))) (funcall filter ov))))
(if (and beg (null end)) (if (and beg (null end))
@ -498,18 +522,15 @@ associated `flymake-category' return DEFAULT."
(default-maybe 'help-echo (default-maybe 'help-echo
(lambda (_window _ov pos) (lambda (_window _ov pos)
(mapconcat (mapconcat
(lambda (ov) #'flymake--diag-text
(overlay-get ov 'flymake-text)) (flymake-diagnostics pos)
(flymake--overlays :beg pos)
"\n"))) "\n")))
(default-maybe 'severity (warning-numeric-level :error)) (default-maybe 'severity (warning-numeric-level :error))
(default-maybe 'priority (+ 100 (overlay-get ov 'severity)))) (default-maybe 'priority (+ 100 (overlay-get ov 'severity))))
;; Some properties can't be overridden. ;; Some properties can't be overridden.
;; ;;
(overlay-put ov 'evaporate t) (overlay-put ov 'evaporate t)
(overlay-put ov 'flymake t) (overlay-put ov 'flymake-diagnostic diagnostic)))
(overlay-put ov 'flymake-text (flymake--diag-text diagnostic))
(overlay-put ov 'flymake--diagnostic diagnostic)))
;; Nothing in Flymake uses this at all any more, so this is just for ;; Nothing in Flymake uses this at all any more, so this is just for
;; third-party compatibility. ;; third-party compatibility.
@ -600,7 +621,7 @@ not expected."
(lambda (ov) (lambda (ov)
(eq backend (eq backend
(flymake--diag-backend (flymake--diag-backend
(overlay-get ov 'flymake--diagnostic)))))) (overlay-get ov 'flymake-diagnostic))))))
(mapc (lambda (diag) (mapc (lambda (diag)
(flymake--highlight-line diag) (flymake--highlight-line diag)
(setf (flymake--diag-backend diag) backend)) (setf (flymake--diag-backend diag) backend))
@ -899,7 +920,7 @@ applied."
(lambda (ov) (lambda (ov)
(let ((diag (overlay-get (let ((diag (overlay-get
ov ov
'flymake--diagnostic))) 'flymake-diagnostic)))
(and diag (and diag
(or (not filter) (or (not filter)
(memq (flymake--diag-type diag) (memq (flymake--diag-type diag)
@ -1089,13 +1110,13 @@ applied."
(interactive (list (point) t)) (interactive (list (point) t))
(let* ((id (or (tabulated-list-get-id pos) (let* ((id (or (tabulated-list-get-id pos)
(user-error "Nothing at point"))) (user-error "Nothing at point")))
(overlay (plist-get id :overlay))) (diag (plist-get id :diagnostic)))
(with-current-buffer (overlay-buffer overlay) (with-current-buffer (flymake--diag-buffer diag)
(with-selected-window (with-selected-window
(display-buffer (current-buffer) other-window) (display-buffer (current-buffer) other-window)
(goto-char (overlay-start overlay)) (goto-char (flymake--diag-beg diag))
(pulse-momentary-highlight-region (overlay-start overlay) (pulse-momentary-highlight-region (flymake--diag-beg diag)
(overlay-end overlay) (flymake--diag-end diag)
'highlight)) 'highlight))
(current-buffer)))) (current-buffer))))
@ -1108,18 +1129,16 @@ POS can be a buffer position or a button"
(defun flymake--diagnostics-buffer-entries () (defun flymake--diagnostics-buffer-entries ()
(with-current-buffer flymake--diagnostics-buffer-source (with-current-buffer flymake--diagnostics-buffer-source
(cl-loop for ov in (flymake--overlays) (cl-loop for diag in (flymake-diagnostics)
for diag = (overlay-get ov
'flymake--diagnostic)
for (line . col) = for (line . col) =
(save-excursion (save-excursion
(goto-char (overlay-start ov)) (goto-char (flymake--diag-beg diag))
(cons (line-number-at-pos) (cons (line-number-at-pos)
(- (point) (- (point)
(line-beginning-position)))) (line-beginning-position))))
for type = (flymake--diag-type diag) for type = (flymake--diag-type diag)
collect collect
(list (list :overlay ov (list (list :diagnostic diag
:line line :line line
:severity (flymake--lookup-type-property :severity (flymake--lookup-type-property
type type

View file

@ -3304,8 +3304,9 @@ the full statement in the case of imports."
(defcustom python-shell-completion-native-disabled-interpreters (defcustom python-shell-completion-native-disabled-interpreters
;; PyPy's readline cannot handle some escape sequences yet. Native ;; PyPy's readline cannot handle some escape sequences yet. Native
;; completion was found to be non-functional for IPython (see ;; completion was found to be non-functional for IPython (see
;; Bug#25067). ;; Bug#25067). Native completion doesn't work on w32 (Bug#28580).
(list "pypy" "ipython") (if (eq system-type 'windows-nt) '("")
'("pypy" "ipython"))
"List of disabled interpreters. "List of disabled interpreters.
When a match is found, native completion is disabled." When a match is found, native completion is disabled."
:version "25.1" :version "25.1"

View file

@ -450,6 +450,10 @@ With a prefix (or a FILL) argument, also fill too short lines."
"Replace rectangle contents with STRING on each line. "Replace rectangle contents with STRING on each line.
The length of STRING need not be the same as the rectangle width. The length of STRING need not be the same as the rectangle width.
When called interactively and option `rectangle-preview' is
non-nil, display the result as the user enters the string into
the minibuffer.
Called from a program, takes three args; START, END and STRING." Called from a program, takes three args; START, END and STRING."
(interactive (interactive
(progn (progn

View file

@ -307,7 +307,12 @@ or remove a tab stop. \\[ruler-mode-toggle-show-tab-stops] or
N is a column number relative to selected frame. N is a column number relative to selected frame.
If required, account for screen estate taken by `display-line-numbers'." If required, account for screen estate taken by `display-line-numbers'."
(if display-line-numbers (if display-line-numbers
(setq n (- n (line-number-display-width) 2))) ;; FIXME: ruler-mode relies on N being an integer, so if the
;; 'line-number' face is customized to use a font that is larger
;; or smaller than that of the default face, the alignment might
;; be off by up to half a column, unless the font width is an
;; integral multiple or divisor of the default face's font.
(setq n (- n (round (line-number-display-width 'columns)))))
(- n (- n
(or (car (window-margins)) 0) (or (car (window-margins)) 0)
(fringe-columns 'left) (fringe-columns 'left)
@ -668,7 +673,12 @@ Optional argument PROPS specifies other text properties to apply."
(let* ((w (ruler-mode-text-scaled-window-width)) (let* ((w (ruler-mode-text-scaled-window-width))
(m (window-margins)) (m (window-margins))
(f (window-fringes)) (f (window-fringes))
(i (if display-line-numbers (+ (line-number-display-width) 2) 0)) (i (if display-line-numbers
;; FIXME: ruler-mode relies on I being an integer, so
;; the column numbers might be slightly off if the
;; line-number face is customized.
(round (line-number-display-width 'columns))
0))
(j (ruler-mode-text-scaled-window-hscroll)) (j (ruler-mode-text-scaled-window-hscroll))
;; Setup the scrollbar, fringes, and margins areas. ;; Setup the scrollbar, fringes, and margins areas.
(lf (ruler-mode-space (lf (ruler-mode-space
@ -708,7 +718,7 @@ Optional argument PROPS specifies other text properties to apply."
;; line-number display be blank, not filled with ;; line-number display be blank, not filled with
;; ruler-mode-basic-graduation-char. ;; ruler-mode-basic-graduation-char.
(if display-line-numbers (if display-line-numbers
(let* ((lndw (+ (line-number-display-width) 2)) (let* ((lndw (round (line-number-display-width 'columns)))
(s (make-string lndw ?\s))) (s (make-string lndw ?\s)))
(concat s (make-string (- w lndw) (concat s (make-string (- w lndw)
ruler-mode-basic-graduation-char))) ruler-mode-basic-graduation-char)))

View file

@ -1149,7 +1149,7 @@ This function is intended to be good enough to help SMIE during
tokenization, but should not be regarded as a reliable function tokenization, but should not be regarded as a reliable function
for determining whether point is within a selector." for determining whether point is within a selector."
(save-excursion (save-excursion
(re-search-forward "[{};)]" nil t) (re-search-forward "[{};]" nil t)
(eq (char-before) ?\{))) (eq (char-before) ?\{)))
(defun css--colon-inside-funcall () (defun css--colon-inside-funcall ()

View file

@ -109,22 +109,6 @@
(def-edebug-spec push (def-edebug-spec push
(&or [form symbolp] [form gv-place])) (&or [form symbolp] [form gv-place]))
;; Correct wrong declaration. This still doesn't support dotted destructuring
;; though.
(def-edebug-spec cl-lambda-list
(([&rest cl-macro-arg]
[&optional ["&optional" cl-&optional-arg &rest cl-&optional-arg]]
[&optional ["&rest" arg]]
[&optional ["&key" [cl-&key-arg &rest cl-&key-arg]
&optional "&allow-other-keys"]]
[&optional ["&aux" &rest
&or (symbolp &optional def-form) symbolp]]
)))
;; Add missing declaration.
(def-edebug-spec cl-type-spec sexp) ;; This is not exactly correct but good
;; enough.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Support for `testcover' ;; Support for `testcover'

View file

@ -177,6 +177,8 @@ For a description of possible values, see `vc-check-master-templates'."
(push (list frel state) result)))) (push (list frel state) result))))
(funcall update-function result))) (funcall update-function result)))
(defun vc-rcs-dir-extra-headers (&rest _ignore))
(defun vc-rcs-working-revision (file) (defun vc-rcs-working-revision (file)
"RCS-specific version of `vc-working-revision'." "RCS-specific version of `vc-working-revision'."
(or (and vc-consult-headers (or (and vc-consult-headers

View file

@ -304,12 +304,15 @@ You may want to include buffer names such as *Help*, *Apropos*,
(push win xwins))) ; delete this window (push win xwins))) ; delete this window
;; Restore marks ;; Restore marks
(save-current-buffer ;; `winner-undo' shouldn't update the selection (Bug#28631) when
(cl-loop for buf in buffers ;; select-enable-primary is non-nil.
for entry = (cadr (assq buf winner-point-alist)) (unless select-enable-primary
do (progn (set-buffer buf) (save-current-buffer
(set-mark (car entry)) (cl-loop for buf in buffers
(setf (winner-active-region) (cdr entry))))) for entry = (cadr (assq buf winner-point-alist))
do (progn (set-buffer buf)
(set-mark (car entry))
(setf (winner-active-region) (cdr entry))))))
;; Delete windows, whose buffers are dead or boring. ;; Delete windows, whose buffers are dead or boring.
;; Return t if this is still a possible configuration. ;; Return t if this is still a possible configuration.
(or (null xwins) (or (null xwins)

View file

@ -20,6 +20,6 @@ rem along with GNU Emacs. If not, see https://www.gnu.org/licenses/.
rem ---------------------------------------------------------------------- rem ----------------------------------------------------------------------
echo %1 | sed -e "s,\(.*\)\.c,@if not exist deps\\\1.Po echo # dummy > deps\\\1.Po," > tdepfile.bat echo %1 | sed -e "s,\(.*\)\.c,@if not exist deps\\\1.d echo # dummy > deps\\\1.d," > tdepfile.bat
call tdepfile call tdepfile
del tdepfile.bat del tdepfile.bat

View file

@ -94,6 +94,8 @@ s/ *@LIBXPM@//
/^IMAGEMAGICK_CFLAGS *=/s/@IMAGEMAGICK_CFLAGS@// /^IMAGEMAGICK_CFLAGS *=/s/@IMAGEMAGICK_CFLAGS@//
/^LIBXML2_LIBS *=/s/@LIBXML2_LIBS@// /^LIBXML2_LIBS *=/s/@LIBXML2_LIBS@//
/^LIBXML2_CFLAGS *=/s/@LIBXML2_CFLAGS@// /^LIBXML2_CFLAGS *=/s/@LIBXML2_CFLAGS@//
/^GETADDRINFO_A_LIBS *=/s/@GETADDRINFO_A_LIBS@//
/^LIBLCMS2 *=/s/@LIBLCMS2@//
/^WIDGET_OBJ *=/s/@WIDGET_OBJ@// /^WIDGET_OBJ *=/s/@WIDGET_OBJ@//
/^XWIDGETS_OBJ *=/s/@XWIDGETS_OBJ@// /^XWIDGETS_OBJ *=/s/@XWIDGETS_OBJ@//
/^WEBKIT_LIBS *=/s/@WEBKIT_LIBS@// /^WEBKIT_LIBS *=/s/@WEBKIT_LIBS@//
@ -102,16 +104,19 @@ s/ *@LIBXPM@//
/^CAIRO_CFLAGS *=/s/@CAIRO_CFLAGS@// /^CAIRO_CFLAGS *=/s/@CAIRO_CFLAGS@//
/^XFIXES_LIBS *=/s/@XFIXES_LIBS@// /^XFIXES_LIBS *=/s/@XFIXES_LIBS@//
/^XFIXES_CFLAGS *=/s/@XFIXES_CFLAGS@// /^XFIXES_CFLAGS *=/s/@XFIXES_CFLAGS@//
/^XDBE_LIBS *=/s/@XDBE_LIBS@//
/^XDBE_CFLAGS *=/s/@XDBE_CFLAGS@//
/^CYGWIN_OBJ *=/s/@CYGWIN_OBJ@// /^CYGWIN_OBJ *=/s/@CYGWIN_OBJ@//
/^WINDOW_SYSTEM_OBJ *=/s/@WINDOW_SYSTEM_OBJ@// /^WINDOW_SYSTEM_OBJ *=/s/@WINDOW_SYSTEM_OBJ@//
/^MSDOS_OBJ *=/s/= */= dosfns.o msdos.o w16select.o/ /^MSDOS_OBJ *=/s/= */= dosfns.o msdos.o w16select.o/
/^NS_OBJ *=/s/@NS_OBJ@// /^NS_OBJ *=/s/@NS_OBJ@//
/^NS_OBJC_OBJ *=/s/@NS_OBJC_OBJ@// /^NS_OBJC_OBJ *=/s/@NS_OBJC_OBJ@//
/^GNU_OBJC_CFLAGS*=/s/=.*$/=/ /^GNU_OBJC_CFLAGS*=/s/=.*$/=/
/^LIBRESOLV *=/s/@LIBRESOLV@//
/^LIBMODULES *=/s/@LIBMODULES@// /^LIBMODULES *=/s/@LIBMODULES@//
/^MODULES_OBJ *=/s/@MODULES_OBJ@// /^MODULES_OBJ *=/s/@MODULES_OBJ@//
/^LIBSELINUX_LIBS *=/s/@LIBSELINUX_LIBS@// /^LIBSELINUX_LIBS *=/s/@LIBSELINUX_LIBS@//
/^LIBSYSTEMD_LIBS *=/s/@LIBSYSTEMD_LIBS@//
/^LIBSYSTEMD_CFLAGS *=/s/@LIBSYSTEMD_CFLAGS@//
/^LIB_CLOCK_GETTIME *=/s/@[^@\n]*@//g /^LIB_CLOCK_GETTIME *=/s/@[^@\n]*@//g
/^LIB_TIMER_TIME *=/s/@[^@\n]*@//g /^LIB_TIMER_TIME *=/s/@[^@\n]*@//g
/^LIB_EXECINFO *=/s/@[^@\n]*@//g /^LIB_EXECINFO *=/s/@[^@\n]*@//g
@ -133,6 +138,7 @@ s/ *@LIBXPM@//
/^XRANDR_CFLAGS *=/s/@XRANDR_CFLAGS@// /^XRANDR_CFLAGS *=/s/@XRANDR_CFLAGS@//
/^XINERAMA_LIBS *=/s/@XINERAMA_LIBS@// /^XINERAMA_LIBS *=/s/@XINERAMA_LIBS@//
/^XINERAMA_CFLAGS *=/s/@XINERAMA_CFLAGS@// /^XINERAMA_CFLAGS *=/s/@XINERAMA_CFLAGS@//
/^HYBRID_MALLOC *=/s/@HYBRID_MALLOC@//
/^GMALLOC_OBJ *=/s/@GMALLOC_OBJ@/gmalloc.o/ /^GMALLOC_OBJ *=/s/@GMALLOC_OBJ@/gmalloc.o/
/^VMLIMIT_OBJ *=/s/@VMLIMIT_OBJ@/vm-limit.o/ /^VMLIMIT_OBJ *=/s/@VMLIMIT_OBJ@/vm-limit.o/
/^FIRSTFILE_OBJ *=/s/@FIRSTFILE_OBJ@// /^FIRSTFILE_OBJ *=/s/@FIRSTFILE_OBJ@//
@ -140,9 +146,8 @@ s/ *@LIBXPM@//
/^PRE_ALLOC_OBJ *=/s/@PRE_ALLOC_OBJ@/lastfile.o/ /^PRE_ALLOC_OBJ *=/s/@PRE_ALLOC_OBJ@/lastfile.o/
/^POST_ALLOC_OBJ *=/s/@POST_ALLOC_OBJ@/$(vmlimitobj)/ /^POST_ALLOC_OBJ *=/s/@POST_ALLOC_OBJ@/$(vmlimitobj)/
/^UNEXEC_OBJ *=/s/@UNEXEC_OBJ@/unexcoff.o/ /^UNEXEC_OBJ *=/s/@UNEXEC_OBJ@/unexcoff.o/
/^BUILD_DETAILS *=/s/@BUILD_DETAILS@//
/^CANNOT_DUMP *=/s/@CANNOT_DUMP@/no/ /^CANNOT_DUMP *=/s/@CANNOT_DUMP@/no/
/^DEPFLAGS *=/s/@DEPFLAGS@//
/^MKDEPDIR *=/s/@MKDEPDIR@//
/^W32_OBJ *=/s/@W32_OBJ@// /^W32_OBJ *=/s/@W32_OBJ@//
/^W32_LIBS *=/s/@W32_LIBS@// /^W32_LIBS *=/s/@W32_LIBS@//
/^version *=/s/@[^@\n]*@// /^version *=/s/@[^@\n]*@//
@ -172,20 +177,18 @@ lisp.mk: $(lispsource)/loadup.el\
/^ [ ]*\$(AM_V_GLOBALS)\$(libsrc)\/make-doc/s!>.*$!! /^ [ ]*\$(AM_V_GLOBALS)\$(libsrc)\/make-doc/s!>.*$!!
/^\$(libsrc)\/make-docfile\$(EXEEXT): /i\ /^\$(libsrc)\/make-docfile\$(EXEEXT): /i\
cd ../src cd ../src
/^\$(leimdir)\/leim-list.el: /s/bootstrap-emacs\$(EXEEXT)/b-emacs$(EXEEXT)/
/^ if test -f/,/^ fi$/c\ /^ if test -f/,/^ fi$/c\
command.com /c if exist .gdbinit rm -f _gdbinit command.com /c if exist .gdbinit rm -f _gdbinit
/^ *ifneq (\$(PAXCTL_notdumped),)/,/^ *endif/d /^ *ifneq (\$(PAXCTL_notdumped),)/,/^ *endif/d
/^ *ifneq (\$(PAXCTL_dumped),)/,/^ *endif/d /^ *ifneq (\$(PAXCTL_dumped),)/,/^ *endif/d
/^ *ln /s/ln /cp / /^ *ln /s/ln /cp /
/^ *\$(SETFATTR_if_present) -n/d
/^ fi/d /^ fi/d
/^ *\$(RUN_TEMACS) /i\ /^ *\$(RUN_TEMACS) /i\
stubedit temacs.exe minstack=1024k stubedit temacs.exe minstack=1024k
/^ *LC_ALL=C \$(RUN_TEMACS)/i\ /^ *LC_ALL=C \$(RUN_TEMACS)/i\
stubedit temacs.exe minstack=1024k stubedit temacs.exe minstack=1024k
/^ *LC_ALL=C.*\$(RUN_TEMACS)/s/LC_ALL=C/set &;/ /^ *LC_ALL=C.*\$(RUN_TEMACS)/s/LC_ALL=C/set &;/
/-batch -l loadup/a\ /-batch .* -l loadup/a\
stubify emacs\ stubify emacs\
stubedit emacs.exe minstack=3072k stubedit emacs.exe minstack=3072k
s/ @true *$/ @rem/ s/ @true *$/ @rem/
@ -193,7 +196,6 @@ s/^ [^ ]*move-if-change / update /
/^ [^ ]*echo[ ][ ]*timestamp/s/echo /djecho / /^ [^ ]*echo[ ][ ]*timestamp/s/echo /djecho /
/^ .*djecho timestamp/a\ /^ .*djecho timestamp/a\
@rm -f globals.tmp @rm -f globals.tmp
/^ *@\$(MKDEPDIR) *$/d
/^ mv \.\/\.gdbinit/d /^ mv \.\/\.gdbinit/d
/^ if test -f/,/^ fi$/c\ /^ if test -f/,/^ fi$/c\
command.com /c if exist .gdbinit rm -f _gdbinit command.com /c if exist .gdbinit rm -f _gdbinit
@ -201,12 +203,7 @@ s/^ [^ ]*move-if-change / update /
/^ @: /d /^ @: /d
/^ -\{0,1\} *ln /s/ln /cp / /^ -\{0,1\} *ln /s/ln /cp /
/^[ ]touch /s/touch/djecho $@ >/ /^[ ]touch /s/touch/djecho $@ >/
s/@YMF_PASS_LDFLAGS@/flags/
s/@PRE_EDIT_LDFLAGS@//
s/@POST_EDIT_LDFLAGS@//
s/bootstrap-emacs/b-emacs/ s/bootstrap-emacs/b-emacs/
s/bootstrap-temacs/b-temacs/
s/bootstrap-doc/b-doc/
/rm -f bootstrap-emacs/s/b-emacs/b-emacs b-emacs.exe/ /rm -f bootstrap-emacs/s/b-emacs/b-emacs b-emacs.exe/
s/echo.*buildobj.lst/dj&/ s/echo.*buildobj.lst/dj&/
/ --load loadup bootstrap/a\ / --load loadup bootstrap/a\
@ -222,25 +219,20 @@ s/echo.*buildobj.lst/dj&/
} }
# Remove or replace dependencies we cannot have # Remove or replace dependencies we cannot have
/^\.PRECIOUS: /s!\.\./config.status !! /^\.PRECIOUS: /s!\.\./config.status !!
/^\.\.\/config.status: /d /^\.\.\/config.status: /,/^ /d
/^Makefile: /s!\.\./config.status !! /^Makefile: /s!\.\./config.status !!
/^\$(top_srcdir)\/aclocal\.m4 /,/^doc\.o:/c\
\
doc.o: buildobj.h
# Make the GCC command line fit one screen line # Make the GCC command line fit one screen line
/^[ ][ ]*\$(GNUSTEP_CFLAGS)/d /^[ ][ ]*\$(GNUSTEP_CFLAGS)/d
/^[ ][ ]*\$(GCONF_CFLAGS)/d
/^[ ][ ]*\$(LIBGNUTLS_CFLAGS)/d /^[ ][ ]*\$(LIBGNUTLS_CFLAGS)/d
s/\$(LIBOTF_CFLAGS) \$(M17N_FLT_CFLAGS) \$(DEPFLAGS) // /^[ ][ ]*\$(LIBSYSTEMD_CFLAGS)/d
/^[ ][ ]*\$(XRANDR_CFLAGS)/d
/^[ ][ ]*\$(WEBKIT_CFLAGS)/d
/^[ ][ ]*\$(SETTINGS_CFLAGS)/d
s/\$(LIBOTF_CFLAGS) \$(M17N_FLT_CFLAGS) //
s/ \$(C_SWITCH_X_SITE)// s/ \$(C_SWITCH_X_SITE)//
s/ \$(DBUS_CFLAGS)// s/ \$(DBUS_CFLAGS)//
s/ \$(PNG_CFLAGS) // s/ \$(PNG_CFLAGS) //
s/ \$(XINERAMA_CFLAGS)//
s/ \$(XFIXES_CFLAGS)//
s/ \$(FREETYPE_CFLAGS)//
s/ \$(FONTCONFIG_CFLAGS)//
s| -I\$(srcdir)/\.\./lib|| s| -I\$(srcdir)/\.\./lib||
s| -I\$(top_srcdir)/lib|| s| -I\$(top_srcdir)/lib||
# Add our local inttypes.h to prerequisites where needed s| -I\. -I\$(srcdir)| -I.|
/^lread\.o:/s|lread\.c|& ../msdos/inttypes.h|
/^ *test "X/d /^ *test "X/d

View file

@ -55,6 +55,7 @@
/^#undef HAVE_STRNCASECMP *$/s/^.*$/#define HAVE_STRNCASECMP 1/ /^#undef HAVE_STRNCASECMP *$/s/^.*$/#define HAVE_STRNCASECMP 1/
/^#undef HAVE_STRUCT_TM_TM_ZONE *$/s/^.*$/#define HAVE_STRUCT_TM_TM_ZONE 1/ /^#undef HAVE_STRUCT_TM_TM_ZONE *$/s/^.*$/#define HAVE_STRUCT_TM_TM_ZONE 1/
/^#undef HAVE_SYNC *$/s/^.*$/#define HAVE_SYNC 1/ /^#undef HAVE_SYNC *$/s/^.*$/#define HAVE_SYNC 1/
/^#undef HAVE___BUILTIN_FRAME_ADDRESS *$/s/^.*$/#define HAVE___BUILTIN_FRAME_ADDRESS 1/
/^#undef HAVE___BUILTIN_UNWIND_INIT *$/s/^.*$/#define HAVE___BUILTIN_UNWIND_INIT 1/ /^#undef HAVE___BUILTIN_UNWIND_INIT *$/s/^.*$/#define HAVE___BUILTIN_UNWIND_INIT 1/
/^#undef HAVE_MENUS *$/s/^.*$/#define HAVE_MENUS 1/ /^#undef HAVE_MENUS *$/s/^.*$/#define HAVE_MENUS 1/
/^#undef DATA_START/s/^.*$/#define DATA_START (\&etext + 1)/ /^#undef DATA_START/s/^.*$/#define DATA_START (\&etext + 1)/
@ -64,9 +65,7 @@
/^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/ /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/
/^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/
/^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/ /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/
/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION VERSION/ /^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "27.0.50"/
/^#undef PENDING_OUTPUT_COUNT/s/^.*$/#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_ptr - (FILE)->_base)/
/^#undef VERSION/s/^.*$/#define VERSION "27.0.50"/
/^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/ /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/
/^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/
/^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/ /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/
@ -86,6 +85,8 @@
/^#undef IS_DIRECTORY_SEP *$/s,^.*$,#define IS_DIRECTORY_SEP(_c_) ((_c_) == '/' || (_c_) == '\\\\'), /^#undef IS_DIRECTORY_SEP *$/s,^.*$,#define IS_DIRECTORY_SEP(_c_) ((_c_) == '/' || (_c_) == '\\\\'),
/^#undef IS_DEVICE_SEP *$/s/^.*$/#define IS_DEVICE_SEP(_c_) ((_c_) == ':')/ /^#undef IS_DEVICE_SEP *$/s/^.*$/#define IS_DEVICE_SEP(_c_) ((_c_) == ':')/
/^#undef IS_ANY_SEP *$/s/^.*$/#define IS_ANY_SEP(_c_) (IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP (_c_))/ /^#undef IS_ANY_SEP *$/s/^.*$/#define IS_ANY_SEP(_c_) (IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP (_c_))/
/^#undef NEED_MKTIME_INTERNAL *$/s/^.*$/#define NEED_MKTIME_INTERNAL 1/
/^#undef NEED_MKTIME_WORKING *$/s/^.*$/#define NEED_MKTIME_WORKING 1/
/^#undef INTERNAL_TERMINAL *$/s,^.*$,#define INTERNAL_TERMINAL "pc|bios|IBM PC with color display::co#80:li#25:Co#16:pa#256:km:ms:cm=<CM>:cl=<CL>:ce=<CE>::se=</SO>:so=<SO>:us=<UL>:ue=</UL>:md=<BD>:mh=<DIM>:mb=<BL>:mr=<RV>:me=<NV>::AB=<BG %d>:AF=<FG %d>:op=<DefC>:", /^#undef INTERNAL_TERMINAL *$/s,^.*$,#define INTERNAL_TERMINAL "pc|bios|IBM PC with color display::co#80:li#25:Co#16:pa#256:km:ms:cm=<CM>:cl=<CL>:ce=<CE>::se=</SO>:so=<SO>:us=<UL>:ue=</UL>:md=<BD>:mh=<DIM>:mb=<BL>:mr=<RV>:me=<NV>::AB=<BG %d>:AF=<FG %d>:op=<DefC>:",
/^#undef NULL_DEVICE *$/s/^.*$/#define NULL_DEVICE "nul"/ /^#undef NULL_DEVICE *$/s/^.*$/#define NULL_DEVICE "nul"/
/^#undef SEPCHAR *$/s/^.*$/#define SEPCHAR '\;'/ /^#undef SEPCHAR *$/s/^.*$/#define SEPCHAR '\;'/
@ -102,6 +103,7 @@ s/^#undef STACK_DIRECTION *$/#define STACK_DIRECTION -1/
s/^#undef EMACS_CONFIGURATION *$/#define EMACS_CONFIGURATION "i386-pc-msdosdjgpp"/ s/^#undef EMACS_CONFIGURATION *$/#define EMACS_CONFIGURATION "i386-pc-msdosdjgpp"/
s/^#undef EMACS_CONFIG_OPTIONS *$/#define EMACS_CONFIG_OPTIONS "msdos"/ s/^#undef EMACS_CONFIG_OPTIONS *$/#define EMACS_CONFIG_OPTIONS "msdos"/
s/^#undef EMACS_CONFIG_FEATURES *$/#define EMACS_CONFIG_FEATURES ""/ s/^#undef EMACS_CONFIG_FEATURES *$/#define EMACS_CONFIG_FEATURES ""/
s|^#undef FLEXIBLE_ARRAY_MEMBER *$|#define FLEXIBLE_ARRAY_MEMBER /**/|
s/^#undef PROTOTYPES *$/#define PROTOTYPES 1/ s/^#undef PROTOTYPES *$/#define PROTOTYPES 1/
s/^#undef POINTER_TYPE *$/#define POINTER_TYPE void/ s/^#undef POINTER_TYPE *$/#define POINTER_TYPE void/
/^#undef HAVE_INTTYPES_H/c\ /^#undef HAVE_INTTYPES_H/c\
@ -117,12 +119,31 @@ s/^#undef POINTER_TYPE *$/#define POINTER_TYPE void/
#undef HAVE_STDINT_H\ #undef HAVE_STDINT_H\
#endif #endif
s/^#undef HAVE_C_VARARRAYS *$/#define HAVE_C_VARARRAYS 1/ s/^#undef HAVE_C_VARARRAYS *$/#define HAVE_C_VARARRAYS 1/
s/^#undef HAVE_DECL_ALIGNED_ALLOC *$/#define HAVE_DECL_ALIGNED_ALLOC 0/
s/^#undef HAVE_DECL_CLEARERR_UNLOCKED *$/#define HAVE_DECL_CLEARERR_UNLOCKED 0/
s/^#undef HAVE_DECL_FEOF_UNLOCKED *$/#define HAVE_DECL_FEOF_UNLOCKED 0/
s/^#undef HAVE_DECL_FERROR_UNLOCKED *$/#define HAVE_DECL_FERROR_UNLOCKED 0/
s/^#undef HAVE_DECL_FFLUSH_UNLOCKED *$/#define HAVE_DECL_FFLUSH_UNLOCKED 0/
s/^#undef HAVE_DECL_FGETS_UNLOCKED *$/#define HAVE_DECL_FGETS_UNLOCKED 0/
s/^#undef HAVE_DECL_FPUTC_UNLOCKED *$/#define HAVE_DECL_FPUTC_UNLOCKED 0/
s/^#undef HAVE_DECL_FPUTS_UNLOCKED *$/#define HAVE_DECL_FPUTS_UNLOCKED 0/
s/^#undef HAVE_DECL_FREAD_UNLOCKED *$/#define HAVE_DECL_FREAD_UNLOCKED 0/
s/^#undef HAVE_DECL_FWRITE_UNLOCKED *$/#define HAVE_DECL_FWRITE_UNLOCKED 0/
s/^#undef HAVE_DECL_GETCHAR_UNLOCKED *$/#define HAVE_DECL_GETCHAR_UNLOCKED 0/
s/^#undef HAVE_DECL_GETC_UNLOCKED *$/#define HAVE_DECL_GETC_UNLOCKED 0/
s/^#undef HAVE_DECL_PUTCHAR_UNLOCKED *$/#define HAVE_DECL_PUTCHAR_UNLOCKED 0/
s/^#undef HAVE_DECL_PUTC_UNLOCKED *$/#define HAVE_DECL_PUTC_UNLOCKED 0/
s/^#undef HAVE_DECL_STRTOLL *$/#define HAVE_DECL_STRTOLL 1/ s/^#undef HAVE_DECL_STRTOLL *$/#define HAVE_DECL_STRTOLL 1/
s/^#undef HAVE_DECL_STRTOULL *$/#define HAVE_DECL_STRTOULL 1/
s/^#undef HAVE_DECL_STRTOIMAX *$/#define HAVE_DECL_STRTOIMAX 1/ s/^#undef HAVE_DECL_STRTOIMAX *$/#define HAVE_DECL_STRTOIMAX 1/
s/^#undef HAVE_DECL_STRTOUMAX *$/#define HAVE_DECL_STRTOUMAX 1/
s/^#undef HAVE_STRTOLL *$/#define HAVE_STRTOLL 1/ s/^#undef HAVE_STRTOLL *$/#define HAVE_STRTOLL 1/
s/^#undef HAVE_STRTOULL *$/#define HAVE_STRTOULL 1/ s/^#undef HAVE_STRTOULL *$/#define HAVE_STRTOULL 1/
/^#undef HAVE_STRUCT_DIRENT_D_TYPE *$/c\
#if __DJGPP__ + (__DJGPP_MINOR__ >= 5) >= 3\
#define HAVE_STRUCT_DIRENT_D_TYPE 1/\
#else\
#undef HAVE_STRUCT_DIRENT_D_TYPE\
#endif
s/^#undef HAVE_STRUCT_ATTRIBUTE_ALIGNED *$/#define HAVE_STRUCT_ATTRIBUTE_ALIGNED 1/
s/^#undef HAVE_PUTENV *$/#define HAVE_PUTENV 1/ s/^#undef HAVE_PUTENV *$/#define HAVE_PUTENV 1/
/^#undef HAVE_SIGSET_T *$/s/^.*$/#define HAVE_SIGSET_T 1/ /^#undef HAVE_SIGSET_T *$/s/^.*$/#define HAVE_SIGSET_T 1/
/^#undef HAVE_SNPRINTF/c\ /^#undef HAVE_SNPRINTF/c\
@ -133,7 +154,9 @@ s/^#undef HAVE_PUTENV *$/#define HAVE_PUTENV 1/
#include <sys/types.h>\ #include <sys/types.h>\
extern int snprintf (char *__restrict, size_t, const char *__restrict, ...);\ extern int snprintf (char *__restrict, size_t, const char *__restrict, ...);\
#endif #endif
s/^#undef PENDING_OUTPUT_N_BYTES *$/#define PENDING_OUTPUT_N_BYTES fp->_ptr - fp->_base/ /^#include <conf_post.h>/i\
/* From libc/file.h, needed by lib/fpending.c. */\
#define _IOERR 000200
# Comment out any remaining undef directives, because some of them # Comment out any remaining undef directives, because some of them
# might be defined in sys/config.h we include at the top of config.h. # might be defined in sys/config.h we include at the top of config.h.

View file

@ -20,7 +20,7 @@
/^archlibdir *=/s!=.*$!=/emacs/bin! /^archlibdir *=/s!=.*$!=/emacs/bin!
/^bindir *=/s!=.*$!=/emacs/bin! /^bindir *=/s!=.*$!=/emacs/bin!
/^libdir *=/s!=.*$!=/emacs/bin! /^libdir *=/s!=.*$!=/emacs/bin!
/^srcdir=/s!srcdir=@srcdir@!srcdir := $(subst \\,/,$(shell command.com /c cd))! /^srcdir=/s!srcdir=@srcdir@!srcdir := $(CURDIR)!
/^VPATH *=/s!=.*$!=.! /^VPATH *=/s!=.*$!=.!
/^BLESSMAIL_TARGET *=/s!@BLESSMAIL_TARGET@!need-blessmail! /^BLESSMAIL_TARGET *=/s!@BLESSMAIL_TARGET@!need-blessmail!
/^KRB4LIB *=/s/@[^@\n]*@//g /^KRB4LIB *=/s/@[^@\n]*@//g
@ -41,7 +41,6 @@
/^C_SWITCH_MACHINE *=/s/@C_SWITCH_MACHINE@// /^C_SWITCH_MACHINE *=/s/@C_SWITCH_MACHINE@//
/^WARN_CFLAGS *=/s/@WARN_CFLAGS@// /^WARN_CFLAGS *=/s/@WARN_CFLAGS@//
/^WERROR_CFLAGS *=/s/@WERROR_CFLAGS@// /^WERROR_CFLAGS *=/s/@WERROR_CFLAGS@//
/^UPDATE_MANIFEST *=/s/@UPDATE_MANIFEST@//
/^PROFILING_CFLAGS *=/s/@PROFILING_CFLAGS@// /^PROFILING_CFLAGS *=/s/@PROFILING_CFLAGS@//
/^AM_DEFAULT_VERBOSITY *=/s/@AM_DEFAULT_VERBOSITY@/1/ /^AM_DEFAULT_VERBOSITY *=/s/@AM_DEFAULT_VERBOSITY@/1/
/^[Aa][Mm]_/s/@AM_V@/$(V)/ /^[Aa][Mm]_/s/@AM_V@/$(V)/
@ -58,6 +57,3 @@
/^GETOPT_H *=/s!@GETOPT_H@!getopt.h! /^GETOPT_H *=/s!@GETOPT_H@!getopt.h!
/^GETOPTOBJS *=/s!@GETOPTOBJS@!getopt.o getopt1.o! /^GETOPTOBJS *=/s!@GETOPTOBJS@!getopt.o getopt1.o!
/^INSTALLABLES/s/emacsclient[^ ]* *// /^INSTALLABLES/s/emacsclient[^ ]* *//
/^UTILITIES *=/,/^$/{
s/movemail[^ ]* *//
}

View file

@ -18,14 +18,9 @@
# #
# Checklist to add a new gnulib module: # Checklist to add a new gnulib module:
# #
# . If the module includes source files that need to be compiled, and # . If a module appears in gnulib.mk.in that is not required for the
# does not appear in the am_libgnu_a_OBJECTS list, add the # MSDOS build, disable its building by setting the corresponding
# corresponding .o file names to the list that gets assigned to the # OMIT_GNULIB_MODULE_foo variable to true.
# gl_LIBOBJS variable.
#
# . If a module appears in am_libgnu_a_OBJECTS that is not required
# for the MSDOS build, edit it out by adding an appropriate command
# to the set that edits the am_libgnu_a_OBJECTS block.
# #
# . If the module defines functions that need to replace DJGPP # . If the module defines functions that need to replace DJGPP
# functions, edit the appropriate REPLACE_foo variables to 1: # functions, edit the appropriate REPLACE_foo variables to 1:
@ -38,22 +33,22 @@
# as above should be placed before that catchall rule (search for # as above should be placed before that catchall rule (search for
# "REPLACE_" below). # "REPLACE_" below).
# #
# . If the module is a header or adds headers, edit the corresponding # . If the module generates a header from a .in.h file, edit the
# variable to either an empty value or to the name of the header. # corresponding variable to either an empty value or to the name of
# Examples: # the header. Examples:
# #
# /^STDINT_H *=/s/@[^@\n]*@/stdint.h/ -- stdint.h is needed # /^STDINT_H *=/s/@[^@\n]*@/stdint.h/ -- stdint.h is needed
# /^STDDEF_H *=/s/@[^@\n]*@// -- stddef.h is not needed # /^STDDEF_H *=/s/@[^@\n]*@// -- stddef.h is not needed
# #
# . Some of the headers are generated conditionally, and the # . Some of the headers are generated conditionally, and the
# corresponding recipes are guarded by @GL_GENERATE_xxxx_H_TRUE@ # corresponding recipes are guarded by
# and @GL_GENERATE_xxxx_H_FALSE@. Depending on whether DJGPP uses # ifneq (,$(GL_GENERATE_xxxx_H))
# the corresponding header, these should be edited either to # Depending on whether DJGPP uses the corresponding header, these
# nothing (thus exposing the recipe) or to #, which comments the # should be edited either to 1 (thus exposing the recipe) or
# recipe away. Example: # to nothing, which makes Make bypass the recipe away. Example:
# #
# s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/ # s/^@GL_GENERATE_STDBOOL_H@/1/
# s/^@GL_GENERATE_STDBOOL_H_FALSE@// # s/^@GL_GENERATE_STDINT_H@//
# #
# . Also edit the NEXT_foo_H and NEXT_AS_FIRST_DIRECTIVE_foo_H # . Also edit the NEXT_foo_H and NEXT_AS_FIRST_DIRECTIVE_foo_H
# variables as appropriately: to an empty value if the gnulib # variables as appropriately: to an empty value if the gnulib
@ -67,7 +62,7 @@
# #
# . Note that some gnulib headers cannot be left unused: those for # . Note that some gnulib headers cannot be left unused: those for
# which there's no corresponding foo_H variable in # which there's no corresponding foo_H variable in
# msdos/autogen/Makefile.in (example: stdio.h). For these the "not # lib/Makefile.in (example: stdio.h). For these the "not
# needed" path is not applicable. # needed" path is not applicable.
# #
# . If the header is needed, edit all the variables it uses as # . If the header is needed, edit all the variables it uses as
@ -135,8 +130,6 @@
/^@SET_MAKE@$/s/@SET_MAKE@// /^@SET_MAKE@$/s/@SET_MAKE@//
/^VPATH *=/s/@[^@\n]*@/./ /^VPATH *=/s/@[^@\n]*@/./
s/@PACKAGE@/emacs/ s/@PACKAGE@/emacs/
/^am__cd *=/c\
am__cd = cd
/^@BUILDING_FOR_WINDOWSNT_TRUE@/s/@[^@\n]*@/#/ /^@BUILDING_FOR_WINDOWSNT_TRUE@/s/@[^@\n]*@/#/
/^@BUILDING_FOR_WINDOWSNT_FALSE@/s/@[^@\n]*@// /^@BUILDING_FOR_WINDOWSNT_FALSE@/s/@[^@\n]*@//
/^ALLOCA *=/s/@[^@\n]*@// /^ALLOCA *=/s/@[^@\n]*@//
@ -145,6 +138,7 @@ am__cd = cd
/^AR *=/s/@[^@\n]*@/ar/ /^AR *=/s/@[^@\n]*@/ar/
/^ARFLAGS *=/s/@[^@\n]*@/cru/ /^ARFLAGS *=/s/@[^@\n]*@/cru/
/^AWK *=/s/@[^@\n]*@/gawk/ /^AWK *=/s/@[^@\n]*@/gawk/
/^AUTO_DEPEND *=/s/@AUTO_DEPEND@/yes/
/^CANNOT_DUMP *=/s/@[^@\n]*@/no/ /^CANNOT_DUMP *=/s/@[^@\n]*@/no/
/^CC *=/s/@[^@\n]*@/gcc -std=gnu99/ /^CC *=/s/@[^@\n]*@/gcc -std=gnu99/
/^CPP *=/s/@[^@\n]*@/gcc -e/ /^CPP *=/s/@[^@\n]*@/gcc -e/
@ -159,6 +153,7 @@ am__cd = cd
/^C_SWITCH_X_SITE *=/s/@C_SWITCH_X_SITE@// /^C_SWITCH_X_SITE *=/s/@C_SWITCH_X_SITE@//
/^PROFILING_CFLAGS *=/s/@PROFILING_CFLAGS@// /^PROFILING_CFLAGS *=/s/@PROFILING_CFLAGS@//
/^GNULIB_WARN_CFLAGS *=/s/@GNULIB_WARN_CFLAGS@// /^GNULIB_WARN_CFLAGS *=/s/@GNULIB_WARN_CFLAGS@//
/^HYBRID_MALLOC *=/s/@HYBRID_MALLOC@//
/^WARN_CFLAGS *=/s/@WARN_CFLAGS@// /^WARN_CFLAGS *=/s/@WARN_CFLAGS@//
/^WERROR_CFLAGS *=/s/@WERROR_CFLAGS@// /^WERROR_CFLAGS *=/s/@WERROR_CFLAGS@//
/^DEFS *=/s/@[^@\n]*@// /^DEFS *=/s/@[^@\n]*@//
@ -191,6 +186,7 @@ am__cd = cd
/^GNULIB_MKOSTEMP *=/s/@GNULIB_MKOSTEMP@/1/ /^GNULIB_MKOSTEMP *=/s/@GNULIB_MKOSTEMP@/1/
/^GNULIB_MKTIME *=/s/@GNULIB_MKTIME@/1/ /^GNULIB_MKTIME *=/s/@GNULIB_MKTIME@/1/
/^GNULIB_TIME_R *=/s/@GNULIB_TIME_R@/1/ /^GNULIB_TIME_R *=/s/@GNULIB_TIME_R@/1/
/^GNULIB_TIMEGM *=/s/@GNULIB_TIMEGM@/1/
/^GNULIB_TIME_RZ *=/s/@GNULIB_TIME_RZ@/1/ /^GNULIB_TIME_RZ *=/s/@GNULIB_TIME_RZ@/1/
/^GNULIB_UNSETENV *=/s/@GNULIB_UNSETENV@/1/ /^GNULIB_UNSETENV *=/s/@GNULIB_UNSETENV@/1/
/^GNULIB_[^ =]* *= *@/s/@[^@\n]*@/0/ /^GNULIB_[^ =]* *= *@/s/@[^@\n]*@/0/
@ -250,6 +246,7 @@ am__cd = cd
/^HAVE_SYS_PARAM_H *=/s/@HAVE_SYS_PARAM_H@/1/ /^HAVE_SYS_PARAM_H *=/s/@HAVE_SYS_PARAM_H@/1/
/^HAVE_SYS_TIME_H *=/s/@HAVE_SYS_TIME_H@/1/ /^HAVE_SYS_TIME_H *=/s/@HAVE_SYS_TIME_H@/1/
/^HAVE_SYS_TYPES_H *=/s/@HAVE_SYS_TYPES_H@/1/ /^HAVE_SYS_TYPES_H *=/s/@HAVE_SYS_TYPES_H@/1/
/^HAVE_TIMEGM *=/s/@HAVE_TIMEGM@/0/
/^HAVE_TYPE_VOLATILE_SIG_ATOMIC_T *=/s/@HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@/1/ /^HAVE_TYPE_VOLATILE_SIG_ATOMIC_T *=/s/@HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@/1/
/^HAVE_UNISTD_H *=/s/@HAVE_UNISTD_H@/1/ /^HAVE_UNISTD_H *=/s/@HAVE_UNISTD_H@/1/
/^HAVE_UNSIGNED_LONG_LONG_INT *=/s/@HAVE_UNSIGNED_LONG_LONG_INT@/1/ /^HAVE_UNSIGNED_LONG_LONG_INT *=/s/@HAVE_UNSIGNED_LONG_LONG_INT@/1/
@ -273,6 +270,7 @@ am__cd = cd
/^NEXT_AS_FIRST_DIRECTIVE_ERRNO_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_ERRNO_H *=/s/@[^@\n]*@//
/^NEXT_AS_FIRST_DIRECTIVE_FCNTL_H *=/s/@[^@\n]*@/<fcntl.h>/ /^NEXT_AS_FIRST_DIRECTIVE_FCNTL_H *=/s/@[^@\n]*@/<fcntl.h>/
/^NEXT_AS_FIRST_DIRECTIVE_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/ /^NEXT_AS_FIRST_DIRECTIVE_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/
/^NEXT_AS_FIRST_DIRECTIVE_LIMITS_H *=/s/@[^@\n]*@/<limits.h>/
/^NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H *=/s/@[^@\n]*@/<signal.h>/ /^NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H *=/s/@[^@\n]*@/<signal.h>/
/^NEXT_AS_FIRST_DIRECTIVE_STDDEF_H *=/s/@[^@\n]*@/<stddef.h>/ /^NEXT_AS_FIRST_DIRECTIVE_STDDEF_H *=/s/@[^@\n]*@/<stddef.h>/
/^NEXT_AS_FIRST_DIRECTIVE_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/ /^NEXT_AS_FIRST_DIRECTIVE_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/
@ -289,6 +287,7 @@ am__cd = cd
/^NEXT_ERRNO_H *=/s/@[^@\n]*@// /^NEXT_ERRNO_H *=/s/@[^@\n]*@//
/^NEXT_FCNTL_H *=/s/@[^@\n]*@/<fcntl.h>/ /^NEXT_FCNTL_H *=/s/@[^@\n]*@/<fcntl.h>/
/^NEXT_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/ /^NEXT_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/
/^NEXT_LIMITS_H *=/s/@[^@\n]*@/<limits.h>/
/^NEXT_SIGNAL_H *=/s/@[^@\n]*@/<signal.h>/ /^NEXT_SIGNAL_H *=/s/@[^@\n]*@/<signal.h>/
/^NEXT_STDDEF_H *=/s/@[^@\n]*@/<stddef.h>/ /^NEXT_STDDEF_H *=/s/@[^@\n]*@/<stddef.h>/
/^NEXT_STDIO_H *=/s/@[^@\n]*@/<stdio.h>/ /^NEXT_STDIO_H *=/s/@[^@\n]*@/<stdio.h>/
@ -317,6 +316,8 @@ am__cd = cd
/^DIRENT_H *=/s/@[^@\n]*@// /^DIRENT_H *=/s/@[^@\n]*@//
/^ERRNO_H *=/s/@[^@\n]*@// /^ERRNO_H *=/s/@[^@\n]*@//
/^EXECINFO_H *=/s/@[^@\n]*@/execinfo.h/ /^EXECINFO_H *=/s/@[^@\n]*@/execinfo.h/
/^GETOPT_CDEFS_H *=/s/@[^@\n]*@/getopt-cdefs.h/
/^LIMITS_H *=/s/@[^@\n]*@/limits.h/
/^STDALIGN_H *=/s/@[^@\n]*@/stdalign.h/ /^STDALIGN_H *=/s/@[^@\n]*@/stdalign.h/
/^STDDEF_H *=/s/@[^@\n]*@/stddef.h/ /^STDDEF_H *=/s/@[^@\n]*@/stddef.h/
/^STDINT_H *=/s/@[^@\n]*@/stdint.h/ /^STDINT_H *=/s/@[^@\n]*@/stdint.h/
@ -330,6 +331,8 @@ am__cd = cd
/^WINT_T_SUFFIX *=/s/@WINT_T_SUFFIX@// /^WINT_T_SUFFIX *=/s/@WINT_T_SUFFIX@//
/^WINDOWS_64_BIT_OFF_T *=/s/@WINDOWS_64_BIT_OFF_T@/0/ /^WINDOWS_64_BIT_OFF_T *=/s/@WINDOWS_64_BIT_OFF_T@/0/
/^WINDOWS_64_BIT_ST_SIZE *=/s/@WINDOWS_64_BIT_ST_SIZE@/0/ /^WINDOWS_64_BIT_ST_SIZE *=/s/@WINDOWS_64_BIT_ST_SIZE@/0/
/^WINDOWS_STAT_INODES *=/s/@WINDOWS_STAT_INODES@/0/
/^WINDOWS_STAT_TIMESPEC *=/s/@WINDOWS_STAT_TIMESPEC@/0/
# Tailor lists of files to what we need # Tailor lists of files to what we need
/am__append_[1-9][0-9]* *=.*gettext\.h/s/@[^@\n]*@/\#/ /am__append_[1-9][0-9]* *=.*gettext\.h/s/@[^@\n]*@/\#/
/am__append_2 *=.*verify\.h/s/@[^@\n]*@// /am__append_2 *=.*verify\.h/s/@[^@\n]*@//
@ -357,15 +360,18 @@ am__cd = cd
/^top_builddir *=/s/@[^@\n]*@/../ /^top_builddir *=/s/@[^@\n]*@/../
s/@PRAGMA_SYSTEM_HEADER@/\#pragma GCC system_header/ s/@PRAGMA_SYSTEM_HEADER@/\#pragma GCC system_header/
s/@PRAGMA_COLUMNS@// s/@PRAGMA_COLUMNS@//
/^SYSTEM_TYPE *=/s/@SYSTEM_TYPE@/msdos/
/^ifneq (\$(SYSTEM_TYPE),windows-nt)/,/^endif/d
/^DEPDIR *=/a\
AUTO_DEPEND = yes
# #
# Delete the recipes we don't want to get in our way. # Delete the recipes we don't want to get in our way.
/^\$(srcdir)\/Makefile\.in:/,/^[ ][ ]*\$(AUTOMAKE)/d /^\.\.\/config.status:/,/^Makefile:/c\
/^Makefile:/,/^[ ][ ]*esac/d Makefile: $(srcdir)/Makefile.in
/^\$(top_srcdir)\/configure:/,/^\$(am__aclocal_m4_deps):/d
/^\$(top_builddir)\/config.status:/,/^$/d
# #
# Remove the dependencies on $(top_builddir)/config.status # Remove the dependencies on $(top_builddir)/config.status
s/ $(top_builddir)\/config.status// s/ \.\.\/config.status//
s/ \$(top_builddir)\/config.status//
# #
# Fix the include-dependency lines # Fix the include-dependency lines
s/^@AMDEP_TRUE@// s/^@AMDEP_TRUE@//
@ -387,23 +393,53 @@ CONFIG_CLEAN_VPATH_FILES = xyzzy
s/^ -*test -z.*|| rm/ -rm/ s/^ -*test -z.*|| rm/ -rm/
s/@echo /@djecho / s/@echo /@djecho /
# #
# Fix the recipes for header files # Determine which headers to generate
s/^@GL_GENERATE_ALLOCA_H_TRUE@// s/= @GL_GENERATE_ALLOCA_H@/= 1/
s/^@GL_GENERATE_ALLOCA_H_FALSE@/\#/ s/= @GL_GENERATE_BYTESWAP_H@/= 1/
s/^@GL_GENERATE_BYTESWAP_H_TRUE@// s/= @GL_GENERATE_EXECINFO_H@/= 1/
s/^@GL_GENERATE_BYTESWAP_H_FALSE@/\#/ s/= @GL_GENERATE_STDALIGN_H@/= 1/
s/^@GL_GENERATE_ERRNO_H_TRUE@/\#/ s/= @GL_GENERATE_STDDEF_H@/= 1/
s/^@GL_GENERATE_ERRNO_H_FALSE@// s/= @GL_GENERATE_STDINT_H@/= 1/
s/^@GL_GENERATE_EXECINFO_H_TRUE@// s/= @GL_GENERATE_LIMITS_H@/= 1/
s/^@GL_GENERATE_EXECINFO_H_FALSE@/\#/ s/= @GL_GENERATE_ERRNO_H@/= /
s/^@GL_GENERATE_STDALIGN_H_TRUE@// s/= @GL_GENERATE_LIMITS_H@/= /
s/^@GL_GENERATE_STDALIGN_H_FALSE@/\#/ #
s/^@GL_GENERATE_STDDEF_H_TRUE@// # Determine which modules to build and which to omit
s/^@GL_GENERATE_STDDEF_H_FALSE@/\#/ /^noinst_LIBRARIES /a\
s/^@GL_GENERATE_STDINT_H_TRUE@// OMIT_GNULIB_MODULE_acl-permissions = true\
s/^@GL_GENERATE_STDINT_H_FALSE@/\#/ OMIT_GNULIB_MODULE_allocator = true\
s/^@GL_GENERATE_STDALIGN_H_TRUE@// OMIT_GNULIB_MODULE_at-internal = true\
s/^@GL_GENERATE_STDALIGN_H_FALSE@/\#/ OMIT_GNULIB_MODULE_careadlinkat = true\
OMIT_GNULIB_MODULE_cloexec = true\
OMIT_GNULIB_MODULE_dirent = true\
OMIT_GNULIB_MODULE_dirfd = true\
OMIT_GNULIB_MODULE_dup2 = true\
OMIT_GNULIB_MODULE_errno = true\
OMIT_GNULIB_MODULE_euidaccess = true\
OMIT_GNULIB_MODULE_faccessat = true\
OMIT_GNULIB_MODULE_fcntl = true\
OMIT_GNULIB_MODULE_fdopendir = true\
OMIT_GNULIB_MODULE_fstatat = true\
OMIT_GNULIB_MODULE_fsync = true\
OMIT_GNULIB_MODULE_getdtablesize = true\
OMIT_GNULIB_MODULE_getgroups = true\
OMIT_GNULIB_MODULE_gettimeofday = true\
OMIT_GNULIB_MODULE_group-member = true\
OMIT_GNULIB_MODULE_inttypes-incomplete = true\
OMIT_GNULIB_MODULE_localtime-buffer = true\
OMIT_GNULIB_MODULE_lstat = true\
OMIT_GNULIB_MODULE_open = true\
OMIT_GNULIB_MODULE_pipe2 = true\
OMIT_GNULIB_MODULE_pselect = true\
OMIT_GNULIB_MODULE_putenv = true\
OMIT_GNULIB_MODULE_qcopy-acl = true\
OMIT_GNULIB_MODULE_readlink = true\
OMIT_GNULIB_MODULE_readlinkat = true\
OMIT_GNULIB_MODULE_strtoimax = true\
OMIT_GNULIB_MODULE_strtoll = true\
OMIT_GNULIB_MODULE_symlink = true\
OMIT_GNULIB_MODULE_sys_select = true\
OMIT_GNULIB_MODULE_sys_time = true
/^arg-nonnull\.h:/,/^[ ][ ]*mv /c\ /^arg-nonnull\.h:/,/^[ ][ ]*mv /c\
arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h\ arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h\
sed -n -e '/GL_ARG_NONNULL/,$$p' < $(top_srcdir)/build-aux/snippet/arg-nonnull.h > $@ sed -n -e '/GL_ARG_NONNULL/,$$p' < $(top_srcdir)/build-aux/snippet/arg-nonnull.h > $@
@ -416,6 +452,7 @@ warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h\
s/^ [ ]*{ echo \(.*\); \\/ djecho \1 > $@-t/ s/^ [ ]*{ echo \(.*\); \\/ djecho \1 > $@-t/
s/^ [ ]*{ echo \(.*\) && \\/ djecho \1 > $@-t/ s/^ [ ]*{ echo \(.*\) && \\/ djecho \1 > $@-t/
s/^ [ ]*cat \(.*\); \\/ sed -e '' \1 >> $@-t/ s/^ [ ]*cat \(.*\); \\/ sed -e '' \1 >> $@-t/
s/^ sed -e/ sed -e/
s/ \&\& \\ *$// s/ \&\& \\ *$//
s/\.in-h\; *\\$/.in-h >> $@-t/ s/\.in-h\; *\\$/.in-h >> $@-t/
/^ [ ]*} /d /^ [ ]*} /d

View file

@ -25,6 +25,7 @@ export FNCASE=y
/^top_srcdir *=/s|@top_srcdir@|./..| /^top_srcdir *=/s|@top_srcdir@|./..|
/^EXEEXT *=/s/@EXEEXT@/.exe/ /^EXEEXT *=/s/@EXEEXT@/.exe/
/^XARGS_LIMIT *=/s|@XARGS_LIMIT@|| /^XARGS_LIMIT *=/s|@XARGS_LIMIT@||
/^FIND_DELETE *=/s/@FIND_DELETE@/-delete/
/^AM_DEFAULT_VERBOSITY *=/s/@AM_DEFAULT_VERBOSITY@/1/ /^AM_DEFAULT_VERBOSITY *=/s/@AM_DEFAULT_VERBOSITY@/1/
/^[Aa][Mm]_/s/@AM_V@/$(V)/ /^[Aa][Mm]_/s/@AM_V@/$(V)/
/^[Aa][Mm]_/s/@AM_DEFAULT_V@/$(AM_DEFAULT_VERBOSITY)/ /^[Aa][Mm]_/s/@AM_DEFAULT_V@/$(AM_DEFAULT_VERBOSITY)/

View file

@ -2923,9 +2923,13 @@ set_next_vector (struct Lisp_Vector *v, struct Lisp_Vector *p)
enum enum
{ {
/* Alignment of struct Lisp_Vector objects. */ /* Alignment of struct Lisp_Vector objects. Because pseudovectors
vector_alignment = COMMON_MULTIPLE (FLEXALIGNOF (struct Lisp_Vector), can contain any C type, align at least as strictly as
GCALIGNMENT), max_align_t. On x86 and x86-64 this can waste up to 8 bytes
for typical vectors, since alignof (max_align_t) is 16 but
typical vectors need only an alignment of 8. However, it is
not worth the hassle to avoid wasting those bytes. */
vector_alignment = COMMON_MULTIPLE (alignof (max_align_t), GCALIGNMENT),
/* Vector size requests are a multiple of this. */ /* Vector size requests are a multiple of this. */
roundup_size = COMMON_MULTIPLE (vector_alignment, word_size) roundup_size = COMMON_MULTIPLE (vector_alignment, word_size)

View file

@ -3616,8 +3616,8 @@ void
fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end) fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end)
{ {
Lisp_Object overlay; Lisp_Object overlay;
struct Lisp_Overlay *before_list; struct Lisp_Overlay *before_list UNINIT;
struct Lisp_Overlay *after_list; struct Lisp_Overlay *after_list UNINIT;
/* These are either nil, indicating that before_list or after_list /* These are either nil, indicating that before_list or after_list
should be assigned, or the cons cell the cdr of which should be should be assigned, or the cons cell the cdr of which should be
assigned. */ assigned. */

View file

@ -686,6 +686,20 @@ composition_gstring_from_id (ptrdiff_t id)
return HASH_VALUE (h, id); return HASH_VALUE (h, id);
} }
DEFUN ("clear-composition-cache", Fclear_composition_cache,
Sclear_composition_cache, 0, 0, 0,
doc: /* Internal use only.
Clear composition cache. */)
(void)
{
Lisp_Object args[] = {QCtest, Qequal, QCsize, make_number (311)};
gstring_hash_table = CALLMANY (Fmake_hash_table, args);
/* Fixme: We call Fclear_face_cache to force complete re-building of
display glyphs. But, it may be better to call this function from
Fclear_face_cache instead. */
return Fclear_face_cache (Qt);
}
bool bool
composition_gstring_p (Lisp_Object gstring) composition_gstring_p (Lisp_Object gstring)
{ {
@ -1982,4 +1996,5 @@ See also the documentation of `auto-composition-mode'. */);
defsubr (&Scompose_string_internal); defsubr (&Scompose_string_internal);
defsubr (&Sfind_composition_internal); defsubr (&Sfind_composition_internal);
defsubr (&Scomposition_get_gstring); defsubr (&Scomposition_get_gstring);
defsubr (&Sclear_composition_cache);
} }

View file

@ -31,7 +31,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <stdbool.h> #include <stdbool.h>
#if defined DOS_NT && !defined DEFER_MS_W32_H #if defined WINDOWSNT && !defined DEFER_MS_W32_H
# include <ms-w32.h> # include <ms-w32.h>
#endif #endif

View file

@ -1888,7 +1888,7 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */)
(Lisp_Object variable) (Lisp_Object variable)
{ {
Lisp_Object tem; Lisp_Object tem;
bool forwarded; bool forwarded UNINIT;
union Lisp_Val_Fwd valcontents; union Lisp_Val_Fwd valcontents;
struct Lisp_Symbol *sym; struct Lisp_Symbol *sym;
struct Lisp_Buffer_Local_Value *blv = NULL; struct Lisp_Buffer_Local_Value *blv = NULL;

View file

@ -2038,11 +2038,11 @@ by text that describes the specified date and time in TIME:
only blank-padded, %l is like %I blank-padded. only blank-padded, %l is like %I blank-padded.
%p is the locale's equivalent of either AM or PM. %p is the locale's equivalent of either AM or PM.
%q is the calendar quarter (14). %q is the calendar quarter (14).
%M is the minute. %M is the minute (00-59).
%S is the second. %S is the second (00-59; 00-60 on platforms with leap seconds)
%N is the nanosecond, %6N the microsecond, %3N the millisecond, etc.
%Z is the time zone name, %z is the numeric form.
%s is the number of seconds since 1970-01-01 00:00:00 +0000. %s is the number of seconds since 1970-01-01 00:00:00 +0000.
%N is the nanosecond, %6N the microsecond, %3N the millisecond, etc.
%Z is the time zone abbreviation, %z is the numeric form.
%c is the locale's date and time format. %c is the locale's date and time format.
%x is the locale's "preferred" date format. %x is the locale's "preferred" date format.
@ -2052,7 +2052,8 @@ by text that describes the specified date and time in TIME:
%R is like "%H:%M", %T is like "%H:%M:%S", %r is like "%I:%M:%S %p". %R is like "%H:%M", %T is like "%H:%M:%S", %r is like "%I:%M:%S %p".
%X is the locale's "preferred" time format. %X is the locale's "preferred" time format.
Finally, %n is a newline, %t is a tab, %% is a literal %. Finally, %n is a newline, %t is a tab, %% is a literal %, and
unrecognized %-sequences stand for themselves.
Certain flags and modifiers are available with some format controls. Certain flags and modifiers are available with some format controls.
The flags are `_', `-', `^' and `#'. For certain characters X, The flags are `_', `-', `^' and `#'. For certain characters X,

View file

@ -2297,7 +2297,7 @@ This is what happens in interactive use with M-x. */)
bool plain_rename = (case_only_rename bool plain_rename = (case_only_rename
|| (!NILP (ok_if_already_exists) || (!NILP (ok_if_already_exists)
&& !INTEGERP (ok_if_already_exists))); && !INTEGERP (ok_if_already_exists)));
int rename_errno; int rename_errno UNINIT;
if (!plain_rename) if (!plain_rename)
{ {
if (renameat_noreplace (AT_FDCWD, SSDATA (encoded_file), if (renameat_noreplace (AT_FDCWD, SSDATA (encoded_file),

View file

@ -26,7 +26,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include "coding.h" #include "coding.h"
#include "buffer.h" #include "buffer.h"
#if 0x030014 <= GNUTLS_VERSION_NUMBER #if GNUTLS_VERSION_NUMBER >= 0x030014
# define HAVE_GNUTLS_X509_SYSTEM_TRUST # define HAVE_GNUTLS_X509_SYSTEM_TRUST
#endif #endif
@ -36,10 +36,16 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
The relevant fix seems to have been made in GnuTLS 3.5.1; see: The relevant fix seems to have been made in GnuTLS 3.5.1; see:
https://gitlab.com/gnutls/gnutls/commit/568935848dd6b82b9315d8b6c529d00e2605e03d https://gitlab.com/gnutls/gnutls/commit/568935848dd6b82b9315d8b6c529d00e2605e03d
So, require 3.5.1. */ So, require 3.5.1. */
#if 0x030501 <= GNUTLS_VERSION_NUMBER #if GNUTLS_VERSION_NUMBER >= 0x030501
# define HAVE_GNUTLS_AEAD # define HAVE_GNUTLS_AEAD
#endif #endif
/* gnutls_mac_get_nonce_size was added in GnuTLS 3.2.0, but was
exported only since 3.3.0. */
#if GNUTLS_VERSION_NUMBER >= 0x030300
# define HAVE_GNUTLS_MAC_GET_NONCE_SIZE
#endif
#ifdef HAVE_GNUTLS #ifdef HAVE_GNUTLS
# ifdef WINDOWSNT # ifdef WINDOWSNT
@ -187,7 +193,9 @@ DEF_DLL_FN (const char *, gnutls_mac_get_name, (gnutls_mac_algorithm_t));
# ifdef HAVE_GNUTLS3 # ifdef HAVE_GNUTLS3
DEF_DLL_FN (int, gnutls_rnd, (gnutls_rnd_level_t, void *, size_t)); DEF_DLL_FN (int, gnutls_rnd, (gnutls_rnd_level_t, void *, size_t));
DEF_DLL_FN (const gnutls_mac_algorithm_t *, gnutls_mac_list, (void)); DEF_DLL_FN (const gnutls_mac_algorithm_t *, gnutls_mac_list, (void));
# ifdef HAVE_GNUTLS_MAC_GET_NONCE_SIZE
DEF_DLL_FN (size_t, gnutls_mac_get_nonce_size, (gnutls_mac_algorithm_t)); DEF_DLL_FN (size_t, gnutls_mac_get_nonce_size, (gnutls_mac_algorithm_t));
# endif
DEF_DLL_FN (size_t, gnutls_mac_get_key_size, (gnutls_mac_algorithm_t)); DEF_DLL_FN (size_t, gnutls_mac_get_key_size, (gnutls_mac_algorithm_t));
DEF_DLL_FN (const gnutls_digest_algorithm_t *, gnutls_digest_list, (void)); DEF_DLL_FN (const gnutls_digest_algorithm_t *, gnutls_digest_list, (void));
DEF_DLL_FN (const char *, gnutls_digest_get_name, (gnutls_digest_algorithm_t)); DEF_DLL_FN (const char *, gnutls_digest_get_name, (gnutls_digest_algorithm_t));
@ -316,7 +324,9 @@ init_gnutls_functions (void)
# ifdef HAVE_GNUTLS3 # ifdef HAVE_GNUTLS3
LOAD_DLL_FN (library, gnutls_rnd); LOAD_DLL_FN (library, gnutls_rnd);
LOAD_DLL_FN (library, gnutls_mac_list); LOAD_DLL_FN (library, gnutls_mac_list);
# ifdef HAVE_GNUTLS_MAC_GET_NONCE_SIZE
LOAD_DLL_FN (library, gnutls_mac_get_nonce_size); LOAD_DLL_FN (library, gnutls_mac_get_nonce_size);
# endif
LOAD_DLL_FN (library, gnutls_mac_get_key_size); LOAD_DLL_FN (library, gnutls_mac_get_key_size);
LOAD_DLL_FN (library, gnutls_digest_list); LOAD_DLL_FN (library, gnutls_digest_list);
LOAD_DLL_FN (library, gnutls_digest_get_name); LOAD_DLL_FN (library, gnutls_digest_get_name);
@ -427,7 +437,9 @@ init_gnutls_functions (void)
# ifdef HAVE_GNUTLS3 # ifdef HAVE_GNUTLS3
# define gnutls_rnd fn_gnutls_rnd # define gnutls_rnd fn_gnutls_rnd
# define gnutls_mac_list fn_gnutls_mac_list # define gnutls_mac_list fn_gnutls_mac_list
# define gnutls_mac_get_nonce_size fn_gnutls_mac_get_nonce_size # ifdef HAVE_GNUTLS_MAC_GET_NONCE_SIZE
# define gnutls_mac_get_nonce_size fn_gnutls_mac_get_nonce_size
# endif
# define gnutls_mac_get_key_size fn_gnutls_mac_get_key_size # define gnutls_mac_get_key_size fn_gnutls_mac_get_key_size
# define gnutls_digest_list fn_gnutls_digest_list # define gnutls_digest_list fn_gnutls_digest_list
# define gnutls_digest_get_name fn_gnutls_digest_get_name # define gnutls_digest_get_name fn_gnutls_digest_get_name
@ -442,10 +454,10 @@ init_gnutls_functions (void)
# define gnutls_cipher_decrypt2 fn_gnutls_cipher_decrypt2 # define gnutls_cipher_decrypt2 fn_gnutls_cipher_decrypt2
# define gnutls_cipher_deinit fn_gnutls_cipher_deinit # define gnutls_cipher_deinit fn_gnutls_cipher_deinit
# ifdef HAVE_GNUTLS_AEAD # ifdef HAVE_GNUTLS_AEAD
# define gnutls_aead_cipher_encrypt fn_gnutls_aead_cipher_encrypt # define gnutls_aead_cipher_encrypt fn_gnutls_aead_cipher_encrypt
# define gnutls_aead_cipher_decrypt fn_gnutls_aead_cipher_decrypt # define gnutls_aead_cipher_decrypt fn_gnutls_aead_cipher_decrypt
# define gnutls_aead_cipher_init fn_gnutls_aead_cipher_init # define gnutls_aead_cipher_init fn_gnutls_aead_cipher_init
# define gnutls_aead_cipher_deinit fn_gnutls_aead_cipher_deinit # define gnutls_aead_cipher_deinit fn_gnutls_aead_cipher_deinit
# endif # endif
# define gnutls_hmac_init fn_gnutls_hmac_init # define gnutls_hmac_init fn_gnutls_hmac_init
# define gnutls_hmac_get_len fn_gnutls_hmac_get_len # define gnutls_hmac_get_len fn_gnutls_hmac_get_len
@ -2178,6 +2190,10 @@ name. */)
/* A symbol representing the GnuTLS MAC algorithm. */ /* A symbol representing the GnuTLS MAC algorithm. */
Lisp_Object gma_symbol = intern (gnutls_mac_get_name (gma)); Lisp_Object gma_symbol = intern (gnutls_mac_get_name (gma));
size_t nonce_size = 0;
#ifdef HAVE_GNUTLS_MAC_GET_NONCE_SIZE
nonce_size = gnutls_mac_get_nonce_size (gma);
#endif
Lisp_Object mp = listn (CONSTYPE_HEAP, 11, gma_symbol, Lisp_Object mp = listn (CONSTYPE_HEAP, 11, gma_symbol,
QCmac_algorithm_id, make_number (gma), QCmac_algorithm_id, make_number (gma),
QCtype, Qgnutls_type_mac_algorithm, QCtype, Qgnutls_type_mac_algorithm,
@ -2189,7 +2205,7 @@ name. */)
make_number (gnutls_mac_get_key_size (gma)), make_number (gnutls_mac_get_key_size (gma)),
QCmac_algorithm_noncesize, QCmac_algorithm_noncesize,
make_number (gnutls_mac_get_nonce_size (gma))); make_number (nonce_size));
mac_algorithms = Fcons (mp, mac_algorithms); mac_algorithms = Fcons (mp, mac_algorithms);
} }

View file

@ -2574,7 +2574,7 @@ xbm_image_p (Lisp_Object object)
static int static int
xbm_scan (char **s, char *end, char *sval, int *ival) xbm_scan (char **s, char *end, char *sval, int *ival)
{ {
unsigned char c; unsigned char c UNINIT;
loop: loop:
@ -5277,6 +5277,25 @@ pbm_scan_number (char **s, char *end)
return val; return val;
} }
/* Scan an index from *S and return it. It is a one-byte unsigned
index if !TWO_BYTE, and a two-byte big-endian unsigned index if
TWO_BYTE. */
static int
pbm_scan_index (char **s, bool two_byte)
{
char *p = *s;
unsigned char c0 = *p++;
int n = c0;
if (two_byte)
{
unsigned char c1 = *p++;
n = (n << 8) + c1;
}
*s = p;
return n;
}
/* Load PBM image IMG for use on frame F. */ /* Load PBM image IMG for use on frame F. */
@ -5499,7 +5518,8 @@ pbm_load (struct frame *f, struct image *img)
else else
{ {
int expected_size = height * width; int expected_size = height * width;
if (max_color_idx > 255) bool two_byte = 255 < max_color_idx;
if (two_byte)
expected_size *= 2; expected_size *= 2;
if (type == PBM_COLOR) if (type == PBM_COLOR)
expected_size *= 3; expected_size *= 3;
@ -5522,24 +5542,14 @@ pbm_load (struct frame *f, struct image *img)
int r, g, b; int r, g, b;
if (type == PBM_GRAY && raw_p) if (type == PBM_GRAY && raw_p)
{ r = g = b = pbm_scan_index (&p, two_byte);
r = g = b = *p++;
if (max_color_idx > 255)
r = g = b = r * 256 + *p++;
}
else if (type == PBM_GRAY) else if (type == PBM_GRAY)
r = g = b = pbm_scan_number (&p, end); r = g = b = pbm_scan_number (&p, end);
else if (raw_p) else if (raw_p)
{ {
r = *p++; r = pbm_scan_index (&p, two_byte);
if (max_color_idx > 255) g = pbm_scan_index (&p, two_byte);
r = r * 256 + *p++; b = pbm_scan_index (&p, two_byte);
g = *p++;
if (max_color_idx > 255)
g = g * 256 + *p++;
b = *p++;
if (max_color_idx > 255)
b = b * 256 + *p++;
} }
else else
{ {
@ -7839,7 +7849,7 @@ gif_load (struct frame *f, struct image *img)
init_color_table (); init_color_table ();
#ifndef USE_CAIRO #ifndef USE_CAIRO
unsigned long bgcolor; unsigned long bgcolor UNINIT;
if (STRINGP (specified_bg)) if (STRINGP (specified_bg))
bgcolor = x_alloc_image_color (f, img, specified_bg, bgcolor = x_alloc_image_color (f, img, specified_bg,
FRAME_BACKGROUND_PIXEL (f)); FRAME_BACKGROUND_PIXEL (f));
@ -8542,13 +8552,19 @@ imagemagick_load_image (struct frame *f, struct image *img,
char hint_buffer[MaxTextExtent]; char hint_buffer[MaxTextExtent];
char *filename_hint = NULL; char *filename_hint = NULL;
/* Initialize the ImageMagick environment. */
static bool imagemagick_initialized;
if (!imagemagick_initialized)
{
imagemagick_initialized = true;
MagickWandGenesis ();
}
/* Handle image index for image types who can contain more than one image. /* Handle image index for image types who can contain more than one image.
Interface :index is same as for GIF. First we "ping" the image to see how Interface :index is same as for GIF. First we "ping" the image to see how
many sub-images it contains. Pinging is faster than loading the image to many sub-images it contains. Pinging is faster than loading the image to
find out things about it. */ find out things about it. */
/* Initialize the imagemagick environment. */
MagickWandGenesis ();
image = image_spec_value (img->spec, QCindex, NULL); image = image_spec_value (img->spec, QCindex, NULL);
ino = INTEGERP (image) ? XFASTINT (image) : 0; ino = INTEGERP (image) ? XFASTINT (image) : 0;
image_wand = NewMagickWand (); image_wand = NewMagickWand ();
@ -8849,8 +8865,10 @@ imagemagick_load_image (struct frame *f, struct image *img,
DestroyMagickWand (image_wand); DestroyMagickWand (image_wand);
if (bg_wand) DestroyPixelWand (bg_wand); if (bg_wand) DestroyPixelWand (bg_wand);
/* `MagickWandTerminus' terminates the imagemagick environment. */ /* Do not call MagickWandTerminus, to work around ImageMagick bug 825. See:
MagickWandTerminus (); https://github.com/ImageMagick/ImageMagick/issues/825
Although this bug was introduced in ImageMagick 6.9.9-14 and
fixed in 6.9.9-18, it's simpler to work around it in all versions. */
return 1; return 1;
@ -8858,7 +8876,6 @@ imagemagick_load_image (struct frame *f, struct image *img,
DestroyMagickWand (image_wand); DestroyMagickWand (image_wand);
if (bg_wand) DestroyPixelWand (bg_wand); if (bg_wand) DestroyPixelWand (bg_wand);
MagickWandTerminus ();
/* TODO more cleanup. */ /* TODO more cleanup. */
image_error ("Error parsing IMAGEMAGICK image `%s'", img->spec); image_error ("Error parsing IMAGEMAGICK image `%s'", img->spec);
return 0; return 0;

View file

@ -1974,6 +1974,11 @@ line_number_display_width (struct window *w, int *width, int *pixel_width)
saved_restriction = true; saved_restriction = true;
} }
start_display (&it, w, wstart); start_display (&it, w, wstart);
/* The call to move_it_by_lines below will not generate a line
number if the first line shown in the window is hscrolled
such that all of its display elements are out of view. So we
pretend the hscroll doesn't exist. */
it.first_visible_x = 0;
move_it_by_lines (&it, 1); move_it_by_lines (&it, 1);
*width = it.lnum_width; *width = it.lnum_width;
*pixel_width = it.lnum_pixel_width; *pixel_width = it.lnum_pixel_width;
@ -1986,14 +1991,26 @@ line_number_display_width (struct window *w, int *width, int *pixel_width)
DEFUN ("line-number-display-width", Fline_number_display_width, DEFUN ("line-number-display-width", Fline_number_display_width,
Sline_number_display_width, 0, 1, 0, Sline_number_display_width, 0, 1, 0,
doc: /* Return the width used for displaying line numbers in the selected window. doc: /* Return the width used for displaying line numbers in the selected window.
If optional argument PIXELWISE is non-nil, return the width in pixels, If optional argument PIXELWISE is the symbol `columns', return the width
otherwise return the width in columns of the face used to display in units of the frame's canonical character width. In this case, the
line numbers, `line-number'. */) value is a float.
If optional argument PIXELWISE is t or any other non-nil value, return
the width as an integer number of pixels.
Otherwise return the value as an integer number of columns of the face
used to display line numbers, `line-number'. Note that in the latter
case, the value doesn't include the 2 columns used for padding the
numbers on display. */)
(Lisp_Object pixelwise) (Lisp_Object pixelwise)
{ {
int width, pixel_width; int width, pixel_width;
struct window *w = XWINDOW (selected_window);
line_number_display_width (XWINDOW (selected_window), &width, &pixel_width); line_number_display_width (XWINDOW (selected_window), &width, &pixel_width);
if (!NILP (pixelwise)) if (EQ (pixelwise, Qcolumns))
{
struct frame *f = XFRAME (w->frame);
return make_float ((double) pixel_width / FRAME_COLUMN_WIDTH (f));
}
else if (!NILP (pixelwise))
return make_number (pixel_width); return make_number (pixel_width);
return make_number (width); return make_number (width);
} }
@ -2355,6 +2372,8 @@ syms_of_indent (void)
doc: /* Indentation can insert tabs if this is non-nil. */); doc: /* Indentation can insert tabs if this is non-nil. */);
indent_tabs_mode = 1; indent_tabs_mode = 1;
DEFSYM (Qcolumns, "columns");
defsubr (&Scurrent_indentation); defsubr (&Scurrent_indentation);
defsubr (&Sindent_to); defsubr (&Sindent_to);
defsubr (&Scurrent_column); defsubr (&Scurrent_column);

View file

@ -3943,6 +3943,8 @@ careadlinkat (int fd, char const *filename,
int int
faccessat (int dirfd, const char * path, int mode, int flags) faccessat (int dirfd, const char * path, int mode, int flags)
{ {
char fullname[MAXPATHLEN];
/* We silently ignore FLAGS. */ /* We silently ignore FLAGS. */
flags = flags; flags = flags;

View file

@ -21,6 +21,8 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <dpmi.h> #include <dpmi.h>
#include "termhooks.h" /* struct terminal */
int dos_ttraw (struct tty_display_info *); int dos_ttraw (struct tty_display_info *);
int dos_ttcooked (void); int dos_ttcooked (void);
int dos_get_saved_screen (char **, int *, int *); int dos_get_saved_screen (char **, int *, int *);
@ -67,6 +69,7 @@ void syms_of_win16select (void);
/* Constants. */ /* Constants. */
#define EINPROGRESS 112 #define EINPROGRESS 112
#define ENOTSUP ENOSYS
/* Gnulib sets O_CLOEXEC to O_NOINHERIT, which gets in the way when we /* Gnulib sets O_CLOEXEC to O_NOINHERIT, which gets in the way when we
need to redirect standard handles for subprocesses using temporary need to redirect standard handles for subprocesses using temporary
files created by mkostemp, see callproc.c. */ files created by mkostemp, see callproc.c. */

View file

@ -423,20 +423,12 @@ - (NSColor *)colorUsingDefaultColorSpace
} }
/* GNUstep always shows decorations if the window is resizable, /* These flags will be OR'd or XOR'd with the NSWindow's styleMask
miniaturizable or closable, but Cocoa does strange things in native
fullscreen mode if you don't have at least resizable enabled.
These flags will be OR'd or XOR'd with the NSWindow's styleMask
property depending on what we're doing. */ property depending on what we're doing. */
#ifdef NS_IMPL_COCOA
#define FRAME_DECORATED_FLAGS NSWindowStyleMaskTitled
#else
#define FRAME_DECORATED_FLAGS (NSWindowStyleMaskTitled \ #define FRAME_DECORATED_FLAGS (NSWindowStyleMaskTitled \
| NSWindowStyleMaskResizable \ | NSWindowStyleMaskResizable \
| NSWindowStyleMaskMiniaturizable \ | NSWindowStyleMaskMiniaturizable \
| NSWindowStyleMaskClosable) | NSWindowStyleMaskClosable)
#endif
#define FRAME_UNDECORATED_FLAGS NSWindowStyleMaskBorderless #define FRAME_UNDECORATED_FLAGS NSWindowStyleMaskBorderless
/* TODO: get rid of need for these forward declarations */ /* TODO: get rid of need for these forward declarations */
@ -7211,15 +7203,9 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f
win = [[EmacsWindow alloc] win = [[EmacsWindow alloc]
initWithContentRect: r initWithContentRect: r
styleMask: ((FRAME_UNDECORATED (f) styleMask: (FRAME_UNDECORATED (f)
? FRAME_UNDECORATED_FLAGS ? FRAME_UNDECORATED_FLAGS
: FRAME_DECORATED_FLAGS) : FRAME_DECORATED_FLAGS)
#ifdef NS_IMPL_COCOA
| NSWindowStyleMaskResizable
| NSWindowStyleMaskMiniaturizable
| NSWindowStyleMaskClosable
#endif
)
backing: NSBackingStoreBuffered backing: NSBackingStoreBuffered
defer: YES]; defer: YES];

View file

@ -40,6 +40,8 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <netinet/in.h> #include <netinet/in.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#endif /* subprocesses */
#ifdef HAVE_SETRLIMIT #ifdef HAVE_SETRLIMIT
# include <sys/resource.h> # include <sys/resource.h>
@ -49,6 +51,8 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
static struct rlimit nofile_limit; static struct rlimit nofile_limit;
#endif #endif
#ifdef subprocesses
/* Are local (unix) sockets supported? */ /* Are local (unix) sockets supported? */
#if defined (HAVE_SYS_UN_H) #if defined (HAVE_SYS_UN_H)
#if !defined (AF_LOCAL) && defined (AF_UNIX) #if !defined (AF_LOCAL) && defined (AF_UNIX)
@ -3830,7 +3834,7 @@ usage: (make-network-process &rest ARGS) */)
Lisp_Object proc; Lisp_Object proc;
Lisp_Object contact; Lisp_Object contact;
struct Lisp_Process *p; struct Lisp_Process *p;
const char *portstring; const char *portstring UNINIT;
ptrdiff_t portstringlen ATTRIBUTE_UNUSED; ptrdiff_t portstringlen ATTRIBUTE_UNUSED;
char portbuf[INT_BUFSIZE_BOUND (EMACS_INT)]; char portbuf[INT_BUFSIZE_BOUND (EMACS_INT)];
#ifdef HAVE_LOCAL_SOCKETS #ifdef HAVE_LOCAL_SOCKETS
@ -7455,6 +7459,13 @@ keyboard_bit_set (fd_set *mask)
#else /* not subprocesses */ #else /* not subprocesses */
/* This is referenced in thread.c:run_thread (which is never actually
called, since threads are not enabled for this configuration. */
void
update_processes_for_thread_death (Lisp_Object dying_thread)
{
}
/* Defined in msdos.c. */ /* Defined in msdos.c. */
extern int sys_select (int, fd_set *, fd_set *, fd_set *, extern int sys_select (int, fd_set *, fd_set *, fd_set *,
struct timespec *, void *); struct timespec *, void *);

View file

@ -831,6 +831,8 @@ unblock_child_signal (sigset_t const *oldset)
pthread_sigmask (SIG_SETMASK, oldset, 0); pthread_sigmask (SIG_SETMASK, oldset, 0);
} }
#endif /* !MSDOS */
/* Block SIGINT. */ /* Block SIGINT. */
void void
block_interrupt_signal (sigset_t *oldset) block_interrupt_signal (sigset_t *oldset)
@ -848,7 +850,6 @@ restore_signal_mask (sigset_t const *oldset)
pthread_sigmask (SIG_SETMASK, oldset, 0); pthread_sigmask (SIG_SETMASK, oldset, 0);
} }
#endif /* !MSDOS */
/* Saving and restoring the process group of Emacs's terminal. */ /* Saving and restoring the process group of Emacs's terminal. */

View file

@ -50,6 +50,11 @@ typedef int fd_set;
#endif #endif
#ifdef MSDOS #ifdef MSDOS
/* The above #define for 'select' gets in the way because sysselect.h
is included in thread.h, which is included everywhere, and 'select'
declared in DJGPP system headers has a signature incompatible with
'pselect', which we emulate in msdos.c. */
#undef select
#define pselect sys_select #define pselect sys_select
#endif #endif

View file

@ -187,7 +187,7 @@ sys_thread_yield (void)
#elif defined (WINDOWSNT) #elif defined (WINDOWSNT)
#include <windows.h> #include <w32term.h>
/* Cannot include <process.h> because of the local header by the same /* Cannot include <process.h> because of the local header by the same
name, sigh. */ name, sigh. */
@ -326,8 +326,9 @@ sys_thread_self (void)
static thread_creation_function *thread_start_address; static thread_creation_function *thread_start_address;
/* _beginthread wants a void function, while we are passed a function /* _beginthread wants a void function, while we are passed a function
that returns a pointer. So we use a wrapper. */ that returns a pointer. So we use a wrapper. See the command in
static void w32term.h about the need for ALIGN_STACK attribute. */
static void ALIGN_STACK
w32_beginthread_wrapper (void *arg) w32_beginthread_wrapper (void *arg)
{ {
(void)thread_start_address (arg); (void)thread_start_address (arg);

View file

@ -806,7 +806,11 @@ If NAME is given, it must be a string; it names the new thread. */)
{ {
/* Restore the previous situation. */ /* Restore the previous situation. */
all_threads = all_threads->next_thread; all_threads = all_threads->next_thread;
#ifdef THREADS_ENABLED
error ("Could not start a new thread"); error ("Could not start a new thread");
#else
error ("Concurrency is not supported in this configuration");
#endif
} }
/* FIXME: race here where new thread might not be filled in? */ /* FIXME: race here where new thread might not be filled in? */

View file

@ -25,6 +25,10 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <sys/socket.h> #include <sys/socket.h>
#endif #endif
#ifdef MSDOS
#include <signal.h> /* sigset_t */
#endif
#include "sysselect.h" /* FIXME */ #include "sysselect.h" /* FIXME */
#include "systime.h" /* FIXME */ #include "systime.h" /* FIXME */
#include "systhread.h" #include "systhread.h"

View file

@ -5847,7 +5847,8 @@ This function is an internal primitive--use `make-frame' instead. */)
that are needed to determine window geometry. */ that are needed to determine window geometry. */
x_default_font_parameter (f, parameters); x_default_font_parameter (f, parameters);
x_default_parameter (f, parameters, Qborder_width, make_number (2), /* Default BorderWidth to 0 to match other platforms. */
x_default_parameter (f, parameters, Qborder_width, make_number (0),
"borderWidth", "BorderWidth", RES_TYPE_NUMBER); "borderWidth", "BorderWidth", RES_TYPE_NUMBER);
/* We recognize either internalBorderWidth or internalBorder /* We recognize either internalBorderWidth or internalBorder
@ -5862,7 +5863,7 @@ This function is an internal primitive--use `make-frame' instead. */)
parameters = Fcons (Fcons (Qinternal_border_width, value), parameters = Fcons (Fcons (Qinternal_border_width, value),
parameters); parameters);
} }
/* Default internalBorderWidth to 0 on Windows to match other programs. */
x_default_parameter (f, parameters, Qinternal_border_width, make_number (0), x_default_parameter (f, parameters, Qinternal_border_width, make_number (0),
"internalBorderWidth", "InternalBorder", RES_TYPE_NUMBER); "internalBorderWidth", "InternalBorder", RES_TYPE_NUMBER);
x_default_parameter (f, parameters, Qright_divider_width, make_number (0), x_default_parameter (f, parameters, Qright_divider_width, make_number (0),

View file

@ -22,13 +22,14 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include "frame.h" #include "frame.h"
#include "atimer.h" #include "atimer.h"
/* Stack alignment stuff. Every CALLBACK function should have the /* Stack alignment stuff. Every CALLBACK and thread function should
ALIGN_STACK attribute if it manipulates Lisp objects, because have the ALIGN_STACK attribute if it manipulates Lisp objects,
Windows x86 32-bit ABI only guarantees 4-byte stack alignment, and because Windows x86 32-bit ABI only guarantees 4-byte stack
that is what we will get when a Windows function calls us. The alignment, and that is what we will get when a Windows function
ALIGN_STACK attribute forces GCC to emit a preamble code to calls us. The ALIGN_STACK attribute forces GCC to emit a preamble
re-align the stack at function entry. Further details about this code to re-align the stack at function entry. Further details
can be found in http://www.peterstock.co.uk/games/mingw_sse/. */ about this can be found in
http://www.peterstock.co.uk/games/mingw_sse/. */
#ifdef __GNUC__ #ifdef __GNUC__
# if USE_STACK_LISP_OBJECTS && !defined _WIN64 && !defined __x86_64__ \ # if USE_STACK_LISP_OBJECTS && !defined _WIN64 && !defined __x86_64__ \
&& __GNUC__ + (__GNUC_MINOR__ > 1) >= 5 && __GNUC__ + (__GNUC_MINOR__ > 1) >= 5

View file

@ -20889,9 +20889,11 @@ maybe_produce_line_number (struct it *it)
&& it->w->base_line_pos <= IT_CHARPOS (*it) && it->w->base_line_pos <= IT_CHARPOS (*it)
/* line-number-mode always displays narrowed line /* line-number-mode always displays narrowed line
numbers, so we cannot use its data if the user wants numbers, so we cannot use its data if the user wants
line numbers that disregard narrowing. */ line numbers that disregard narrowing, or if the
buffer's narrowing has just changed. */
&& !(display_line_numbers_widen && !(display_line_numbers_widen
&& (BEG_BYTE != BEGV_BYTE || Z_BYTE != ZV_BYTE))) && (BEG_BYTE != BEGV_BYTE || Z_BYTE != ZV_BYTE))
&& !current_buffer->clip_changed)
{ {
start_from = CHAR_TO_BYTE (it->w->base_line_pos); start_from = CHAR_TO_BYTE (it->w->base_line_pos);
last_line = it->w->base_line_number - 1; last_line = it->w->base_line_number - 1;
@ -25121,7 +25123,20 @@ else if the text is replaced by an ellipsis. */)
'(space :width (+ left-fringe left-margin (- (1)))) '(space :width (+ left-fringe left-margin (- (1))))
'(space :width (+ left-fringe left-margin (-1))) '(space :width (+ left-fringe left-margin (-1)))
*/ If ALIGN_TO is NULL, returns the result in *RES. If ALIGN_TO is
non-NULL, the value of *ALIGN_TO is a window-relative pixel
coordinate, and *RES is the additional pixel width from that point
till the end of the stretch glyph.
WIDTH_P non-zero means take the width dimension or X coordinate of
the object specified by PROP, WIDTH_P zero means take the height
dimension or the Y coordinate. (Therefore, if ALIGN_TO is
non-NULL, WIDTH_P should be non-zero.)
FONT is the font of the face of the surrounding text.
The return value is non-zero if width or height were successfully
calculated, i.e. if PROP is a valid spec. */
static bool static bool
calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop, calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
@ -25143,6 +25158,7 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
{ {
char *unit = SSDATA (SYMBOL_NAME (prop)); char *unit = SSDATA (SYMBOL_NAME (prop));
/* The UNIT expression, e.g. as part of (NUM . UNIT). */
if (unit[0] == 'i' && unit[1] == 'n') if (unit[0] == 'i' && unit[1] == 'n')
pixels = 1.0; pixels = 1.0;
else if (unit[0] == 'm' && unit[1] == 'm') else if (unit[0] == 'm' && unit[1] == 'm')
@ -25163,10 +25179,12 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
} }
#ifdef HAVE_WINDOW_SYSTEM #ifdef HAVE_WINDOW_SYSTEM
/* 'height': the height of FONT. */
if (EQ (prop, Qheight)) if (EQ (prop, Qheight))
return OK_PIXELS (font return OK_PIXELS (font
? normal_char_height (font, -1) ? normal_char_height (font, -1)
: FRAME_LINE_HEIGHT (it->f)); : FRAME_LINE_HEIGHT (it->f));
/* 'width': the width of FONT. */
if (EQ (prop, Qwidth)) if (EQ (prop, Qwidth))
return OK_PIXELS (font return OK_PIXELS (font
? FONT_WIDTH (font) ? FONT_WIDTH (font)
@ -25176,33 +25194,48 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
return OK_PIXELS (1); return OK_PIXELS (1);
#endif #endif
/* 'text': the width or height of the text area. */
if (EQ (prop, Qtext)) if (EQ (prop, Qtext))
return OK_PIXELS (width_p return OK_PIXELS (width_p
? window_box_width (it->w, TEXT_AREA) ? (window_box_width (it->w, TEXT_AREA)
- it->lnum_pixel_width)
: WINDOW_BOX_HEIGHT_NO_MODE_LINE (it->w)); : WINDOW_BOX_HEIGHT_NO_MODE_LINE (it->w));
/* ':align_to'. First time we compute the value, window
elements are interpreted as the position of the element's
left edge. */
if (align_to && *align_to < 0) if (align_to && *align_to < 0)
{ {
*res = 0; *res = 0;
/* 'left': left edge of the text area. */
if (EQ (prop, Qleft)) if (EQ (prop, Qleft))
return OK_ALIGN_TO (window_box_left_offset (it->w, TEXT_AREA)); return OK_ALIGN_TO (window_box_left_offset (it->w, TEXT_AREA)
+ it->lnum_pixel_width);
/* 'right': right edge of the text area. */
if (EQ (prop, Qright)) if (EQ (prop, Qright))
return OK_ALIGN_TO (window_box_right_offset (it->w, TEXT_AREA)); return OK_ALIGN_TO (window_box_right_offset (it->w, TEXT_AREA));
/* 'center': the center of the text area. */
if (EQ (prop, Qcenter)) if (EQ (prop, Qcenter))
return OK_ALIGN_TO (window_box_left_offset (it->w, TEXT_AREA) return OK_ALIGN_TO (window_box_left_offset (it->w, TEXT_AREA)
+ it->lnum_pixel_width
+ window_box_width (it->w, TEXT_AREA) / 2); + window_box_width (it->w, TEXT_AREA) / 2);
/* 'left-fringe': left edge of the left fringe. */
if (EQ (prop, Qleft_fringe)) if (EQ (prop, Qleft_fringe))
return OK_ALIGN_TO (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (it->w) return OK_ALIGN_TO (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (it->w)
? WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH (it->w) ? WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH (it->w)
: window_box_right_offset (it->w, LEFT_MARGIN_AREA)); : window_box_right_offset (it->w, LEFT_MARGIN_AREA));
/* 'right-fringe': left edge of the right fringe. */
if (EQ (prop, Qright_fringe)) if (EQ (prop, Qright_fringe))
return OK_ALIGN_TO (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (it->w) return OK_ALIGN_TO (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (it->w)
? window_box_right_offset (it->w, RIGHT_MARGIN_AREA) ? window_box_right_offset (it->w, RIGHT_MARGIN_AREA)
: window_box_right_offset (it->w, TEXT_AREA)); : window_box_right_offset (it->w, TEXT_AREA));
/* 'left-margin': left edge of the left display margin. */
if (EQ (prop, Qleft_margin)) if (EQ (prop, Qleft_margin))
return OK_ALIGN_TO (window_box_left_offset (it->w, LEFT_MARGIN_AREA)); return OK_ALIGN_TO (window_box_left_offset (it->w, LEFT_MARGIN_AREA));
/* 'right-margin': left edge of the right display margin. */
if (EQ (prop, Qright_margin)) if (EQ (prop, Qright_margin))
return OK_ALIGN_TO (window_box_left_offset (it->w, RIGHT_MARGIN_AREA)); return OK_ALIGN_TO (window_box_left_offset (it->w, RIGHT_MARGIN_AREA));
/* 'scroll-bar': left edge of the vertical scroll bar. */
if (EQ (prop, Qscroll_bar)) if (EQ (prop, Qscroll_bar))
return OK_ALIGN_TO (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (it->w) return OK_ALIGN_TO (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (it->w)
? 0 ? 0
@ -25213,6 +25246,7 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
} }
else else
{ {
/* Otherwise, the elements stand for their width. */
if (EQ (prop, Qleft_fringe)) if (EQ (prop, Qleft_fringe))
return OK_PIXELS (WINDOW_LEFT_FRINGE_WIDTH (it->w)); return OK_PIXELS (WINDOW_LEFT_FRINGE_WIDTH (it->w));
if (EQ (prop, Qright_fringe)) if (EQ (prop, Qright_fringe))
@ -25235,6 +25269,8 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
int base_unit = (width_p int base_unit = (width_p
? FRAME_COLUMN_WIDTH (it->f) ? FRAME_COLUMN_WIDTH (it->f)
: FRAME_LINE_HEIGHT (it->f)); : FRAME_LINE_HEIGHT (it->f));
if (width_p && align_to && *align_to < 0)
return OK_PIXELS (XFLOATINT (prop) * base_unit + it->lnum_pixel_width);
return OK_PIXELS (XFLOATINT (prop) * base_unit); return OK_PIXELS (XFLOATINT (prop) * base_unit);
} }
@ -25246,6 +25282,7 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
if (SYMBOLP (car)) if (SYMBOLP (car))
{ {
#ifdef HAVE_WINDOW_SYSTEM #ifdef HAVE_WINDOW_SYSTEM
/* '(image PROPS...)': width or height of the specified image. */
if (FRAME_WINDOW_P (it->f) if (FRAME_WINDOW_P (it->f)
&& valid_image_p (prop)) && valid_image_p (prop))
{ {
@ -25254,12 +25291,15 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
return OK_PIXELS (width_p ? img->width : img->height); return OK_PIXELS (width_p ? img->width : img->height);
} }
/* '(xwidget PROPS...)': dimensions of the specified xwidget. */
if (FRAME_WINDOW_P (it->f) && valid_xwidget_spec_p (prop)) if (FRAME_WINDOW_P (it->f) && valid_xwidget_spec_p (prop))
{ {
/* TODO: Don't return dummy size. */ /* TODO: Don't return dummy size. */
return OK_PIXELS (100); return OK_PIXELS (100);
} }
#endif #endif
/* '(+ EXPR...)' or '(- EXPR...)' add or subtract
recursively calculated values. */
if (EQ (car, Qplus) || EQ (car, Qminus)) if (EQ (car, Qplus) || EQ (car, Qminus))
{ {
bool first = true; bool first = true;
@ -25287,15 +25327,18 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
car = Qnil; car = Qnil;
} }
/* '(NUM)': absolute number of pixels. */
if (NUMBERP (car)) if (NUMBERP (car))
{ {
double fact; double fact;
int offset =
width_p && align_to && *align_to < 0 ? it->lnum_pixel_width : 0;
pixels = XFLOATINT (car); pixels = XFLOATINT (car);
if (NILP (cdr)) if (NILP (cdr))
return OK_PIXELS (pixels); return OK_PIXELS (pixels + offset);
if (calc_pixel_width_or_height (&fact, it, cdr, if (calc_pixel_width_or_height (&fact, it, cdr,
font, width_p, align_to)) font, width_p, align_to))
return OK_PIXELS (pixels * fact); return OK_PIXELS (pixels * fact + offset);
return false; return false;
} }

View file

@ -818,7 +818,6 @@ This is a regression for item 7 in Bug#24991."
(kmacro-tests-deftest kmacro-tests-step-edit-cleans-up-hook () (kmacro-tests-deftest kmacro-tests-step-edit-cleans-up-hook ()
"Step-editing properly cleans up `post-command-hook.' (Bug #18708)" "Step-editing properly cleans up `post-command-hook.' (Bug #18708)"
(:expected-result :failed)
(let (post-command-hook) (let (post-command-hook)
(setq-local post-command-hook '(t)) (setq-local post-command-hook '(t))
(kmacro-tests-run-step-edit "x" (kmacro-tests-run-step-edit "x"

View file

@ -1883,96 +1883,98 @@ This checks also `file-name-as-directory', `file-name-directory',
(let (quoted) (let (quoted)
(let ((tmp-name1 (tramp--test-make-temp-name nil quoted)) (let ((tmp-name1 (tramp--test-make-temp-name nil quoted))
(tmp-name2 (tramp--test-make-temp-name nil quoted)) (tmp-name2 (tramp--test-make-temp-name nil quoted))
(tmp-name3 (tramp--test-make-temp-name nil quoted)) (tmp-name3 (tramp--test-make-temp-name 'local quoted)))
(tmp-name4 (tramp--test-make-temp-name 'local quoted)) (dolist (source-target
(tmp-name5 (tramp--test-make-temp-name 'local quoted))) `(;; Copy on remote side.
(,tmp-name1 . ,tmp-name2)
;; Copy from remote side to local side.
(,tmp-name1 . ,tmp-name3)
;; Copy from local side to remote side.
(,tmp-name3 . ,tmp-name1)))
(let ((source (car source-target))
(target (cdr source-target)))
;; Copy on remote side. ;; Copy simple file.
(unwind-protect (unwind-protect
(progn (progn
(write-region "foo" nil tmp-name1) (write-region "foo" nil source)
(copy-file tmp-name1 tmp-name2) (should (file-exists-p source))
(should (file-exists-p tmp-name2)) (copy-file source target)
(with-temp-buffer (should (file-exists-p target))
(insert-file-contents tmp-name2) (with-temp-buffer
(should (string-equal (buffer-string) "foo"))) (insert-file-contents target)
(should-error (should (string-equal (buffer-string) "foo")))
(copy-file tmp-name1 tmp-name2) (should-error
:type 'file-already-exists) (copy-file source target)
(copy-file tmp-name1 tmp-name2 'ok) :type 'file-already-exists)
(make-directory tmp-name3) (copy-file source target 'ok))
;; This has been changed in Emacs 26.1.
(when (tramp--test-emacs26-p)
(should-error
(copy-file tmp-name1 tmp-name3)
:type 'file-already-exists))
(copy-file tmp-name1 (file-name-as-directory tmp-name3))
(should
(file-exists-p
(expand-file-name (file-name-nondirectory tmp-name1) tmp-name3))))
;; Cleanup. ;; Cleanup.
(ignore-errors (delete-file tmp-name1)) (ignore-errors (delete-file source))
(ignore-errors (delete-file tmp-name2)) (ignore-errors (delete-file target)))
(ignore-errors (delete-directory tmp-name3 'recursive)))
;; Copy from remote side to local side. ;; Copy file to directory.
(unwind-protect (unwind-protect
(progn (progn
(write-region "foo" nil tmp-name1) (write-region "foo" nil source)
(copy-file tmp-name1 tmp-name4) (should (file-exists-p source))
(should (file-exists-p tmp-name4)) (make-directory target)
(with-temp-buffer (should (file-directory-p target))
(insert-file-contents tmp-name4) ;; This has been changed in Emacs 26.1.
(should (string-equal (buffer-string) "foo"))) (when (tramp--test-emacs26-p)
(should-error (should-error
(copy-file tmp-name1 tmp-name4) (copy-file source target)
:type 'file-already-exists) :type 'file-already-exists))
(copy-file tmp-name1 tmp-name4 'ok) (copy-file source (file-name-as-directory target))
(make-directory tmp-name5) (should
;; This has been changed in Emacs 26.1. (file-exists-p
(when (tramp--test-emacs26-p) (expand-file-name (file-name-nondirectory source) target))))
(should-error
(copy-file tmp-name1 tmp-name5)
:type 'file-already-exists))
(copy-file tmp-name1 (file-name-as-directory tmp-name5))
(should
(file-exists-p
(expand-file-name (file-name-nondirectory tmp-name1) tmp-name5))))
;; Cleanup. ;; Cleanup.
(ignore-errors (delete-file tmp-name1)) (ignore-errors (delete-file source))
(ignore-errors (delete-file tmp-name4)) (ignore-errors (delete-directory target 'recursive)))
(ignore-errors (delete-directory tmp-name5 'recursive)))
;; Copy from local side to remote side. ;; Copy directory to existing directory.
(unwind-protect (unwind-protect
(progn (progn
(write-region "foo" nil tmp-name4 nil 'nomessage) (make-directory source)
(copy-file tmp-name4 tmp-name1) (should (file-directory-p source))
(should (file-exists-p tmp-name1)) (write-region "foo" nil (expand-file-name "foo" source))
(with-temp-buffer (should (file-exists-p (expand-file-name "foo" source)))
(insert-file-contents tmp-name1) (make-directory target)
(should (string-equal (buffer-string) "foo"))) (should (file-directory-p target))
(should-error ;; Directory `target' exists already, so we must use
(copy-file tmp-name4 tmp-name1) ;; `file-name-as-directory'.
:type 'file-already-exists) (copy-file source (file-name-as-directory target))
(copy-file tmp-name4 tmp-name1 'ok) (should
(make-directory tmp-name3) (file-exists-p
;; This has been changed in Emacs 26.1. (expand-file-name
(when (tramp--test-emacs26-p) (concat (file-name-nondirectory source) "/foo") target))))
(should-error
(copy-file tmp-name4 tmp-name3)
:type 'file-already-exists))
(copy-file tmp-name4 (file-name-as-directory tmp-name3))
(should
(file-exists-p
(expand-file-name (file-name-nondirectory tmp-name4) tmp-name3))))
;; Cleanup. ;; Cleanup.
(ignore-errors (delete-file tmp-name1)) (ignore-errors (delete-directory source 'recursive))
(ignore-errors (delete-file tmp-name4)) (ignore-errors (delete-directory target 'recursive)))
(ignore-errors (delete-directory tmp-name3 'recursive))))))
;; Copy directory/file to non-existing directory.
(unwind-protect
(progn
(make-directory source)
(should (file-directory-p source))
(write-region "foo" nil (expand-file-name "foo" source))
(should (file-exists-p (expand-file-name "foo" source)))
(make-directory target)
(should (file-directory-p target))
(copy-file
source
(expand-file-name (file-name-nondirectory source) target))
(should
(file-exists-p
(expand-file-name
(concat (file-name-nondirectory source) "/foo") target))))
;; Cleanup.
(ignore-errors (delete-directory source 'recursive))
(ignore-errors (delete-directory target 'recursive))))))))
(ert-deftest tramp-test12-rename-file () (ert-deftest tramp-test12-rename-file ()
"Check `rename-file'." "Check `rename-file'."
@ -1983,111 +1985,105 @@ This checks also `file-name-as-directory', `file-name-directory',
(let (quoted) (let (quoted)
(let ((tmp-name1 (tramp--test-make-temp-name nil quoted)) (let ((tmp-name1 (tramp--test-make-temp-name nil quoted))
(tmp-name2 (tramp--test-make-temp-name nil quoted)) (tmp-name2 (tramp--test-make-temp-name nil quoted))
(tmp-name3 (tramp--test-make-temp-name nil quoted)) (tmp-name3 (tramp--test-make-temp-name 'local quoted)))
(tmp-name4 (tramp--test-make-temp-name 'local quoted)) (dolist (source-target
(tmp-name5 (tramp--test-make-temp-name 'local quoted))) `(;; Rename on remote side.
(,tmp-name1 . ,tmp-name2)
;; Rename from remote side to local side.
(,tmp-name1 . ,tmp-name3)
;; Rename from local side to remote side.
(,tmp-name3 . ,tmp-name1)))
(let ((source (car source-target))
(target (cdr source-target)))
;; Rename on remote side. ;; Rename simple file.
(unwind-protect (unwind-protect
(progn (progn
(write-region "foo" nil tmp-name1) (write-region "foo" nil source)
(rename-file tmp-name1 tmp-name2) (should (file-exists-p source))
(should-not (file-exists-p tmp-name1)) (rename-file source target)
(should (file-exists-p tmp-name2)) (should-not (file-exists-p source))
(with-temp-buffer (should (file-exists-p target))
(insert-file-contents tmp-name2) (with-temp-buffer
(should (string-equal (buffer-string) "foo"))) (insert-file-contents target)
(write-region "foo" nil tmp-name1) (should (string-equal (buffer-string) "foo")))
(should-error (write-region "foo" nil source)
(rename-file tmp-name1 tmp-name2) (should (file-exists-p source))
:type 'file-already-exists) (should-error
(rename-file tmp-name1 tmp-name2 'ok) (rename-file source target)
(should-not (file-exists-p tmp-name1)) :type 'file-already-exists)
(write-region "foo" nil tmp-name1) (rename-file source target 'ok)
(make-directory tmp-name3) (should-not (file-exists-p source)))
;; This has been changed in Emacs 26.1.
(when (tramp--test-emacs26-p)
(should-error
(rename-file tmp-name1 tmp-name3)
:type 'file-already-exists))
(rename-file tmp-name1 (file-name-as-directory tmp-name3))
(should-not (file-exists-p tmp-name1))
(should
(file-exists-p
(expand-file-name (file-name-nondirectory tmp-name1) tmp-name3))))
;; Cleanup. ;; Cleanup.
(ignore-errors (delete-file tmp-name1)) (ignore-errors (delete-file source))
(ignore-errors (delete-file tmp-name2)) (ignore-errors (delete-file target)))
(ignore-errors (delete-directory tmp-name3 'recursive)))
;; Rename from remote side to local side. ;; Rename file to directory.
(unwind-protect (unwind-protect
(progn (progn
(write-region "foo" nil tmp-name1) (write-region "foo" nil source)
(rename-file tmp-name1 tmp-name4) (should (file-exists-p source))
(should-not (file-exists-p tmp-name1)) (make-directory target)
(should (file-exists-p tmp-name4)) (should (file-directory-p target))
(with-temp-buffer ;; This has been changed in Emacs 26.1.
(insert-file-contents tmp-name4) (when (tramp--test-emacs26-p)
(should (string-equal (buffer-string) "foo"))) (should-error
(write-region "foo" nil tmp-name1) (rename-file source target)
(should-error :type 'file-already-exists))
(rename-file tmp-name1 tmp-name4) (rename-file source (file-name-as-directory target))
:type 'file-already-exists) (should-not (file-exists-p source))
(rename-file tmp-name1 tmp-name4 'ok) (should
(should-not (file-exists-p tmp-name1)) (file-exists-p
(write-region "foo" nil tmp-name1) (expand-file-name (file-name-nondirectory source) target))))
(make-directory tmp-name5)
;; This has been changed in Emacs 26.1.
(when (tramp--test-emacs26-p)
(should-error
(rename-file tmp-name1 tmp-name5)
:type 'file-already-exists))
(rename-file tmp-name1 (file-name-as-directory tmp-name5))
(should-not (file-exists-p tmp-name1))
(should
(file-exists-p
(expand-file-name (file-name-nondirectory tmp-name1) tmp-name5))))
;; Cleanup. ;; Cleanup.
(ignore-errors (delete-file tmp-name1)) (ignore-errors (delete-file source))
(ignore-errors (delete-file tmp-name4)) (ignore-errors (delete-directory target 'recursive)))
(ignore-errors (delete-directory tmp-name5 'recursive)))
;; Rename from local side to remote side. ;; Rename directory to existing directory.
(unwind-protect (unwind-protect
(progn (progn
(write-region "foo" nil tmp-name4 nil 'nomessage) (make-directory source)
(rename-file tmp-name4 tmp-name1) (should (file-directory-p source))
(should-not (file-exists-p tmp-name4)) (write-region "foo" nil (expand-file-name "foo" source))
(should (file-exists-p tmp-name1)) (should (file-exists-p (expand-file-name "foo" source)))
(with-temp-buffer (make-directory target)
(insert-file-contents tmp-name1) (should (file-directory-p target))
(should (string-equal (buffer-string) "foo"))) ;; Directory `target' exists already, so we must use
(write-region "foo" nil tmp-name4 nil 'nomessage) ;; `file-name-as-directory'.
(should-error (rename-file source (file-name-as-directory target))
(rename-file tmp-name4 tmp-name1) (should-not (file-exists-p source))
:type 'file-already-exists) (should
(rename-file tmp-name4 tmp-name1 'ok) (file-exists-p
(should-not (file-exists-p tmp-name4)) (expand-file-name
(write-region "foo" nil tmp-name4 nil 'nomessage) (concat (file-name-nondirectory source) "/foo") target))))
(make-directory tmp-name3)
;; This has been changed in Emacs 26.1.
(when (tramp--test-emacs26-p)
(should-error
(rename-file tmp-name4 tmp-name3)
:type 'file-already-exists))
(rename-file tmp-name4 (file-name-as-directory tmp-name3))
(should-not (file-exists-p tmp-name4))
(should
(file-exists-p
(expand-file-name (file-name-nondirectory tmp-name4) tmp-name3))))
;; Cleanup. ;; Cleanup.
(ignore-errors (delete-file tmp-name1)) (ignore-errors (delete-directory source 'recursive))
(ignore-errors (delete-file tmp-name4)) (ignore-errors (delete-directory target 'recursive)))
(ignore-errors (delete-directory tmp-name3 'recursive))))))
;; Rename directory/file to non-existing directory.
(unwind-protect
(progn
(make-directory source)
(should (file-directory-p source))
(write-region "foo" nil (expand-file-name "foo" source))
(should (file-exists-p (expand-file-name "foo" source)))
(make-directory target)
(should (file-directory-p target))
(rename-file
source
(expand-file-name (file-name-nondirectory source) target))
(should-not (file-exists-p source))
(should
(file-exists-p
(expand-file-name
(concat (file-name-nondirectory source) "/foo") target))))
;; Cleanup.
(ignore-errors (delete-directory source 'recursive))
(ignore-errors (delete-directory target 'recursive))))))))
(ert-deftest tramp-test13-make-directory () (ert-deftest tramp-test13-make-directory ()
"Check `make-directory'. "Check `make-directory'.
@ -2346,6 +2342,7 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
"Check `dired' with wildcards." "Check `dired' with wildcards."
(skip-unless (tramp--test-enabled)) (skip-unless (tramp--test-enabled))
(skip-unless (tramp--test-sh-p)) (skip-unless (tramp--test-sh-p))
(skip-unless (not (tramp--test-rsync-p)))
;; Since Emacs 26.1. ;; Since Emacs 26.1.
(skip-unless (fboundp 'insert-directory-wildcard-in-dir-p)) (skip-unless (fboundp 'insert-directory-wildcard-in-dir-p))
@ -4394,6 +4391,7 @@ Since it unloads Tramp, it shall be the last test to run."
;; * Fix `tramp-test05-expand-file-name-relative' in `expand-file-name'. ;; * Fix `tramp-test05-expand-file-name-relative' in `expand-file-name'.
;; * Fix `tramp-test06-directory-file-name' for `ftp'. ;; * Fix `tramp-test06-directory-file-name' for `ftp'.
;; * Fix `tramp-test27-start-file-process' on MS Windows (`process-send-eof'?). ;; * Fix `tramp-test27-start-file-process' on MS Windows (`process-send-eof'?).
;; * Fix `tramp-test28-interrupt-process', timeout doesn't work reliably.
;; * Fix Bug#16928 in `tramp-test38-asynchronous-requests'. ;; * Fix Bug#16928 in `tramp-test38-asynchronous-requests'.
(defun tramp-test-all (&optional interactive) (defun tramp-test-all (&optional interactive)

View file

@ -256,21 +256,25 @@ end program prog")
(should (= 5 (current-indentation))))) (should (= 5 (current-indentation)))))
(ert-deftest f90-test-bug25039 () (ert-deftest f90-test-bug25039 ()
"Test for https://debbugs.gnu.org/25039 ." "Test for https://debbugs.gnu.org/25039 and 28786."
(with-temp-buffer (with-temp-buffer
(f90-mode) (f90-mode)
(insert "program prog (insert "program prog
select type (a) select type (a)
class is (c1)
x = 1
type is (t1) type is (t1)
x = 2 x = 2
class is (c1)
x = 1
class default
x=3
end select end select
end program prog") end program prog")
(f90-indent-subprogram) (f90-indent-subprogram)
(forward-line -3) (forward-line -3)
(should (= 2 (current-indentation))) ; type is (should (= 2 (current-indentation))) ; class default
(forward-line -2) (forward-line -2)
(should (= 2 (current-indentation))))) ; class is (should (= 2 (current-indentation))) ; class is
(forward-line -2)
(should (= 2 (current-indentation))))) ; type is
;;; f90-tests.el ends here ;;; f90-tests.el ends here

View file

@ -24,6 +24,7 @@
;;; Code: ;;; Code:
(require 'ert) (require 'ert)
(require 'flymake) (require 'flymake)
(eval-when-compile (require 'subr-x)) ; string-trim
(defvar flymake-tests-data-directory (defvar flymake-tests-data-directory
(expand-file-name "lisp/progmodes/flymake-resources" (expand-file-name "lisp/progmodes/flymake-resources"
@ -37,7 +38,7 @@
;; ;;
;; ;;
(defun flymake-tests--wait-for-backends () (defun flymake-tests--wait-for-backends ()
;; Weirdness here... http://debbugs.gnu.org/17647#25 ;; Weirdness here... https://debbugs.gnu.org/17647#25
;; ... meaning `sleep-for', and even ;; ... meaning `sleep-for', and even
;; `accept-process-output', won't suffice as ways to get ;; `accept-process-output', won't suffice as ways to get
;; process filters and sentinels to run, though they do work ;; process filters and sentinels to run, though they do work
@ -128,7 +129,11 @@ SEVERITY-PREDICATE is used to setup
(ert-deftest different-diagnostic-types () (ert-deftest different-diagnostic-types ()
"Test GCC warning via function predicate." "Test GCC warning via function predicate."
(skip-unless (and (executable-find "gcc") (executable-find "make"))) (skip-unless (and (executable-find "gcc")
(version<=
"5" (string-trim
(shell-command-to-string "gcc -dumpversion")))
(executable-find "make")))
(let ((flymake-wrap-around nil)) (let ((flymake-wrap-around nil))
(flymake-tests--with-flymake (flymake-tests--with-flymake
("errors-and-warnings.c") ("errors-and-warnings.c")

View file

@ -66,6 +66,16 @@ div::before {
); );
} }
/* Multi-line selector including both a pseudo-class and
parenthesis. */
.form-group:not(.required) label,
.birth-date .row > * {
&::after {
display: inline;
font-weight: normal;
}
}
@font-face { @font-face {
src: url("Sans-Regular.eot") format("eot"), src: url("Sans-Regular.eot") format("eot"),
url("Sans-Regular.woff") format("woff"), url("Sans-Regular.woff") format("woff"),