Make regexps smaller and faster by removing terms that are superfluous
by virtue of standing next to another term that matches more. See
https://lists.gnu.org/archive/html/emacs-devel/2020-01/msg00949.html
for details.
Kévin Le Gouguec [Thu, 20 Feb 2020 13:30:45 +0000 (14:30 +0100)]
Introduce face for <code> elements in shr
* lisp/net/shr.el (shr-tag-code): Don't use the `default' font,
because it has properties that will override surrounding elements
(like <a...>) (bug#39504).
Paul Eggert [Thu, 20 Feb 2020 01:21:16 +0000 (17:21 -0800)]
Fix bug when visiting euc-jp-encoded directories
Problem reported by Ken Sasaki (Bug#39672).
* src/fileio.c (Ffile_directory_p):
Encode filename before giving it to file_directory_p.
This fixes a typo introduced in
2019-09-18T02:18:14Z!eggert@cs.ucla.edu.
Paul Eggert [Wed, 19 Feb 2020 21:47:57 +0000 (13:47 -0800)]
Fix some file-modes races
* lisp/gnus/gnus-start.el (gnus-save-newsrc-file)
(gnus-slave-save-newsrc):
* lisp/gnus/gnus-uu.el (gnus-uu-initialize):
* lisp/gnus/mm-archive.el (mm-dissect-archive):
* lisp/gnus/mm-decode.el (mm-temp-files-delete)
(mm-display-external):
* lisp/image-dired.el (image-dired-create-thumb-1):
Use with-file-modes rather than setting the file modes later.
This fixes some race conditions where the file temporarily
has the wrong permissions.
* lisp/gnus/mml.el (mml-expand-all-html-into-multipart-related):
New function (bug#39230).
(mml-generate-mime): Use it to expand all HTML parts, no matter
where in the MIME tree.
Alan Third [Fri, 14 Feb 2020 20:08:40 +0000 (20:08 +0000)]
Fix horizontal bit shifting
* src/nsterm.m ([EmacsView copyRect:to:]): Calculate the horizontal
difference instead of just the vertical.
([EmacsView updateLayer]): Fix NSTRACE message.
Juri Linkov [Tue, 18 Feb 2020 23:35:03 +0000 (01:35 +0200)]
Support state changing VC operations in dired-mode on files (bug#34949)
* lisp/vc/vc.el (vc-deduce-fileset): Don't error out when observer is nil.
(vc-dired-deduce-fileset): Add optional args 'state-model-only-files'
and 'observer'. Check that all files are in a consistent state
when state-model-only-files is non-nil. Error out on directories.
* lisp/vc/vc-dispatcher.el (vc-dispatcher-browsing): Check dired-mode
for derived-mode-p.
Make OMake support slightly less expensive (bug#39595)
When run with -p or -P, OMake regurgitates error messages that
prevented further progress, indented by 6 spaces. Use that fact
to ameliorate the modification done to other error message regexps.
* lisp/progmodes/compile.el (compilation-parse-errors):
When 'omake' is enabled, allow error messages to be indented by 0 or 6
spaces instead of any number of spaces, to avoid pathological
behaviour.
(compilation-error-regexp-alist-alist): Anchor the 'omake' pattern to
bol for performance. Repair the 'ruby-Test::Unit' pattern, which
relied on the previously over-generous 'omake' hack.
* etc/compilation.txt (OMake): Add examples.
* test/lisp/progmodes/compile-tests.el (compile-tests--test-regexps-data)
(compile-test-error-regexps): Add test for OMake (indented error).
Speed up 'msft' and 'watcom' compilation error regexps
They have similar structure, and both suffer from being able to
match leading spaces in multiple ways which leads to bad performance
when backtracking (bug#39595).
* lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Improved 'msft' and 'watcom' regexps.
Anchor the regexp at line-start to prevent quadratic behaviour when
it doesn't match (bug#39595). It's unclear whether the type tag, like
[ERROR], is always present; we keep it optional just in case.
* lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Rewrite 'maven' regexp, using rx for clarity.
* etc/compilation.txt (maven): More examples.
* test/lisp/progmodes/compile-tests.el
(compile-tests--test-regexps-data): No leading spaces; they seems to
stem from a misunderstanding in bug#11517.
Paul Eggert [Sun, 16 Feb 2020 19:36:19 +0000 (11:36 -0800)]
Improve C-h C-h bug fix
* src/lread.c (read1): Guard against two 'struct Lisp_Vector *'
pointers differing only in their most significant bit. Problem
reported by Pip Cet (Bug#39529#22).
Alan Mackenzie [Sun, 16 Feb 2020 17:46:02 +0000 (17:46 +0000)]
Amend c-backward-sws better to handle multiline block comments
In particular, multiline comments lacking escaped newlines.
* lisp/progmodes/cc-engine.el (c-backward-sws): Whilst searching backward for
a putative beginning of macro, move back over block comments whose innards
lack escaped newlines.
Glenn Morris [Sun, 16 Feb 2020 15:50:36 +0000 (07:50 -0800)]
Merge from origin/emacs-27
7ceb45f61f (origin/emacs-27) Reformulate c-end-of-macro, handling mul... 888ffd960c Fix unexec failure on macOS 10.15.4 b392c9f365 Fix 'reverse-region' when less than one line is in region 7448834f73 Correct default regexp in 'package-menu-hide-package' faada7ca42 Remove obsolete menu entry "Redisplay buffer" 78d76cd93c Remove redundant 'msft' compilation error rule (bug#39595) 75a9eee8b8 ; * src/editfns.c (Fbuffer_size): Tiny clarification. 4d8d25d641 * doc/lispref/variables.texi (special-variable-p): Clarify... 9f6a4bbcc9 Remove the optional KEEP-ORDER argument to regexp-opt d1e8ce8bb6 Make after-change-functions called from call-process get t...
* lisp/progmodes/cc-engine.el (c-end-of-macro): Handle multiline block
comments lacking escaped newlines using parse-partial-sexp rather than the
former variables removed from cc-langs.el.
Paul Eggert [Sat, 15 Feb 2020 23:12:34 +0000 (15:12 -0800)]
Fix C-h C-h bug due to mutating a hash key
Problem reported by Federico Tedin (Bug#39529).
The problem was that dumping uses a hash table based on 'equal'
when purecopying compiled objects, but then modifies the compiled
objects while they are keys in the table. This no-no was uncovered
by the sxhash fixes in 2020-01-07T19:23:11Z!eggert@cs.ucla.edu.
Eli Zaretski pinpointed the patch that triggered the bug.
* src/lread.c (read1): When reading a compiled object, replace
its docstring with a unique negative integer instead of with 0,
so that purecopy doesn’t unify it with some other compiled object
that happens to have the same Lisp code.
Eli Zaretskii [Sat, 15 Feb 2020 08:47:08 +0000 (10:47 +0200)]
Fix 'reverse-region' when less than one line is in region
* lisp/sort.el (reverse-region): Signal a user-error if the region
includes less than one full line, thus avoiding an inadvertent
deletion of text following the current line. Fix the doc string.
Fix comments to start with a capital letter. (Bug#39376)
* lisp/emacs-lisp/package.el (package-menu-mode-menu): Remove obsolete
menu entry "Redisplay buffer".
(package-menu-mode-menu): Menu entry "Refresh Package List":
make the doc string more accurate.
(Bug#39436)
Eric Abrahamsen [Fri, 14 Feb 2020 19:56:58 +0000 (11:56 -0800)]
When searching a topic in Gnus, search all topic's groups
Bug#39515
* lisp/gnus/nnir.el (gnus-group-make-nnir-group): Bring the code in
line with the documentation, which says that all topic groups will be
searched, even if they're not visible.
Stefan Monnier [Fri, 14 Feb 2020 16:18:00 +0000 (11:18 -0500)]
* src/lread.c: Remove old-style backquotes support
(new_backquote_flag): Delete variable.
(load_error_old_style_backquotes): Delete function.
(force_new_style_backquotes): Delete variable.
(read_internal_start): Don't obey it any more.
Alan Third [Sat, 1 Feb 2020 21:17:29 +0000 (21:17 +0000)]
Use CGImage instead of NSBitmapImageRep (bug#32932)
* src/nsterm.m (ns_update_end):
(ns_clear_frame): Remove forced draws.
(ns_draw_fringe_bitmap):
(ns_dumpglyphs_image): No longer need to invert images as the context
is already flipped.
([EmacsView updateFrameSize:]):
([EmacsView initFrameFromEmacs:]): Use new function.
([EmacsView createDrawingBuffer]): Replaces createDrawingBufferWithRect:.
([EmacsView focusOnDrawingBuffer]): Set CGImage context.
([EmacsView windowDidChangeBackingProperties:]): Use new function.
([EmacsView copyRect:to:]): Copy using CGImages.
([EmacsView wantsUpdateLayer]):
([EmacsView updateLayer]): New Functions.
([EmacsView drawRect:]): We no longer do anything special here for
Cocoa.
([EmacsView windowDidChangeBackingProperties:]): Fix indentation and
add NSTRACE.
Glenn Morris [Thu, 13 Feb 2020 15:50:30 +0000 (07:50 -0800)]
Merge from origin/emacs-27
0304f53076 (origin/emacs-27) doc/misc/org.texi: Fix @dircategory 027da652a4 Fix display of minibuffer prompt in ido.el 5a21aaff46 rx: Use longest match for all-string 'or' forms (bug#37659) 2b12c2b6f2 Make sure not to mark directories ff4ed4a0ff ; Add a TODO 3a5129a1c9 vc-hg-dir-status-files: Fix when DIR is not repository root
Glenn Morris [Thu, 13 Feb 2020 15:50:24 +0000 (07:50 -0800)]
Merge from origin/emacs-27
ad5e350ab7 c-end-of-macro: Handle block coment lines with unescaped N... 06c302d425 Fix set-fontset-font with ADD arg non-nil 530067463b Correct "different than" to "different from" where appropr... 56b8768b32 More accurate documentation of 'package-menu-hide-package'
Eli Zaretskii [Wed, 12 Feb 2020 19:39:44 +0000 (21:39 +0200)]
Fix display of minibuffer prompt in ido.el
* lisp/minibuffer.el (minibuffer--message-overlay-pos): New
function.
(set-minibuffer-message): Use it to determine where to show the
overlay with the temporary message.
* lisp/ido.el (ido-exhibit): Revert "Render Ido suggestions using
an overlay"; this restores the original code which inserted the
match-status information into the minibuffer, instead of
displaying it in an overlay with an after-string. Put the special
'minibuffer-message' text property at the beginning of the
inserted text. (Bug#39379)
* etc/NEWS:
* doc/lispref/display.texi (Displaying Messages):
* doc/lispref/text.texi (Special Properties): Document the
'minibuffer-message' text property and its effect.
Michael Albinus [Wed, 12 Feb 2020 19:26:47 +0000 (20:26 +0100)]
Fix Tramp tests towards *BSD
* test/lisp/net/tramp-tests.el (tramp-get-remote-gid): Declare.
(tramp-test18-file-attributes): Check `file-ownership-preserved-p'
only if possible.
(tramp-test30-make-process): Modify test due to *BSD.
rx: Use longest match for all-string 'or' forms (bug#37659)
Revert to the Emacs 26 semantics that always gave the longest match
for rx 'or' forms with only string arguments. This guarantee was
never well documented, but it is useful and people likely have come to
rely on it. For example, prior to this change,
(rx (or ">" ">="))
matched ">" even if the text contained ">=".
* lisp/emacs-lisp/rx.el (rx--translate-or): Don't tell regexp-opt to
preserve the matching order.
* doc/lispref/searching.texi (Rx Constructs): Document the
longest-match guarantee for all-string 'or' forms.
* test/lisp/emacs-lisp/rx-tests.el (rx-or): Update test.
Dmitry Gutov [Tue, 11 Feb 2020 21:45:52 +0000 (23:45 +0200)]
vc-hg-dir-status-files: Fix when DIR is not repository root
* lisp/vc/vc-hg.el (vc-hg-dir-status-files):
Make sure it works correctly in a subdirectory of the repo root.
Bind default-directory to DIR and add 're: -I .' to the arguments
(bug#39380).
Alan Mackenzie [Mon, 10 Feb 2020 21:20:12 +0000 (21:20 +0000)]
c-end-of-macro: Handle block coment lines with unescaped NLs correctly
* lisp/progmodes/cc-langs.el (c-last-open-c-comment-start-on-line-re): Make
obsolete, and supersede by ...
(c-open-c-comment-on-logical-line-re): New language variable.
* lisp/progmodes/cc-engine.el (c-end-of-macro): Inside macros, handle
multiline block comments whose line ends are not escaped correctly.
Juri Linkov [Mon, 10 Feb 2020 00:49:36 +0000 (02:49 +0200)]
Use quit-restore-window to close tab (bug#39446)
* lisp/tab-bar.el (display-buffer-in-new-tab): New function with code
from display-buffer-in-tab.
(display-buffer-in-tab): Call display-buffer-in-new-tab.
(switch-to-buffer-other-tab): Instead of 'display-buffer-same-window'
use '(reusable-frames . t)'.
* lisp/windmove.el (windmove-display-in-direction): Set arg 'type'
to 'tab' for window--display-buffer when creating a new tab.
* lisp/window.el (quit-restore-window): Call tab-bar-close-tab
when quit-restore type is 'tab'.
(display-buffer-record-window): Set window-parameter 'quit-restore'
to 'tab' for type 'tab'.
(window--display-buffer): Set window-prev-buffers to nil for tab too.
Paul Eggert [Sun, 9 Feb 2020 08:44:11 +0000 (00:44 -0800)]
Update from Gnulib
This incorporates:
2020-02-08 lchmod: ensure declaration on HP-UX
2020-02-08 fchmodat: fix endless recursion on Cygwin
2020-02-08 Fix compilation errors in a testdir
2020-02-07 fchmodat: AT_SYMLINK_NOFOLLOW fix for non-symlinks
2020-02-04 Port _Noreturn to older Clang
2020-02-03 libc-config: port to Apple’s Clang variant
* lib/_Noreturn.h, lib/c++defs.h, lib/libc-config.h, lib/sys_stat.in.h:
* m4/gnulib-common.m4, m4/sys_stat_h.m4: Copy from Gnulib.
* lib/gnulib.mk.in: Regenerate.
Yuan Fu [Sun, 6 Oct 2019 02:42:07 +0000 (22:42 -0400)]
Enhance memory address evaluation in gdb-mi
Before, the memory buffer evaluated the expression as address and used
the fixed result in each stop. This change store the expression
itself and reevaluates it in each stop to yield an address.
We also add a warning (a red bold exclamation mark) on the header line
when the content of the page doesn't represent the memory location
user requested for. That happends when some error occurs in
evaluating the address, and we display the last successfully displayed
memory page.
* lisp/progmodes/gdb-mi.el (gdb-memory-address-expression)
(gdb--memory-display-warning): New variables.
(gdb-memory-address): Change default value to nil; add docstring.
(def-gdb-trigger-and-handler, gdb-invalidate-memory)
(gdb-memory-set-address): Replace 'gdb-memory-address' with
'gdb-memory-address-expression'.
(gdb-memory-header): Add code to display
'gdb-memory-address-expression' on header line. Move the mouse event
from address to expression. Add code to display the warning.
(gdb-memory-header): Fix the error from
'propertize' when 'gdb-memory-address-expression' or
'gdb-memory-address' is nil.
(gdb-read-memory-custom): Change 'error' to 'user-error'. Add code to
display the warning. (Bug#39180)
Eli Zaretskii [Sat, 8 Feb 2020 09:38:52 +0000 (11:38 +0200)]
More accurate documentation of 'package-menu-hide-package'
* doc/emacs/package.texi (Package Menu): Improve the description
of the 'H' command.
* lisp/emacs-lisp/package.el (package-menu-mode-menu): More
accurate wording of the help-echo string.
(package-menu-hide-package): Make the doc string more accurate.
(Bug#39436)
Eli Zaretskii [Fri, 7 Feb 2020 10:10:43 +0000 (12:10 +0200)]
Minor fixes of the last commit
* src/xdisp.c (get_window_cursor_type): Fix indentation and
line-filling.
* doc/lispref/frames.texi (Cursor Parameters):
* doc/emacs/display.texi (Cursor Display):
* etc/NEWS: Fix wording and capitalization of the last change.
Zajcev Evgeny [Mon, 27 Jan 2020 12:49:46 +0000 (15:49 +0300)]
Support for (box . SIZE) 'cursor-type'
This allows control of the minimum size of a masked image under
which the box cursor becomes hollow.
* buffer.c (cursor-type): Add commentary about (box . SIZE)
'cursor-type'.
* xdisp.c (get_specified_cursor_type): Check for 'cursor-type'
of the form (box . SIZE).
(get_window_cursor_type): Check masked image size for
(box . SIZE) 'cursor-type'.
Glenn Morris [Thu, 6 Feb 2020 15:50:29 +0000 (07:50 -0800)]
Merge from origin/emacs-27
09eed01afb Wrap some set-auto-mode calls with delay-mode-hooks (bug#3... 4a0a114505 Support ido-vertical-mode better ef5fba9f40 Fix faces tab-bar and tab-line. 831508422e Cater for 3-argument version of pthread_setname_np f27187f963 Clarify lexvar restrictions for add-to-ordered-list, add-t... 32763dac46 Replace add-to-list to lexical variable with push (bug#39373) d07f177382 Clarify add-to-list documentation (bug#39373) d3d2ea927c MH-E: alter content in mh-display-msg, not mh-show-mode db7fa2546f Update documentation for mh-show-mode-hook d10be6bf28 Example goto-addr hook: MH-E already uses goto-address
Zajcev Evgeny [Thu, 6 Feb 2020 07:35:12 +0000 (10:35 +0300)]
Make 'M-x battery RET' work out-of-box for UPower users.
* battery.el (battery-upower-prop): Removed in favor for
'battery-upower-device-property'.
(battery-upower-device): Can be nil, meaning autodetect the battery
device.
(battery-upower-line-power-device): New. line-power device. Can be
nil, meaning autodetect line-power device.
(battery-status-function): Check UPower service is available to use
'battery-upower' as status function.
(battery-upower): Speedup. Request D-Bus only once, fetching all
the properties at once. Provide string for "%b" format spec.
(battery-upower-device-list, battery-upower-device-all-properties,
battery-upower-device-property): New functions to work with UPower
devices.
(battery-upower-dbus-service, battery-upower-dbus-interface,
battery-upower-dbus-path, battery-upower-dbus-device-interface,
battery-upower-dbus-device-path): New constants describing UPower
D-Bus service.
Stefan Kangas [Thu, 6 Feb 2020 12:30:33 +0000 (13:30 +0100)]
Revert "Signal user-error on duplicate package refresh"
That commit caused errors when the connection was dropped in the
middle of a package refresh. To avoid any further issues this close
to the pretest, we simply remove this feature. (Bug#39187)
Don't merge to master, where we will instead try to fix the bug.
Juri Linkov [Wed, 5 Feb 2020 22:38:53 +0000 (00:38 +0200)]
Wrap some set-auto-mode calls with delay-mode-hooks (bug#39190)
* lisp/gnus/mm-view.el (mm-display-inline-fontify):
* lisp/vc/diff-mode.el (diff-syntax-fontify-props):
* lisp/vc/vc.el (vc-find-revision-no-save):
Add delay-mode-hooks around set-auto-mode calls
to not run hooks that might assume buffer-file-name
really associates buffer with a file.
Stefan Kangas [Wed, 5 Feb 2020 12:22:56 +0000 (13:22 +0100)]
Don't use obsolete function in package-tests.el
* test/lisp/emacs-lisp/package-tests.el
(package-test-update-archives, package-test-signed): Use
'revert-buffer' instead of obsolete 'package-menu-refresh'.
Stefan Kangas [Wed, 5 Feb 2020 12:12:01 +0000 (13:12 +0100)]
Add new filter commands to Package Menu (Bug#38424)
* lisp/emacs-lisp/package.el (package-menu-filter-by-version)
(package-menu-filter-by-status, package-menu-filter-by-archive):
New filter commands.
(package-menu--filter-by): New helper function.
(package-menu-filter-by-keyword, package-menu-filter-by-name): Use
the above helper function.
(package-menu-mode-menu):
(package-menu-mode-map): Update menu to include new filter commands.
* doc/emacs/package.texi (Package Menu): Document the new commands and
re-arrange the sort order of commands to be closer to the one in
describe-major-mode.
* etc/NEWS: Announce the new commands.
* lisp/emacs-lisp/package.el (package-menu--display): New function
extracted from....
(package-menu--generate): ...here.
* test/lisp/emacs-lisp/package-tests.el (with-package-menu-test):
New macro.
(package-test-update-listing, package-test-list-filter-by-name)
(package-test-list-filter-clear): Use above macro.
(package-test-list-filter-by-archive)
(package-test-list-filter-by-keyword)
(package-test-list-filter-by-status)
(package-test-list-filter-by-version-=)
(package-test-list-filter-by-version-<)
(package-test-list-filter-by-version->): New tests.
(package-test-filter-by-version): New helper function.