* test/lisp/gnus/mml-sec-tests.el
(mml-secure-en-decrypt-sign-1-1-single): Mark the test as unstable
(bug#42720). It sometimes fails on some systems (Fedora?) when
run with "-j5", so there may be a race condition in the code somewhere.
Tweak how whitespace-mode marks the end of the buffer
* lisp/whitespace.el (whitespace-missing-newline-at-eof): Change
the colours to not be as angry.
(whitespace-color-on): Don't mark the end of the buffer if point
is there.
Make the name column in 'list-buffers' have a dynamic width
* lisp/buff-menu.el (Buffer-menu--dynamic-name-width): New
function (bug#30692).
(Buffer-menu-name-width): Default to using it.
(list-buffers--refresh): Call it.
Simen Heggestøyl [Tue, 16 Jun 2020 19:32:58 +0000 (21:32 +0200)]
Use lexical-binding in browse-url.el and add tests
* lisp/net/browse-url.el: Turn on lexical-binding.
(browse-url--mailto, browse-url--man, browse-url--browser): Use
imperative form in docstrings.
(browse-url-delete-temp-file): Turn comment into a proper docstring.
* test/lisp/net/browse-url-tests.el: New file with tests for
browse-url.el.
Stefan Kangas [Fri, 7 Aug 2020 12:42:41 +0000 (14:42 +0200)]
Remove support for Mosaic from browse-url
* lisp/net/browse-url.el (browse-url-mosaic-program)
(browse-url-mosaic-arguments, browse-url-mosaic-pidfile)
(browse-url-CCI-port, browse-url-CCI-host)
(browse-url-default-browser, browse-url-mosaic, browse-url-cci):
Remove support for the Mosaic browser, which saw its last release in
1997, or 23 years ago.
Mauro Aranda [Fri, 7 Aug 2020 11:14:41 +0000 (13:14 +0200)]
Add new commands to describe buttons and widgets
* lisp/help-fns.el (describe-widget-functions): New variable, used by
describe-widget.
(describe-widget): New command, to display information about a widget.
* lisp/button.el (button-describe): New command, for describing a button.
(button--describe): Helper function for button-describe.
* lisp/wid-edit.el (widget-describe): New command, for describing a
widget.
(widget--resolve-parent-action): Helper function, to allow
widget-describe to display more useful information (bug#139).
* lisp/arc-mode.el (archive-copy-file): New command, keystroke and
menu bar entry (bug#26192).
(archive-extract): Refactored out code from here...
(archive--extract-file): ... to here for use in archive-copy-file.
Allow ffap to do the right thing with 'https://gnu.org'
* lisp/thingatpt.el (thing-at-point-bounds-of-url-at-point): Don't
include trailing ' in the URL, because it's more likely to be a
punctuation character (bug#29410).
Clean up and improve compilation of arithmetic (bug#42597)
* lisp/emacs-lisp/byte-opt.el (byte-optimize-associative-math)
(byte-optimize-min-max): Transform 3-arg min/max call into two 2-arg
calls, which is faster.
* lisp/emacs-lisp/bytecomp.el (byte-compile-associative): Rename to...
(byte-compile-variadic-numeric): ...this function and simplify,
fixing incorrect comments. The 3-arg strength reduction is now
always done in the optimisers and is no longer needed here.
(byte-compile-min-max): New function.
(byte-compile-minus): Simplify, remove incorrect comment, and use
byte-compile-variadic-numeric.
(byte-compile-quo): Simplify and fix comment.
* lisp/emacs-lisp/bytecomp.el (byte-compile-associative):
Translate numerical identity expressions, such as (+ x) and (* x),
into (* x 1) since the previous translation (+ x 0) gets it wrong
for x = -0.0.
* test/lisp/emacs-lisp/bytecomp-tests.el
(byte-opt-testsuite-arith-data): Add test cases.
Make whitespace-mode highlight missing newlines at the end of buffers
* lisp/whitespace.el (whitespace-missing-newline-at-eof): New face
(bug#34952).
(whitespace-report-region): Add a test for
end-of-buffer-without-newline.
(whitespace-color-on): Ditto.
* doc/emacs/display.texi (Useless Whitespace): Document it.
Paul Eggert [Thu, 6 Aug 2020 22:24:47 +0000 (15:24 -0700)]
Update from Gnulib
This incorporates:
2020-08-06 libgmp: add <gmp/gmp.h> support
2020-08-06 Consider that clang defines __OPTIMIZE__ like GCC does
2020-08-06 Use __builtin_expect with clang everywhere
2020-08-05 Use __builtin_clz{,l,ll} with clang, also on Windows
2020-08-05 Use __builtin_ctz{,l,ll} and __builtin_ffs{,l,ll} with clang
2020-07-31 _GL_CMP: Improve documentation
2020-07-30 alloca, largefile: sync with Autoconf master
* lib/c++defs.h, lib/cdefs.h, lib/count-leading-zeros.h:
* lib/count-trailing-zeros.h, m4/alloca.m4, m4/gnulib-common.m4:
* m4/largefile.m4, m4/libgmp.m4:
Copy from Gnulib.
* lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
Change how Mail-Copies-To: never is handled in Message
* lisp/gnus/message.el (message-get-reply-headers): Change how Mail-Copies-To: never is handled (bug#37591). When that header is
present, put all the remaining recipients in the To header,
instead of picking an arbitrary recipient to have in the To
header, and the rest in the Cc header.
Make it possible to use Message as a mailto: desktop handler
* doc/misc/message.texi (System Mailer Setup): Document the usage.
* lisp/gnus/gnus-art.el (gnus-url-mailto): Move most of the code
here to 'message-mailto-1' (bug#38314).
* lisp/gnus/message.el (message-parse-mailto-url): Mark as obsolete.
(message-parse-mailto-url): Rewritten slightly from the above.
(message-mailto): New command.
(message-mailto-1): New function.
Make 'n'/'p' in image mode buffers respect dired sorting
The commands now also now work on archive and tar mode parent buffers.
* doc/emacs/files.texi (Image Mode): Document it.
* lisp/arc-mode.el (archive-goto-file): New function (bug#38647).
(archive-next-file-displayer): Ditto.
* lisp/image-mode.el (image-next-file): Reimplement to work on
displayed dired buffers and the like. This means that `n' and `p'
now works on the displayed ordering in the dired buffer, so if
you've reversed the sorting, `n' picks the right "next" file.
(image-mode--directory-buffers): New function.
(image-mode--next-file): Ditto.
* lisp/tar-mode.el (tar-goto-file): New function.
(tar-next-file-displayer): Ditto.
* test/lisp/emacs-lisp/cconv-tests.el
(cconv-tests-cl-iter-defun-:documentation): Mark as unstable
(bug#42723).
(cconv-tests-iter-defun-:documentation): Ditto.
* lisp/emacs-lisp/autoload.el (batch-update-autoloads--summary):
Output " ..." at the end of the non-concluding lines to signify
that the output continues.
Make the loaddefs scraping compilation output look more regular
* lisp/Makefile.in ($(lisp)/loaddefs.el): Don't output the
directories here.
* lisp/emacs-lisp/autoload.el (batch-update-autoloads--summary):
New function.
(batch-update-autoloads): Use it to output the directories we're
scraping.
Compilation output with very long lines can be mistaken for errors
when they scroll by fast in the compilation output. Making it look
more like normal informational output avoids this confusion.
* lisp/emacs-lisp/byte-run.el (byte-compile-info): New function
that's more flexible that replaces 'byte-compile-info-string' and
'byte-compile-info-message'.
(byte-compile-info-string): Make obsolete.
(byte-compile-info-message): Ditto.
* lisp/international/ja-dic-cnv.el (skkdic-convert-okuri-ari)
(skkdic-convert-postfix, skkdic-convert-prefix)
(skkdic-collect-okuri-nasi, skkdic-set-okuri-nasi):
* lisp/finder.el (finder-compile-keywords):
* lisp/cus-dep.el (custom-make-dependencies): Adjust callers to
use the new function.
Paul Eggert [Thu, 6 Aug 2020 00:36:50 +0000 (17:36 -0700)]
Simplify Solaris port
This should avoid some configuration confusion as exemplified
by Jeffrey Walton’s recent bug report (Bug#42675).
* configure.ac (opsys): Simplify Solaris configuration by
not worrying about Solaris 9 and earlier, as they are no
longer supported by the Solaris developers. This should
support Walton’s ‘./configure --build=x86_64-sun-solaris’.
Instead of bothering with ‘opsys=sol2-6’ and ‘opsys=sol2-10’,
just use ‘opsys=solaris’. All uses changed.
(emacs_check_sunpro_c): Remove unused var.
* doc/misc/tramp.texi (Remote programs):
* etc/MACHINES, etc/PROBLEMS:
Modernize PATH for Oracle Developer Studio.
* etc/PROBLEMS: Move Solaris-related problems to legacy area,
except those that are still relevant.
Enable replying to an ical event even when not an attendee
* lisp/gnus/gnus-icalendar.el
(gnus-icalendar-event--build-reply-event-body): Display a warning
instead of barfing when user is missing from attendee list.
When the user identity is not present in the attendee list, an error
is triggered making replying to such an event impossible (the reply
message not being even composed). This replaces it with a warning.
This is necessary because one may receive events that the organizer
did not set up well and it is up to the user to decide whether or not
to reply to them (bug#41723).
Copyright-paperwork-exempt: yes
Harald Jörg [Wed, 5 Aug 2020 15:19:06 +0000 (17:19 +0200)]
cperl-mode.el: Correctly terminate HERE-docs
* lisp/progmodes/cperl-mode.el (cperl-find-pods-heres): cperl-mode
in the master branch wrongly uses the first occurrence of "HERE"
to terminate the string, resulting in badly fontified / indented
code which follows (bug#42251).
Philip K [Wed, 5 Aug 2020 14:07:41 +0000 (16:07 +0200)]
Wrap skeleton logic in atomic-change-group
* lisp/skeleton.el (define-skeleton): Use an atomic change group
so that if the user `C-g's in the middle of it, we're not left
with half a skeleton in the buffer (bug#42311).
Harald Jörg [Wed, 5 Aug 2020 13:55:00 +0000 (15:55 +0200)]
cperl-mode: Fix bad parameter construction in cperl-etags
* lisp/progmodes/cperl-mode.el (cperl-etags): This fails with
(wrong-type-argument stringp cperl-sub-regexp). The error came
with incorporating Jonathan Rockway's work (bug#42355).
* lisp/gnus/message.el (message-insert-screenshot): Force scaling
to 1, since the screenshot image will already be suitable for
displaying directly (it's the same resolution).
* lisp/gnus/message.el (message-screenshot-command): New variable.
(message-mode-map): New keystroke and menu item. Also add
mml-attach-file to the menu.
(message-insert-screenshot): New command.
* lisp/gnus/mml.el (mml-parse-1): Allow having
content-transfer-encoding already in the part, so that we can have
inline base64-encoded binaries in the Message buffers.
* lisp/progmodes/sh-script.el (sh-font-lock-keywords-var): Fontize
$(...) slightly better (bug#42417). Instead of just fontizing the
first word in the expression, fontize until the closing
parenthesis. This doesn't work well if you have nested $(...)
expressions.
* lisp/erc/erc.el (erc--unignore-user): Separate into own function
(bug#40137).
(erc-cmd-IGNORE): Ask if the user wants a timeout.
(erc--read-time-period): New function.
Alan Third [Sun, 2 Aug 2020 19:43:56 +0000 (20:43 +0100)]
Don't smooth images when scaling up (bug#38394)
* src/image.c (image_set_transform [HAVE_XRENDER]): Use different filter
when scaling up vs scaling down.
* src/nsimage.m (ns_image_set_smoothing):
([EmacsImage setSmoothing:]): New functions.
* src/nsterm.h: Add definitions.
* src/nsterm.m (ns_dumpglyphs_image): Disable smoothing if requested.
Paul Eggert [Tue, 4 Aug 2020 18:09:55 +0000 (11:09 -0700)]
Drop support for -fcheck-pointer-bounds
GCC has removed the -fcheck-pointer bounds option, and the Linux
kernel has also removed support for Intel MPX, so there’s no point
to keeping this debugging option within Emacs.
* src/bytecode.c (BYTE_CODE_THREADED):
* src/lisp.h (DEFINE_LISP_SYMBOL, XSYMBOL, make_lisp_symbol):
Assume __CHKP__ is not defined.
* src/ptr-bounds.h: Remove. All uses of ptr_bounds_clip,
ptr_bounds_copy, ptr_bounds_init, ptr_bounds_set removed.
* test/lisp/gnus/mml-sec-tests.el
(mml-first-secure-en-decrypt-sign-1): mml-secure-en-decrypt-sign-1
fail sometimes, on some machines, unless it's the first test. I'm
guessing there's a race condition somewhere in the test, but put
it first now to avoid build reports.
Fix two mml-sec minor bugs revealed by new test harness
* lisp/gnus/mml-sec.el
(mml-secure-allow-signing-with-unknown-recipient): New variable
(bug#18393) (but this should probably be fixed in a different way).
(mml-secure-epg-sign): Use it.
(mml-secure-check-user-id): Protect against recipients that aren't
email addresses, like "No recipient".
* test/lisp/net/network-stream-tests.el
(network-test--resolve-system-name): New function.
(echo-server-with-dns): Skip test if (system-name) doesn't look
like it's going to resolve (bug#42535).
* test/lisp/vc/vc-tests.el (vc-test--svn-enabled): Macos machines
may have a dummy svn program that helpfully just outputs "There's
no svn program here", so also test for the svnadmin program
(bug#42536).
Michael Albinus [Tue, 4 Aug 2020 12:19:51 +0000 (14:19 +0200)]
Add Tramp support of direct asynchronous process invocation
* doc/misc/tramp.texi (Predefined connection information):
Add "direct-async-process".
(Remote processes): New subsection "Improving performance of
asynchronous remote processes".
* lisp/net/tramp-adb.el (tramp-methods) <adb>: Add `tramp-login-program'
and `tramp-login-args'.
(tramp-adb-handle-make-process): Use `tramp-handle-make-process'.
(tramp-adb-maybe-open-connection): Add "set +o vi +o emacs" command.
* lisp/net/tramp-sh.el (tramp-sh-handle-make-process):
Use `tramp-handle-make-process'.
(tramp-sh-file-name-handler-p, tramp-multi-hop-p): New defuns.
(tramp-compute-multi-hops): Use `tramp-multi-hop-p'.
* lisp/net/tramp.el (tramp-dissect-file-name, tramp-dissect-hop-name):
Use `tramp-multi-hop-p'.
(tramp-handle-insert-file-contents, tramp-local-host-p):
Use `tramp-sh-file-name-handler-p'.
(tramp-handle-make-process): New defun.
* test/README: Add another example how to use SELECTOR.
* test/lisp/net/tramp-tests.el (tramp-test03-file-name-method-rules):
Adapt test.
(tramp--test-sh-p): Use `tramp-sh-file-name-handler-p'.
Paul Eggert [Mon, 3 Aug 2020 22:21:59 +0000 (15:21 -0700)]
Use void * for pointers in with_echo_area_buffer
* src/xdisp.c (with_echo_area_buffer): Pass void * instead of
ptrdiff_t, since the values are typically pointers and this ports
better to (mostly-theoretical) hosts where ptrdiff_t is narrower
than intptr_t. All uses changed.
Paul Eggert [Mon, 3 Aug 2020 22:21:59 +0000 (15:21 -0700)]
Simplify use of __lsan_ignore_object
* configure.ac: Use AC_CHECK_FUNCS_ONCE for __lsan_ignore_object.
* src/buffer.c, src/data.c, src/emacs-module.c, src/regex-emacs.c:
* src/search.c: Use __lsan_ignore_object unconditionally, and don’t
include sanitizer/lsan_interface.h.
* src/lisp.h (__lsan_ignore_object): Provide a dummy in the
typical case where leak sanitization is not available.