Commit Graph

181884 Commits

Author SHA1 Message Date
Juri Linkov
d88e73d047 Update 'crm-complete-and-exit' from 'minibuffer-complete-and-exit'
* lisp/emacs-lisp/crm.el (crm-complete-and-exit):
Add new arg 'no-exit'.  Call 'minibuffer-choose-completion'
when 'completion--selected-candidate' returns non-nil (bug#80821).
2026-04-16 20:12:03 +03:00
Stefan Monnier
126eab79b0 src/syntax.c (update_syntax_table): Remove redundant assignment 2026-04-16 11:39:26 -04:00
Michael Albinus
1811ce52c2 ; * etc/NEWS: Presentational fixes and improvements. 2026-04-16 17:31:07 +02:00
Vincent Belaïche
3d822669ee Announce ert-play-keys in etc/NEWS. 2026-04-16 17:09:04 +02:00
Sean Whitton
ae822de38d ; newcomers-presets: FIXME. 2026-04-16 09:22:06 -04:00
Michael Albinus
ed98d9f81f ; * doc/misc/ert.texi: Fix typos. 2026-04-16 14:50:28 +02:00
Vincent Belaïche
5b6fc8ebfc ert-play-keys function
* lisp/emacs-lisp/ert-x.el (ert-play-keys): new defun.

* test/lisp/simple-tests.el (undo-test-kill-c-a-then-undo)
(undo-test-point-after-forward-kill): Use new function
`ert-play-keys' and `(ert-with-test-buffer (:selected t) ...)'
rather (with-temp-buffer (switch-to-buffer (current-buffer) ...)'.

* test/lisp/erc/erc-scenarios-spelling.el
(erc-scenarios-spelling--auto-correct): Use new function
`ert-play-keys' and `(ert-with-buffer-selected ...)' rather than
`execute-kbd-macro' and `(with-current-buffer
... (set-window-buffer nil (current-buffer) ...)'.

* doc/misc/ert.texi (Helper Functions): Document ert-play-keys,
and differences between ert-simulate-command, ert-simulate-keys
& ert-play-keys.

* test/lisp/emacs-lisp/ert-x-tests.el
(ert-x-tests-play-keys)
(ert-x-tests-simulate-command, ert-x-tests-simulate-keys): New
tests.
2026-04-16 13:30:42 +02:00
João Távora
1c4c9d759a Eglot: add shutdown/reconnect bindings to eglot-list-connections buffer
* lisp/progmodes/eglot.el (eglot-list-connections-mode-map): New
defvar.

* lisp/progmodes/eglot.el (eglot--list-connections-entries): New
function, extracted from eglot-list-connections.

* lisp/progmodes/eglot.el (eglot--list-connections-cmd): New macro.

* lisp/progmodes/eglot.el (eglot-shutdown-listed-connection)
(eglot-reconnect-listed-connection): New commands.

* lisp/progmodes/eglot.el (eglot-list-connections): Use
eglot--list-connections-entries.

* doc/misc/eglot.texi: Document eglot-list-connections and new keys.

* etc/EGLOT-NEWS: Announce.
2026-04-16 09:28:21 +01:00
João Távora
d7c9676ec8 Jsonrpc: don't suddenly jump point in events buffer
* lisp/jsonrpc.el (jsonrpc--save-excursion-maybe): New macro.

* lisp/jsonrpc.el (jsonrpc--log-event, jsonrpc--forwarding-buffer):
Use it.
2026-04-16 08:41:38 +01:00
João Távora
213b8e0b97 Eglot: un-canonicalize server URIs to project's root
Some LSP servers prefer to canonicalize all document URIs to
their "true name", chasing all fs symbolic links.  If the user
is visiting a project under a symlink, say ~/myprojects/foo
which points to /data/true/projects/foo.  When visiting a
~/myprojects/foo/f.c and trying to jump to a nearby file f.h via
LSP 'xref-find-definitions', the path should probably be
~/myproject/foo/f.h, not /data/true/projects/foo/f.h.

Even though Emacs can recognize that the two files are the same,
'buffer-file-name' is not.  This confuses tools like C-x C-f,
ibuffer, and ultimately the users themselves who probably
oblivious to the true place of the project.  After all they
started Eglot under a syminked file.

* lisp/progmodes/eglot.el (eglot-lsp-server): Add trueroot slot.
(eglot-uri-to-path): Rework to consider trueroot and project root.
2026-04-16 08:05:13 +01:00
Eli Zaretskii
abcd0d3c8d ; * lisp/isearch.el (isearch-occur): Doc fix. (Bug#80785) 2026-04-16 08:26:33 +03:00
Toby Dylan Hocking
eb4835e521 Make | optional for 'gnu' regexp in compilation-mode (bug#80681)
* lisp/progmodes/compile.el
(compilation-error-regexp-alist-alist): Make leading '|'
optional when there are leading spaces (bug#80681).
* etc/compilation.txt (GNU style): New error with two leading
spaces.
* test/lisp/progmodes/compile-tests.el
(compile-test-error-regexps): Increment expected
compilation-num-errors-found.
(compile-tests--test-regexps-data): New error test case for
'gnu' with two leading spaces.  Change expected match for
'cucumber' to match again 'gnu'.

Copyright-paperwork-exempt: yes
2026-04-15 18:11:00 -04:00
Sean Whitton
5045394694 vc-rename-file: Fix case of directory with only untracked files
* lisp/vc/vc.el (vc-rename-file): Don't call into the backend if
moving a directory containing only untracked files.
* test/lisp/vc/vc-tests/vc-tests.el (vc-test--rename-directory):
New test for this case.
2026-04-15 17:59:10 -04:00
Sean Whitton
324e5b4177 ; * test/lisp/vc/vc-tests/vc-tests.el: Disable new tests on RCS. 2026-04-15 13:53:58 -04:00
Juri Linkov
4ad8bd9b48 Handle the symbol property 'isearch-exit' in 'isearch-occur' (bug#80785)
* lisp/isearch.el (isearch-occur): When the command has
a non-nil symbol property 'isearch-exit', exit the search
before running the command.
2026-04-15 20:40:23 +03:00
Sean Whitton
43f0da207e Fix renaming whole directories with Mercurial
* lisp/vc/vc-hg.el (vc-hg-rename-file): Use 'hg mv --after'.
* test/lisp/vc/vc-tests/vc-tests.el (vc-test--rename-directory):
New test.
2026-04-15 10:06:48 -04:00
Sean Whitton
0ea1c0d831 ; * lisp/vc/vc.el (vc-rename-file): Delete old FIXME. 2026-04-15 10:06:20 -04:00
Sean Whitton
5347b221da vc-rename-file: New OK-IF-ALREADY-EXISTS parameter
* lisp/vc/vc.el (vc-delete-file): New NOCONFIRM parameter.
(vc-rename-file): New OK-IF-ALREADY-EXISTS parameter.
* lisp/dired-aux.el (dired-rename-file): Pass it.
* test/lisp/vc/vc-tests/vc-tests.el (vc-test--rename-file): Test
it.  Also test moving files into an existing directory.
2026-04-15 10:06:20 -04:00
Sean Whitton
8b823737ff ; vc-test--working-revision: Update for vc-hg change
* test/lisp/vc/vc-tests/vc-tests.el (vc-test--working-revision):
Recognize '0000000000000000000000000000000000000000' now that
vc-hg-working-revision returns changeset hashes.
2026-04-15 10:02:16 -04:00
Juri Linkov
0384600a21 New faces 'tab-line-active' and 'tab-line-inactive' (bug#80742)
This is intended to parallel the 'mode-line-active/inactive'
and 'header-line-active/inactive' distinction.

* doc/emacs/display.texi (Standard Faces): Document the new faces.

* lisp/faces.el (tab-line-active, tab-line-inactive): Add new faces.

* lisp/tab-line.el (tab-line-faces): Add new faces
to MEMBERS arg of 'defgroup'.
(tab-line-auto-hscroll): Use one of the faces
depending on 'mode-line-window-selected-p'.

* src/dispextern.h (CURRENT_TAB_LINE_ACTIVE_FACE_ID_3)
(CURRENT_TAB_LINE_ACTIVE_FACE_ID): New macros
based on header-line equivalents.
(CURRENT_TAB_LINE_HEIGHT): Use CURRENT_TAB_LINE_ACTIVE_FACE_ID.
(face_id): Use TAB_LINE_ACTIVE_FACE_ID and
TAB_LINE_INACTIVE_FACE_ID instead of TAB_LINE_FACE_ID.

* src/xdisp.c (window_box_height, pos_visible_p, init_iterator)
(window_text_pixel_size, display_mode_lines, display_mode_line)
(format-mode-line): Replace all uses of TAB_LINE_FACE_ID with
either a new macro or the new face IDs.

* src/xfaces.c (lookup_basic_face, realize_basic_faces):
Map new face IDs to their lisp symbols.
(syms_of_xfaces): New lisp symbols.
2026-04-14 20:14:15 +03:00
Eli Zaretskii
a1899d8cb1 ; Improve documentation of map.el methods
* lisp/emacs-lisp/map.el (map-elt, map-delete, map-values)
(map-length, map-copy, map-do, map-values-apply, map-empty-p)
(map-contains-key, map-into, map-insert, map-apply): Doc fixes.
(Bug#80804)
2026-04-14 19:41:23 +03:00
Eli Zaretskii
dcbfa53e4b ; * src/conf_post.h: Another tweak of conditionals for MinGW64. 2026-04-14 17:48:59 +03:00
Eli Zaretskii
be18635ef0 ; * doc/emacs/fixit.texi (Transpose): Improve text and indexing. 2026-04-14 17:34:24 +03:00
Eli Zaretskii
5e34dba5b8 ; And one more attempt to fix MinGW64 build
* src/conf_post.h [WINDOWSNT]: Use "#if !FOO" because HAVE_DECL_*
are defined to zero.
2026-04-14 16:02:42 +03:00
Eli Zaretskii
6bda6e2123 ; Another attempt to fix the MinGW64 build
* src/conf_post.h [WINDOWSNT]: Add prototype for 'getline'.
2026-04-14 15:32:11 +03:00
Eli Zaretskii
601c099d1d ; Fix MinGW64 build due to missing 'getdelim' prototype
* src/conf_post.h [WINDOWSNT]: Add prototype for 'getdelim'.
Reported by Angelo Graziosi <angelo.g0@libero.it>.
2026-04-14 14:18:49 +03:00
Stefan Monnier
a2b78854b0 (loaddefs-generate--make-autoload): Avoid %s on compound values
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--make-autoload):
Avoid `%s` on compound values.
2026-04-13 17:02:27 -04:00
Stefan Monnier
6942d508f0 SETUP_SYNTAX_TABLE: syntax-propertize more lazily (bug#80600)
Many regexps do not pay attention to syntax tables at all
because they don't use things like \s, \b, \<, or \_<.
So delay the actual initialization of the machinery for
`syntax-table` properties (especially the call to `syntax-propertize`)
until the first time we actually need to consult the syntax of
a character.

* src/syntax.c (uninitialized_interval): New constant.
(RE_SETUP_SYNTAX_TABLE_FOR_OBJECT, SETUP_SYNTAX_TABLE):
Set `forw/backward_i` to that new constant to indicate they haven't
actually be initialized yet.
Set `start` and `stop` fields right away, instead of delegating it to
`update_syntax_table`, so that `e_property` and `b_property`
can be set independently.
(update_syntax_table): Remove the `init` argument.  Instead, discover
the need for initialization based on the fact that `forw/backward_i`
are uninitialized.  Presume `start` and `stop` fields have been
set already.
(parse_sexp_propertize): Update call accordingly.
(update_syntax_table_forward): Remove the `init` argument.

* src/syntax.h (update_syntax_table, update_syntax_table_forward):
Remove the `init` argument.
(UPDATE_SYNTAX_TABLE_FORWARD, UPDATE_SYNTAX_TABLE_BACKWARD):
Update calls accordingly.
2026-04-13 16:45:27 -04:00
Stephen Berman
6b479f201c ; Another fix for recent 'dired-readin-insert' change
* lisp/dired.el (dired-readin-insert): Restore point after
searching for Dired buffer entry of 'ls' error file (bug#80499).
2026-04-13 20:21:13 +02:00
Stefan Monnier
5caab891b4 lisp/international/mule.el (auto-coding-alist): Fix name (bug#80818) 2026-04-13 10:40:11 -04:00
Eli Zaretskii
5d0efe0a5a Fix hangs on MS-Windows when deleting a pipe process
* src/w32.c (sys_close): Don't close a descriptor from which the
reader thread is reading, to avoid hanging Emacs.  (Bug#80770)
2026-04-13 17:06:46 +03:00
Eli Zaretskii
cde6878f9d Fix MinGW64 build broken by changes in emacsclient.c
* nt/gnulib-cfg.mk (getdelim, getline): Do not omit.  It is now
needed for 'emacsclient', but MinGW64 doesn't have it in its runtime
libraries (mingw.org's MinGW does have it).  (Bug#80770)
2026-04-13 16:31:16 +03:00
Sean Whitton
5a5801fc24 ; * lisp/vc/vc.el: Note about different file name kinds (bug#80722). 2026-04-13 09:24:44 -04:00
Eli Zaretskii
71fce9fe2b Revert "; Fix node names in modus-themes.org"
This reverts commit d4002877d3.
It is no longer needed with the latest Org v9.8.2.
2026-04-13 13:48:22 +03:00
Eli Zaretskii
873da49988 Revert "; Fix last change."
This reverts commit 670bb34d91.
It is no longer needed with the latest Org 9.8.2.
2026-04-13 13:47:24 +03:00
Paul Eggert
7d07690e5d emacsclient receiving long-line fixes
Do not mishandle long lines, or lines containing NUL,
when receiving data.
* lib-src/emacsclient.c (check_socket_timeout, main):
Use ssize_t for return values from recv,
since in theory the value could exceed INT_MAX now.
(main): Do not use a fixed-size buffer for receiving data;
instead, grow the buffer as needed (admittedly unlikely).
When a partial line is received via recv, do not discard its data;
instead, keep reading, possibly with a grown buffer.
Do not ignore received data after a null byte is received.
Add a comment about when received data is ignored due to a goto.
2026-04-12 23:21:02 -07:00
Paul Eggert
46c08d8574 emacsclient send_buffer size--
* lib-src/emacsclient.c (send_to_emacs_len):
No need to add 1 to SEND_BUFFER_SIZE.
2026-04-12 23:21:02 -07:00
Paul Eggert
180953c8f6 emacsclient config+sending long-line fixes
Do not mishandle long lines, or lines containing NUL,
when getting configuration or sending data.
* lib-src/emacsclient.c (send_to_emacs_len, quote_argument_len):
New functions, generalizing the old send_to_emacs and quote_argument.
Rewrite the old functions to use the new ones.
(get_server_config): Do not mishandle long lines in the config file.
(set_tcp_socket): No longer a need to null-terminate auth string.
(main): Do not mishandle long lines from stdin, or lines with NUL.
2026-04-12 23:21:02 -07:00
Kyle Meyer
ca33663e50 Update to Org 9.8.2 2026-04-12 16:44:03 -04:00
Elias Gabriel Perez
d835775d9b hideshow: New function 'hs-add-cycle-binding' (Bug#80657)
https://lists.gnu.org/archive/html/emacs-devel/2026-02/msg00153.html

* lisp/progmodes/hideshow.el (hs-cycle-filter)
(hs-minor-mode-map): Update.
(hs--filter-function, hs-add-cycle-binding): New functions.
(hs-cycle): Minor rework.
2026-04-12 20:45:34 +03:00
Juri Linkov
032d4e97e6 * lisp/tab-bar.el (tab-bar-show): Support the 0 value (bug#80713).
Add explicit choice for the 0 value to always show the tab bar.
Also add a choice for other non-negative numbers.
In the setter enable 'tab-bar-mode' only for numbers,
but not for the t value that should not enable the tab bar
after customization, only after creating a new tab.
2026-04-12 20:32:05 +03:00
Eli Zaretskii
1f946a4497 ; * src/xwidget.c (Fmake_xwidget): Fix commentary. 2026-04-12 14:24:51 +03:00
Dirk-Jan C. Binnema
4e855f90d1 xwidgets: re-enable with newer webkit2gtk
By disabling hw-acceleration we can re-enable xwidgets with newer
webkit2gtk versions (Bug#80728).
Newer versions were disallowed (Bug#66068) since they abort when a
webkit view is created; however, they work fine as long as we disable
hw-acceleration, since the off-screen windows that xwidgets uses do not
support that.
* configure.ac: Remove upper-bound for webkit2gtk version check.
* src/xwidget.c (Fmake_xwidget): Turn off hardware-acceleration.

Copyright-paperwork-exempt: yes
2026-04-12 14:22:26 +03:00
Philip Kaludercic
be2b4a9831 Clean up 'Info-directory-list' after deleting package
* lisp/emacs-lisp/package.el (package--delete-directory): Remove
manual before physically deleting the package.  (Bug#80776)
2026-04-12 13:10:57 +02:00
Philip Kaludercic
dedd652fc5 Fix computation of package description file
* lisp/subr.el (package--description-file): Do not expect
non-numeric version components to be followed directly by a
number.  (Bug#80744)
2026-04-12 12:37:58 +02:00
Philip Kaludercic
b6e7c7d43b Add face for obsolete packages in package menu
* lisp/emacs-lisp/package.el (package-status-obsolete): New face.
(package-menu-status-faces): Use new face instead of hard-coding
a font-lock face.
2026-04-12 12:37:17 +02:00
Richard Lawrence
0326130e1b Add short documentation group for iCalendar lib
Define a short documentation group and document the major functions:

* lisp/calendar/icalendar-shortdoc.el: New file.
* lisp/calendar/diary-icalendar.el:
* lisp/calendar/icalendar-ast.el:
* lisp/calendar/icalendar-parser.el:
* lisp/calendar/icalendar-recur.el:
* lisp/calendar/icalendar-utils.el: Refer to icalendar-shortdoc.el in
file commentary.
* lisp/calendar/icalendar-macs.el: Ditto, and also mention the macros
for binding values.
* lisp/calendar/icalendar.el: Ditto, and also remove some obsolete
commentary.

Also make some improvements to documentation strings that the above
changes revealed would be helpful:

* lisp/calendar/icalendar-recur.el
(icalendar-recur-recurrences-in-window-w/end-times): Fix broken ref.
(icalendar-recur-current-tz-to-vtimezone): Clarify docstring.
* lisp/calendar/icalendar-parser.el (icalendar-parse): Clarify
docstring.

(Bug#80727)
2026-04-12 12:17:33 +03:00
Richard Lawrence
6eea015337 Improve performance of icalendar-recur.el and its tests
As discussed in Bug#80520.

* test/lisp/calendar/icalendar-recur-tests.el
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/3)
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/29)
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/30)
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/31)
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/33)
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/34)
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/38): Mark tests expensive.

Abstract the implementation of intervals in icalendar-recur.el.  Don't
store interval NEXT-LOW when it's the same as HIGH.  This reduces
allocations, and shaves about ~20% off the full test suite.

* lisp/calendar/icalendar-recur.el
(icalendar-recur-make-interval)
(icalendar-recur-interval-low)
(icalendar-recur-interval-high)
(icalendar-recur-interval-next): Implement intervals and subintervals as
vectors.  Only store NEXT-LOW when it's non-nil.
(icalendar-recur-find-absolute-interval)
(icalendar-recur-find-daily-interval)
(icalendar-recur-find-weekly-interval)
(icalendar-recur-find-monthly-interval)
(icalendar-recur-find-yearly-interval)
(icalendar-recur-next-interval)
(icalendar-recur-previous-interval)
(icalendar-recur-refine-byyearday)
(icalendar-recur-refine-byweekno)
(icalendar-recur-refine-bymonth)
(icalendar-recur-refine-bymonthday)
(icalendar-recur-refine-byday)
(icalendar-recur-refine-byhour)
(icalendar-recur-refine-byminute)
(icalendar-recur-refine-bysecond)
(icalendar-recur-subintervals-to-date-times)
(icalendar-recur-subintervals-to-dates)
(icalendar-recur-recurrences-in-interval)
(icalendar-recur-recurrences-in-window)
(icalendar-recur--key-from-interval): Use new interval constructor and
accessors.  Don't generate NEXT-LOW when it's the same as HIGH.
* lisp/calendar/icalendar-utils.el (icalendar-dates-until): Use new
interval constructor and accessors.
* test/lisp/calendar/icalendar-recur-tests.el
(icalendar-test-recur-find-secondly-interval)
(icalendar-test-recur-find-minutely-interval)
(icalendar-test-recur-find-hourly-interval)
(icalendar-test-recur-find-daily-interval-w/date)
(icalendar-test-recur-find-daily-interval-w/date-time)
(icalendar-test-recur-find-weekly-interval-w/date)
(icalendar-test-recur-find-weekly-interval-w/date-time)
(icalendar-test-recur-find-monthly-interval)
(icalendar-test-recur-find-yearly-interval)
(icalendar-test-recur-refine-byyearday)
(icalendar-test-recur-refine-bymonth)
(icalendar-test-recur-refine-bymonthday)
(icalendar-test-recur-refine-byday)
(icalendar-test-recur-refine-byhour)
(icalendar-test-recur-refine-byminute)
(icalendar-test-recur-refine-bysecond)
(icalendar-test-recur-subintervals-to-dates)
(icalendar-test-recur-subintervals-to-date-times)
(icalendar-test-rrule-test): Use new interval constructor and accessors.

Rearrange loops when refining subintervals, so that the loop always runs
once but doesn't run a second no-op iteration.  Astonishingly this cuts
the running time of the full test suite by almost 50%.

* lisp/calendar/icalendar-recur.el (icalendar-recur-refine-byyearday)
(icalendar-recur-refine-byweekno)
(icalendar-recur-refine-bymonth)
(icalendar-recur-refine-bymonthday)
(icalendar-recur-refine-byday)
(icalendar-recur-refine-byhour)
(icalendar-recur-refine-byminute)
(icalendar-recur-refine-bysecond): Tighten up loop bounds when refining
subintervals.

Improve performance of `icalendar-recur-tz-observance-on'.  This also
brings about a ~20% performance gain.

* lisp/calendar/icalendar-recur.el
(icalendar-recur-tz-observance-on): Eliminate calculation of previous
interval recurrences when it's unnecessary.  Add a cheap upper bound check to
prevent fully computing recurrences for irrelevant observances.
(icalendar-recur--w/in-locally-p):
(icalendar-recur--w/in-abs-p): New helper functions for the upper bound check.

Other more minor changes:

Improve performance in `icalendar-recur-refine-byday'

* lisp/calendar/icalendar-recur.el (icalendar-recur-refine-byday): Avoid
calculating Gregorian from absolute date unless it's necessary.

Improve performance of BYSETPOS filtering in icalendar-recur.el:
η-reduce `icalendar-recur-make-bysetpos-filter'.
Thanks to Mattias Engdegård for the suggestion and implementation.

* lisp/calendar/icalendar-recur.el
(icalendar-recur-make-bysetpos-filter): Rename to
`icalendar-recur-bysetpos-filter' and avoid `seq-map-indexed'.
(icalendar-recur-recurrences-in-interval): Use new function.
* test/lisp/calendar/icalendar-recur-tests.el
(icalendar-test-recur-bysetpos-filter): Use new function.

Improve sorting performance:
Thanks to Mattias Engdegård for the suggestion and implementation.

* lisp/calendar/icalendar-recur.el (icalendar-recur-refine-byyearday):
(icalendar-recur-refine-byweekno):
(icalendar-recur-refine-bymonthday):
(icalendar-recur-refine-byday): Use :key instead of :lessp in `sort'
calls.

Eliminate `apply-partially' and `seq-take':
Thanks to Mattias Engdegård for the suggestion and implementation.

* lisp/calendar/icalendar-recur.el
(icalendar-recur-recurrences-in-window): Eliminate `apply-partially'.
(icalendar-recur-recurrences-in-interval): Eliminate
`apply-partially' and replace `seq-take' with `take'.

Reduce consing:

* lisp/calendar/icalendar-recur.el
(icalendar-recur-subintervals-to-dates):
(icalendar-recur-recurrences-in-window):
(icalendar-recur-recurrences-in-window-w/end-times):
(icalendar-recur-recurrences-to-count): Replace `append' with `nconc'.

Avoid a few uses of `seq-filter' in common functions in icalendar-ast.el:

* lisp/calendar/icalendar-ast.el (icalendar-ast-node-children-of):
Reimplement filter imperatively.
2026-04-12 12:05:44 +03:00
Eli Zaretskii
386e9598b6 ; * doc/lispintro/emacs-lisp-intro.texi (Files List): Fix typo (bug#80694). 2026-04-12 11:54:08 +03:00
Stephen Berman
ee9b2db1cf ; Fix last change to 'ls' error message tests
* test/lisp/dired-tests.el (dired-test-ls-error-message):
* test/lisp/files-tests.el
(files-tests-file-name-non-special-insert-directory): Use
`string-match-p' instead of `equal' because the error message may
report e.g. "/bin/ls" even though the value of
`insert-directory-program' is "ls".
2026-04-11 15:40:40 +02:00