From ec3d662de0bab08f8b68666d13c662c3193c2645 Mon Sep 17 00:00:00 2001 From: Amin Bandali Date: Sun, 24 May 2026 10:46:54 -0400 Subject: [PATCH 1/9] 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". --- lisp/net/eww.el | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lisp/net/eww.el b/lisp/net/eww.el index 9acbaa52fa9..542afa41180 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -1771,7 +1771,10 @@ just re-display the HTML already fetched." (put-text-property start (point) 'keymap eww-submit-map) ;; Pretend to touch-screen.el that this is a button. (put-text-property start (point) 'button t) - (insert " "))) + (insert " ") + (put-text-property start (1+ start) 'help-echo "Button") + ;; Mark this as an element we can TAB to. + (put-text-property start (1+ start) 'shr-tab-stop t))) (defun eww-form-checkbox (dom) (let ((start (point))) @@ -1991,7 +1994,8 @@ See URL `https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input'.") :value (or (dom-attr dom 'value) ""))))))) (t (eww-form-text dom))) - (unless (= start (point)) + (unless (or (= start (point)) + (equal type "submit")) (put-text-property start (1+ start) 'help-echo "Input field") ;; Mark this as an element we can TAB to. (put-text-property start (1+ start) 'shr-tab-stop t)))) From aac5e0457aeef68ddc64b25adf5039e69f3fdc17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Sat, 30 May 2026 14:28:32 +0100 Subject: [PATCH 2/9] 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. --- doc/misc/eglot.texi | 12 ++++++++++++ etc/EGLOT-NEWS | 12 ++++++++---- lisp/progmodes/eglot.el | 35 +++++++++++++++++++++++++---------- 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/doc/misc/eglot.texi b/doc/misc/eglot.texi index d501fe32d5d..c7c296c24ff 100644 --- a/doc/misc/eglot.texi +++ b/doc/misc/eglot.texi @@ -996,6 +996,18 @@ same language server. That file is still outside your project will consider it to be part of the workspace. The default is @code{nil}. +@cindex markdown renderer +@item eglot-documentation-renderer +This variable controls how Eglot renders at-point documentation +imported from the server (@pxref{Eglot Features}). By default, the +variable's value is set during startup to a markdown renderer if +available, either @code{markdown-ts-view-mode} or +@code{gfm-view-mode}. These utilities visually enhance the +documentation content through fontification and other formatting. If +you set it to @code{t}, plain text will be requested from the server +and no rendering is attempted. If the variable's value is @code{nil}, +Eglot will attempt to find a suitable renderer every time. + @item eglot-mode-map This variable is the keymap for binding Eglot-related command. It is in effect only as long as the buffer is managed by Eglot. By default, it diff --git a/etc/EGLOT-NEWS b/etc/EGLOT-NEWS index eb4040d107e..f0f595fa500 100644 --- a/etc/EGLOT-NEWS +++ b/etc/EGLOT-NEWS @@ -32,11 +32,15 @@ New key bindings: 'k' shuts down, 'r' reconnects, 'e' visits the events buffer, 'w' shows workspace configuration, and 'RET' invokes 'eglot-describe-connection'. -** Eglot uses new built-in 'markdown-ts-mode' of Emacs 31 (bug#80127) +** New LSP documentation rendering backends (bug#80127) -This means that on newer versions of Emacs the external -'markdown-mode.el' package does not need to be installed to render -Markdown content. +Eglot uses new built-in 'markdown-ts-mode' of Emacs 31, which means that +on newer versions of Emacs the external 'markdown-mode.el' package does +not need to be installed to render Markdown content. + +The variable 'eglot-documentation-renderer' replaces the now-obsolete +'eglot-prefer-plaintext'. By default, the variable selects a markdown +renderer to use throughout the session. * Changes in Eglot 1.23 (2/4/2026) diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index e945dfb9739..504a5e12112 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -149,6 +149,8 @@ 'eglot-managed-mode-hook "1.6") (define-obsolete-variable-alias 'eglot-confirm-server-initiated-edits 'eglot-confirm-server-edits "1.16") +(define-obsolete-variable-alias 'eglot-prefer-plaintext + 'eglot-documentation-renderer "1.24") (make-obsolete-variable 'eglot-events-buffer-size 'eglot-events-buffer-config "1.16") (define-obsolete-function-alias 'eglot--uri-to-path #'eglot-uri-to-path "1.16") @@ -535,10 +537,21 @@ or file operation kinds not in the alist." "If non-nil, activate Eglot in cross-referenced non-project files." :type 'boolean) -(defcustom eglot-prefer-plaintext nil - "If non-nil, always request plaintext responses to hover requests." - :type 'boolean - :package-version '(Eglot . "1.17.30")) +(defcustom eglot-documentation-renderer (cond ((eglot--builtin-mdown-p) + 'markdown-ts-view-mode) + ((fboundp 'gfm-view-mode) + 'gfm-view-mode) + (t + nil)) + "Control rendering of LSP documentation fragments. +If set to a major mode symbol `gfm-view-mode' or `markdown-ts-view-mode' +request markdown-snippets and use the corresponding Markdown renderer. +If t, always request and render plain text snippets. If set to nil, +decide dynamically." + :type '(choice (const :tag "Plain text" t) + (const :tag "Auto-detect" nil) + (function :tag "Renderer")) + :package-version '(Eglot . "1.24")) (defcustom eglot-report-progress t "If non-nil, show progress of long running LSP server work. @@ -733,7 +746,7 @@ This can be useful when using docker to run a language server.") (treesit-grammar-location 'markdown))) (defun eglot--accepted-formats () - (if (and (not eglot-prefer-plaintext) + (if (and (not (eq t eglot-documentation-renderer)) (or (fboundp 'gfm-view-mode) (eglot--builtin-mdown-p))) ["markdown" "plaintext"] ["plaintext"])) @@ -2263,12 +2276,14 @@ If MODE, force MODE to be used for fontifying MARKUP." finally return (buffer-string))) (calc2 (forced-mode) (cond - (forced-mode `(,forced-mode)) - ((eglot--builtin-mdown-p) `(,#'markdown-ts-view-mode)) - ((fboundp 'gfm-view-mode) `(,#'gfm-view-mode ,#'gfm-extract)) - (t `(#'text-mode)))) + (forced-mode forced-mode) + ((fboundp eglot-documentation-renderer) eglot-documentation-renderer) + ((eglot--builtin-mdown-p) #'markdown-ts-view-mode) + ((fboundp 'gfm-view-mode) #'gfm-view-mode) + (t #'text-mode))) (calc (s &optional (forced-mode mode) &aux (x (calc2 forced-mode))) - (setq string s render (car x) extract (or (cadr x) #'buffer-string)))) + (setq string s render x + extract (if (eq x 'gfm-view-mode) #'gfm-extract #'buffer-string)))) (cond ((stringp markup) (calc markup)) ; plain string ((setq lang (plist-get markup :language)) ; deprecated MarkedString (calc (format "```%s\n%s\n```" lang (plist-get markup :value)))) From 0bfbe06090c468c1edef835fdf4af226b88461c9 Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Sun, 31 May 2026 01:42:27 -0400 Subject: [PATCH 3/9] Update to Org 9.8.5 --- etc/refcards/orgcard.tex | 2 +- lisp/org/org-agenda.el | 2 +- lisp/org/org-clock.el | 16 +++++++++------- lisp/org/org-colview.el | 1 + lisp/org/org-table.el | 8 +++++--- lisp/org/org-timer.el | 2 +- lisp/org/org-version.el | 4 ++-- lisp/org/org.el | 2 +- lisp/org/ox-koma-letter.el | 1 - lisp/org/ox-latex.el | 2 +- lisp/org/ox-odt.el | 2 +- 11 files changed, 23 insertions(+), 19 deletions(-) diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex index dcd3208d132..8b38b98897e 100644 --- a/etc/refcards/orgcard.tex +++ b/etc/refcards/orgcard.tex @@ -1,5 +1,5 @@ % Reference Card for Org Mode -\def\orgversionnumber{9.8.3} +\def\orgversionnumber{9.8.5} \def\versionyear{2026} % latest update \input emacsver.tex diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el index dd86a716ac7..481eba50313 100644 --- a/lisp/org/org-agenda.el +++ b/lisp/org/org-agenda.el @@ -7875,7 +7875,7 @@ in the agenda." "Rebuild possibly ALL agenda view(s) in the current buffer." (interactive "P") (defvar org-agenda-tag-filter-while-redo) ;FIXME: Where is this var used? - (let* ((p (or (and (looking-at "\\'") (1- (point))) (point))) + (let* ((p (or (and (/= 1 (point)) (looking-at "\\'") (1- (point))) (point))) (cpa (unless (eq all t) current-prefix-arg)) (org-agenda-doing-sticky-redo org-agenda-sticky) (org-agenda-sticky nil) diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el index ce2d23a9b97..b803d0fe874 100644 --- a/lisp/org/org-clock.el +++ b/lisp/org/org-clock.el @@ -1991,13 +1991,15 @@ Optional argument N tells to change by that many units." (user-error "No active clock")) (save-excursion ; Do not replace this with `with-current-buffer'. (with-no-warnings (set-buffer (org-clocking-buffer))) - (goto-char org-clock-marker) - (if (looking-back (concat "^[ \t]*" org-clock-string ".*") - (line-beginning-position)) - (progn (delete-region (1- (line-beginning-position)) (line-end-position)) - (org-remove-empty-drawer-at (point))) - (message "Clock gone, cancel the timer anyway") - (sit-for 2))) + (save-restriction + (widen) + (goto-char org-clock-marker) + (if (looking-back (concat "^[ \t]*" org-clock-string ".*") + (line-beginning-position)) + (progn (delete-region (1- (line-beginning-position)) (line-end-position)) + (org-remove-empty-drawer-at (point))) + (message "Clock gone, cancel the timer anyway") + (sit-for 2)))) (move-marker org-clock-marker nil) (move-marker org-clock-hd-marker nil) (setq org-clock-current-task nil) diff --git a/lisp/org/org-colview.el b/lisp/org/org-colview.el index 8b97aa2ad01..6eed2351ceb 100644 --- a/lisp/org/org-colview.el +++ b/lisp/org/org-colview.el @@ -3,6 +3,7 @@ ;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik +;; Maintainer: Slawomir Grochowski ;; Keywords: outlines, hypermedia, calendar, text ;; URL: https://orgmode.org ;; diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el index ba33f6724a0..32cea3e4b0b 100644 --- a/lisp/org/org-table.el +++ b/lisp/org/org-table.el @@ -2953,6 +2953,8 @@ known that the table will be realigned a little later anyway." (log-first-time (current-time)) (log-last-time log-first-time) (cnt 0) + (table-beg org-table-current-begin-pos) + (table-end (org-table-end)) beg end eqlcol eqlfield) ;; Insert constants in all formulas. (when eqlist @@ -2989,8 +2991,8 @@ existing formula for column %s" ;; Get the correct line range to process. (if all (progn - (setq end (copy-marker (org-table-end))) - (goto-char (setq beg org-table-current-begin-pos)) + (setq end (copy-marker table-end)) + (goto-char (setq beg table-beg)) (cond ((re-search-forward org-table-calculate-mark-regexp end t) ;; This is a table with marked lines, compute selected @@ -3005,7 +3007,7 @@ existing formula for column %s" (t nil))) (setq beg (line-beginning-position) end (copy-marker (line-beginning-position 2)))) - (org-combine-change-calls beg end + (org-combine-change-calls table-beg table-end (goto-char beg) ;; Mark named fields untouchable. Also check if several ;; field/range formulas try to set the same field. diff --git a/lisp/org/org-timer.el b/lisp/org/org-timer.el index 8c9df9d379f..d6d7cfaa43b 100644 --- a/lisp/org/org-timer.el +++ b/lisp/org/org-timer.el @@ -436,7 +436,7 @@ using three \\[universal-argument] prefix arguments." (and (not (equal opt '(64))) effort-minutes (number-to-string effort-minutes)) - (and (consp opt) default-timer) + (and (consp opt) (not (equal opt '(64))) default-timer) (and (stringp opt) opt) (read-from-minibuffer "How much time left? (minutes or h:mm:ss) " diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el index b6a6d1d4eec..f0a212f2ef0 100644 --- a/lisp/org/org-version.el +++ b/lisp/org/org-version.el @@ -5,13 +5,13 @@ (defun org-release () "The release version of Org. Inserted by installing Org mode or when a release is made." - (let ((org-release "9.8.3")) + (let ((org-release "9.8.5")) org-release)) ;;;###autoload (defun org-git-version () "The Git version of Org mode. Inserted by installing Org or when a release is made." - (let ((org-git-version "release_9.8.3")) + (let ((org-git-version "release_9.8.5")) org-git-version)) (provide 'org-version) diff --git a/lisp/org/org.el b/lisp/org/org.el index 84b4f245f8e..ba31ad67bd1 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el @@ -9,7 +9,7 @@ ;; URL: https://orgmode.org ;; Package-Requires: ((emacs "28.2")) -;; Version: 9.8.3 +;; Version: 9.8.5 ;; This file is part of GNU Emacs. ;; diff --git a/lisp/org/ox-koma-letter.el b/lisp/org/ox-koma-letter.el index 61b624e870d..3a17dceb2fb 100644 --- a/lisp/org/ox-koma-letter.el +++ b/lisp/org/ox-koma-letter.el @@ -6,7 +6,6 @@ ;; Alan Schmitt ;; Viktor Rosenfeld ;; Rasmus Pank Roulund -;; Maintainer: Marco Wahl ;; Keywords: org, text, tex ;; This file is part of GNU Emacs. diff --git a/lisp/org/ox-latex.el b/lisp/org/ox-latex.el index b4d1ada8d5e..1feddac37cd 100644 --- a/lisp/org/ox-latex.el +++ b/lisp/org/ox-latex.el @@ -3,7 +3,7 @@ ;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou -;; Maintainer: Daniel Fleischer +;; Maintainer: Pedro A. Aranda ;; Keywords: outlines, hypermedia, calendar, text ;; This file is part of GNU Emacs. diff --git a/lisp/org/ox-odt.el b/lisp/org/ox-odt.el index 232a643738f..03a47c86995 100644 --- a/lisp/org/ox-odt.el +++ b/lisp/org/ox-odt.el @@ -2869,7 +2869,7 @@ Style is a symbol among `quoted', `centered' and nil." (org-element-lineage paragraph '(center-block quote-block section))) - (center-block 'center) + (center-block 'centered) (quote-block 'quoted))) (defun org-odt--format-paragraph (paragraph contents info default center quote) From f1dd84bec9947586d9bd12824a8084ef5edc2055 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 31 May 2026 12:29:50 +0300 Subject: [PATCH 4/9] ; * lisp/play/doctor.el (doctor-death): Fix Samaritans URL (bug#81155). --- lisp/play/doctor.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/play/doctor.el b/lisp/play/doctor.el index 54bdf799f95..7808278518d 100644 --- a/lisp/play/doctor.el +++ b/lisp/play/doctor.el @@ -1606,7 +1606,7 @@ Hack on previous word, setting global variable DOCTOR-OWNER to correct result." (setq doctor--suicide-flag t) (doctor-type '( If you are really suicidal\, you might want to contact the Samaritans via - e-mail: jo@samaritans.org \. + https://www.samaritans.org/how-we-can-help/contact-samaritan/ \. or find a Befrienders crisis center at https://www.befrienders.org/\ \. you can also find other suicide crisis lines at From 2727a6f4e8d07f3b6cd984fae90dc16f122e5796 Mon Sep 17 00:00:00 2001 From: Aaron Jensen Date: Sat, 30 May 2026 16:20:33 +0000 Subject: [PATCH 5/9] ; Document problems caused by validation of *.eln files on macOS * etc/PROBLEMS: Document slowdown on macOS caused by the OS validation of *.eln files. --- etc/PROBLEMS | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/etc/PROBLEMS b/etc/PROBLEMS index 655bfd6c173..c01b9e079ea 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -3646,6 +3646,38 @@ file; for example: "/usr/local/opt/libgccjit/lib/gcc/11" "/usr/local/opt/gcc/lib/gcc/11/gcc/x86_64-apple-darwin20/11.2.0") ":")) +** Stuttering and missed keypresses during Native Compilation on macOS + +Natively compiled modules are validated by macOS the first time that +they are loaded. On some machines, this can cause Emacs to be +temporarily less responsive while large batches of modules are being +compiled and loaded. + +One can force the first load of the module to happen in the async +compilation worker by adding this to their early-init.el: + +(setq native-comp-async-env-modifier-form + '(progn + (defun c/native-comp--preload-eln-after-compile + (compile function-or-file &optional with-late-load output) + "Preload async native-comp output in the compiler child." + (prog1 (funcall compile function-or-file with-late-load output) + (when (and (stringp function-or-file) with-late-load) + (with-demoted-errors "Async native .eln preload: %S" + (let ((eln-file (comp-el-to-eln-filename function-or-file))) + (when (file-exists-p eln-file) + (native-elisp-load eln-file t))))))) + + (advice-add 'comp--native-compile + :around #'c/native-comp--preload-eln-after-compile))) + +Alternatively, if one is willing to accept the associated security +risks, one could disable library validation on their Emacs binary: + +codesign --force --sign - \ + --entitlements macos-disable-library-validation.entitlements \ + src/emacs + ** Text dictation doesn't work on macOS The indication is that the macOS keyboard shortcut for dictation is ignored. From cc9f35c54bab5f2250c660ea475fc029bcc4bf94 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 31 May 2026 12:40:11 +0300 Subject: [PATCH 6/9] ; * etc/PROBLEMS: Minor fixes of last change. --- etc/PROBLEMS | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/etc/PROBLEMS b/etc/PROBLEMS index c01b9e079ea..54302968e6d 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -3649,34 +3649,37 @@ file; for example: ** Stuttering and missed keypresses during Native Compilation on macOS Natively compiled modules are validated by macOS the first time that -they are loaded. On some machines, this can cause Emacs to be -temporarily less responsive while large batches of modules are being -compiled and loaded. +they are loaded. On some machines, this can cause Emacs to be +temporarily less responsive while a large number of '*.eln' files are +being compiled and loaded. One can force the first load of the module to happen in the async compilation worker by adding this to their early-init.el: -(setq native-comp-async-env-modifier-form - '(progn - (defun c/native-comp--preload-eln-after-compile - (compile function-or-file &optional with-late-load output) - "Preload async native-comp output in the compiler child." - (prog1 (funcall compile function-or-file with-late-load output) - (when (and (stringp function-or-file) with-late-load) - (with-demoted-errors "Async native .eln preload: %S" - (let ((eln-file (comp-el-to-eln-filename function-or-file))) - (when (file-exists-p eln-file) - (native-elisp-load eln-file t))))))) + (setq native-comp-async-env-modifier-form + '(progn + (defun c/native-comp--preload-eln-after-compile + (compile function-or-file &optional with-late-load output) + "Preload async native-comp output in the compiler child." + (prog1 (funcall compile function-or-file with-late-load output) + (when (and (stringp function-or-file) with-late-load) + (with-demoted-errors "Async native .eln preload: %S" + (let ((eln-file (comp-el-to-eln-filename function-or-file))) + (when (file-exists-p eln-file) + (native-elisp-load eln-file t))))))) - (advice-add 'comp--native-compile - :around #'c/native-comp--preload-eln-after-compile))) + (advice-add 'comp--native-compile + :around #'c/native-comp--preload-eln-after-compile))) Alternatively, if one is willing to accept the associated security risks, one could disable library validation on their Emacs binary: -codesign --force --sign - \ - --entitlements macos-disable-library-validation.entitlements \ - src/emacs + codesign --force --sign - \ + --entitlements macos-disable-library-validation.entitlements \ + src/emacs + +Disabling validation might expose you to security risks, so please +consider that before using this recipe. ** Text dictation doesn't work on macOS From 271cc5c76c06b30e84d84b42e71be6f7fb772562 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Sun, 31 May 2026 21:36:12 +0300 Subject: [PATCH 7/9] 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). --- .../fill-paragraph-handle-comment.erts | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/test/lisp/textmodes/fill-resources/fill-paragraph-handle-comment.erts b/test/lisp/textmodes/fill-resources/fill-paragraph-handle-comment.erts index c7c9e96ea50..5e46ca35817 100644 --- a/test/lisp/textmodes/fill-resources/fill-paragraph-handle-comment.erts +++ b/test/lisp/textmodes/fill-resources/fill-paragraph-handle-comment.erts @@ -1,6 +1,6 @@ Point-Char: | -Name: fill-paragraph-handle-comment - non-comment line before comment line +Name: fill-paragraph-handle-comment - current non-comment line before comment line Code: (lambda () (setq-local comment-start "# ") @@ -21,7 +21,22 @@ not part of the comment =-=-= -Name: fill-paragraph-handle-comment - non-comment line after comment line +Name: fill-paragraph-handle-comment - non-comment line before current comment line + +=-= + +this is not part of the comment this is not part of the comment +# this is a comment this is a comment this is a comment| + +=-= + +this is not part of the comment this is not part of the comment +# this is a comment this is a comment this +# is a comment + +=-=-= + +Name: fill-paragraph-handle-comment - comment line before current non-comment line =-= @@ -35,3 +50,18 @@ this is not part of the comment this is not part of the comment =-=-= + +Name: fill-paragraph-handle-comment - current comment line before non-comment line + +=-= + +# this is a comment this is a comment this is a comment| +this is not part of the comment this is not part of the comment + +=-= + +# this is a comment this is a comment this +# is a comment +this is not part of the comment this is not part of the comment + +=-=-= From 51f823a3afa48b4515594470e245940989e4151d Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Mon, 1 Jun 2026 09:50:56 +0100 Subject: [PATCH 8/9] ; * etc/NEWS: Fix annotation. --- etc/NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/NEWS b/etc/NEWS index 95bc966d47d..dc45122a6db 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -3005,7 +3005,7 @@ In addition, the Git backend has been fixed to display missing files as There is still some further work to do to rationalize VC's handling of file removal. ---- ++++ *** New user option 'vc-dir-auto-hide-up-to-date'. If you customize this option to 'revert', the 'g' command to refresh the VC Directory buffer also has the effect of the 'x' command. From 2c2f1c00accb7672bea7fa98d5314bfb11edfd7f Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Mon, 1 Jun 2026 09:51:08 +0100 Subject: [PATCH 9/9] ; * lisp/vc/vc-dir.el (vc-dir-update): Add an assertion. --- lisp/vc/vc-dir.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el index 98c69b48691..2cb56aac715 100644 --- a/lisp/vc/vc-dir.el +++ b/lisp/vc/vc-dir.el @@ -646,7 +646,8 @@ Also update some VC file properties from ENTRIES." (or (null next) (vc-dir-fileinfo->directory (ewoc-data next))))) (ewoc-delete vc-ewoc crt))) - (setq crt prev)))))) + (setq crt prev)))) + (cl-assert (null to-remove)))) ;; Update VC file properties. (pcase-dolist (`(,file ,state ,_extra) entries) (vc-file-setprop file 'vc-backend