2026-06-04 Stefan Monnier message.el: Fix part of bug#81035 * lisp/gnus/message.el (message-narrow-to-field) (message-hide-headers): Syntax-propertize before narrowing. 2026-06-04 Michael Albinus Fix prompt in remote shell * lisp/net/tramp-sh.el (tramp-sh-handle-make-process): Do not use a hard-coded directory in PS1. (Bug#81177) 2026-06-04 Dirk-Jan C. Binnema Fmake_xwidget: Use about:blank workaround only when needed * src/process.c (glib_installs_sigchld_handler): New variable. (init_process_emacs): Set it when GLib overrides Emacs's SIGCHLD handler. * src/process.h (glib_installs_sigchld_handler): Declare. * src/xwidget.c (Fmake_xwidget): Skip the "about:blank" workaround when glib_installs_sigchld_handler is false. 2026-06-04 JD Smith Allow brew/macports libgccjit for default native compilation * configure.ac: Move flag setup for libgccjit installed by Homebrew or macports earlier, so default native compilation can proceed (bug#81171). 2026-06-04 Sean Whitton vc-dir-refresh: Respect non-essential wrt saving buffers * lisp/vc/vc-dir.el (vc-dir-refresh): If non-essential is non-nil, don't call vc-buffer-sync-fileset. 2026-06-04 Alan Mackenzie CC Mode: Fontify a cast type preceding a brace initialization This fixes bug#81084. * lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): In the test for a cast near the end of the function, add a test for a {...} block which isn't a statement block, allowing such blocks to be recognized as operands of casts. 2026-06-04 Michael Albinus Fix Tramp distrobox integration * lisp/net/tramp.el (tramp-yesno-prompt-regexp): Fix docstring. (tramp-yn-prompt-regexp): Fix docstring. Extend. Add :version. * test/lisp/net/tramp-tests.el (tramp-test03-file-error): Adapt test. 2026-06-04 Rahul Martim Juliato markdown-ts-mode: fix first-item indent (bug#81118) * lisp/textmodes/markdown-ts-mode.el (markdown-ts--fontify-unordered-list-marker): Skip leading whitespace in the node range before applying the display bullet, since the tree-sitter grammar bundles indent into the first list_marker_* node. 2026-06-03 Dmitry Gutov [GTK3] Re-fix the stored values for width and height * src/gtkutil.c (xg_frame_set_char_size) (xg_frame_set_size_and_position): Round WIDTH and HEIGHT to multiples of SCALE without adding toolbar/menubar (bug#80662). 2026-06-02 João Távora Eglot: mentions markdown-ts-view-mode less (bug#81150) * doc/misc/eglot.texi (Customization Variables): Don't mention markdown-ts-view-mode. * etc/EGLOT-NEWS: Don't mention markdown-ts-view-mode. 2026-06-02 Alexander Adolf vc--subject-to-file-name: Fix over-greedy regex (bug#81017) * lisp/vc/vc.el (vc--subject-to-file-name): Make the prefix regex less greedy, ensure the result has no text properties, improve the docstring (bug#81017). 2026-06-02 F. Jason Park Fix more missing faces on ERC margin strings * lisp/erc/erc-goodies.el (keep-place-indicator): Add `erc-keep-place-indicator-arrow' face to overlay arrow. * lisp/erc/erc-stamp.el (erc-stamp--display-prompt-in-left-margin) (erc--conceal-prompt): Add `erc-prompt-face' to entire `left-margin' string. See also 9ba65aa9 "Fix missing margin face on display prop in erc-stamp". * test/lisp/erc/erc-fill-tests.el (erc-fill--left-hand-stamps): Update expected text properties on prompt. (Bug#80693) 2026-06-01 João Távora Eglot: Simplify markdown rendering support (bug#81150) Now that markdown-ts-view-mode is demoted to "experimental" in emacs-31, simplify bits of eglot.el and rewrite docs to be more neutral. In practice 'gfm-view-mode' is still used if found, just like before, but intrepid users can still try the "experimental" modes. * lisp/progmodes/eglot.el (eglot-documentation-renderer): Rewrite doc string. (eglot--accepted-formats): Rewrite. (eglot--builtin-mdown-p): Remove. * doc/misc/eglot.texi (Customization Variables): Rewrite entry. * etc/EGLOT-NEWS: Tweak. 2026-06-01 Eli Zaretskii Prevent segfaults due to frame resizing at the wrong time * src/dispextern.h: * src/xdisp.c (dont_resize_frames): New variable. (unwind_format_mode_line): Decrement 'dont_resize_frames'. (gui_consider_frame_title, display_mode_line, Fformat_mode_line): Increment 'dont_resize_frames'. * src/dispnew.c (do_pending_window_change): Don't resize frames if 'dont_resize_frames' is non-zero. (Bug#81121) (cherry picked from commit 94eb6389d403eb1b71a81ecdc3b8416cf5f850d6) 2026-06-01 Sean Whitton Disable markdown-ts-mode & markdown-ts-view-mode for Emacs 31 Do not merge to master. * lisp/progmodes/eglot.el (eglot-documentation-renderer) (eglot--format-markup): Don't call eglot--builtin-mdown-p. * lisp/textmodes/markdown-ts-mode.el (markdown-ts-mode) (markdown-ts-view-mode): Mark as experimental. (auto-mode-alist, treesit-major-mode-remap-alist): Don't add anything. * doc/misc/eglot.texi (Customization Variables): * etc/EGLOT-NEWS: * etc/NEWS: Don't mention markdown-ts-mode or markdown-ts-view-mode. 2026-05-31 Juri Linkov More tests for fill-paragraph-handle-comment.erts * test/lisp/textmodes/fill-resources/fill-paragraph-handle-comment.erts: Add more tests for current comment lines (bug#80449). 2026-05-31 Kyle Meyer Update to Org 9.8.5 2026-05-30 João Távora Eglot: replace eglot-prefer-plaintext with eglot-documentation-renderer The old boolean 'eglot-prefer-plaintext' is replaced by the more expressive 'eglot-documentation-renderer', which can hold a major-mode symbol, t (plain text), or nil (auto-detect each time). By selecting a renderer once at startup the repeated per-request lookups are avoided, which helps with the slowness reported in bug#81150. * lisp/progmodes/eglot.el (eglot-prefer-plaintext): Declare obsolete alias to 'eglot-documentation-renderer'. (eglot-documentation-renderer): New defcustom, reworked from from eglot-prefer-plaintext. (eglot--accepted-formats): Use new variable. (eglot--format-markup): Use new variable. * etc/EGLOT-NEWS: Announce change. * doc/misc/eglot.texi (Customization Variables): Document eglot-documentation-renderer. 2026-05-30 Amin Bandali Make HTML button elements tab-stoppable in eww (bug#81107) * lisp/net/eww.el (eww-form-submit): Call put-text-property to add help-echo and shr-tab-stop properties. (eww-tag-input): Exclude inputs with type="submit" when adding the help-echo and shr-tab-stop properties, since that's now done in eww-form-submit, called earlier for type="submit". 2026-05-30 Eli Zaretskii Don't make buffer read-only when reverting if 'view-mode' was disabled * lisp/view.el (view--disable): Reset 'read-only-mode--state'. (Bug#81149) 2026-05-29 Augusto Stoffel * lisp/shell.el (shell): Fix typo: use process-live-p (bug#81145). 2026-05-28 David Ponce widget-image-find: Use 'image-load-path' (bug#81140) * lisp/wid-edit.el (widget-image-find): Use 'image-load-path' (bug#81140). 2026-05-28 Po Lu Fix the MSDOS build * msdos/sedlibmk.inp (GL_GNULIB_MEMEQ, GL_GNULIB_STREQ) (GL_GNULIB_STRNUL): New substitutions, replacing that of GL_GNULIB_STRINGEQ. * src/term.c (init_tty) [MSDOS]: Assign appropriate value to tty->TN_max_colors. Do not merge to master. 2026-05-27 Zhengyi Fu (tiny change) Fix lax whitespace highlight during query-replace * lisp/replace.el (query-replace-read-args): Add :lax-whitespace to minibuffer-lazy-highlight-setup, so lazy highlight during query-replace respects replace-lax-whitespace and replace-regexp-lax-whitespace (bug#81131). 2026-05-27 Juri Linkov Fix fill-paragraph combining text with preceding comment * lisp/textmodes/fill.el (fill-paragraph): Handle the case when a non-comment line follows a comment line with non-nil 'fill-paragraph-handle-comment' (bug#80449). Skip such a comment line before filling a non-comment line. * test/lisp/textmodes/fill-tests.el (fill-test-fill-paragraph-handle-comment): Add new test. * test/lisp/textmodes/fill-resources/fill-paragraph-handle-comment.erts: New file. 2026-05-27 Paul Eggert emacsclient quote_argument is void * lib-src/emacsclient.c (quote_argument): Don’t use ‘return E;’ in a function returning void. Problem found by Oracle Developer Studio 12.6. 2026-05-24 Sean Whitton Revert "* admin/notes/documentation: Recommend not using "it's"." 2026-05-24 Sean Whitton native--compile-skip-on-battery-p: Try to fix ?b, ?B conditions * lisp/emacs-lisp/comp-run.el (native--compile-skip-on-battery-p): Don't skip charging because the battery is charging, and don't look for "discharging", at least for now (bug#80922). Thanks to David Koppelman for the report. 2026-05-24 Zhengyi Fu (tiny change) Save and restore original local keymap in grep-edit-mode * lisp/progmodes/grep.el (grep-edit-original-mode-map): New variable. (grep-change-to-grep-edit-mode): Save the current local map before switching to grep-edit-mode-map. (grep-edit-save-changes): Restore the saved local map instead of assuming grep-mode-map (bug#81090). 2026-05-24 Eli Zaretskii Fix display of inline SVG images in Rmail * lisp/mail/rmailmm.el (rmail-mime-set-bulk-data): Support Content-type of "svg+xml" if SVG images are supported, 2026-05-24 Yuan Fu Add treesit-ready-p check back to tree-sitter major modes (bug#80909) * lisp/progmodes/c-ts-mode.el (c-ts-mode): (c++-ts-mode): * lisp/progmodes/cmake-ts-mode.el (cmake-ts-mode): * lisp/progmodes/dockerfile-ts-mode.el (dockerfile-ts-mode): * lisp/progmodes/elixir-ts-mode.el (elixir-ts-mode): * lisp/progmodes/go-ts-mode.el (go-ts-mode): (go-mod-ts-mode): (go-work-ts-mode): * lisp/progmodes/heex-ts-mode.el (heex-ts-mode): * lisp/progmodes/js.el (js-ts-mode): * lisp/progmodes/lua-ts-mode.el (lua-ts-mode): * lisp/progmodes/python.el (python-ts-mode): * lisp/progmodes/rust-ts-mode.el (rust-ts-mode): * lisp/progmodes/sh-script.el (bash-ts-mode): * lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode): (tsx-ts-mode): * lisp/textmodes/css-mode.el (css-ts-mode): * lisp/textmodes/mhtml-ts-mode.el (mhtml-ts-mode): * lisp/textmodes/toml-ts-mode.el (toml-ts-mode): * lisp/textmodes/yaml-ts-mode.el (yaml-ts-mode): * lisp/treesit-x.el (treesit-generic-mode-setup): Add the check. 2026-05-24 João Távora Fix pathological slowness in flex completion The 'completion-regexp-list' optimization in completion--flex-all-completions-1, a cheap pre-filter via a trivial regexp, performs very poorly for longer patterns and strings, so drop it. That alone recovers fairly decent performance for the flex completion when compared to the 'hotfuzz' point of reference. We then recover the cheap rejection with an O(N+M) pre-check in the Fcompletion__flex_cost_gotoh C scorer. This kicks in the common case (completion-ignore-case is nil) and pays off especially when the table is already a list and 'all-completions' needn't cons. See: https://lists.gnu.org/archive/html/emacs-devel/2026-04/msg01081.html https://lists.gnu.org/archive/html/emacs-devel/2026-05/msg00519.html * lisp/minibuffer.el (completion--flex-all-completions-1): Remove regexp pre-filter. * src/minibuf.c (Fcompletion__flex_cost_gotoh): Add subsequence pre-check. 2026-05-23 Amin Bandali No longer raise error on HTTP 402 (Payment Required) (bug#81101) * lisp/url/url-http.el (url-http-parse-headers): Return t instead of raising an error, to give the user a chance to interact with the page. 2026-05-23 Thomas Mühlbacher (tiny change) Avoid compilation-mode matching rust as gnu * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist): Put 'rust' before 'gnu' to avoid a mismatch since the " |" has become optional (bug#81075). 2026-05-23 Sean Whitton * build-aux/git-hooks/commit-msg: Replace Markdown-style quotation. 2026-05-23 Sean Whitton vc-test--rename-file: Disable part of test for SCCS * test/lisp/vc/vc-tests/vc-tests.el (vc-test--rename-file): Disable part of test for SCCS. 2026-05-23 Rahul Martim Juliato markdown-ts-mode: Don't enable unconditionally by default * lisp/textmodes/markdown-ts-mode.el (markdown-ts-mode-maybe): New function. (auto-mode-alist): Bind ".md", ".markdown", and ".mdx" to 'markdown-ts-mode-maybe' instead of 'markdown-ts-mode'. * etc/NEWS: Update the 'markdown-ts-mode' entry. 2026-05-23 Manuel Giraud Prettify special glyphs * lisp/disp-table.el (prettify-special-glyphs-mode): New mode to display nicer special glyphs. (special-glyphs): New face for displaying special glyphs when the minor mode is active. (prettify-special-glyphs-saved-truncation) (prettify-special-glyphs-saved-continuation): Internal variables to save previous special glyphs. * etc/NEWS: Announce the change. (Bug#80628) 2026-05-23 Eli Zaretskii Revert "sh-script: Mark + and * as punctuation rather than a symbol constituent" This reverts commit b3c0aee42b086af4b3c6e26da1a5d81490b6128b. It caused regressions in 'sh-script', see bug#80794 and bug#80854. 2026-05-23 Richard Lawrence Rename `icalendar-recur' type and related functions More context in Bug#80786 and: https://lists.gnu.org/archive/html/emacs-orgmode/2026-03/msg00286.html `icalendar-recur' as a type name for RRULE values was confusing and made the accessors for this type difficult to discover, because `icalendar-recur-' is also used as a prefix in icalendar-recur.el. This change renames the `icalendar-recur' type to `icalendar-rrule-value' and renames the accessor functions for these values appropriately. * lisp/calendar/icalendar-parser.el: Rename symbols as follows: (icalendar-recur): `icalendar-rrule-value' (icalendar-read-recur-rule-part): `icalendar-read-rrule-part' (icalendar-print-recur-rule-part): `icalendar-print-rrule-part' (icalendar-recur-rule-part): `icalendar-rrule-part' (icalendar-read-recur): `icalendar-read-rrule-value' (icalendar-print-recur): `icalendar-print-rrule-value' (icalendar--recur-value-types): `icalendar--rrule-value-types' (icalendar-recur-value-p): `icalendar-rrule-value-p' (icalendar-recur-freq): `icalendar-rrule-freq' (icalendar-recur-interval-size): `icalendar-rrule-interval-size' (icalendar-recur-until): `icalendar-rrule-until' (icalendar-recur-count): `icalendar-rrule-count' (icalendar-recur-weekstart): `icalendar-rrule-weekstart' (icalendar-recur-by*): `icalendar-rrule-by*'. (icalendar-rrule): (icalendar-index-insert): (icalendar-index-get): Update references. * lisp/calendar/icalendar-recur.el (icalendar-recur-find-interval): (icalendar-recur-nth-interval): (icalendar-recur-next-interval): (icalendar-recur-previous-interval): (icalendar-recur-refine-from-clauses): (icalendar-recur-recurrences-in-interval): (icalendar-recur-recurrences-in-window): (icalendar-recur-recurrences-to-count): (icalendar-recur-tz-observance-on): Update references. * lisp/calendar/diary-icalendar.el: Update references. * lisp/calendar/icalendar-shortdoc.el (icalendar): Update shortdoc examples. * lisp/gnus/gnus-icalendar.el: Update references. * test/lisp/calendar/diary-icalendar-tests.el: * test/lisp/calendar/icalendar-parser-tests.el: * test/lisp/calendar/icalendar-recur-tests.el: Update references in tests. 2026-05-22 Jacek Migacz Fix Lisp injection via X-Draft-From in Gnus * lisp/gnus/gnus-msg.el (gnus-inews-make-draft-meta-information): Escape the group name with prin1-to-string to prevent arbitrary Lisp injection through crafted group names. The unescaped group name was embedded into a Lisp-readable string, parsed back with read-from-string in gnus-draft-setup, and eventually eval'd via message-do-actions, allowing code execution when a draft was sent. 2026-05-22 Martin Rudalics Save/restore old_buffer slot via window configurations (Bug#81097) With Emacs 31 the old_buffer slot of a window gets overwritten with the buffer unshown in that window when that window is deleted. Fset_window_configuration triggers that when calling delete_all_child_windows. If a window configuration gets saved and restored in one and the same redisplay cycle, the change time stamps of the window and its frame will be equal and 'window-buffer-change-functions' may wrongly decide that the window's buffer has not changed because its buffer and old_buffer slots refer to the same buffer (Bug#81097). Fix that by saving and restoring the old_buffer slot. * src/window.c (struct saved_window): Add 'old_buffer' slot. (Fset_window_configuration): Restore old_buffer slot. (save_window_save): Save old_buffer slot. 2026-05-22 Michael Albinus Adapt ert-remote-temporary-file-directory settings * lisp/emacs-lisp/ert-x.el (tramp-default-remote-shell) (tramp-encoding-shell): Declare. (tramp-methods) : Add `tramp-tmpdir'. Adapt `tramp-login-program' and `tramp-remote-shell'. 2026-05-22 Eli Zaretskii Fix warning message in 'markdown-ts-mode--initialize' * lisp/textmodes/markdown-ts-mode.el (markdown-ts-mode--initialize): Tweak the warning message when Tree-sitter is not available. (Bug#81100) 2026-05-22 Dmitry Gutov Fix "assertion 'GTK_IS_WINDOW (window)' failed" * src/gtkutil.c (xg_frame_set_size_and_position): Remove a gtk_window_resize call which used a wrong value type (GdkX11Window instead of GtkWindow). The original motivation for that line seems to be fixed by later changes (bug#80662). 2026-05-21 Dmitry Gutov [Xt] Fix child frame resizing glitch * src/widget.c (EmacsFrameResize): Exit early for child frames (bug#81077). 2026-05-21 João Távora Eglot: use standard face for completion annotations (bug#81088) * lisp/progmodes/eglot.el (eglot-completion-at-point): Use completions-annotations face, not font-lock-function-name-face. 2026-05-20 Juri Linkov Fix 'shr-outline-search' (bug#81073) * lisp/net/shr.el (shr-outline-search): Don't check for the beginning of the line. Suggested by Omar Antolín Camarena . Confirmed by Rahguzar . 2026-05-20 Michael Albinus Improve auth-source-backend-parse * lisp/auth-source.el (auth-source-backend-parse): Use `run-hook-wrapped'. Suggested by Augusto Stoffel . Transform a warning into a debug message. 2026-05-20 João Távora Eglot: announce markdown support for completion docs No reason not to. Tested with gfm-view-mode and markdown-ts-mode * lisp/progmodes/eglot.el (eglot-client-capabilities): Annouce markdown support for completion docs. 2026-05-20 Rahul Martim Juliato markdown-ts-mode: hide fence lines in view-mode (bug#81081) * lisp/textmodes/markdown-ts-mode.el (markdown-ts--fontify-delimiter): When `markdown-ts-hide-markup' is enabled in `markdown-ts-view-mode', also hide the whole line containing a `fenced_code_block_delimiter' (including its terminating newline) so Eldoc/LSP markdown snippets render without stray blank lines around the code block. Scoped to view-mode and to fenced delimiters on purpose: the same handler is shared by inline delimiters (emphasis, code span, link brackets) where munching surrounding whitespace would collapse word separators, and tuning rendering for hide-markup-while-editing is not a goal. 2026-05-20 João Távora markdown-ts-mode: align default face definitions with markdown-mode Match the out-of-the-box appearance of markdown-ts-mode to the non-tree-sitter markdown-mode package, making switching between modes less jarring. * lisp/textmodes/markdown-ts-mode.el (markdown-ts-delimiter) (markdown-ts-heading-1, markdown-ts-heading-2, markdown-ts-heading-3) (markdown-ts-heading-4, markdown-ts-heading-5, markdown-ts-heading-6) (markdown-ts-block-quote, markdown-ts-code-block, markdown-ts-code-span) (markdown-ts-indented-code-block, markdown-ts-html-tag) (markdown-ts-html-block, markdown-ts-thematic-break) (markdown-ts-entity-reference, markdown-ts-numeric-character-reference) (markdown-ts-table, markdown-ts-table-header, markdown-ts-table-cell) (markdown-ts-table-delimiter-cell, markdown-ts-language-keyword) (markdown-ts-list-marker, markdown-ts-hard-line-break-backslash) (markdown-ts-hard-line-break-backslash-hidden) (markdown-ts-hard-line-break-space-hidden) (markdown-ts-task-unchecked, markdown-ts-task-checked): Tweak. 2026-05-20 Stéphane Marks Fix markdown-ts-mode atx_heading face computation (bug#81042) The grammar reports leading spaces as part of the atx_heading "marker" and we cannot use the length of the marker as a result. Instead, count the number of consecutive # after any blanks to determine its "level." * lisp/textmodes/markdown-ts-mode.el (markdown-ts--fontify-atx-heading): Count the octothorpes rather than using the length of the marker node's text. 2026-05-20 Stéphane Marks Allow markdown-ts--run-command-in-code-block to ignore output (bug#81041) Do not assume every command run in 'markdown-ts--run-command-in-code-block' produces output that needs to be merged from the temp/work buffer into the source buffer. One example is 'xref-find-definitions', the temp buffer of which is unrelated to the source buffer. * lisp/textmodes/markdown-ts-mode.el (markdown-ts-code-block-commands): Add 'complete-symbol'. (markdown-ts-code-block-ignore-output-commands): New defvar. (markdown-ts--run-command-in-code-block): Ignore command output when necessary. 2026-05-19 Lin Sun hideshow: Menu entry for 'hs-toggle-all' * lisp/progmodes/hideshow.el: Menu entry for hs-toggle-all (bug#81045). 2026-05-18 Stefan Monnier doc/lispref/text.texi: Add complement to commit f4a1c006569f * doc/lispref/text.texi (Examining Properties): Mention the change in cursor-sensor-functions. 2026-05-18 João Távora Eglot: fix eglot--format-makrup when MARKUP just a string * lisp/progmodes/eglot.el (eglot--format-markup): Fix case where markup is string. 2026-05-18 F. Jason Park Fix missing margin face on display prop in erc-stamp * lisp/erc/erc-stamp.el (erc-insert-timestamp-right): Explicitly add face to right-hand stamp's `display' margin string. Commit d24b10ca "Introduce 'margin' face for window margin background" did away with the "fall-through" behavior in which a margin spec's string that lacks its own face property inherited whatever the associated `display' char happened to have. (Bug#80693) ;; The old language in "(elisp) Display Margins" said "if the ;; string to be displayed in the margin doesn't specify a face, its ;; face is determined using the same rules and priorities as it is ;; for strings displayed in the text area (see Displaying Faces)," ;; and that "if this results in undesirable 'leaking' of faces into ;; the margin, make sure the string has an explicit face specified ;; for it." It seems ERC and likely more than a few other packages ;; never came to heed this guidance and have erroneously depended ;; on such behavior for years if not decades. ;; ;; * test/lisp/erc/resources/fill/snapshots/merge-01-start.eld: ;; * test/lisp/erc/resources/fill/snapshots/merge-02-right.eld: ;; * test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld: ;; * test/lisp/erc/resources/fill/snapshots/merge-wrap-indicator-pre-01.eld: ;; * test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld: ;; * test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld: ;; * test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld: ;; * test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld: ;; * test/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld: Update ;; snapshot. 2026-05-18 Sean Whitton vc-refresh-state: Override default-directory for backend functions I ran into the issue described in the comment with the current code in project-find-file-in and project-find-dir, when using 'C-x p p' to switch between projects. * lisp/vc/vc-hooks.el (vc-refresh-state): When calling into the backend, override any let-bindings of default-directory. 2026-05-18 João Távora Eglot: unbreak for treesit-less builds * lisp/progmodes/eglot.el (eglot--builtin-mdown-p): New helper. (eglot--accepted-formats) (eglot--format-markup): Use it. 2026-05-18 Joshua Murphy (tiny change) Get selected item in newsticker list view * lisp/net/newst-treeview.el (newsticker--treeview-get-selected-item): If an item is already selected, use it. (Bug#80972) 2026-05-17 Brian Leung Eglot: fix thinko in recent markdown-related commit (bug#81063) * lisp/progmodes/eglot.el (eglot--format-markup): Correct return value for gfm-view-mode. 2026-05-17 João Távora Jsonrpc: migrate more tests to Python subprocess fixtures All tests now use 'jsonrpc--with-python-fixture' with a Python3 subprocess instead of the in-Emacs TCP server. Changed the "harakiri" method to be a request instead of a notification for to reduce chance of "Sentinel hasn't run" warning. The two in-Emacs-RPC-specific error tests ('errors-with--32601' and 'signals-an--32603-JSONRPC-error') are dropped with the fixture itself, as the error paths they exercise are internal to the Emacs Lisp dispatcher and have no direct Python equivalent. They will have to be re-done later on in other form. * test/lisp/jsonrpc-resources/server-emacsrpc.py: New file. * test/lisp/jsonrpc-resources/server-anxious-nested.py: Use new harakiri. * test/lisp/jsonrpc-resources/server-emacsrpc.py: Use new harakiri. * test/lisp/jsonrpc-resources/server-harakiri.py: Use new harakiri. * test/lisp/jsonrpc-resources/server-remote-during-sync-1.py: Use new harakiri. * test/lisp/jsonrpc-resources/server-remote-during-sync-2.py: Use new harakiri. * test/lisp/jsonrpc-resources/server-remote-error.py: Use new harakiri. * test/lisp/jsonrpc-resources/common.py (harakiri): New definition. * test/lisp/jsonrpc-tests.el (jsonrpc--with-python-fixture): Rework, move up. (jsonrpc-connection-ready-p): Move up. (jsonrpc--call-with-emacsrpc-fixture) (jsonrpc--with-emacsrpc-fixture) (errors-with--32601) (signals-an--32603-JSONRPC-error): Remove. (returns-3, times-out, doesnt-time-out, stretching-it-but-works) (deferred-action-toolate, deferred-action-intime) (deferred-action-complex-tests): Migrate to Python fixture. (scontrol-remote-during-sync-1, scontrol-remote-during-sync-2) (scontrol-anxious-nested, scontrol-remote-error) (shutdown-clean-after-notification): Tweak. 2026-05-17 João Távora Eglot: add left-fringe code action indicator (bug#80326) The fringe indicator uses a custom lightning-bolt bitmap, an alternative to the margin indicator on GUI frames. It is non-interactive, however. * lisp/progmodes/eglot.el (eglot--fringe-action): New fringe bitmap. (eglot-code-action-indications): Add 'left-fringe' to default value and to docstring. Update incompatibility note. (eglot-code-action-suggestion): Handle 'left-fringe' indication. 2026-05-17 Michael Albinus Fix auth-source-backends-parse * lisp/auth-source.el (auth-source-backend-parse): Drop backends of type `ignore'. (Bug#81024) (auth-source-backends): Drop duplicate backends. 2026-05-17 Eli Zaretskii Fix updates of embedded formulas by 'calc-embedded-update-formula' * lisp/calc/calc-embed.el (calc-embedded-update): Use 'buffer-substring' to better track the string representation of the formula when it is being edited. Suggested by gnu@publik.slmail.me. Also, update commentary. (Bug#80901) 2026-05-16 Andrea Alberti Fill margins with 'margin' face on truncated screen lines * src/xdisp.c (display_line): Remove the unnecessary condition that row->used of the margin areas is zero, for when we call 'extend_face_to_end_of_line'. (Bug#80693) 2026-05-14 João Távora Eglot: adjust reference to completion frontends in manual * doc/misc/eglot.texi (Eglot Features): Rework. 2026-05-14 João Távora Eldoc: display documentation in visual-line-mode Documentation is overwhelmingly prose and intended to be viewed, not edited. Using visual-line-mode allows members of 'eldoc-doc-functions' to provide long lines that correctly fill to the window width. * lisp/emacs-lisp/eldoc.el (eldoc--format-doc-buffer): Use visual-line-mode. 2026-05-14 João Távora Eglot: prefer markdown-ts-view-mode for markup rendering (bug#80127) Eglot previously needed gfm-view-mode from markdown-mode.el to render Markdown from LSP servers. It now prefers markdown-ts-view-mode when available. * lisp/progmodes/eglot.el (eglot--accepted-formats): Recognize markdown-ts-view-mode as a Markdown renderer. (eglot--format-markup): Rework with cl-labels; prefer markdown-ts-view-mode over gfm-view-mode. * doc/misc/eglot.texi (Eglot Features): Don't mention markdown-mode directly. * etc/EGLOT-NEWS: Mention change 2026-05-14 Rahul Martim Juliato Use 'read-multiple-choice' in 'markdown-ts-mode' (bug#81027) Replace the "c" character-prompt interactive spec with 'read-multiple-choice', which presents named options instead of requiring users to decode the prompt string and type a single character. * lisp/textmodes/markdown-ts-mode.el (markdown-ts-table-align-column): Use 'read-multiple-choice'. Adjust ALIGN docstring punctuation. * lisp/textmodes/markdown-ts-mode-x.el (markdown-ts-toc-insert-template): Use 'read-multiple-choice'. 2026-05-14 Rahul Martim Juliato Fix 'markdown-ts-code-span' face (bug#81026) * lisp/textmodes/markdown-ts-mode.el (markdown-ts-code-span): Inherit from 'font-lock-keyword-face' rather than 'font-lock-string-face'. 2026-05-14 Rahul Martim Juliato Add read-only 'markdown-ts-view-mode' (bug#81023) This new derived mode is intended for consumers that render Markdown content for display rather than editing, such as Eglot and Eldoc when showing documentation popups and buffers. It pre-sets the relevant customizations (markup hidden, inline images on, hard-line-break markup hidden, native code-block fontification, table and code-block context minor modes off), makes the buffer read-only, and uses its own keymap derived from 'special-mode-map' so navigation keys behave like a viewer. A pre-init hook lets callers normalize buffer content before the grammar parses it; 'markdown-ts-add-final-newline' is the default so that markup depending on a terminating newline parses correctly. 'markdown-ts-buffer-string' returns the rendered buffer string with overlay faces flattened into text properties, which is useful for callers that capture the rendered output. Along the way: 'list_marker_parenthesis' is now recognized as an ordered list marker; the strikethrough query is simplified to a single rule; thematic breaks span the window via an ':extend' underline when the face supports it. * lisp/textmodes/markdown-ts-mode.el (markdown-ts-view-mode): New read-only derived mode. (markdown-ts-view-mode-map): New keymap. (markdown-ts-view-mode-pre-init-hook): New hook, defaulting to 'markdown-ts-add-final-newline'. (markdown-ts-mode--initialize): New helper, factored out of 'markdown-ts-mode' so 'markdown-ts-view-mode' can reuse the parser readiness and setup logic after overriding local variables. (markdown-ts-mode): Call 'markdown-ts-mode--initialize'. (markdown-ts-add-final-newline): New function. (markdown-ts-buffer-string): New function. (markdown-ts-unordered-list-marker): New defcustom. (markdown-ts-hard-line-break-backslash) (markdown-ts-hard-line-break-space): Accept the symbol 'hide. (markdown-ts--fontify-hard-line-break): Honor 'hide. (markdown-ts--fontify-atx-heading) (markdown-ts--fontify-setext-heading) (markdown-ts--fontify-atx-delimiter) (markdown-ts--fontify-unordered-list-marker) (markdown-ts--list-item-depth): New functions supporting clean rendering when markup is hidden. (markdown-ts--fontify-thematic-break): Use ':extend' underline span when the face supports it. (markdown-ts--resolve-display-value): Accept non-cons values. (markdown-ts--list-ordered-item-p): Also recognize 'list_marker_parenthesis'. (markdown-ts--range-settings): Mark markdown-inline embed as ':local t'. (markdown-ts--set-up): Create the markdown-inline parser only in the inline setup branch; drop the redundant 'markdown-ts-hide-markup' make-local-variable. (markdown-ts--treesit-settings): Route atx and setext headings to their dedicated fontifiers; route unordered list markers through 'markdown-ts--fontify-unordered-list-marker'; move 'strikethrough' to the simpler paragraph-inline query. 2026-05-13 Rahul Martim Juliato Fix strikethrough in 'markdown-ts-mode' (bug#80991) * lisp/textmodes/markdown-ts-mode.el (markdown-ts--treesit-settings): Add a new font-lock block for 'paragraph-inline' that handles strikethrough nodes more carefully. 2026-05-13 Rahul Martim Juliato Fix code-span in headings in 'markdown-ts-mode' (bug#80979) * lisp/textmodes/markdown-ts-mode.el (markdown-ts--treesit-settings): Move the 'code_span' and 'code_span_delimiter' font-lock rules into a separate block with ':override prepend' instead of 'append'. The heading feature (level 1) applies its face via 'font-lock-append-text-property', so a code span that later appends 'markdown-ts-code-span' ends up with '(markdown-ts-heading-N markdown-ts-code-span)', where the heading face takes priority and the code-span face is suppressed. Prepending ensures 'markdown-ts-code-span' appears first in the face list and wins visually. 2026-05-13 Stéphane Marks Make 'markdown-ts-inline-images' buffer local and test for GUI (bug#80978) * lisp/textmodes/markdown-ts-mode.el (markdown-ts-inline-images): Now buffer local. (markdown-ts--fontify-image): Defensively test for graphical display before rendering images. 2026-05-13 Michael Albinus * etc/NEWS: Mention new user option tramp-propagate-emacsclient-tramp. 2026-05-13 Michael Albinus Propagate EMACSCLIENT_TRAMP to remote hosts with Tramp * doc/misc/tramp.texi (Remote processes): Explain `tramp-propagate-emacsclient-tramp'. * lisp/net/tramp.el (tramp-remote-process-environment): Adapt docstring. (tramp-propagate-emacsclient-tramp): New defcustom. (tramp-handle-make-process): * lisp/net/tramp-sh.el (tramp-sh-handle-make-process) (tramp-sh-handle-process-file): Use it. * test/lisp/net/tramp-tests.el (tramp-test33-environment-variables): Adapt test. 2026-05-13 Stefan Monnier keyboard-tests.el: Try and fix the failure on EMBA * test/src/keyboard-tests.el (keyboard-sigint-to-quit): Fix a small race condition and avoid `sit-for` returning early. 2026-05-13 Stefan Monnier doc: Remove long obsolete references to `package-initialize` Since Emacs-27, `package-initialize` is for internal use only, and callers should either call `package-activate-all` instead (cheaper and faster) or do nothing at all (because the other functions should trigger the needed initialization automatically as needed). * doc/lispref/package.texi (Packaging Basics): Delete `package-initialize`. * doc/misc/eglot.texi (Reporting bugs): Don't recommend using `package-initialize`. * doc/misc/org.org (Using Emacs packaging system): Simplify the command line since both `(require 'package)` and `(package-initialize)` are redundant here. 2026-05-13 Sean Whitton vc-next-action: Call vc-delete-file on FILESET-ONLY-FILES * lisp/vc/vc.el (vc-next-action): Call vc-delete-file on FILESET-ONLY-FILES, not FILES (bug#80998). 2026-05-12 Elias Gabriel Perez hideshow: Support new 'margin' face for margin indicators. (Bug#80693) * lisp/progmodes/hideshow.el (hs-indicator-hide): Remove 'default' face. (hs--make-indicators-overlays): Rework. 2026-05-12 Juri Linkov Use the new 'margin' face in Flymake (bug#80693) * lisp/progmodes/flymake.el (flymake--bs-display): Use the 'margin' face when it's available. 2026-05-12 Sean Whitton vc-dir-resynch-file: Pass down non-truename'd FILE * lisp/vc/vc-dir.el (vc-dir-recompute-file-state): Delete recently introduced TRUENAME parameter. (vc-dir-resynch-file): Pass the file name from before calling file-truename to vc-dir-recompute-file-state. 2026-05-12 F. Jason Park Change ERC version for Emacs 31 to 5.6.2.31.1 * doc/misc/erc.texi: Change ERCVER to 5.6.2.31.1. * lisp/erc/erc.el: Change "Version" package header to 5.6.2.31.1. Don't update the `customize-package-emacs-version-alist' entry because this is not a GNU ELPA release. (erc-version): Change version to 5.6.2.31.1. Do not merge to master. 2026-05-11 Philip Kaludercic Fix 'sgml-parse-tag-backward' to handle tags in comments * lisp/textmodes/sgml-mode.el (sgml--find-<>-backward): Ignore SGML tags that happen to occur within comments. This also means that the contents of comments are not indented, but also do not affect the indentation of tags following the comments as well. (Bug#80841) 2026-05-11 Aidan Coyle (tiny change) Fix eww-submit for forms with no action (bug#80918) * lisp/net/eww.el (eww-submit): If a form does not specify an action the assumed action is the current URL. If the current URL has an existing query part, that part must be replaced by the form values, rather than appended to. 2026-05-11 Elias Gabriel Perez * lisp/progmodes/hideshow.el (hs--set-variable): Use 'set-local' (bug#80999) 2026-05-11 Juri Linkov Fix Completions buffer disappearing with tmm-menubar (bug#80995) * lisp/minibuffer.el (completions--start-background-update): Cancel a possible leftover timer (e.g. from the previous after-change hook) that would suppress the display of *Completions* when 'completion-eager-update' is nil. (completions--after-change): Don't start background update when not required to automatically update *Completions*. 2026-05-11 Michael Albinus Fix secrets.el when Emacs is a flatpak * doc/misc/dbus.texi (Flatpak integration): New chapter. * lisp/net/secrets.el (top): Protect against wrong signals in the flatpak case. (Bug#80977) 2026-05-11 Philip Kaludercic Fix 'prepare-user-lisp' to follow symlinks * lisp/startup.el (prepare-user-lisp): Call 'directory-files-recursively' with a non-nil value for FOLLOW-SYMLINKS. This was the intended way for the function to operate, during the planning phase, so that users could structure their User Lisp directory by linking in Lisp directories from other parts of their file system. 2026-05-11 Philip Kaludercic Update "timeout" to 2.1.6 See https://lists.gnu.org/archive/html/emacs-devel/2026-05/msg00033.html. 2026-05-11 Dmitry Gutov [GTK3, HiDPI] Fix width/height round-trip through ConfigureNotify * src/gtkutil.c (xg_frame_set_char_size) (xg_frame_set_size_and_position): Truncate WIDTH and HEIGHT to be multiples of the scale factor (bug#80662). 2026-05-11 Dmitry Gutov [GTK3] On Expose, repaint the border before the content * src/xterm.c (handle_one_xevent): Move the x_clear_under_internal_border call before expose_frame, for less chance of implicit flush to screen in between (bug#80662). 2026-05-10 Pip Cet Test read-passwd behavior (bug#80838) * test/lisp/auth-source-tests.el (auth-source-test--displayed-string): (auth-source-test-read-passwd): (auth-source-test-read-passwd-revealed): (auth-source-test-read-passwd-nested): New. 2026-05-10 Pip Cet Fix nested read-passwd calls (bug#80838) Calls to 'read-passwd' may be nested. The old code didn't handle that, because some of the state was global and we'd end up revealing passwords. The new code still has global state, but it has been changed so that we hide rather than reveal passwords when we enter or leave a nested read-passwd prompt. * lisp/auth-source.el (read-passwd--hide-password): Removed. (read-passwd--password-hidden): New. (read-passwd-toggle-visibility): Add optional FORCE argument. (read-passwd--mini-buffers): New variable. (read-passwd-mode): Don't modify mode line when nested. Hide password when returning to nested minibuffer or entering a new one. 2026-05-09 Pip Cet Fix terminal emulation of "ESC [ K" sequence * lisp/term.el (term-erase-in-line): Don't immediately delete the newly inserted characters. 2026-05-09 Eli Zaretskii Fix vertical-motion across overlay strings with embedded newlines * src/indent.c (Fvertical_motion): Handle the case of an overlay string on invisible text at point. (Bug#80989) 2026-05-09 Morgan Smith Mark gnus-dbus.el as obsolete This functionality has been replaced by the new sleep library which supports more then just DBUS systems. * lisp/obsolete/gnus-dbus.el: Add Obsolete-since header. Add commentary. (gnus-dbus-close-on-sleep, gnus-dbus-sleep-registration-object) (gnus-dbus-register-sleep-signal gnus-dbus-sleep-handler) (gnus-dbus-unregister-sleep-signal): Mark as obsolete. 2026-05-09 Morgan Smith Move gnus-dbus.el to obsolete/gnus-dbus.el * lisp/gnus/gnus-dbus.el: Move from here... * lisp/obsolete/gnus-dbus.el: ...to here. 2026-05-09 Morgan Smith Gnus: Use new sleep library * etc/NEWS: Announce. * lisp/gnus/gnus-start.el: Don't require gnus-dbus. (gnus-sleep-handler): New function. (gnus-close-on-sleep): New variable. (gnus-1): Add `gnus-sleep-handler' to `system-sleep-event-functions' when `gnus-close-on-sleep' is non-nil. * doc/misc/gnus.texi: Update documentation. 2026-05-09 Eli Zaretskii Fix Rmail behavior wrt globalized minor modes Previously, "M-x rmail" would not call 'run-mode-hooks', which didn't let globalized minor modes a chance to turn on themselves in Rmail buffers. This modifies the way Rmail runs the various hooks so as to abide by behavior required by Emacs 30 and later. * lisp/mail/rmail.el (rmail-mode-2): Call 'run-mode-hooks'. (rmail-mode): Call 'run-hooks', not 'run-mode-hooks'. Suggested by Mark Lillibridge . (Bug#80879) 2026-05-09 Eli Zaretskii Fix display images in the display margins * src/xdisp.c (handle_single_display_spec): Set the iterator face to use 'margin' when displaying in the margins. (Bug#80693) 2026-05-09 João Távora Eglot: fix eglot--sig-info with non-UTF-32 positionEncoding Github-reference: https://github.com/joaotavora/eglot/discussions/1588 When the server negotiates positionEncoding utf-8 or utf-16, ParameterInformation.label vector offsets are byte/code-unit counts into the signature label, not character counts. Using them raw caused wrong highlights and crashes on Unicode-rich signatures. * lisp/progmodes/eglot.el (eglot--sig-info): Mostly rewrite. (eglot-move-to-utf-8-linepos-function): Tweak docstring. (eglot-move-to-utf-8-linepos, eglot-move-to-utf-16-linepos): Return position moved to. 2026-05-08 Alan Third [NS] Fix deprecated variable (bug#80985) * src/nsterm.h (NSLevelIndicatorStyleContinuousCapacity): Define in macOS < 10.15. 2026-05-08 Dmitry Gutov vc-switch-working-tree: Use project-current again * lisp/vc/vc.el (vc-switch-working-tree): Use project-current instead of manually constructing VC project objects. 2026-05-08 Stéphane Marks treesit-explore-mode usability improvements (bug#80935) Improve the usability of treesit-explore-mode. - Prompt for the primary parser first, if there is one, rather than the first in the list reported by 'treesit-parser-list'. Previously, in a multi-parser buffer like 'markdown-ts-mode', one had to hunt for the primary parser. - Kill the tree buffer and its window if the source buffer is killed or 'treesit-explore-mode'. Previously, when 'treesit-explore-mode' is disabled in the source buffer, its companion explorer tree buffer was left dangling and window open (with an unrelated buffer). - Improve 'treesit--explorer-refresh-1' to recenter the window around the selected nodes when the selected region in the source buffer changes. Previously, one had to navigate manually to find the corresponding highlighted node in the tree window which may be far away from that the source buffer's region represents. - Disable 'treesit-explore-mode' in the source buffer if its companion tree buffer is killed. Previously, 'treesit-explore-mode' remained active in the source buffer in an effectively unusable state. - Disable 'treesit-explore-mode' if the user quits 'completing-read' in 'treesit-explorer-switch-parser' when enabling the mode. Previously, 'treesit-explore-mode' was left enabled after quit. - New command to switch back and forth between the source buffer and tree buffer windows to make navigating more convenient. Previously, in a multi-window frame, one had to navigate to/from these two related windows in a more cumbersome way. - New command to quit 'treesit-explore-mode' and 'treesit--explorer-tree-mode' and handle buffer and window cleanup. * lisp/treesit.el (treesit--explorer-refresh-1): Recenter the window, if amenable, to the node selected in the source buffer. (treesit--explorer-kill-explorer-buffer): Remove function. (treesit--explorer-generate-parser-alist): Prioritize the primary parser, if there is one. (treesit--explorer-tree-mode-cleanup): New defun. (treesit-explore-quit): New command. (treesit-explorer-tree-window): New defun. (treesit-explorer-source-buffer-window): New defun. (treesit-explore-mode-map): Revise key bindings. (treesit--explorer-tree-mode-map): Revise key bindings. (treesit--explorer-tree-mode): New keymap. (treesit-explorer-switch-parser): Add a default to completing-read. (treesit-explore-mode): Guard completing read quit. Wire up the new cleanup functions. 2026-05-07 João Távora Fix 'vc-dir-resynch-file' again (bug#80967) This unbreak project-vc-dir for dirs under non-truename hierarchies. The following commit presumably makes 'M-x vc-dir' usable again for versioned directories inside non-truename hierarchies, commit e05fab5775c96f8f88eab8d75dea40253bfb78eb Author: Stephen Berman Date: Sat May 2 15:11:37 2026 +0200 Fix 'vc-dir-resynch-file' (bug#80803) * lisp/vc/vc-dir.el (vc-dir-resynch-file): Apply 'file-truename' instead of 'expand-file-name' to FNAME argument to prevent spurious display of symlinked files in *vc-dir* buffer. However the similar command 'M-x project-vc-dir' was broken and made unusable in similar circumstances. This relatively simple fix addresses both situations touching only the problematic 'vc-resynch-file' and one of its callees, 'vc-dir-recompute-file-state', which now discerns clearly between the short/familiar name to present in the list and the "fname" to use to call into the backend to gather the VC state. Since this function is also called from another context, where the requirements are less clear, keeping current smenatics in that situation seemed prudent, so the new behaviour is activate with a new optional parameter. * lisp/vc/vc-dir.el (vc-dir-resynch-file): Call vc-dir-recompute-file-state with truename=t. (vc-dir-recompute-file-state): Accept optional truename param. 2026-05-07 Sean Whitton Cut the emacs-31 release branch * README: * configure.ac: * exec/configure.ac: * java/AndroidManifest.xml.in (Version-code): * msdos/sed2v2.inp: * nt/README.W32: Bump Emacs version to 31.0.60. * lisp/cus-edit.el (customize-changed-options-previous-release): Set last version to 30.2. 2026-05-07 Zeke Dou (tiny change) Move ns_init_colors() after init_callproc() (bug#80752) 'data-directory' needs to be established in advance of 'ns_init_colors' to ensure the file "etc/rgb.txt" is read. This was encountered on an out-of-tree Nix build. * src/emacs.c (main): Move the 'ns_init_colors' after 'init_callproc'. 2026-05-07 Jonas Bernoulli Update to Transient v0.13.3-10-g87d0ca08 2026-05-07 Eli Zaretskii Fix infloop in redisplay due to continuation glyphs * src/xdisp.c (display_line): When inserting continuation glyphs, account for the border glyph in non-rightmost windows on TTY frames. (Bug#80975) 2026-05-07 Sean Whitton Unpreload package-activate-all See for my reasoning. * lisp/emacs-lisp/package-activate.el (package-activate-all): Unpreload. 2026-05-07 Dmitry Gutov [GTK3] Move the frame to position before showing * src/xterm.c (x_make_frame_visible): Move XMoveWindow call before gtk_widget_show_all, so that the move happens before the frame become visible (bug#80662). 2026-05-07 Dmitry Gutov [GTK3] Improve the resize -> hide -> show scenario * src/gtkutil.c (xg_frame_set_char_size) (xg_frame_set_size_and_position): Call gtk_window_resize for child frames too, to record _GtkWindowGeometryInfo#resize_width and resize_height. They are later looked up by gtk_widget_show_all in x_make_frame_visible (bug#80662). Without this the widgets go back and forth between the remembered and actual sizes after make-visible. 2026-05-06 Michael Albinus Handle long environment variables in Tramp oricesses * lisp/net/tramp-sh.el (tramp-sh-handle-make-process): Handle loooong environment variables. (Bug#80783) * test/lisp/net/tramp-tests.el (tramp-test33-environment-variables): Adapt test. 2026-05-06 Dmitry Gutov Fix flicker of child frame right after make-frame-visible * src/xterm.c (x_make_frame_visible): Call SET_FRAME_GARBAGED before making a child frame visible (bug#80943). 2026-05-05 Stefan Monnier (help--symbol-completion-table): Try and fix bug#80873 * lisp/help-fns.el (help--symbol-completion-table): Don't let `test-completion` pretend that `definition-prefixes` are actually valid function names. 2026-05-05 Juri Linkov Improve 'context-menu-send-to' (bug#79512) * lisp/mouse.el (context-menu-functions): Add missing 'context-menu-send-to' to :type. (context-menu-send-to): Get non-nil items to avoid useless message "Nothing to send". * lisp/send-to.el (send-to-handlers): Change from 'defvar-local' to 'defvar' to allow easier global configuration. (send-to-supported-p): Check for non-nil handler. 2026-05-05 Sean Whitton vc-switch-working-tree: Don't find non-VC projects * lisp/vc/vc.el (project-current-directory-override): Delete declaration. (project-find-matching-buffer-function): Declare. (vc-switch-working-tree): Don't find non-VC projects (bug#80939). 2026-05-05 Sean Whitton vc-finish-logentry: Skip displaying async command buffer sometimes * lisp/vc/vc-dispatcher.el (vc-finish-logentry): Don't display the async command buffer if vc-display-failed-async-commands is non-nil. 2026-05-05 Eshel Yaron elisp-mode: Cache 'help-echo' function results (bug#80948) This ensures we only compute the 'help-echo' string once per symbol in a certain position. * lisp/progmodes/elisp-mode.el (elisp--annotate-symbol-with-help-echo): Add caching for when the symbol role's :help property is a function. 2026-05-05 Andrea Alberti Introduce 'margin' face for window margin background A new basic face 'margin' is used for text displayed in the left and right margin areas, i.e., the areas typically used by VCS and LSP packages for per-line annotations. Its background defaults to the frame default, preserving existing behavior for users who do not customize it. * etc/NEWS: Document the new 'margin' face. * lisp/faces.el (margin): Add 'margin' face, inheriting from 'default'. * src/dispextern.h (face_id): Add MARGIN_FACE_ID. * src/xdisp.c (face_at_pos): Use 'margin' as the base face for strings displayed in margin areas so that they inherit the gutter background by default. (extend_face_to_end_of_line): Compute 'margin_fill_face_id' from the 'margin' face. Use while loops to explicitly fill all empty character slots in both left and right margins for both GUI and TTY branches. (display_line): Call 'extend_face_to_end_of_line' for beyond-EOB rows when the window has margins. Also extend the existing condition for text rows with empty margins to trigger when the 'margin' face background differs from the frame default, not only when the default face is remapped. * src/xfaces.c (realize_basic_faces): Realize 'margin' as a basic face to support face-remapping and efficient lookup. (Bug#80693) 2026-05-05 Augusto Stoffel Accept stream type as 4th argument of X-Message-SMTP-Method header * lisp/gnus/message.el (message-multi-smtp-send-mail): Set 'smtpmail-stream-type' if specificed in the header. * doc/misc/message.texi (Mail Variables): Document that. (Bug#80880) 2026-05-05 Rahul Martim Juliato Stéphane Marks Improve 'markdown-ts-mode' Overhaul 'markdown-ts-mode' with comprehensive fontification, code block handling, editing commands, fill-paragraph support, inline image previews, a mode menu, and table editing. Add 'markdown-ts-mode-x.el' with conversion/export and TOC support. * lisp/textmodes/markdown-ts-mode.el: Add Version, Package-Requires, and Keywords header fields. Expand Commentary with documentation for code block language modes, code block commands, bidirectional text, and known tree-sitter grammar bugs. (require 'goto-addr, xref, icons): New requirements. (markdown-ts): New customization group with :version and :package-version tags. (markdown-ts-hide-markup): Add :version and :package-version. (markdown-ts-ellipsis): New option for folded heading ellipsis. (markdown-ts-menu-bar-show): New option to toggle mode menu. (markdown-ts-default-folding): New option for default fold level. (markdown-ts-inline-images): New option to display inline images. (markdown-ts-image-max-width): New option for image max width. (markdown-ts-display-remote-inline-images): New option for remote image handling. (markdown-ts--resolve-display-value): New helper to resolve display values using char-displayable-p. (markdown-ts-checked-checkbox): New option for checked checkbox display string or icon. (markdown-ts-checked-checkbox-icon): New icons.el icon for the checked variant. (markdown-ts-unchecked-checkbox): New option for unchecked checkbox display string or icon. (markdown-ts-unchecked-checkbox-icon): New icons.el icon for the unchecked variant. (markdown-ts-thematic-break-character): New option for thematic break display character. (markdown-ts-hard-line-break-backslash): New option for the glyph shown in place of a trailing-backslash hard line break when markup is hidden. (markdown-ts-hard-line-break-space): New option for the glyph shown in place of a trailing-spaces hard line break when markup is hidden. (markdown-ts-code-block-in-context-mode-lighter): New option for code block context mode lighter string. (markdown-ts-inhibit-code-block-mode-warnings): New option to inhibit code-block major-mode messages and warnings. (markdown-ts-table-default-column-width): New option for default table column width. (markdown-ts-enable-table-mode): New option to enable table mode. (markdown-ts-table-auto-align): New option for triggers that cause automatic table alignment. (markdown-ts-table-align-features): New option for table align features. (markdown-ts-in-table-mode-lighter): New option for markdown-ts-in-table-mode lighter string. (markdown-ts-emphasis, markdown-ts-bold) (markdown-ts-strikethrough, markdown-ts-link) (markdown-ts-link-destination, markdown-ts-code-span) (markdown-ts-code-block, markdown-ts-code-block-markup-hidden) (markdown-ts-indented-code-block, markdown-ts-html-tag) (markdown-ts-html-block, markdown-ts-thematic-break) (markdown-ts-entity-reference) (markdown-ts-numeric-character-reference, markdown-ts-latex) (markdown-ts-table-header, markdown-ts-table-cell) (markdown-ts-table-delimiter-cell, markdown-ts-task-unchecked) (markdown-ts-task-checked): New faces. (markdown-ts-hard-line-break-backslash) (markdown-ts-hard-line-break-backslash-hidden) (markdown-ts-hard-line-break-space) (markdown-ts-hard-line-break-space-hidden): New faces for the two hard-line-break variants, with distinct shown/hidden appearances. (markdown-ts-in-code-block): New face for when point is inside a fenced code block. (markdown-ts-table): New face for Markdown pipe table background. (markdown-ts-in-table): New face for markdown-ts-in-table-mode when point is in a table. (markdown-ts--set-up-inline): New variable for lightweight setup in embedded inline markdown-ts-mode buffers used by code block commands. (markdown-ts-default-code-block-mode): New variable to define default mode for anonymous code blocks. (markdown-ts-fontify-code-blocks-natively): New option to enable/disable native fontification of fenced code block contents. (markdown-ts-enable-code-block-context-mode): New option to enable/disable code block context integration. (markdown-ts-code-block-modes): New variable replacing markdown-ts--code-block-language-map and markdown-ts-code-block-source-mode-map with unified language to mode mapping including heuristic lookup. (markdown-ts-code-block-force-conventional-modes): New variable listing tree-sitter modes whose fontification of code block content should be harvested via a temporary buffer. (markdown-ts-table-export-buffer): New constant for table export output buffer name. (markdown-ts--table-row-types, markdown-ts--table-cell-types) (markdown-ts--table-delimiter-cell-types) (markdown-ts--table-delimiter-cell-subtypes): New constants for pipe table node type classification. (markdown-ts--make-link-button): New function to create clickable link buttons with mailto, browse-url, and find-file dispatch. (markdown-ts--fontify-link-destination): New fontifier that hides link destinations when markup is hidden. (markdown-ts--link-ref-cache, markdown-ts--link-ref-cache-tick) (markdown-ts--link-ref-definitions) (markdown-ts--resolve-link-ref): New link reference definition cache with case-insensitive matching per CommonMark spec. (markdown-ts--fontify-link-node): New fontifier for inline, reference, shortcut, and collapsed links as clickable buttons. (markdown-ts--fontify-autolink): New fontifier for URI and email autolinks with angle bracket hiding. (markdown-ts--fontify-link-ref-label) (markdown-ts--fontify-link-ref-destination): New fontifiers for link reference definitions. (markdown-ts--slug-github-strip-re, markdown-ts--slug-github) (markdown-ts--slug-pandoc, markdown-ts--explicit-id-re) (markdown-ts--heading-text-and-id) (markdown-ts--heading-id-cache) (markdown-ts--heading-id-cache-tick) (markdown-ts--build-heading-ids, markdown-ts--heading-ids) (markdown-ts--follow-fragment): New fragment link support with GitHub and Pandoc slug algorithms. (markdown-ts--latex-block-valid-p) (markdown-ts--fontify-latex-block): New LaTeX/math fontifier with cross-paragraph validation. (markdown-ts--fontify-backslash-escape): New fontifier that hides backslash in escapes except inside LaTeX blocks. (markdown-ts--decode-entity, markdown-ts--fontify-entity): New HTML entity decoder and fontifier using org-entities and sgml-char-names with display property for decoded values. (markdown-ts--fontify-checkbox): New fontifier showing the configured checkbox glyph when markup is hidden. (markdown-ts--fontify-hard-line-break): New fontifier for 'hard_line_break' nodes. (markdown-ts--fontify-heading): New fontifier for ATX and Setext headings. (markdown-ts--fontify-thematic-break): New fontifier showing horizontal line when markup is hidden. (markdown-ts--fontify-code-block): New fontifier applying background overlay to code blocks with language and mode properties. (markdown-ts-at-code-block-p) (markdown-ts-code-block-language-at) (markdown-ts-code-block-mode-at): New accessors for code block overlay properties. (markdown-ts--imenu-code-block-node-p): New helper for imenu code block detection. (markdown-ts--image-alone-on-line-p) (markdown-ts--fontify-image): New inline image display with standalone and inline positioning. (markdown-ts--bare-url-regexp) (markdown-ts--bare-email-uri-regexp) (markdown-ts--fontify-bare-uri): New bare URL/email fontification via jit-lock using goto-addr regexps. (markdown-ts--treesit-settings): Rewrite with dedicated faces, custom fontifiers, and new font-lock features for all inline and block elements. Also add a new 'error' font-lock feature highlighting tree-sitter ERROR nodes. (markdown-ts--code-block-languages) (markdown-ts--code-block-non-ts-modes): New buffer-local alists for code block language tracking. (markdown-ts--harvest-mode-treesit-configuration): Rename from markdown-ts--harvest-treesit-configs with delay-mode-hooks. (markdown-ts--configure-current-buffer): Rename from markdown-ts--add-config-for-mode. (markdown-ts--language-at-node): New helper extracting language symbol from code_fence_content node. (markdown-ts--non-ts-fontify-cache): New buffer-local hash table caching fontification results for non-tree-sitter code blocks. (markdown-ts--fontify-non-ts-collect-faces): New function harvesting face properties from a mode in an indirect or temporary buffer. (markdown-ts--fontify-non-ts-code-block): New fontifier for non-tree-sitter modes via temporary buffer font-lock. (markdown-ts--code-block-language-mode): New function with heuristic mode name probing. (markdown-ts--code-block-ts-language): Rename from markdown-ts--convert-code-block-language with support for non-ts modes and recursive markdown handling. (markdown-ts-code-block-commands) (markdown-ts-code-block-thing-commands) (markdown-ts-code-block-region-commands): New command lists for code-block context execution. (markdown-ts--enable-code-block-in-context-mode) (markdown-ts--maybe-run-command-in-code-block) (markdown-ts--code-block-xref-find-definitions) (markdown-ts--run-command-in-code-block): New code block minor mode with temp-buffer command dispatch. (markdown-ts--code-block-newline): New command for newline inside code blocks, dispatching to the block's mode. (markdown-ts--range-settings): Update range configuration; remove :range-fn treesit-range-fn-exclude-children. (markdown-ts--remove-image-overlays) (markdown-ts--outline-view-change): New helpers for image overlay management during outline fold/unfold. (markdown-ts--outline-invisible-p): New helper testing whether a position is inside an outline-folded region. (markdown-ts--host-ranges-notifier): New function pruning stale code block overlays when the host parse tree changes. (markdown-ts--barf-if-not-mode): New helper signaling a user-error when the current buffer is not derived from markdown-ts-mode. (markdown-ts-code-block-in-context-mode): New minor mode enabled when point is within a fenced code block, activating markdown-ts-code-block-in-context-mode-map so eligible commands dispatch to the block's major mode. (markdown-ts--set-hide-markup): Clear image overlays when toggling markup visibility. (markdown-ts--set-inline-images) (markdown-ts-toggle-inline-images): New functions for toggling inline image display. (markdown-ts--parser-heading-max-level): New constant. (markdown-ts--heading-at-point, markdown-ts--heading-level) (markdown-ts--section-at-point): New heading navigation helpers. (markdown-ts-promote, markdown-ts-demote): New commands for heading and list item promotion/demotion with region support. (markdown-ts--promote-or-demote) (markdown-ts--promote-or-demote-region): New heading level adjustment functions. (markdown-ts-move-subtree-up, markdown-ts-move-subtree-down): New commands for moving sections and list items. (markdown-ts--section-folded-p) (markdown-ts--move-subtree-up-or-down): New subtree move with folding state preservation. (markdown-ts-toggle-checkbox): New command to toggle task list checkboxes. (markdown-ts--list-item-at-point): New helper with block quote marker handling. (markdown-ts--list-marker-width, markdown-ts--list-item-region) (markdown-ts--list-ordered-item-p): New list item helpers. (markdown-ts--list-promote-or-demote): New function with ordered list nesting guard. (markdown-ts--list-node-bol, markdown-ts--list-move): New list item movement functions. (markdown-ts-renumber-list): New command for sequential list renumbering with prefix argument support. (markdown-ts--list-item-new-marker) (markdown-ts--new-marker-for-line): New marker string generators for list item insertion. (markdown-ts--line-block-quote-depth): New helper counting block quote depth. (markdown-ts-newline): New RET command for context-aware newline. (markdown-ts-insert-list-item): New M-RET command that creates a new list item. (markdown-ts--fill-unfillable-block-query): New tree-sitter query for unfillable blocks. (markdown-ts--list-item-text-column): New helper for list item text alignment. (markdown-ts--fill-list-item): New function filling within list items without merging adjacent items. (markdown-ts--adaptive-fill): New adaptive fill function for list item continuation. (markdown-ts--fill-forward-paragraph): New paragraph motion respecting list items and unfillable blocks. (markdown-ts-fill-paragraph): New fill-paragraph-function with cond* dispatch for lists, block quotes, HTML comments, and unfillable blocks. (markdown-ts--fill-html-comment): New HTML comment filler with continuation alignment. (markdown-ts--block-quote-prefix): New helper preserving existing block quote marker style. (markdown-ts--fill-block-quote): New block quote filler with list item text column alignment. (markdown-ts-emphasis-alist): New alist of emphasis markers. (markdown-ts--emphasis-node-at-point): New tree-sitter based emphasis detection. (markdown-ts-remove-emphasis): New command removing emphasis at point or region. (markdown-ts-emphasize): New interactive emphasis insertion with region wrapping and word-at-point support. (markdown-ts-insert-structure): New command for inserting code blocks, block quotes, and dividers. (markdown-ts--insert-code-block): New function with language completion from known modes. (markdown-ts--insert-block-quote): New function with region wrapping. (markdown-ts--insert-divider): New function for horizontal rules. (markdown-ts--apply-ellipsis): New function applying custom ellipsis via display table. (markdown-ts--set-up): Rename from markdown-ts-setup. (markdown-ts-outline-cycle): New TAB command cycling outline visibility on headings. (markdown-ts-mode-map): New keymap for code block navigation, bindings for heading navigation, structure editing, emphasis, and list operations. (markdown-ts-code-block-in-context-mode-map): New keymap for code block context. (markdown-ts-mode-menu): New menu bar with Show/Hide, Navigate Headings, Edit Structure, and Editing sections. (markdown-ts-mode): Add outline-minor-mode, ellipsis, folding, fill-paragraph integration, code-block-context-mode hooks, comment settings, and outline-view-change-hook. Use markdown-ts-mode directly in auto-mode-alist instead of markdown-ts-mode-maybe. (markdown-ts-mode-install-parsers): New command for installing required and optional tree-sitter language grammars. (markdown-ts-code-block-context-mode): New minor mode for code block context. (markdown-ts--find-code-block-delimiter) (markdown-ts--find-next-code-block-delimiter): New helpers for locating fenced code block delimiter nodes. (markdown-ts-move-to-next-code-block) (markdown-ts-move-to-previous-code-block): New commands for navigating between fenced code blocks. (markdown-ts--table-abutting-pos, markdown-ts--table-node-cell) (markdown-ts--table-node-row, markdown-ts--table-parse-error-p): New pipe table node helpers. (markdown-ts-at-table-p): New predicate returning non-nil when point is at or within a pipe table. (markdown-ts--enable-in-table-mode): New helper enabling markdown-ts-in-table-mode from post-command-hook. (markdown-ts--table-body-row-near-pos): New helper locating the nearest body row to a position. (markdown-ts--table-compute-node-column) (markdown-ts-table--goto-column): New helpers for column-based table navigation. (markdown-ts--table-aligners, markdown-ts--table-make-aligner) (markdown-ts--table-align-cell): New table cell alignment helpers. (markdown-ts-table-insert-table): New command to insert a pipe table with configurable rows and columns. (markdown-ts-table-delete-table): New command to delete the pipe table at point. (markdown-ts-table-previous-row, markdown-ts-table-next-row) (markdown-ts-table-previous-cell, markdown-ts-table-next-cell): New commands for navigating table rows and cells. (markdown-ts-table-insert-row-below) (markdown-ts-table-insert-row-above) (markdown-ts-table-clone-row-below) (markdown-ts-table-clone-row-above) (markdown-ts-table-insert-row): New commands for inserting and cloning table rows. (markdown-ts-table-delete-row, markdown-ts-table-move-row-up) (markdown-ts-table-move-row-down, markdown-ts-table-move-row): New commands for deleting and moving table rows. (markdown-ts-table-insert-column-left) (markdown-ts-table-insert-column-right) (markdown-ts-table-clone-column-left) (markdown-ts-table-clone-column-right) (markdown-ts-table-insert-column): New commands for inserting and cloning table columns. (markdown-ts-table-delete-column) (markdown-ts-table-move-column-left) (markdown-ts-table-move-column-right) (markdown-ts-table-move-column): New commands for deleting and moving table columns. (markdown-ts-table-align-column-left) (markdown-ts-table-align-column-center) (markdown-ts-table-align-column-right) (markdown-ts-table-align-column): New commands for setting column alignment. (markdown-ts-table-align-table): New command to align all columns in the table at point. (markdown-ts-table-transpose-table): New command to transpose the table at point. (markdown-ts-table-convert-csv-region) (markdown-ts-table-convert-tsv-region) (markdown-ts-table-convert-region): New commands to convert delimited text regions to pipe tables. (markdown-ts-table-export-table-csv) (markdown-ts-table-export-table-tsv) (markdown-ts-table-export-table): New commands to export the pipe table at point to CSV or TSV format. (markdown-ts-in-table-mode-map): New keymap for markdown-ts-in-table-mode. (markdown-ts--code-block-in-context-mode-ov): New buffer-local variable for code block context overlay. (markdown-ts--code-block-in-context-mode-update-ov): New function updating the code block context overlay. (markdown-ts-in-table-mode): New minor mode enabled when point is within a pipe table, activating markdown-ts-in-table-mode-map. (markdown-ts--in-table-mode-ov) (markdown-ts--in-table-mode-get-ov) (markdown-ts--table-tick-update) (markdown-ts--table-tick-stale-p) (markdown-ts--in-table-mode-update-ov): New helpers supporting markdown-ts-in-table-mode overlay management. (markdown-ts-table-mode): New minor mode providing table editing commands and auto-alignment. (markdown-ts-mode-maybe): Remove; auto-mode-alist now uses markdown-ts-mode directly. Auto-mode-alist: Add .markdown and .mdx extensions. * lisp/textmodes/markdown-ts-mode-x.el: New file providing extra features for markdown-ts-mode. (markdown-ts-commonmark-spec-url, markdown-ts-gfm-spec-url): New constants for CommonMark and GFM specification URLs. (markdown-ts-browse-commonmark-spec) (markdown-ts-browse-gfm-spec): New commands to browse the CommonMark and GFM specifications. (markdown-ts-convert): New customization group for Markdown conversion/export features. (markdown-ts-default-converter): New option to set the default format and converter for Markdown export. (markdown-ts-convert-display-function): New option specifying the function used to display converted output. (markdown-ts-converters): New variable listing format/converter configurations for pandoc, cmark, cmark-gfm, markdown, and markdown.pl. (markdown-ts-convert-file, markdown-ts-convert): New commands to convert Markdown buffers or files to HTML, PDF, and other formats via external converters. (markdown-ts-toc): New customization group for table of contents features. (markdown-ts-toc-generate-warn-if-none): New option controlling behavior when no TOC is found during generation. (markdown-ts-toc-update-before-save-mode-lighter): New option for the before-save TOC update minor mode lighter string. (markdown-ts-toc-slug-function): New option to select the slug algorithm used for TOC heading anchors. (markdown-ts--toc-handles, markdown-ts--toc-handle-classes): New variables defining TOC handle types and classes. (markdown-ts--toc-expand-candidate-handles, markdown-ts--tocs) (markdown-ts--tocs-sanity-check) (markdown-ts--toc-collect-candidates) (markdown-ts--toc-list-item-depth) (markdown-ts--toc-atx_header-normalize) (markdown-ts--toc-text-normalizers) (markdown-ts--toc-text-normalize): New internal helpers for TOC parsing and text normalization. (markdown-ts-toc-update-before-save-mode): New minor mode that regenerates tables of contents before saving. (markdown-ts-toc-clear-and-remove, markdown-ts-toc-clear): New commands to remove or clear TOC bodies. (markdown-ts-toc-insert-template): New command to insert a TOC template at point. (markdown-ts-toc-generate): New command to generate tables of contents in the current buffer. Includes fixes for: (bug#80613) (bug#80625) (bug#80690) 2026-05-05 Stefan Monnier nadvice.el: Make it easier to find how to change an interactive-form * lisp/emacs-lisp/nadvice.el (advice--how-alist): Add ':interactive-only'. * doc/lispref/functions.texi (Advice Combinators): Document it. (Core Advising Primitives): Use it. 2026-05-05 Stefan Monnier lisp/emacs-lisp/lisp-mode.el (lisp-fdefs): Avoid obsolete "face vars" 2026-05-04 Stefan Monnier keyboard.c: Allow SIGINT to `quit` in batch mode, instead of exit In terminal sessions, SIGINT is turned into a `quit` ELisp signal, but in batch it has traditionally killed Emacs. It can be very useful to cause a `quit` from outside the process when running in batch (e.g. for "batch" sessions that provide a REPL via stdin/out), so add a new var 'kill-emacs-on-sigint' to control that behavior. (bug#80942) * src/keyboard.c (handle_interrupt_signal): Obey `kill_emacs_on_sigint`. (init_keyboard): Use `deliver_interrupt_signal` for SIGINT also for batch sessions. (syms_of_keyboard): New variable `kill_emacs_on_sigint`. * test/src/keyboard-tests.el (keyboard-sigint-to-quit): New test. * doc/emacs/cmdargs.texi (Initial Options): Mention the effect of `kill-emacs-on-sigint` in batch mode. 2026-05-04 Michael Albinus Adaot tramp-tests.el * test/lisp/net/tramp-tests.el (ert-remote-temporary-file-directory): Ensure that it is expanded. 2026-05-04 Michael Albinus * admin/notes/documentation: Recommend not using "it's". 2026-05-04 João Távora Jsonrpc: add new tests using Python subprocesses Most of these tests are for the scontrol/"anxious continuation" mechanism (bug#80623) The new ERT tests use Python subprocesses via stdin/stdout pipe as JSONRPC endpoints. A shared framing library lives in jsonrpc-resources/common.py. * test/lisp/jsonrpc-tests.el (jsonrpc--test-dir): New constant. (jsonrpc--with-python-fixture): New macro. (scontrol-remote-during-sync-1) (scontrol-remote-during-sync-2) (scontrol-anxious-nested) (scontrol-remote-error) (shutdown-clean-after-notification): New tests. * test/lisp/jsonrpc-resources/common.py: New file. * test/lisp/jsonrpc-resources/server-remote-during-sync-1.py: New file. * test/lisp/jsonrpc-resources/server-remote-during-sync-2.py: New file. * test/lisp/jsonrpc-resources/server-anxious-nested.py: New file. * test/lisp/jsonrpc-resources/server-remote-error.py: New file. * test/lisp/jsonrpc-resources/server-harakiri.py: New file. 2026-05-04 João Távora Jsonrpc: rework sync request handling (bug#80623) When the remote endpoint is handling a local request 'LR' it can sometimes make a remote sync request 'RR' as part of its handling. Some endpoints (like Go's gopls) wait for Emacs's reply to 'RR' before responding to 'LR'. Others (like Julia's JETLS) respond to 'LR' immediately, and only then wait for Emacs's reply to 'RR'. Both approaches are valid. However, in the latter case, the handling of 'RR' (which could well be waiting for user input from the minibuffer to complete) is vulnerable to 'throw' from process filters handling (which is just what happens when the endpoints replies to 'LR'), so if that happens it will unexpectedly be aborted when the reply to 'LR' comes in, suprising the user and causing a spurious -32603 reply to be sent. To solve this problem, this commit first refactors the sync request/anxious queue handling and replace plain integer keys of the rebaptized "scontrol" alist with structured (:local ID) / (:remote ID) pairs, using `equal' for comparisons. This is to introduce some clarity/sanity into this somewhat hairy code. Then, the 'RR' situation is fixed: we push a (:remote ID) entry onto the top of the 'jsonrpc-connection--control' stack and only then call rdispatcher. Any 'LR' reply arriving during dispatch is deferred as an "anxious" continuation rather than firing its `throw' immediately. When rdispatcher is done, we call jsonrpc--continue at a safe point, this will run any "anxious" continuations. * lisp/jsonrpc.el (jsonrpc-connection): Rename -sync-request-alist to -scontrol; accessor from jsonrpc--sync-request-alist to jsonrpc--scontrol; update docstring for new key structure. (jsonrpc-connection-receive): Update with-slots binding to scontrol. Tighten anxious check to match (:local ID) keys with `equal'. In remote-request branch, push (:remote ID) entry before rdispatcher and call jsonrpc--continue after jsonrpc--reply. (jsonrpc-request): Pass (:local ID) to jsonrpc--continue. (jsonrpc--continue): Use jsonrpc--scontrol; change `=' to `equal' in sanity check. p (jsonrpc--async-request-1): Push (:local ID) entry. (jsonrpc--log-event): Use jsonrpc--scontrol. 2026-05-04 Dmitry Gutov Re-add a call to clear_under_internal_border in clear_garbaged_frames * src/xdisp.c (clear_garbaged_frames): Re-add the call to clear_under_internal_border, reverting that part of commit a6a3b32208c5 as not essential to the fix (bug#80662). 2026-05-03 Philip Kaludercic Ensure package archives are loaded for 'package-isolate' * lisp/emacs-lisp/package.el (package-isolate): Use 'package--archive-contents' instead of the actual variable, to ensure that we load the archive contents if missing. This is likely the case if 'package-isolate' is the first package function invoked during a session. 2026-05-03 Philip Kaludercic Add for to 'html-tag-alist' and 'html-tag-help' * lisp/textmodes/sgml-mode.el (html-tag-alist): Add very basic skeleton. (html-tag-help): Add description. 2026-05-03 Philip Kaludercic Add for
to 'html-tag-alist' and 'html-tag-help' * lisp/textmodes/sgml-mode.el (html-tag-alist): Add skeleton. (html-tag-help): Add description. 2026-05-03 Philip Kaludercic Prevent indentation within whitespace sensitive HTML tags * lisp/textmodes/sgml-mode.el (sgml-whitespace-sensitive-tags): Add new variable. (sgml-calculate-indent): Check if in the context of a tag specified by 'sgml-whitespace-sensitive-tags'. (html-mode): Set 'sgml-whitespace-sensitive-tags' to not adjust the indentation within
 and