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)
(fill-column . 70)))
(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")))
(log-edit-mode . ((log-edit-font-lock-gnu-style . 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
know it does not, mark the NEWS entry with "---". If you know
that *all* the necessary documentation updates have been made, mark
the entry with "+++". Otherwise do not mark it.
that *all* the necessary documentation updates have been made as part
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
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
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
https://www.gnu.org/software/emacs/manual/html_node/elisp/Documentation-Tips.html
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
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 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
the summary line should not end in a period). See
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
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
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
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
@ -926,7 +926,7 @@
constrained to call REPORT-FN exactly once. It may do so any number
of times, cumulatively reporting diagnostics. Flymake keeps track of
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.
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/vc1-xtra.texi (Version Headers): Remove the association of
'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)
@ -2648,7 +2648,7 @@
* doc/emacs/cmdargs.texi (Action Arguments): Don't mention
'find-file', as the implementation has changed. Reported by
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>
@ -2843,7 +2843,7 @@
* src/eval.c (push_handler_nosignal): Use CACHEABLE to work around
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>
@ -3162,7 +3162,7 @@
* src/lisp.h (pI) [__MINGW32__]: Provide definition that will
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.
* src/conf_post.h (PRINTF_ARCHETYPE) [MINGW_W64]: Separate
definition specific to MinGW64.
@ -3198,7 +3198,7 @@
Port renameat_noreplace to openSUSE 12.3
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):
Call renameat2 only if CYGWIN.
@ -3402,7 +3402,7 @@
* doc/misc/gnus.texi (Saving Articles):
Document behavior with directory name targets (Bug#27986).
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>
@ -3774,7 +3774,7 @@
* configure.ac (srcdir) [mingw32]: Downcase the drive letter, to
avoid warnings from find-file-noselect when making autoloads. For
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>
@ -4006,7 +4006,7 @@
bit-shifting, to avoid compiler warnings.
(w32font_text_extents): Tell GCC NGLYPHS is non-negative, to avoid
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
in that build.
* src/sound.c (sound_perror): Ifdef away on WINDOWSNT, as this
@ -4093,7 +4093,7 @@
autogen.sh: omit bogus chatter if no .git
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.
2017-09-07 Glenn Morris <rgm@gnu.org>
@ -4112,7 +4112,7 @@
* doc/lispref/functions.texi (Mapping Functions): Fix the order of
@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>
@ -4240,7 +4240,7 @@
Revert recent float→double Motif change
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)
(x_set_toolkit_scroll_bar_thumb)
(x_set_toolkit_horizontal_scroll_bar_thumb):
@ -5390,7 +5390,7 @@
* src/w32term.c (x_get_scale_factor):
* 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
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>
@ -5940,7 +5940,7 @@
Apparently Gitlab doesnt create .git/hooks, like regular Git does.
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
even if .git/hooks or its samples do not exist.
@ -6209,7 +6209,7 @@
Default autogen.sh to 'all'
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
with no arguments and there is a .git subdirectory.
@ -6689,7 +6689,7 @@
Fix some crashes on self-modifying Elisp code
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):
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.
@ -6976,7 +6976,7 @@
Port recent rename changes to RHEL 7 + NFS
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
with errno == EINVAL when it is not supported. So treat that case
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
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>
@ -8075,7 +8075,7 @@
bury-buffer to exit todo-mode. This restores the desired behavior
of not immediately returning to the exited todo-mode buffer on
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>
@ -8146,8 +8146,8 @@
Port gnutls.c to older (buggier?) GnuTLS
Problem reported for GnuTLS 3.2.1 by Glenn Morris in:
http://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/msg00716.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,
perhaps hydra was using a modified GnuTLS.
* 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
popular demand. For relevant discussions, see
http://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/msg00433.html
https://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00445.html
2017-07-14 Paul Eggert <eggert@cs.ucla.edu>
@ -10603,7 +10603,7 @@
Adjust lm-verify to accept current notices
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):
Do not require later lines in a copyright notice to have more
indentation than earlier lines.
@ -12009,7 +12009,7 @@
(gdb-send): Don't increment gdb-control-level if the command
matches gdb-python-guile-commands-regexp and has non-empty
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>
@ -12707,7 +12707,7 @@
* src/doprnt.c (doprnt): Format "%%" correctly.
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>
@ -12806,7 +12806,7 @@
* lisp/emacs-lisp/eldoc.el (eldoc--supported-p): New function.
(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>
@ -13638,7 +13638,7 @@
* lisp/net/tls.el (tls-program, tls-checktrust): Remove s_client.
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)
@ -14070,7 +14070,7 @@
* src/emacs-module.c (module_reset_handlerlist):
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>
@ -14078,7 +14078,7 @@
* configure.ac (WERROR_CFLAGS): Omit -Wmissing-braces for Clang,
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>
@ -14150,7 +14150,7 @@
* etc/PROBLEMS: Describe problems with Microsoft Intellipoint and
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)
@ -14245,7 +14245,7 @@
Attempt to work around macOS vfork bug
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.
* src/callproc.c (call_process_cleanup, call_process) [!MSDOS]:
Report internal error if wait_for_termination fails.
@ -14269,7 +14269,7 @@
Dont compile the (DARWIN_OS_CASE_SENSITIVE_FIXME == 2)
code unless DARWIN_OS_CASE_SENSITIVE_FIXME is 2.
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>
@ -14277,7 +14277,7 @@
* configure.ac (WERROR_CFLAGS): Omit -Wdouble-promotion if clang.
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>
@ -14362,7 +14362,7 @@
Avoid undefined behavior in struct sockaddr
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):
New macros.
* src/process.c (conv_sockaddr_to_lisp, conv_lisp_to_sockaddr)
@ -14387,7 +14387,7 @@
Work around AddressSanitizer bug with vfork
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.
Unfortunately with the AddressSanitizer in Fedora 25 x86-64, the
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.
The old code ran afoul of GCC bug 80659, which caused an internal
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
2017-05-16 Paul Eggert <eggert@cs.ucla.edu>
@ -14563,9 +14563,9 @@
* src/process.c (connect_network_socket):
Use struct sockaddr_storage, not struct sockaddr_in, to store info
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:
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>
@ -15156,7 +15156,7 @@
Compare unqualified type to Lisp_Object, to do the right thing
when the expression has type Lisp_Object const.
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>
@ -15295,7 +15295,7 @@
* lisp/emacs-lisp/cl-generic.el (cl-defmethod): Denote the
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>
@ -16077,7 +16077,7 @@
* lisp/net/tls.el (tls-program, tls-checktrust): Remove s_client.
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>
@ -16706,7 +16706,7 @@
* src/lisp.h (STRING_SET_CHARS): Add an assertion and commentary
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>
@ -18130,7 +18130,7 @@
* lisp/emacs-lisp/package.el (package-archives):
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>
@ -18314,7 +18314,7 @@
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
multiple nodes because the isearch code doesn't expect a `user-error'.
@ -18369,7 +18369,7 @@
Fix bugs in simplified test dependencies
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 "./".
(TESTS): Omit unnecessary patsubst.
(test_template): Redo dependency heuristic, hopefully
@ -18778,7 +18778,7 @@
Fix redisplay glitches due to recent change in redisplay_internal
* 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.
2017-03-26 Michael Albinus <michael.albinus@gmx.de>
@ -18938,7 +18938,7 @@
Dont require chown/chgrp for game installation
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
chgrp fails with update-game-score and the game directory.
Instead, expect the installer to fix this up afterwards.
@ -19072,7 +19072,7 @@
Dont remove dependency files when configuring
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
--enable-autodepend is in effect.
@ -19081,7 +19081,7 @@
Make --without-pop the default.
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
--without-pop. Adjust diagnostics to match.
@ -19118,7 +19118,7 @@
org-src fontify buffers" the hooks were enabled also for modifications
to the original org buffer. This causes fontification errors when
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
of inhibit-modification-hooks let-binding.
@ -19175,7 +19175,7 @@
Fix problem with out-of-date dependencies
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
change from Automake to GNU Make exposed it again.
* configure.ac (AUTO_DEPEND): When autodepending, clean out any
@ -19405,7 +19405,7 @@
Port out-of-source builds to windows-nt
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,
to handle out-of-source builds if windows-nt.
@ -20082,7 +20082,7 @@
overlay, protect against that overlay's end point being outside of
the narrowed region.
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>
@ -20221,7 +20221,7 @@
min and max should not return markers
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
integer, since some callers assume this.
* 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
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:
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
overflow when tail-recursing via a dotted list tail or an overlay
plist, to avoid a rare infloop.
@ -23174,7 +23174,7 @@
* lisp/progmodes/xref.el (xref-collect-matches): Use '-E'
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>
@ -23301,7 +23301,7 @@
Fix quitting bug when buffers are frozen
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.
* src/lisp.h (incr_rarely_quit): Remove.
All callers changed to use rarely_quit directly.
@ -23319,7 +23319,7 @@
This fixes some infinite loops that cannot be quitted out of,
e.g., (defun foo () (nth most-positive-fixnum '#1=(1 . #1#)))
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
added, as much as possible under the constraint that the infloops
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
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>
@ -23835,7 +23835,7 @@
* lisp/textmodes/reftex-vars.el (reftex-cite-format-builtin): Add
\citetitle[*] to `reftex-cite-format' and bind them to keys i/I
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>
@ -23872,7 +23872,7 @@
* lisp/shell.el (shell-mode): Use setq-local. Set
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.
2017-01-27 Michael Hoffman <emacs-hoffman@sneakemail.com> (tiny change)
@ -24534,7 +24534,7 @@
* lisp/simple.el (region-bounds): New function.
(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>
@ -25369,7 +25369,7 @@
* lisp/textmodes/ispell.el (ispell-begin-skip-region-regexp):
Protect against 'ispell-skip-region-alist' being nil. Reported by
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>
@ -25662,7 +25662,7 @@
Remove mistakenly-added files
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/messcompat.el, lisp/nxml/nxml-glyph.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"
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,
since the new name no longer clashes with main_thread_id
and Emacs internals normally call this the "main thread".
@ -26175,7 +26175,7 @@
Simplify prog1 implementation
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.
* src/eval.c (prog_ignore): Rename from unwind_body, since
its more general than that. All callers changed.
@ -26326,7 +26326,7 @@
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
@ -26585,7 +26585,7 @@
therefore don't need to be inserted into the red-black tree, so
mem_find will never find them. Reported by Daniel Colascione
<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>
@ -26618,7 +26618,7 @@
Port dumping better to WSL
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):
Detect buggy platforms where 'personality' always returns 0.
@ -26967,7 +26967,7 @@
needs to be, which then causes copy_executable_and_dump_data to
write beyond the requested size of the file mapping, thus relying
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.
* lib/stdio-impl.h: Revert the workaround fix of not including
@ -27501,7 +27501,7 @@
Use C99 syntax for font drivers
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/ftfont.c (ftfont_driver):
* src/ftxfont.c (ftxfont_driver):
@ -28599,7 +28599,7 @@
http://trac.common-lisp.net/bordeaux-threads/wiki/ApiDocumentation
... 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.
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.
(set-version-in-file root "msdos/sed2v2.inp" version
(rx (and bol "/^#undef " (1+ not-newline)
"define VERSION" (1+ space) "\""
"define PACKAGE_VERSION" (1+ space) "\""
(submatch (1+ (in "0-9."))))))
;; Major version only.
(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
(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
in the subsequent discussion might end up creating a new bug.
This is annoying. (So annoying that a form of message-id tracking has
been implemented to hopefully stop this happening, but it is still
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
pseudo-header (see below), if your mail client does not let you add
"X-" headers.

View file

@ -44,7 +44,7 @@ if test "$at_sign" != @; then
fi
# 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 {
# These regular expressions assume traditional Unix unibyte behavior.
# 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:]]"
}
}
c_lower = "abcdefghijklmnopqrstuvwxyz"
unsafe_gnu_url = "(http|ftp)://([" c_lower ".]*\\.)?(gnu|fsf)\\.org"
}
{ input[NR] = $0 }
/^#/ {
# Ignore every line after a scissors line.
if (/^# *---* *(>[8%]|[8%]<) *---* *$/) { exit }
@ -125,6 +129,10 @@ exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" '
status = 1
}
$0 ~ unsafe_gnu_url {
needs_rewriting = 1
}
$0 ~ non_print {
print "Unprintable character in commit message"
status = 1
@ -135,6 +143,21 @@ exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" '
print "Empty commit message"
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) {
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
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".
rm -f Makefile 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
rm -f makefile.tmp
: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 ..
rem ----------------------------------------------------------------------
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
cd lib
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 byteswap.in.h update byteswap.in.h byteswap.in-h
If Exist dirent.in.h update dirent.in.h dirent.in-h
@ -280,10 +282,10 @@ 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 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-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 stdarg.in.h update stdarg.in.h stdarg.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 limits.in.h update limits.in.h limits.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 stddef.in.h update stddef.in.h stddef.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 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_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_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 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
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
sed -f ../msdos/sedlibmk.inp < makefile.tmp > Makefile
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
for %%f in (*.c) do @call ..\msdos\depfiles.bat %%f
echo deps-stamp > deps\stamp

View file

@ -2050,13 +2050,17 @@ calculations.
@defun line-number-display-width &optional pixelwise
This function returns the width used for displaying the line numbers
in the selected window. Optional argument @var{pixelwise}, if
non-@code{nil}, means return the value in pixels; otherwise the value
is returned in column units of the font defined for the
@code{line-number} face. If line numbers are not displayed in the
selected window, the value is zero. Use @code{with-selected-window}
(@pxref{Selecting Windows}) if you need this information about another
window.
in the selected window. If the optional argument @var{pixelwise} is
the symbol @code{columns}, the return value is a float number of the
frame's canonical columns; if @var{pixelwise} is @code{t} or any other
non-@code{nil} value, the value is an integer and is measured in
pixels. If @var{pixelwise} is omitted or @code{nil}, the value is the
integer number of columns of the font defined for the
@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
@ -4635,7 +4639,7 @@ as an absolute number of pixels.
@smallexample
@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{unit} ::= in | mm | cm | width | height
@end group
@ -4651,22 +4655,34 @@ as an absolute number of pixels.
The form @var{num} specifies a fraction of the default frame font
height or width. The form @code{(@var{num})} specifies an absolute
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
pixels per inch, millimeter, and centimeter, respectively. The
@code{width} and @code{height} units correspond to the default width
and height of the current face. An image specification @code{image}
corresponds to the width or height of the image.
and height of the current face. An image specification of the form
@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},
@code{left-margin}, @code{right-margin}, @code{scroll-bar}, and
@code{text} specify to the width of the corresponding area of the
window.
@code{text} specify the width of the corresponding area of the 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
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
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
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
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 .
@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
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
The semantics of maximizing and iconifying child frames is highly
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
frame corresponding to that child frame instead. To obtain a different
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
This is a synonym for @samp{%x %X}.
@item %C
This has a locale-specific meaning. In the default locale (named C), it
is equivalent to @samp{%A, %B %e, %Y}.
This stands for the century, that is, the year divided by 100,
truncated toward zero.
@item %d
This stands for the day of month, zero-padded.
@item %D
@ -1530,8 +1530,11 @@ This stands for the calendar quarter (1--4).
This is a synonym for @samp{%I:%M:%S %p}.
@item %R
This is a synonym for @samp{%H:%M}.
@item %s
This stands for the integer number of seconds since the epoch.
@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
This stands for a tab character.
@item %T
@ -1561,22 +1564,31 @@ This stands for the year with century.
@item %Z
This stands for the time zone abbreviation (e.g., @samp{EST}).
@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
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
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
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.
the field width as digits in a @samp{%}-sequence, after any flags.
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
pad with spaces to 3 positions. Plain @samp{%3S} pads with zeros,
because that is how @samp{%S} normally pads to two positions.
The characters @samp{E} and @samp{O} act as modifiers when used between
@samp{%} and one of the letters in the table above. @samp{E} specifies
The characters @samp{E} and @samp{O} act as modifiers when used after
any flags and field widths in a @samp{%}-sequence. @samp{E} specifies
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
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
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}
(@pxref{Formatting Calendar Time,,, libc, The GNU C Library Reference
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))))
@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
overlays (@pxref{Overlays,,, elisp, The Emacs Lisp Reference Manual}).
Along with the properties that you specify for the specific type of
diagnostic, Flymake adds the property @code{flymake-text} to these
overlays, and sets it to the message string that the backend used to
describe the diagnostic.
diagnostic, Flymake adds the property @code{flymake-diagnostic} to
these overlays, and sets it to the object that the backend created
with @code{flymake-make-diagnostic}.
Since overlays also support arbitrary keymaps, you can use this
property @code{flymake-text} to create interactive annotations, such
as in the following example of binding a @kbd{mouse-3} event (middle
mouse button click) to an Internet search for the text of a
@code{:warning} or @code{:error}.
Since overlays also support arbitrary keymaps, you can use this along
with the functions @code{flymake-diagnostics} and
@code{flymake-diagnostic-text} (@pxref{Flymake utility functions}) to
create interactive annotations, such as in the following example of
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
(defun my-search-for-message (event)
(interactive "e")
(let ((ovs (overlays-at (posn-point (event-start event))))
ov)
;; loop until flymake overlay we clicked on is recovered
(while (not (overlay-get (setq ov (pop ovs)) 'flymake-text)))
(when ov
(let* ((diags (flymake-diagnostics (posn-point (event-start event))))
(topmost-diag (car diags)))
(eww-browse-url
(concat "https://duckduckgo.com/?q="
(concat
"https://duckduckgo.com/?q="
(replace-regexp-in-string " "
"+"
(overlay-get ov 'flymake-text)))
t))))
(flymake-diagnostic-text topmost-diag)))
t)))
(dolist (type '(:warning :error))
(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.
@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
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
@ -520,9 +542,10 @@ number. To convert this information into a buffer position, backends
can use the following function:
@deffn Function flymake-diag-region buffer line &optional col
Compute @var{buffer}'s region (@var{beg} . @var{end}) corresponding to
@var{line} and @var{col}. If @var{col} is nil, return a region just
for @var{line}. Return nil if the region is invalid.
Compute @var{buffer}'s region (@var{beg} . @var{end}) corresponding
to @var{line} and @var{col}. If @var{col} is @code{nil}, return a
region just for @var{line}. Return @code{nil} if the region is
invalid.
@end deffn
@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)
;; 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
"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
;; `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)
(goto-char (point-min))
;; Parse the output buffer for diagnostic's
@ -625,7 +648,7 @@ Binding,,, elisp, The Emacs Lisp Reference Manual}) to be active.
msg)
into diags
finally (funcall report-fn diags)))
(flymake-log :warning "Cancelling obsolete check %s"
(flymake-log :warning "Canceling obsolete check %s"
proc))
;; Cleanup the temporary buffer used to hold the
;; 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.
*** 'C-x C-x' in 'rectangle-mark-mode' now cycles through the four corners.
*** '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'.
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>
Silence -Wimplicit:
* movemail.c: Move cancelations up. Include <stdlib.h> if
* movemail.c: Move cancellations up. Include <stdlib.h> if
available.
* fakemail.c (_XOPEN_SOURCE): Define for declaration of cuserid.
(parse_header): Explicitly declare return type.

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1985,6 +1985,7 @@ Optional arg HOW-TO determines how to treat the target.
;;;###autoload
(defun dired-create-directory (directory)
"Create a directory called DIRECTORY.
Parent directories of DIRECTORY are created as needed.
If DIRECTORY already exists, signal an error."
(interactive
(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))
(def-edebug-spec cl-lambda-list
(([&rest arg]
(([&rest cl-lambda-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 "&allow-other-keys"]]
[&optional ["&aux" &rest
&or (symbolp &optional def-form) symbolp]]
)))
. [&or arg nil])))
(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
(&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)
@ -336,8 +350,8 @@ The full form of a Common Lisp function argument list is
[&key (([KEYWORD] VAR) [INITFORM [SVAR]])... [&allow-other-keys]]
[&aux (VAR [INITFORM])...])
VAR maybe be replaced recursively with an argument list for
destructing, `&whole' is supported within these sublists. If
VAR may be replaced recursively with an argument list for
destructuring, `&whole' is supported within these sublists. If
SVAR, INITFORM, and KEYWORD are all omitted, then `(VAR)' may be
written simply `VAR'. See the Info node `(cl)Argument Lists' for
more details.
@ -430,8 +444,8 @@ The full form of a Common Lisp macro argument list is
[&aux (VAR [INITFORM])...]
[&environment VAR])
VAR maybe be replaced recursively with an argument list for
destructing, `&whole' is supported within these sublists. If
VAR may be replaced recursively with an argument list for
destructuring, `&whole' is supported within these sublists. If
SVAR, INITFORM, and KEYWORD are all omitted, then `(VAR)' may be
written simply `VAR'. See the Info node `(cl)Argument Lists' for
more details.

View file

@ -253,7 +253,9 @@ first will be printed into the backtrace buffer."
;; Unshow debugger-buffer.
(quit-restore-window debugger-window debugger-bury-or-kill)
;; 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
;; in a recursive invocation of the debugger, otherwise just
;; 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)
"Find, in another window, the definition of TEST-NAME."
(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)
"Make the test TEST-NAME unbound.
@ -2594,7 +2594,7 @@ To be used in the ERT results buffer."
;;; 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
(:eval
(ert--tests-running-mode-line-indicator))))

View file

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

View file

@ -193,10 +193,10 @@ Populated by `tabulated-list-init-header'.")
;; is displayed.
(if (not display-line-numbers)
0
(let ((cbuf-window (get-buffer-window (current-buffer))))
(let ((cbuf-window (get-buffer-window (current-buffer) t)))
(if (window-live-p cbuf-window)
(with-selected-window cbuf-window
(+ (line-number-display-width) 2))
(line-number-display-width 'columns))
4))))
(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)))))
tabulated-list--near-rows)))
(defvar tabulated-list-entry-lnum-width nil)
(defun tabulated-list-print (&optional remember-pos update)
"Populate the current Tabulated List mode buffer.
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
(tabulated-list-print-fake-header)))
;; Finally, print the resulting list.
(setq tabulated-list-entry-lnum-width (tabulated-list-line-number-width))
(while entries
(let* ((elt (car entries))
(tabulated-list--near-rows
@ -428,9 +425,8 @@ of column descriptors."
(x (max tabulated-list-padding 0))
(ncols (length tabulated-list-format))
(inhibit-read-only t))
(setq x (+ x tabulated-list-entry-lnum-width))
(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).
(or (bound-and-true-p tabulated-list--near-rows)
(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-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:
(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.
(setq bidi-paragraph-direction 'left-to-right)
;; 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)

View file

@ -892,7 +892,8 @@ Calls `suspend-emacs' if invoked from the controlling tty device,
(defvar frame-name-history nil)
(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."
(interactive
(let* ((frame-names-alist (make-frame-names-alist))
@ -903,10 +904,13 @@ If there is no frame by that name, signal an error."
(if (= (length input) 0)
(list default)
(list input))))
(let* ((frame-names-alist (make-frame-names-alist))
(frame (cdr (assoc name frame-names-alist))))
(if frame
(select-frame-set-input-focus frame)
(select-frame-set-input-focus
;; Prefer frames on the current display.
(or (cdr (assoc name (make-frame-names-alist)))
(catch 'done
(dolist (frame (frame-list))
(when (equal (frame-parameter frame 'name) name)
(throw 'done frame))))
(error "There is no frame named `%s'" name))))

View file

@ -1035,6 +1035,12 @@ Internal use only."
(frameset--initial-params filtered-cfg))))
(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
;; for minibuffer-less child frames.
(let* ((frame-id (frame-parameter frame 'frameset--parent-frame))

View file

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

View file

@ -748,7 +748,10 @@ Increase at own risk.")
'image-dired-cmd-create-thumbnail-program)
(let* ((width (int-to-string (image-dired-thumb-size 'width)))
(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-file))
(spec

View file

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

View file

@ -937,7 +937,7 @@ without repeating the prefix."
;;; 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-inserting) ;; inserting into 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
(const :tag "default" nil)
(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.
(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',
then if that modifier key is pressed when dropping the region, region
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"
:group 'mouse)

View file

@ -802,6 +802,11 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(setq filename (expand-file-name filename)
newname (expand-file-name newname))
(if (file-directory-p filename)
(progn
(copy-directory filename newname t t)
(delete-directory filename 'recursive))
(let ((t1 (tramp-tramp-file-p filename))
(t2 (tramp-tramp-file-p newname)))
(with-parsed-tramp-file-name (if t1 filename newname) nil
@ -833,7 +838,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
;; Rename by copy.
(copy-file
filename newname ok-if-already-exists 'keep-time 'preserve-uid-gid)
(delete-file filename))))))
(delete-file filename)))))))
(defun tramp-adb-handle-process-file
(program &optional infile destination display &rest args)

View file

@ -675,6 +675,11 @@ file names."
(unless (memq op '(copy rename))
(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))
(t2 (tramp-tramp-file-p newname))
(equal-remote (tramp-equal-remote filename newname))
@ -738,7 +743,7 @@ file names."
(when t2
(with-parsed-tramp-file-name newname nil
(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
(filename newname &optional ok-if-already-exists keep-date

View file

@ -2039,6 +2039,12 @@ of `copy' and `rename'. FILENAME and NEWNAME must be absolute
file names."
(unless (memq op '(copy rename))
(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))
(t2 (tramp-tramp-file-p newname))
(length (tramp-compat-file-attribute-size
@ -2128,7 +2134,7 @@ file names."
(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)))))))
(tramp-flush-file-property v2 v2-localname))))))))
(defun tramp-do-copy-or-rename-file-via-buffer (op filename newname keep-date)
"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))
;; Insert size information.
(when full-directory-p
(insert
(if avail
(format "total used in directory %s available %s\n" used avail)
(format "total %s\n" used)))
(format "total %s\n" used))))
;; Print entries.
(mapc

View file

@ -604,7 +604,8 @@ Important: the match ends just after the marker.")
"Return header line for Proced buffer."
(list (propertize " "
'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))
(replace-regexp-in-string ;; preserve text properties
"\\(%\\)" "\\1\\1"

View file

@ -1693,7 +1693,8 @@ current buffer state and calls REPORT-FN when done."
(when (eq (process-status proc) 'exit)
(unwind-protect
(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))
((zerop (process-exit-status proc))
(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_\\)+\\)"
"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
"\\_<\\(class\\|type\\)[ \t]*is[ \t]*("
"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",
;; and also variables of derived type "type (foo)".
;; "type, foo" must be a block (?).
;; And a partial effort to avoid "class default".
"\\(?:type\\|class\\)[ \t,]\\("
"[^i(!\n\"& \t]\\|" ; not-i(
"[^id(!\n\"& \t]\\|" ; not-id(
"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.
"program\\|\\(?:abstract[ \t]*\\)?interface\\|\\(?:sub\\)?module\\|"
;; "enum", but not "enumerator".
@ -1454,7 +1460,7 @@ if all else fails."
(not (or (looking-at "end")
(looking-at "\\(do\\|if\\|else\\(if\\|where\\)?\
\\|select[ \t]*\\(case\\|type\\)\\|case\\|where\\|forall\\|\
\\(?:class\\|type\\)[ \t]*is\\|\
\\(?:class\\|type\\)[ \t]*is\\|class[ \t]*default\\|\
block\\|critical\\|enum\\|associate\\)\\_>")
(looking-at "\\(program\\|\\(?:sub\\)?module\\|\
\\(?:abstract[ \t]*\\)?interface\\|block[ \t]*data\\)\\_>")

View file

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

View file

@ -20,7 +20,7 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;;
@ -48,7 +48,8 @@
(require 'thingatpt) ; end-of-thing
(require 'warnings) ; warning-numeric-level, display-warning
(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
"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."
(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)
"Get flymake-related overlays.
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)
(let ((ovs (cl-remove-if-not
(lambda (ov)
(and (overlay-get ov 'flymake)
(and (overlay-get ov 'flymake-diagnostic)
(or (not filter)
(funcall filter ov))))
(if (and beg (null end))
@ -498,18 +522,15 @@ associated `flymake-category' return DEFAULT."
(default-maybe 'help-echo
(lambda (_window _ov pos)
(mapconcat
(lambda (ov)
(overlay-get ov 'flymake-text))
(flymake--overlays :beg pos)
#'flymake--diag-text
(flymake-diagnostics pos)
"\n")))
(default-maybe 'severity (warning-numeric-level :error))
(default-maybe 'priority (+ 100 (overlay-get ov 'severity))))
;; Some properties can't be overridden.
;;
(overlay-put ov 'evaporate t)
(overlay-put ov 'flymake t)
(overlay-put ov 'flymake-text (flymake--diag-text diagnostic))
(overlay-put ov 'flymake--diagnostic diagnostic)))
(overlay-put ov 'flymake-diagnostic diagnostic)))
;; Nothing in Flymake uses this at all any more, so this is just for
;; third-party compatibility.
@ -600,7 +621,7 @@ not expected."
(lambda (ov)
(eq backend
(flymake--diag-backend
(overlay-get ov 'flymake--diagnostic))))))
(overlay-get ov 'flymake-diagnostic))))))
(mapc (lambda (diag)
(flymake--highlight-line diag)
(setf (flymake--diag-backend diag) backend))
@ -899,7 +920,7 @@ applied."
(lambda (ov)
(let ((diag (overlay-get
ov
'flymake--diagnostic)))
'flymake-diagnostic)))
(and diag
(or (not filter)
(memq (flymake--diag-type diag)
@ -1089,13 +1110,13 @@ applied."
(interactive (list (point) t))
(let* ((id (or (tabulated-list-get-id pos)
(user-error "Nothing at point")))
(overlay (plist-get id :overlay)))
(with-current-buffer (overlay-buffer overlay)
(diag (plist-get id :diagnostic)))
(with-current-buffer (flymake--diag-buffer diag)
(with-selected-window
(display-buffer (current-buffer) other-window)
(goto-char (overlay-start overlay))
(pulse-momentary-highlight-region (overlay-start overlay)
(overlay-end overlay)
(goto-char (flymake--diag-beg diag))
(pulse-momentary-highlight-region (flymake--diag-beg diag)
(flymake--diag-end diag)
'highlight))
(current-buffer))))
@ -1108,18 +1129,16 @@ POS can be a buffer position or a button"
(defun flymake--diagnostics-buffer-entries ()
(with-current-buffer flymake--diagnostics-buffer-source
(cl-loop for ov in (flymake--overlays)
for diag = (overlay-get ov
'flymake--diagnostic)
(cl-loop for diag in (flymake-diagnostics)
for (line . col) =
(save-excursion
(goto-char (overlay-start ov))
(goto-char (flymake--diag-beg diag))
(cons (line-number-at-pos)
(- (point)
(line-beginning-position))))
for type = (flymake--diag-type diag)
collect
(list (list :overlay ov
(list (list :diagnostic diag
:line line
:severity (flymake--lookup-type-property
type

View file

@ -3304,8 +3304,9 @@ the full statement in the case of imports."
(defcustom python-shell-completion-native-disabled-interpreters
;; PyPy's readline cannot handle some escape sequences yet. Native
;; completion was found to be non-functional for IPython (see
;; Bug#25067).
(list "pypy" "ipython")
;; Bug#25067). Native completion doesn't work on w32 (Bug#28580).
(if (eq system-type 'windows-nt) '("")
'("pypy" "ipython"))
"List of disabled interpreters.
When a match is found, native completion is disabled."
: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.
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."
(interactive
(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.
If required, account for screen estate taken by `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
(or (car (window-margins)) 0)
(fringe-columns 'left)
@ -668,7 +673,12 @@ Optional argument PROPS specifies other text properties to apply."
(let* ((w (ruler-mode-text-scaled-window-width))
(m (window-margins))
(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))
;; Setup the scrollbar, fringes, and margins areas.
(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
;; ruler-mode-basic-graduation-char.
(if display-line-numbers
(let* ((lndw (+ (line-number-display-width) 2))
(let* ((lndw (round (line-number-display-width 'columns)))
(s (make-string lndw ?\s)))
(concat s (make-string (- w lndw)
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
for determining whether point is within a selector."
(save-excursion
(re-search-forward "[{};)]" nil t)
(re-search-forward "[{};]" nil t)
(eq (char-before) ?\{)))
(defun css--colon-inside-funcall ()

View file

@ -109,22 +109,6 @@
(def-edebug-spec push
(&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'

View file

@ -177,6 +177,8 @@ For a description of possible values, see `vc-check-master-templates'."
(push (list frel state) result))))
(funcall update-function result)))
(defun vc-rcs-dir-extra-headers (&rest _ignore))
(defun vc-rcs-working-revision (file)
"RCS-specific version of `vc-working-revision'."
(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
;; Restore marks
;; `winner-undo' shouldn't update the selection (Bug#28631) when
;; select-enable-primary is non-nil.
(unless select-enable-primary
(save-current-buffer
(cl-loop for buf in buffers
for entry = (cadr (assq buf winner-point-alist))
do (progn (set-buffer buf)
(set-mark (car entry))
(setf (winner-active-region) (cdr entry)))))
(setf (winner-active-region) (cdr entry))))))
;; Delete windows, whose buffers are dead or boring.
;; Return t if this is still a possible configuration.
(or (null xwins)

View file

@ -20,6 +20,6 @@ rem along with GNU Emacs. If not, see https://www.gnu.org/licenses/.
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
del tdepfile.bat

View file

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

View file

@ -55,6 +55,7 @@
/^#undef HAVE_STRNCASECMP *$/s/^.*$/#define HAVE_STRNCASECMP 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___BUILTIN_FRAME_ADDRESS *$/s/^.*$/#define HAVE___BUILTIN_FRAME_ADDRESS 1/
/^#undef HAVE___BUILTIN_UNWIND_INIT *$/s/^.*$/#define HAVE___BUILTIN_UNWIND_INIT 1/
/^#undef HAVE_MENUS *$/s/^.*$/#define HAVE_MENUS 1/
/^#undef DATA_START/s/^.*$/#define DATA_START (\&etext + 1)/
@ -64,9 +65,7 @@
/^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/
/^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/
/^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/
/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION VERSION/
/^#undef PENDING_OUTPUT_COUNT/s/^.*$/#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_ptr - (FILE)->_base)/
/^#undef VERSION/s/^.*$/#define VERSION "27.0.50"/
/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "27.0.50"/
/^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/
/^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 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_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 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 NULL_DEVICE *$/s/^.*$/#define NULL_DEVICE "nul"/
/^#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_CONFIG_OPTIONS *$/#define EMACS_CONFIG_OPTIONS "msdos"/
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 POINTER_TYPE *$/#define POINTER_TYPE void/
/^#undef HAVE_INTTYPES_H/c\
@ -117,12 +119,31 @@ s/^#undef POINTER_TYPE *$/#define POINTER_TYPE void/
#undef HAVE_STDINT_H\
#endif
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_STRTOULL *$/#define HAVE_DECL_STRTOULL 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_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/
/^#undef HAVE_SIGSET_T *$/s/^.*$/#define HAVE_SIGSET_T 1/
/^#undef HAVE_SNPRINTF/c\
@ -133,7 +154,9 @@ s/^#undef HAVE_PUTENV *$/#define HAVE_PUTENV 1/
#include <sys/types.h>\
extern int snprintf (char *__restrict, size_t, const char *__restrict, ...);\
#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
# 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!
/^bindir *=/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!=.*$!=.!
/^BLESSMAIL_TARGET *=/s!@BLESSMAIL_TARGET@!need-blessmail!
/^KRB4LIB *=/s/@[^@\n]*@//g
@ -41,7 +41,6 @@
/^C_SWITCH_MACHINE *=/s/@C_SWITCH_MACHINE@//
/^WARN_CFLAGS *=/s/@WARN_CFLAGS@//
/^WERROR_CFLAGS *=/s/@WERROR_CFLAGS@//
/^UPDATE_MANIFEST *=/s/@UPDATE_MANIFEST@//
/^PROFILING_CFLAGS *=/s/@PROFILING_CFLAGS@//
/^AM_DEFAULT_VERBOSITY *=/s/@AM_DEFAULT_VERBOSITY@/1/
/^[Aa][Mm]_/s/@AM_V@/$(V)/
@ -58,6 +57,3 @@
/^GETOPT_H *=/s!@GETOPT_H@!getopt.h!
/^GETOPTOBJS *=/s!@GETOPTOBJS@!getopt.o getopt1.o!
/^INSTALLABLES/s/emacsclient[^ ]* *//
/^UTILITIES *=/,/^$/{
s/movemail[^ ]* *//
}

View file

@ -18,14 +18,9 @@
#
# Checklist to add a new gnulib module:
#
# . If the module includes source files that need to be compiled, and
# does not appear in the am_libgnu_a_OBJECTS list, add the
# corresponding .o file names to the list that gets assigned to the
# 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 a module appears in gnulib.mk.in that is not required for the
# MSDOS build, disable its building by setting the corresponding
# OMIT_GNULIB_MODULE_foo variable to true.
#
# . If the module defines functions that need to replace DJGPP
# functions, edit the appropriate REPLACE_foo variables to 1:
@ -38,22 +33,22 @@
# as above should be placed before that catchall rule (search for
# "REPLACE_" below).
#
# . If the module is a header or adds headers, edit the corresponding
# variable to either an empty value or to the name of the header.
# Examples:
# . If the module generates a header from a .in.h file, edit the
# corresponding variable to either an empty value or to the name of
# the header. Examples:
#
# /^STDINT_H *=/s/@[^@\n]*@/stdint.h/ -- stdint.h is needed
# /^STDDEF_H *=/s/@[^@\n]*@// -- stddef.h is not needed
#
# . Some of the headers are generated conditionally, and the
# corresponding recipes are guarded by @GL_GENERATE_xxxx_H_TRUE@
# and @GL_GENERATE_xxxx_H_FALSE@. Depending on whether DJGPP uses
# the corresponding header, these should be edited either to
# nothing (thus exposing the recipe) or to #, which comments the
# recipe away. Example:
# corresponding recipes are guarded by
# ifneq (,$(GL_GENERATE_xxxx_H))
# Depending on whether DJGPP uses the corresponding header, these
# should be edited either to 1 (thus exposing the recipe) or
# to nothing, which makes Make bypass the recipe away. Example:
#
# s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/
# s/^@GL_GENERATE_STDBOOL_H_FALSE@//
# s/^@GL_GENERATE_STDBOOL_H@/1/
# s/^@GL_GENERATE_STDINT_H@//
#
# . Also edit the NEXT_foo_H and NEXT_AS_FIRST_DIRECTIVE_foo_H
# 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
# 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.
#
# . If the header is needed, edit all the variables it uses as
@ -135,8 +130,6 @@
/^@SET_MAKE@$/s/@SET_MAKE@//
/^VPATH *=/s/@[^@\n]*@/./
s/@PACKAGE@/emacs/
/^am__cd *=/c\
am__cd = cd
/^@BUILDING_FOR_WINDOWSNT_TRUE@/s/@[^@\n]*@/#/
/^@BUILDING_FOR_WINDOWSNT_FALSE@/s/@[^@\n]*@//
/^ALLOCA *=/s/@[^@\n]*@//
@ -145,6 +138,7 @@ am__cd = cd
/^AR *=/s/@[^@\n]*@/ar/
/^ARFLAGS *=/s/@[^@\n]*@/cru/
/^AWK *=/s/@[^@\n]*@/gawk/
/^AUTO_DEPEND *=/s/@AUTO_DEPEND@/yes/
/^CANNOT_DUMP *=/s/@[^@\n]*@/no/
/^CC *=/s/@[^@\n]*@/gcc -std=gnu99/
/^CPP *=/s/@[^@\n]*@/gcc -e/
@ -159,6 +153,7 @@ am__cd = cd
/^C_SWITCH_X_SITE *=/s/@C_SWITCH_X_SITE@//
/^PROFILING_CFLAGS *=/s/@PROFILING_CFLAGS@//
/^GNULIB_WARN_CFLAGS *=/s/@GNULIB_WARN_CFLAGS@//
/^HYBRID_MALLOC *=/s/@HYBRID_MALLOC@//
/^WARN_CFLAGS *=/s/@WARN_CFLAGS@//
/^WERROR_CFLAGS *=/s/@WERROR_CFLAGS@//
/^DEFS *=/s/@[^@\n]*@//
@ -191,6 +186,7 @@ am__cd = cd
/^GNULIB_MKOSTEMP *=/s/@GNULIB_MKOSTEMP@/1/
/^GNULIB_MKTIME *=/s/@GNULIB_MKTIME@/1/
/^GNULIB_TIME_R *=/s/@GNULIB_TIME_R@/1/
/^GNULIB_TIMEGM *=/s/@GNULIB_TIMEGM@/1/
/^GNULIB_TIME_RZ *=/s/@GNULIB_TIME_RZ@/1/
/^GNULIB_UNSETENV *=/s/@GNULIB_UNSETENV@/1/
/^GNULIB_[^ =]* *= *@/s/@[^@\n]*@/0/
@ -250,6 +246,7 @@ am__cd = cd
/^HAVE_SYS_PARAM_H *=/s/@HAVE_SYS_PARAM_H@/1/
/^HAVE_SYS_TIME_H *=/s/@HAVE_SYS_TIME_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_UNISTD_H *=/s/@HAVE_UNISTD_H@/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_FCNTL_H *=/s/@[^@\n]*@/<fcntl.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_STDDEF_H *=/s/@[^@\n]*@/<stddef.h>/
/^NEXT_AS_FIRST_DIRECTIVE_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/
@ -289,6 +287,7 @@ am__cd = cd
/^NEXT_ERRNO_H *=/s/@[^@\n]*@//
/^NEXT_FCNTL_H *=/s/@[^@\n]*@/<fcntl.h>/
/^NEXT_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/
/^NEXT_LIMITS_H *=/s/@[^@\n]*@/<limits.h>/
/^NEXT_SIGNAL_H *=/s/@[^@\n]*@/<signal.h>/
/^NEXT_STDDEF_H *=/s/@[^@\n]*@/<stddef.h>/
/^NEXT_STDIO_H *=/s/@[^@\n]*@/<stdio.h>/
@ -317,6 +316,8 @@ am__cd = cd
/^DIRENT_H *=/s/@[^@\n]*@//
/^ERRNO_H *=/s/@[^@\n]*@//
/^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/
/^STDDEF_H *=/s/@[^@\n]*@/stddef.h/
/^STDINT_H *=/s/@[^@\n]*@/stdint.h/
@ -330,6 +331,8 @@ am__cd = cd
/^WINT_T_SUFFIX *=/s/@WINT_T_SUFFIX@//
/^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_STAT_INODES *=/s/@WINDOWS_STAT_INODES@/0/
/^WINDOWS_STAT_TIMESPEC *=/s/@WINDOWS_STAT_TIMESPEC@/0/
# Tailor lists of files to what we need
/am__append_[1-9][0-9]* *=.*gettext\.h/s/@[^@\n]*@/\#/
/am__append_2 *=.*verify\.h/s/@[^@\n]*@//
@ -357,15 +360,18 @@ am__cd = cd
/^top_builddir *=/s/@[^@\n]*@/../
s/@PRAGMA_SYSTEM_HEADER@/\#pragma GCC system_header/
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.
/^\$(srcdir)\/Makefile\.in:/,/^[ ][ ]*\$(AUTOMAKE)/d
/^Makefile:/,/^[ ][ ]*esac/d
/^\$(top_srcdir)\/configure:/,/^\$(am__aclocal_m4_deps):/d
/^\$(top_builddir)\/config.status:/,/^$/d
/^\.\.\/config.status:/,/^Makefile:/c\
Makefile: $(srcdir)/Makefile.in
#
# 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
s/^@AMDEP_TRUE@//
@ -387,23 +393,53 @@ CONFIG_CLEAN_VPATH_FILES = xyzzy
s/^ -*test -z.*|| rm/ -rm/
s/@echo /@djecho /
#
# Fix the recipes for header files
s/^@GL_GENERATE_ALLOCA_H_TRUE@//
s/^@GL_GENERATE_ALLOCA_H_FALSE@/\#/
s/^@GL_GENERATE_BYTESWAP_H_TRUE@//
s/^@GL_GENERATE_BYTESWAP_H_FALSE@/\#/
s/^@GL_GENERATE_ERRNO_H_TRUE@/\#/
s/^@GL_GENERATE_ERRNO_H_FALSE@//
s/^@GL_GENERATE_EXECINFO_H_TRUE@//
s/^@GL_GENERATE_EXECINFO_H_FALSE@/\#/
s/^@GL_GENERATE_STDALIGN_H_TRUE@//
s/^@GL_GENERATE_STDALIGN_H_FALSE@/\#/
s/^@GL_GENERATE_STDDEF_H_TRUE@//
s/^@GL_GENERATE_STDDEF_H_FALSE@/\#/
s/^@GL_GENERATE_STDINT_H_TRUE@//
s/^@GL_GENERATE_STDINT_H_FALSE@/\#/
s/^@GL_GENERATE_STDALIGN_H_TRUE@//
s/^@GL_GENERATE_STDALIGN_H_FALSE@/\#/
# Determine which headers to generate
s/= @GL_GENERATE_ALLOCA_H@/= 1/
s/= @GL_GENERATE_BYTESWAP_H@/= 1/
s/= @GL_GENERATE_EXECINFO_H@/= 1/
s/= @GL_GENERATE_STDALIGN_H@/= 1/
s/= @GL_GENERATE_STDDEF_H@/= 1/
s/= @GL_GENERATE_STDINT_H@/= 1/
s/= @GL_GENERATE_LIMITS_H@/= 1/
s/= @GL_GENERATE_ERRNO_H@/= /
s/= @GL_GENERATE_LIMITS_H@/= /
#
# Determine which modules to build and which to omit
/^noinst_LIBRARIES /a\
OMIT_GNULIB_MODULE_acl-permissions = true\
OMIT_GNULIB_MODULE_allocator = true\
OMIT_GNULIB_MODULE_at-internal = true\
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: $(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/^ [ ]*cat \(.*\); \\/ sed -e '' \1 >> $@-t/
s/^ sed -e/ sed -e/
s/ \&\& \\ *$//
s/\.in-h\; *\\$/.in-h >> $@-t/
/^ [ ]*} /d

View file

@ -25,6 +25,7 @@ export FNCASE=y
/^top_srcdir *=/s|@top_srcdir@|./..|
/^EXEEXT *=/s/@EXEEXT@/.exe/
/^XARGS_LIMIT *=/s|@XARGS_LIMIT@||
/^FIND_DELETE *=/s/@FIND_DELETE@/-delete/
/^AM_DEFAULT_VERBOSITY *=/s/@AM_DEFAULT_VERBOSITY@/1/
/^[Aa][Mm]_/s/@AM_V@/$(V)/
/^[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
{
/* Alignment of struct Lisp_Vector objects. */
vector_alignment = COMMON_MULTIPLE (FLEXALIGNOF (struct Lisp_Vector),
GCALIGNMENT),
/* Alignment of struct Lisp_Vector objects. Because pseudovectors
can contain any C type, align at least as strictly as
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. */
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)
{
Lisp_Object overlay;
struct Lisp_Overlay *before_list;
struct Lisp_Overlay *after_list;
struct Lisp_Overlay *before_list UNINIT;
struct Lisp_Overlay *after_list UNINIT;
/* These are either nil, indicating that before_list or after_list
should be assigned, or the cons cell the cdr of which should be
assigned. */

View file

@ -686,6 +686,20 @@ composition_gstring_from_id (ptrdiff_t 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
composition_gstring_p (Lisp_Object gstring)
{
@ -1982,4 +1996,5 @@ See also the documentation of `auto-composition-mode'. */);
defsubr (&Scompose_string_internal);
defsubr (&Sfind_composition_internal);
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>
#if defined DOS_NT && !defined DEFER_MS_W32_H
#if defined WINDOWSNT && !defined DEFER_MS_W32_H
# include <ms-w32.h>
#endif

View file

@ -1888,7 +1888,7 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */)
(Lisp_Object variable)
{
Lisp_Object tem;
bool forwarded;
bool forwarded UNINIT;
union Lisp_Val_Fwd valcontents;
struct Lisp_Symbol *sym;
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.
%p is the locale's equivalent of either AM or PM.
%q is the calendar quarter (14).
%M is the minute.
%S is the second.
%N is the nanosecond, %6N the microsecond, %3N the millisecond, etc.
%Z is the time zone name, %z is the numeric form.
%M is the minute (00-59).
%S is the second (00-59; 00-60 on platforms with leap seconds)
%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.
%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".
%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.
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
|| (!NILP (ok_if_already_exists)
&& !INTEGERP (ok_if_already_exists)));
int rename_errno;
int rename_errno UNINIT;
if (!plain_rename)
{
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 "buffer.h"
#if 0x030014 <= GNUTLS_VERSION_NUMBER
#if GNUTLS_VERSION_NUMBER >= 0x030014
# define HAVE_GNUTLS_X509_SYSTEM_TRUST
#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:
https://gitlab.com/gnutls/gnutls/commit/568935848dd6b82b9315d8b6c529d00e2605e03d
So, require 3.5.1. */
#if 0x030501 <= GNUTLS_VERSION_NUMBER
#if GNUTLS_VERSION_NUMBER >= 0x030501
# define HAVE_GNUTLS_AEAD
#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 WINDOWSNT
@ -187,7 +193,9 @@ DEF_DLL_FN (const char *, gnutls_mac_get_name, (gnutls_mac_algorithm_t));
# ifdef HAVE_GNUTLS3
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));
# ifdef HAVE_GNUTLS_MAC_GET_NONCE_SIZE
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 (const gnutls_digest_algorithm_t *, gnutls_digest_list, (void));
DEF_DLL_FN (const char *, gnutls_digest_get_name, (gnutls_digest_algorithm_t));
@ -316,7 +324,9 @@ init_gnutls_functions (void)
# ifdef HAVE_GNUTLS3
LOAD_DLL_FN (library, gnutls_rnd);
LOAD_DLL_FN (library, gnutls_mac_list);
# ifdef HAVE_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_digest_list);
LOAD_DLL_FN (library, gnutls_digest_get_name);
@ -427,7 +437,9 @@ init_gnutls_functions (void)
# ifdef HAVE_GNUTLS3
# define gnutls_rnd fn_gnutls_rnd
# define gnutls_mac_list fn_gnutls_mac_list
# 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_digest_list fn_gnutls_digest_list
# define gnutls_digest_get_name fn_gnutls_digest_get_name
@ -2178,6 +2190,10 @@ name. */)
/* A symbol representing the GnuTLS MAC algorithm. */
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,
QCmac_algorithm_id, make_number (gma),
QCtype, Qgnutls_type_mac_algorithm,
@ -2189,7 +2205,7 @@ name. */)
make_number (gnutls_mac_get_key_size (gma)),
QCmac_algorithm_noncesize,
make_number (gnutls_mac_get_nonce_size (gma)));
make_number (nonce_size));
mac_algorithms = Fcons (mp, mac_algorithms);
}

View file

@ -2574,7 +2574,7 @@ xbm_image_p (Lisp_Object object)
static int
xbm_scan (char **s, char *end, char *sval, int *ival)
{
unsigned char c;
unsigned char c UNINIT;
loop:
@ -5277,6 +5277,25 @@ pbm_scan_number (char **s, char *end)
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. */
@ -5499,7 +5518,8 @@ pbm_load (struct frame *f, struct image *img)
else
{
int expected_size = height * width;
if (max_color_idx > 255)
bool two_byte = 255 < max_color_idx;
if (two_byte)
expected_size *= 2;
if (type == PBM_COLOR)
expected_size *= 3;
@ -5522,24 +5542,14 @@ pbm_load (struct frame *f, struct image *img)
int r, g, b;
if (type == PBM_GRAY && raw_p)
{
r = g = b = *p++;
if (max_color_idx > 255)
r = g = b = r * 256 + *p++;
}
r = g = b = pbm_scan_index (&p, two_byte);
else if (type == PBM_GRAY)
r = g = b = pbm_scan_number (&p, end);
else if (raw_p)
{
r = *p++;
if (max_color_idx > 255)
r = r * 256 + *p++;
g = *p++;
if (max_color_idx > 255)
g = g * 256 + *p++;
b = *p++;
if (max_color_idx > 255)
b = b * 256 + *p++;
r = pbm_scan_index (&p, two_byte);
g = pbm_scan_index (&p, two_byte);
b = pbm_scan_index (&p, two_byte);
}
else
{
@ -7839,7 +7849,7 @@ gif_load (struct frame *f, struct image *img)
init_color_table ();
#ifndef USE_CAIRO
unsigned long bgcolor;
unsigned long bgcolor UNINIT;
if (STRINGP (specified_bg))
bgcolor = x_alloc_image_color (f, img, specified_bg,
FRAME_BACKGROUND_PIXEL (f));
@ -8542,13 +8552,19 @@ imagemagick_load_image (struct frame *f, struct image *img,
char hint_buffer[MaxTextExtent];
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.
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
find out things about it. */
/* Initialize the imagemagick environment. */
MagickWandGenesis ();
image = image_spec_value (img->spec, QCindex, NULL);
ino = INTEGERP (image) ? XFASTINT (image) : 0;
image_wand = NewMagickWand ();
@ -8849,8 +8865,10 @@ imagemagick_load_image (struct frame *f, struct image *img,
DestroyMagickWand (image_wand);
if (bg_wand) DestroyPixelWand (bg_wand);
/* `MagickWandTerminus' terminates the imagemagick environment. */
MagickWandTerminus ();
/* Do not call MagickWandTerminus, to work around ImageMagick bug 825. See:
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;
@ -8858,7 +8876,6 @@ imagemagick_load_image (struct frame *f, struct image *img,
DestroyMagickWand (image_wand);
if (bg_wand) DestroyPixelWand (bg_wand);
MagickWandTerminus ();
/* TODO more cleanup. */
image_error ("Error parsing IMAGEMAGICK image `%s'", img->spec);
return 0;

View file

@ -1974,6 +1974,11 @@ line_number_display_width (struct window *w, int *width, int *pixel_width)
saved_restriction = true;
}
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);
*width = it.lnum_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,
Sline_number_display_width, 0, 1, 0,
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,
otherwise return the width in columns of the face used to display
line numbers, `line-number'. */)
If optional argument PIXELWISE is the symbol `columns', return the width
in units of the frame's canonical character width. In this case, the
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)
{
int width, pixel_width;
struct window *w = XWINDOW (selected_window);
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 (width);
}
@ -2355,6 +2372,8 @@ syms_of_indent (void)
doc: /* Indentation can insert tabs if this is non-nil. */);
indent_tabs_mode = 1;
DEFSYM (Qcolumns, "columns");
defsubr (&Scurrent_indentation);
defsubr (&Sindent_to);
defsubr (&Scurrent_column);

View file

@ -3943,6 +3943,8 @@ careadlinkat (int fd, char const *filename,
int
faccessat (int dirfd, const char * path, int mode, int flags)
{
char fullname[MAXPATHLEN];
/* We silently ignore 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 "termhooks.h" /* struct terminal */
int dos_ttraw (struct tty_display_info *);
int dos_ttcooked (void);
int dos_get_saved_screen (char **, int *, int *);
@ -67,6 +69,7 @@ void syms_of_win16select (void);
/* Constants. */
#define EINPROGRESS 112
#define ENOTSUP ENOSYS
/* Gnulib sets O_CLOEXEC to O_NOINHERIT, which gets in the way when we
need to redirect standard handles for subprocesses using temporary
files created by mkostemp, see callproc.c. */

View file

@ -423,20 +423,12 @@ - (NSColor *)colorUsingDefaultColorSpace
}
/* GNUstep always shows decorations if the window is resizable,
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
/* These flags will be OR'd or XOR'd with the NSWindow's styleMask
property depending on what we're doing. */
#ifdef NS_IMPL_COCOA
#define FRAME_DECORATED_FLAGS NSWindowStyleMaskTitled
#else
#define FRAME_DECORATED_FLAGS (NSWindowStyleMaskTitled \
| NSWindowStyleMaskResizable \
| NSWindowStyleMaskMiniaturizable \
| NSWindowStyleMaskClosable)
#endif
#define FRAME_UNDECORATED_FLAGS NSWindowStyleMaskBorderless
/* TODO: get rid of need for these forward declarations */
@ -7211,15 +7203,9 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f
win = [[EmacsWindow alloc]
initWithContentRect: r
styleMask: ((FRAME_UNDECORATED (f)
styleMask: (FRAME_UNDECORATED (f)
? FRAME_UNDECORATED_FLAGS
: FRAME_DECORATED_FLAGS)
#ifdef NS_IMPL_COCOA
| NSWindowStyleMaskResizable
| NSWindowStyleMaskMiniaturizable
| NSWindowStyleMaskClosable
#endif
)
backing: NSBackingStoreBuffered
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 <arpa/inet.h>
#endif /* subprocesses */
#ifdef HAVE_SETRLIMIT
# 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;
#endif
#ifdef subprocesses
/* Are local (unix) sockets supported? */
#if defined (HAVE_SYS_UN_H)
#if !defined (AF_LOCAL) && defined (AF_UNIX)
@ -3830,7 +3834,7 @@ usage: (make-network-process &rest ARGS) */)
Lisp_Object proc;
Lisp_Object contact;
struct Lisp_Process *p;
const char *portstring;
const char *portstring UNINIT;
ptrdiff_t portstringlen ATTRIBUTE_UNUSED;
char portbuf[INT_BUFSIZE_BOUND (EMACS_INT)];
#ifdef HAVE_LOCAL_SOCKETS
@ -7455,6 +7459,13 @@ keyboard_bit_set (fd_set *mask)
#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. */
extern int sys_select (int, fd_set *, fd_set *, fd_set *,
struct timespec *, void *);

View file

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

View file

@ -50,6 +50,11 @@ typedef int fd_set;
#endif
#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
#endif

View file

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

View file

@ -25,6 +25,10 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <sys/socket.h>
#endif
#ifdef MSDOS
#include <signal.h> /* sigset_t */
#endif
#include "sysselect.h" /* FIXME */
#include "systime.h" /* FIXME */
#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. */
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);
/* 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);
}
/* Default internalBorderWidth to 0 on Windows to match other programs. */
x_default_parameter (f, parameters, Qinternal_border_width, make_number (0),
"internalBorderWidth", "InternalBorder", RES_TYPE_NUMBER);
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 "atimer.h"
/* Stack alignment stuff. Every CALLBACK function should have the
ALIGN_STACK attribute if it manipulates Lisp objects, because
Windows x86 32-bit ABI only guarantees 4-byte stack alignment, and
that is what we will get when a Windows function calls us. The
ALIGN_STACK attribute forces GCC to emit a preamble code to
re-align the stack at function entry. Further details about this
can be found in http://www.peterstock.co.uk/games/mingw_sse/. */
/* Stack alignment stuff. Every CALLBACK and thread function should
have the ALIGN_STACK attribute if it manipulates Lisp objects,
because Windows x86 32-bit ABI only guarantees 4-byte stack
alignment, and that is what we will get when a Windows function
calls us. The ALIGN_STACK attribute forces GCC to emit a preamble
code to re-align the stack at function entry. Further details
about this can be found in
http://www.peterstock.co.uk/games/mingw_sse/. */
#ifdef __GNUC__
# if USE_STACK_LISP_OBJECTS && !defined _WIN64 && !defined __x86_64__ \
&& __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)
/* line-number-mode always displays narrowed line
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
&& (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);
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)))
*/
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
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));
/* The UNIT expression, e.g. as part of (NUM . UNIT). */
if (unit[0] == 'i' && unit[1] == 'n')
pixels = 1.0;
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
/* 'height': the height of FONT. */
if (EQ (prop, Qheight))
return OK_PIXELS (font
? normal_char_height (font, -1)
: FRAME_LINE_HEIGHT (it->f));
/* 'width': the width of FONT. */
if (EQ (prop, Qwidth))
return OK_PIXELS (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);
#endif
/* 'text': the width or height of the text area. */
if (EQ (prop, Qtext))
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));
/* ':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)
{
*res = 0;
/* 'left': left edge of the text area. */
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))
return OK_ALIGN_TO (window_box_right_offset (it->w, TEXT_AREA));
/* 'center': the center of the text area. */
if (EQ (prop, Qcenter))
return OK_ALIGN_TO (window_box_left_offset (it->w, TEXT_AREA)
+ it->lnum_pixel_width
+ window_box_width (it->w, TEXT_AREA) / 2);
/* 'left-fringe': left edge of the left fringe. */
if (EQ (prop, Qleft_fringe))
return OK_ALIGN_TO (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (it->w)
? WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH (it->w)
: window_box_right_offset (it->w, LEFT_MARGIN_AREA));
/* 'right-fringe': left edge of the right fringe. */
if (EQ (prop, Qright_fringe))
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, TEXT_AREA));
/* 'left-margin': left edge of the left display margin. */
if (EQ (prop, Qleft_margin))
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))
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))
return OK_ALIGN_TO (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (it->w)
? 0
@ -25213,6 +25246,7 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
}
else
{
/* Otherwise, the elements stand for their width. */
if (EQ (prop, Qleft_fringe))
return OK_PIXELS (WINDOW_LEFT_FRINGE_WIDTH (it->w));
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
? FRAME_COLUMN_WIDTH (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);
}
@ -25246,6 +25282,7 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
if (SYMBOLP (car))
{
#ifdef HAVE_WINDOW_SYSTEM
/* '(image PROPS...)': width or height of the specified image. */
if (FRAME_WINDOW_P (it->f)
&& 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);
}
/* '(xwidget PROPS...)': dimensions of the specified xwidget. */
if (FRAME_WINDOW_P (it->f) && valid_xwidget_spec_p (prop))
{
/* TODO: Don't return dummy size. */
return OK_PIXELS (100);
}
#endif
/* '(+ EXPR...)' or '(- EXPR...)' add or subtract
recursively calculated values. */
if (EQ (car, Qplus) || EQ (car, Qminus))
{
bool first = true;
@ -25287,15 +25327,18 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
car = Qnil;
}
/* '(NUM)': absolute number of pixels. */
if (NUMBERP (car))
{
double fact;
int offset =
width_p && align_to && *align_to < 0 ? it->lnum_pixel_width : 0;
pixels = XFLOATINT (car);
if (NILP (cdr))
return OK_PIXELS (pixels);
return OK_PIXELS (pixels + offset);
if (calc_pixel_width_or_height (&fact, it, cdr,
font, width_p, align_to))
return OK_PIXELS (pixels * fact);
return OK_PIXELS (pixels * fact + offset);
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 ()
"Step-editing properly cleans up `post-command-hook.' (Bug #18708)"
(:expected-result :failed)
(let (post-command-hook)
(setq-local post-command-hook '(t))
(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 ((tmp-name1 (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-name4 (tramp--test-make-temp-name 'local quoted))
(tmp-name5 (tramp--test-make-temp-name 'local quoted)))
;; Copy on remote side.
(unwind-protect
(progn
(write-region "foo" nil tmp-name1)
(copy-file tmp-name1 tmp-name2)
(should (file-exists-p tmp-name2))
(with-temp-buffer
(insert-file-contents tmp-name2)
(should (string-equal (buffer-string) "foo")))
(should-error
(copy-file tmp-name1 tmp-name2)
:type 'file-already-exists)
(copy-file tmp-name1 tmp-name2 'ok)
(make-directory tmp-name3)
;; 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.
(ignore-errors (delete-file tmp-name1))
(ignore-errors (delete-file tmp-name2))
(ignore-errors (delete-directory tmp-name3 'recursive)))
(tmp-name3 (tramp--test-make-temp-name 'local quoted)))
(dolist (source-target
`(;; Copy on remote side.
(,tmp-name1 . ,tmp-name2)
;; Copy from remote side to local side.
(unwind-protect
(progn
(write-region "foo" nil tmp-name1)
(copy-file tmp-name1 tmp-name4)
(should (file-exists-p tmp-name4))
(with-temp-buffer
(insert-file-contents tmp-name4)
(should (string-equal (buffer-string) "foo")))
(should-error
(copy-file tmp-name1 tmp-name4)
:type 'file-already-exists)
(copy-file tmp-name1 tmp-name4 'ok)
(make-directory tmp-name5)
;; This has been changed in Emacs 26.1.
(when (tramp--test-emacs26-p)
(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.
(ignore-errors (delete-file tmp-name1))
(ignore-errors (delete-file tmp-name4))
(ignore-errors (delete-directory tmp-name5 'recursive)))
(,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 simple file.
(unwind-protect
(progn
(write-region "foo" nil tmp-name4 nil 'nomessage)
(copy-file tmp-name4 tmp-name1)
(should (file-exists-p tmp-name1))
(write-region "foo" nil source)
(should (file-exists-p source))
(copy-file source target)
(should (file-exists-p target))
(with-temp-buffer
(insert-file-contents tmp-name1)
(insert-file-contents target)
(should (string-equal (buffer-string) "foo")))
(should-error
(copy-file tmp-name4 tmp-name1)
(copy-file source target)
:type 'file-already-exists)
(copy-file tmp-name4 tmp-name1 'ok)
(make-directory tmp-name3)
(copy-file source target 'ok))
;; Cleanup.
(ignore-errors (delete-file source))
(ignore-errors (delete-file target)))
;; Copy file to directory.
(unwind-protect
(progn
(write-region "foo" nil source)
(should (file-exists-p source))
(make-directory target)
(should (file-directory-p target))
;; This has been changed in Emacs 26.1.
(when (tramp--test-emacs26-p)
(should-error
(copy-file tmp-name4 tmp-name3)
(copy-file source target)
:type 'file-already-exists))
(copy-file tmp-name4 (file-name-as-directory tmp-name3))
(copy-file source (file-name-as-directory target))
(should
(file-exists-p
(expand-file-name (file-name-nondirectory tmp-name4) tmp-name3))))
(expand-file-name (file-name-nondirectory source) target))))
;; Cleanup.
(ignore-errors (delete-file tmp-name1))
(ignore-errors (delete-file tmp-name4))
(ignore-errors (delete-directory tmp-name3 'recursive))))))
(ignore-errors (delete-file source))
(ignore-errors (delete-directory target 'recursive)))
;; Copy directory to 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))
;; Directory `target' exists already, so we must use
;; `file-name-as-directory'.
(copy-file source (file-name-as-directory 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)))
;; 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 ()
"Check `rename-file'."
@ -1983,111 +1985,105 @@ This checks also `file-name-as-directory', `file-name-directory',
(let (quoted)
(let ((tmp-name1 (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-name4 (tramp--test-make-temp-name 'local quoted))
(tmp-name5 (tramp--test-make-temp-name 'local quoted)))
;; Rename on remote side.
(unwind-protect
(progn
(write-region "foo" nil tmp-name1)
(rename-file tmp-name1 tmp-name2)
(should-not (file-exists-p tmp-name1))
(should (file-exists-p tmp-name2))
(with-temp-buffer
(insert-file-contents tmp-name2)
(should (string-equal (buffer-string) "foo")))
(write-region "foo" nil tmp-name1)
(should-error
(rename-file tmp-name1 tmp-name2)
:type 'file-already-exists)
(rename-file tmp-name1 tmp-name2 'ok)
(should-not (file-exists-p tmp-name1))
(write-region "foo" nil tmp-name1)
(make-directory tmp-name3)
;; 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.
(ignore-errors (delete-file tmp-name1))
(ignore-errors (delete-file tmp-name2))
(ignore-errors (delete-directory tmp-name3 'recursive)))
(tmp-name3 (tramp--test-make-temp-name 'local quoted)))
(dolist (source-target
`(;; Rename on remote side.
(,tmp-name1 . ,tmp-name2)
;; Rename from remote side to local side.
(unwind-protect
(progn
(write-region "foo" nil tmp-name1)
(rename-file tmp-name1 tmp-name4)
(should-not (file-exists-p tmp-name1))
(should (file-exists-p tmp-name4))
(with-temp-buffer
(insert-file-contents tmp-name4)
(should (string-equal (buffer-string) "foo")))
(write-region "foo" nil tmp-name1)
(should-error
(rename-file tmp-name1 tmp-name4)
:type 'file-already-exists)
(rename-file tmp-name1 tmp-name4 'ok)
(should-not (file-exists-p tmp-name1))
(write-region "foo" nil tmp-name1)
(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.
(ignore-errors (delete-file tmp-name1))
(ignore-errors (delete-file tmp-name4))
(ignore-errors (delete-directory tmp-name5 'recursive)))
(,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 simple file.
(unwind-protect
(progn
(write-region "foo" nil tmp-name4 nil 'nomessage)
(rename-file tmp-name4 tmp-name1)
(should-not (file-exists-p tmp-name4))
(should (file-exists-p tmp-name1))
(write-region "foo" nil source)
(should (file-exists-p source))
(rename-file source target)
(should-not (file-exists-p source))
(should (file-exists-p target))
(with-temp-buffer
(insert-file-contents tmp-name1)
(insert-file-contents target)
(should (string-equal (buffer-string) "foo")))
(write-region "foo" nil tmp-name4 nil 'nomessage)
(write-region "foo" nil source)
(should (file-exists-p source))
(should-error
(rename-file tmp-name4 tmp-name1)
(rename-file source target)
:type 'file-already-exists)
(rename-file tmp-name4 tmp-name1 'ok)
(should-not (file-exists-p tmp-name4))
(write-region "foo" nil tmp-name4 nil 'nomessage)
(make-directory tmp-name3)
(rename-file source target 'ok)
(should-not (file-exists-p source)))
;; Cleanup.
(ignore-errors (delete-file source))
(ignore-errors (delete-file target)))
;; Rename file to directory.
(unwind-protect
(progn
(write-region "foo" nil source)
(should (file-exists-p source))
(make-directory target)
(should (file-directory-p target))
;; This has been changed in Emacs 26.1.
(when (tramp--test-emacs26-p)
(should-error
(rename-file tmp-name4 tmp-name3)
(rename-file source target)
:type 'file-already-exists))
(rename-file tmp-name4 (file-name-as-directory tmp-name3))
(should-not (file-exists-p tmp-name4))
(rename-file source (file-name-as-directory target))
(should-not (file-exists-p source))
(should
(file-exists-p
(expand-file-name (file-name-nondirectory tmp-name4) tmp-name3))))
(expand-file-name (file-name-nondirectory source) target))))
;; Cleanup.
(ignore-errors (delete-file tmp-name1))
(ignore-errors (delete-file tmp-name4))
(ignore-errors (delete-directory tmp-name3 'recursive))))))
(ignore-errors (delete-file source))
(ignore-errors (delete-directory target 'recursive)))
;; Rename directory to 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))
;; Directory `target' exists already, so we must use
;; `file-name-as-directory'.
(rename-file source (file-name-as-directory 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)))
;; 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 ()
"Check `make-directory'.
@ -2346,6 +2342,7 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
"Check `dired' with wildcards."
(skip-unless (tramp--test-enabled))
(skip-unless (tramp--test-sh-p))
(skip-unless (not (tramp--test-rsync-p)))
;; Since Emacs 26.1.
(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-test06-directory-file-name' for `ftp'.
;; * 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'.
(defun tramp-test-all (&optional interactive)

View file

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

View file

@ -24,6 +24,7 @@
;;; Code:
(require 'ert)
(require 'flymake)
(eval-when-compile (require 'subr-x)) ; string-trim
(defvar flymake-tests-data-directory
(expand-file-name "lisp/progmodes/flymake-resources"
@ -37,7 +38,7 @@
;;
;;
(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
;; `accept-process-output', won't suffice as ways to get
;; 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 ()
"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))
(flymake-tests--with-flymake
("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 {
src: url("Sans-Regular.eot") format("eot"),
url("Sans-Regular.woff") format("woff"),