commit 202d29726d8a8494637cd54c6dc09bffcda6bd24 Merge: 0f043af4dd0 0748af27c03 Author: Sean Whitton Date: Tue Jul 7 16:01:01 2026 +0100 Merge from origin/emacs-31 0748af27c03 ; * admin/notes/repo (Bisecting): Refine 'git bisect run'... c565251dd6a ; * admin/notes/repo (Bisecting): Provide a 'git bisect r... ba781ed7544 Fix blinking Eldoc messages 3e7908fe233 ; Fix two tests 924d88a736e ; Warn about killed buffers returned by 'window-prev-buff... b07e634e4cf Fix undefined behavior in pbm_load 5404761a477 ; Correct treesit-font-lock-level customize type (issue#8... 6464453558e Avoid destructively modifying 'package--builtin-alist' ffad15bf738 Update to Org 9.8.7 9ab1aa887ab Ensure, that `buffer-file-name' is expanded in tramp-archive 4721a44e8ab ; * doc/lispref/buffers.texi (Buffer File Name): Clarify ... 9777acdc95a ; etc/NEWS: Fix duplicate "Emacs Lisp mode" heading. # Conflicts: # etc/NEWS commit 0f043af4dd072639a99dcf2336e33a8601943ee0 Author: Dan Date: Fri Jul 3 11:28:34 2026 +0000 Make woman-topic-history an obsolete alias * lisp/woman.el (woman-topic-history): Make it an obsolete variable alias. (woman-file-name): Use 'Man-topic-history' instead of 'woman-topic-history' (bug#81347). * etc/NEWS: Announce the change. diff --git a/etc/NEWS b/etc/NEWS index 6c743afbe2f..4e3f8508da4 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -117,6 +117,12 @@ check out the repository to prepare a patch for the package maintainer. When a man page contains OSC 8 hyperlink escape sequences, they are now buttonized, allowing using mouse or 'RET' to follow them. +** Woman + +--- +*** The variable 'woman-topic-history' is now obsolete +Use 'Man-topic-history' instead. + ** VC +++ diff --git a/lisp/woman.el b/lisp/woman.el index dc100c6fbf2..5cdaa9b80a0 100644 --- a/lisp/woman.el +++ b/lisp/woman.el @@ -1227,7 +1227,7 @@ It is saved to the file named by the variable `woman-cache-filename'." (kill-buffer standard-output) )))) -(defvaralias 'woman-topic-history 'Man-topic-history) +(define-obsolete-variable-alias 'woman-topic-history 'Man-topic-history "32.1") (defvar woman-file-history nil "File-name read history.") (defun woman-file-name (topic &optional re-cache) @@ -1271,7 +1271,7 @@ cache to be re-read." (completing-read (format-prompt "Manual entry" default) woman-topic-all-completions nil 1 nil - 'woman-topic-history + 'Man-topic-history default)))) ;; Note that completing-read always returns a string. (unless (= (length topic) 0) commit 0748af27c03727358368b8d736d6267fe53496f5 Author: Sean Whitton Date: Tue Jul 7 15:34:27 2026 +0100 ; * admin/notes/repo (Bisecting): Refine 'git bisect run' recipe. diff --git a/admin/notes/repo b/admin/notes/repo index 1384c4eb3ba..5bf6c9d0218 100644 --- a/admin/notes/repo +++ b/admin/notes/repo @@ -138,9 +138,9 @@ command for you, recording a result based on the exit code. Suppose 'emacs -batch -eval "(foo)"' exits non-zero if and only if the bug is present. Then you may be able to use something like this: - git bisect run sh -ec '{ test -e configure && { make || make \ - bootstrap; }; } || { git clean -xdff && ./autogen.sh autoconf && \ - ./configure && make; } || exit 125; src/emacs -batch -eval "(foo)"' + git bisect run sh -xc '{ test -e Makefile && { make || make bootstrap; }; } \ + || { git clean -xdff && ./autogen.sh autoconf && ./configure && make; } \ + || exit 125; src/emacs -batch -eval "(foo)"' This tries to recompile Emacs, tries a bootstrap build if that fails, and completely empties out your working tree of build products with 'git commit bfc1998fb9401f85b97f2f67149c912d89606188 Author: Sean Whitton Date: Sat Jul 4 15:26:59 2026 +0100 New macro without-local-variable-queries (bug#81233) * lisp/files.el (without-local-variable-queries): New macro. * lisp/vc/diff-mode.el (diff-syntax-fontify-props): * lisp/vc/vc-dir.el (vc-dir--count-outgoing): * lisp/vc/vc.el (vc-find-revision-no-save): Use it. * lisp/files.el (hack-local-variables-confirm): Warn when it looks like the caller should have used it. diff --git a/lisp/files.el b/lisp/files.el index fa120f5c8ae..27a69b3fc81 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3991,6 +3991,18 @@ variable `enable-remote-dir-locals' is non-nil." :risky t :group 'find-file) +(defmacro without-local-variable-queries (&rest body) + "Execute BODY without querying user about local variable values. +In some uses, this is a workaround for the problem that a command +disables displaying new windows for its own reasons but this also breaks +`hack-local-variables-confirm'. See Emacs bug#80528 and bug#81233." + (declare (indent 0) (debug t)) + `(let ((enable-local-variables + (if (memq enable-local-variables '(:safe :all nil)) + enable-local-variables + :safe))) + ,@body)) + (defun hack-local-variables-confirm (all-vars unsafe-vars risky-vars dir-name) "Get confirmation before setting up local variable values. ALL-VARS is the list of all variables to be set up. @@ -4055,6 +4067,9 @@ i -- to ignore the local variables list, and permanently mark these ;; Display the buffer and read a choice. (save-window-excursion (pop-to-buffer buf '(display-buffer--maybe-at-bottom)) + (unless (get-buffer-window buf) + (error "Failed to display local variables buffer; this is a bug +Possibly caller should use `without-local-variable-queries', which see.")) (let* ((exit-chars '(?y ?n ?\s)) (prompt (format "Please type %s%s: " (if offer-save diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el index c1227573351..0ee055424c8 100644 --- a/lisp/vc/diff-mode.el +++ b/lisp/vc/diff-mode.el @@ -3504,25 +3504,25 @@ hunk text is not found in the source file." ;; When initialization is requested, we should be in a brand new ;; temp buffer. (cl-assert (null buffer-file-name)) - ;; Use `:safe' to find `mode:'. In case of hunk-only, use nil because - ;; Local Variables list might be incomplete when context is truncated. - (let ((enable-local-variables - (unless hunk-only - (if (memq enable-local-variables '(:safe :all nil)) - enable-local-variables - ;; Ignore other values that query. - :safe))) - (buffer-file-name file)) - ;; Don't run hooks that might assume buffer-file-name - ;; really associates buffer with a file (bug#39190). - (delay-mode-hooks (set-auto-mode)) - ;; FIXME: Is this really worth the trouble? - (when (and (fboundp 'generic-mode-find-file-hook) - (memq #'generic-mode-find-file-hook - ;; There's no point checking the buffer-local value, - ;; we're in a fresh new buffer. - (default-value 'find-file-hook))) - (generic-mode-find-file-hook)))) + (cl-flet + ((set-mode () + ;; Don't run hooks that might assume buffer-file-name + ;; really associates buffer with a file (bug#39190). + (delay-mode-hooks (set-auto-mode)) + ;; FIXME: Is this really worth the trouble? + (when (and (fboundp 'generic-mode-find-file-hook) + (memq #'generic-mode-find-file-hook + ;; There's no point checking the + ;; buffer-local value because we're in a + ;; fresh new buffer. + (default-value 'find-file-hook))) + (generic-mode-find-file-hook)))) + ;; Use `:safe' to find `mode:'. In case of hunk-only, use nil because + ;; Local Variables list might be incomplete when context is truncated. + (let ((buffer-file-name file)) + (if hunk-only + (let (enable-local-variables) (set-mode)) + (without-local-variable-queries (set-mode)))))) (let ((font-lock-defaults (or font-lock-defaults '(nil t))) props beg end) diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el index ff019bbbb8d..383e55e8444 100644 --- a/lisp/vc/vc-dir.el +++ b/lisp/vc/vc-dir.el @@ -1534,39 +1534,40 @@ uses OVERLAY." (unknown (propertize "<>" 'face 'vc-dir-header-value)) (buf (generate-new-buffer " *temp*" t)) proc) - (with-current-buffer buf - (condition-case _ - (progn - (vc-incoming-outgoing-internal backend nil - (current-buffer) - '(log-outgoing short)) - (setq proc (get-buffer-process (current-buffer))) - (overlay-put overlay 'proc proc) - (vc-run-delayed - (unwind-protect - (overlay-put - overlay 'after-string - (if (or (not (eq (process-status proc) 'exit)) - (plusp (process-exit-status proc))) - unknown - (goto-char (point-min)) - (let ((count (how-many log-view-message-re))) - (if (zerop count) - (propertize "No unpushed revisions" - 'face 'vc-dir-header-value) - (propertize - (format (ngettext "%d unpushed revision" - "%d unpushed revisions" - count) - count) - 'face 'vc-dir-header-urgent-value - 'mouse-face 'highlight - 'keymap vc-dir-outgoing-revisions-map - 'help-echo "\\\ + (without-local-variable-queries + (with-current-buffer buf + (condition-case _ + (progn + (vc-incoming-outgoing-internal backend nil + (current-buffer) + '(log-outgoing short)) + (setq proc (get-buffer-process (current-buffer))) + (overlay-put overlay 'proc proc) + (vc-run-delayed + (unwind-protect + (overlay-put + overlay 'after-string + (if (or (not (eq (process-status proc) 'exit)) + (plusp (process-exit-status proc))) + unknown + (goto-char (point-min)) + (let ((count (how-many log-view-message-re))) + (if (zerop count) + (propertize "No unpushed revisions" + 'face 'vc-dir-header-value) + (propertize + (format (ngettext "%d unpushed revision" + "%d unpushed revisions" + count) + count) + 'face 'vc-dir-header-urgent-value + 'mouse-face 'highlight + 'keymap vc-dir-outgoing-revisions-map + 'help-echo "\\\ \\[vc-root-log-outgoing]: List outgoing revisions"))))) - (kill-buffer)))) - (error (overlay-put overlay 'after-string unknown) - (kill-buffer buf))))))))) + (kill-buffer)))) + (error (overlay-put overlay 'after-string unknown) + (kill-buffer buf)))))))))) (defvar-local vc-dir-async-header-values '(("Outgoing" . vc-dir--count-outgoing)) diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index 33e3e5dced2..766551ca1ef 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -3871,17 +3871,15 @@ Unlike `vc-find-revision-save', doesn't save the buffer to the file." (after-insert-file-set-coding (- (point-max) (point-min))) (goto-char (point-min)) (if buffer - ;; For non-interactive, skip any questions - (let ((enable-local-variables - (if (memq enable-local-variables '(:safe :all nil)) - enable-local-variables - ;; Ignore other values that query, - ;; use `:safe' to find `mode:'. - :safe)) - (buffer-file-name file)) - ;; Don't run hooks that might assume buffer-file-name - ;; really associates buffer with a file (bug#39190). - (ignore-errors (delay-mode-hooks (set-auto-mode)))) + ;; For non-interactive, skip any questions. + ;; Use `:safe' to find `mode:'. + (without-local-variable-queries + (let ((buffer-file-name file)) + ;; Don't run hooks that might assume + ;; buffer-file-name really associates buffer + ;; with a file (bug#39190). + (ignore-errors + (delay-mode-hooks (set-auto-mode))))) ;; Use non-nil 'find-file' arg of 'normal-mode' ;; to not ignore 'enable-local-variables' when nil. (normal-mode (not enable-local-variables))) commit c565251dd6a82c99b60a2b2b8bb985ec1ec3c5eb Author: Sean Whitton Date: Tue Jul 7 13:59:00 2026 +0100 ; * admin/notes/repo (Bisecting): Provide a 'git bisect run' recipe. diff --git a/admin/notes/repo b/admin/notes/repo index 2ed51c5cfc7..1384c4eb3ba 100644 --- a/admin/notes/repo +++ b/admin/notes/repo @@ -118,6 +118,8 @@ again. This is a semi-automated way to find the revision that introduced a bug. Browse 'git help bisect' for technical instructions. +** Starting a bisection + It is recommended to start a bisection with the admin/git-bisect-start script. Using that script ensures that commits in branches that are the result of merging external trees into the Emacs repository, as @@ -126,6 +128,34 @@ during the bisection process. That script can also be executed automatically when 'git bisect start' is called, with the help of a wrapper script that is included in its commentary section. +** Automated bisection + +In the case that you have a command which exits non-zero if and only if +the bug is present, then after starting the bisection, you can have Git +automatically recompile Emacs at the relevant revisions and run that +command for you, recording a result based on the exit code. + +Suppose 'emacs -batch -eval "(foo)"' exits non-zero if and only if the +bug is present. Then you may be able to use something like this: + + git bisect run sh -ec '{ test -e configure && { make || make \ + bootstrap; }; } || { git clean -xdff && ./autogen.sh autoconf && \ + ./configure && make; } || exit 125; src/emacs -batch -eval "(foo)"' + +This tries to recompile Emacs, tries a bootstrap build if that fails, +and completely empties out your working tree of build products with 'git +clean -xdff' if even that fails. If that isn't enough for a successful +build, returning code 125 tells Git to skip evaluating that commit. + +You can substitute in any options to './configure' you need on your +machine, and the test command at the end. It is usually best to +configure with '--without-native-compilation' for rebuild speed, unless +the bug only occurs with native compilation enabled. + +Note that this runs 'git clean -xdff', which deletes **any and all +untracked files**, so it is best to run it in a throwaway Git worktree. +You can create these using 'C-x v w c' from inside Emacs. + * Maintaining ChangeLog history Older ChangeLog entries are kept in history files named ChangeLog.1, commit ba781ed7544e882f80400006aac62e66c90897fc Author: Daniel Mendler Date: Sun Jul 5 17:51:13 2026 +0200 Fix blinking Eldoc messages Ensure that `global-eldoc-mode' does not enable `eldoc-mode' in ephemeral Eldoc buffers and accidentally reset `eldoc-last-message'. This caused Eldoc message blinking (bug#81356). * lisp/emacs-lisp/eldoc.el (eldoc--supported-p): Exclude ephemeral Eldoc buffers to avoid blinking. (eldoc-help-at-pt): Add custom :set function. (eldoc-documentation-functions): Do not register `eldoc-show-help-at-pt' by default. diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el index 55f9fb1988b..d1c56b7f82f 100644 --- a/lisp/emacs-lisp/eldoc.el +++ b/lisp/emacs-lisp/eldoc.el @@ -144,6 +144,11 @@ This setting is an alternative to `help-at-pt-display-when-idle'. If the value is non-nil, `eldoc-show-help-at-pt' will show help-at-point via Eldoc." :type 'boolean + :set (lambda (sym val) + (custom-set-default sym val) + (if val + (add-hook 'eldoc-documentation-functions #'eldoc-show-help-at-pt 90) + (remove-hook 'eldoc-documentation-functions #'eldoc-show-help-at-pt))) :version "31.1") (defface eldoc-highlight-function-argument @@ -417,7 +422,7 @@ Also store it in `eldoc-last-message' and return that value." (overlay-end show-paren--overlay))))))) -(defvar eldoc-documentation-functions (list #'eldoc-show-help-at-pt) +(defvar eldoc-documentation-functions nil "Hook of functions that produce doc strings. A doc string is typically relevant if point is on a function-like @@ -813,7 +818,9 @@ all." (defun eldoc--supported-p () "Non-nil if an ElDoc function is set for this buffer." - (and (not (memq eldoc-documentation-strategy '(nil ignore))) + ;; Exclude ephemeral *eldoc* buffers, to avoid blinking (bug#81356). + (and (not (string-prefix-p " *eldoc" (buffer-name))) + (not (memq eldoc-documentation-strategy '(nil ignore))) (or eldoc-documentation-functions ;; The old API had major modes set `eldoc-documentation-function' ;; to provide eldoc support. It's impossible now to determine commit 3e7908fe2332f71d6768fbde7af9b11218985b5e Author: Eli Zaretskii Date: Tue Jul 7 14:04:31 2026 +0300 ; Fix two tests * test/manual/cedet/semantic-tests.el (semanticdb-test-gnu-global): * test/src/undo-tests.el (undo-test0): Fix signaling an error. Suggested by Lin Sun in bug#81371. diff --git a/test/manual/cedet/semantic-tests.el b/test/manual/cedet/semantic-tests.el index 4bd29ebcfee..48b747f79f8 100644 --- a/test/manual/cedet/semantic-tests.el +++ b/test/manual/cedet/semantic-tests.el @@ -100,7 +100,7 @@ global enabled." (condition-case err (semanticdb-enable-gnu-global-in-buffer) (error (if standardfile - (error err) + (signal err) (save-match-data (set-buffer (find-file-noselect semanticdb-test-gnu-global-startfile))) (semanticdb-enable-gnu-global-in-buffer)))) diff --git a/test/src/undo-tests.el b/test/src/undo-tests.el index 55d3bfe8930..24fd47b88a7 100644 --- a/test/src/undo-tests.el +++ b/test/src/undo-tests.el @@ -58,7 +58,7 @@ (error (unless (string= "No further undo information" (cadr err)) - (error err)))) + (signal err)))) (undo-boundary) (insert "This") (undo-boundary) commit 637d6cf08e2f2169ab163fb7fdb02b1f480120f3 Author: Sean Whitton Date: Tue Jul 7 11:37:31 2026 +0100 ; * lisp/vc/vc-dir.el (vc-dir): Return to calling 'vc-dir-mode'. diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el index d39af2d6c43..ff019bbbb8d 100644 --- a/lisp/vc/vc-dir.el +++ b/lisp/vc/vc-dir.el @@ -2011,7 +2011,7 @@ These are the commands available for use in the file status buffer: (vc-dir-refresh) ;; FIXME: find a better way to pass the backend to `vc-dir-mode'. (let ((use-vc-backend backend)) - (vc-call-backend backend 'dir-mode) + (vc-dir-mode) ;; Activate the backend-specific minor mode, if any. (when-let* ((minor-mode (intern-soft (format "vc-dir-%s-mode" commit d423017cae13b74d805520b3f50cbcad25bfad6b Author: Sean Whitton Date: Tue Jul 7 11:11:40 2026 +0100 * lisp/vc/vc-dir.el (vc-dir-headers): Try a hints separator line. diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el index 048670b357d..d39af2d6c43 100644 --- a/lisp/vc/vc-dir.el +++ b/lisp/vc/vc-dir.el @@ -1652,7 +1652,7 @@ backend-specific headers." "(\\[vc-dir-hide-up-to-date]) Hide up-to-date" "\n" (vc-call-backend backend 'dir-extra-hints) - "\n"))) + "\n" (make-separator-line) "\n"))) (concat (and vc-dir-show-key-binding-hints vc-dir--key-binding-hints) (propertize "VC backend : " 'face 'vc-dir-header) commit 924d88a736eea3dca19d04af1960e560a45182eb Author: Martin Rudalics Date: Tue Jul 7 09:50:45 2026 +0200 ; Warn about killed buffers returned by 'window-prev-buffers' (Bug#81370) * src/window.c (Fwindow_prev_buffers): In doc-string mention that the return value may reference killed buffers. * doc/lispref/windows.texi (Window History): Mention that the return value of 'window-prev-buffers' may reference buffers that have been killed. diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 16b82a6a29e..9caaa5e6901 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -4939,6 +4939,11 @@ and @var{window-pos} is a marker that gives the window point position The list is ordered so that earlier elements correspond to more recently-shown buffers, and the first element usually corresponds to the buffer most recently removed from the window. + +As a rule, elements are removed from this list when their buffer gets +killed. In rare cases, however, elements may have survived the killing +of their buffer. It's a good idea therefore to always check buffers for +liveness when processing the return value of this function. @end defun @defun set-window-prev-buffers window prev-buffers diff --git a/src/window.c b/src/window.c index 792c43d0555..0373af7ef27 100644 --- a/src/window.c +++ b/src/window.c @@ -2326,7 +2326,11 @@ WINDOW must be a live window and defaults to the selected one. The return value is a list of elements (BUFFER WINDOW-START POS), where BUFFER is a buffer, WINDOW-START is the start position of the -window for that buffer, and POS is a window-specific point value. */) +window for that buffer, and POS is a window-specific point value. + +In rare ocasions BUFFER may have been already killed. It's therefore +advisable to always check the return value for the occurrence of dead +buffers before using it. */) (Lisp_Object window) { return decode_live_window (window)->prev_buffers; commit b07e634e4cf45162ae0178e32092b040587f2c6c Author: Paul Eggert Date: Mon Jul 6 13:17:17 2026 -0700 Fix undefined behavior in pbm_load int*int problem reported by Tristan Madani in: https://bugs.gnu.org/81344 * src/image.c (pbm_load): Avoid undefined behavior when multiplying ints, or when adding pointer to int. diff --git a/src/image.c b/src/image.c index 9d0a620188f..e76911c3cd3 100644 --- a/src/image.c +++ b/src/image.c @@ -7774,19 +7774,22 @@ pbm_load (struct frame *f, struct image *img) } else { - int expected_size = height * width; bool two_byte = 255 < max_color_idx; - if (two_byte) - expected_size *= 2; - if (type == PBM_COLOR) - expected_size *= 3; - if (raw_p && p + expected_size > end) + if (raw_p) { - image_destroy_x_image (ximg); - image_clear_image (f, img); - image_error ("Invalid image size in image `%s'", img->spec); - goto error; + ptrdiff_t expected_size; + bool bad = ckd_mul (&expected_size, height, width); + bad |= ckd_mul (&expected_size, expected_size, + (two_byte ? 2 : 1) * (type == PBM_COLOR ? 3 : 1)); + bad |= end - p < expected_size; + if (bad) + { + image_destroy_x_image (ximg); + image_clear_image (f, img); + image_error ("Invalid image size in image `%s'", img->spec); + goto error; + } } for (y = 0; y < height; ++y) commit 5404761a477e12090be03f833c6041549fc0cd34 Author: Yuan Fu Date: Sun Jul 5 23:51:33 2026 -0700 ; Correct treesit-font-lock-level customize type (issue#81337) * lisp/treesit.el (treesit-font-lock-level): Use composite type. diff --git a/lisp/treesit.el b/lisp/treesit.el index dbb39b19226..5cef42ef454 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -1598,7 +1598,7 @@ variable `treesit-font-lock-feature-list'. Setting this variable directly with `setq' or `let' doesn't work; use `setopt' or \\[customize-option] instead." - :type 'integer + :type '(choice integer (alist :key-type symbol :value-type integer)) :set #'treesit--font-lock-level-setter :version "29.1") commit 6464453558e54035360f796a6ee351b5f3e4a461 Author: Philip Kaludercic Date: Sun Jul 5 14:13:04 2026 +0200 Avoid destructively modifying 'package--builtin-alist' * lisp/emacs-lisp/package.el (package--upgradeable-packages): Use 'append' instead of 'nconc' to not append the contents of 'package-alist' to 'package--builtin-alist'. (Bug#81242) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 12b450d93db..da4642aeb78 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -2186,8 +2186,8 @@ NAME should be a symbol." (package-desc-version (cadr elt)) (package-desc-version available))) (not (package-vc-p (cadr elt)))))) - (nconc (and include-builtins (package--builtin-alist)) - (package--alist))))) + (append (and include-builtins (package--builtin-alist)) + (package--alist))))) ;;;###autoload (defun package-upgrade-all (&optional query) commit ffad15bf7386f12975ded2a375bbc0da03a2ead7 Author: Kyle Meyer Date: Sun Jul 5 10:00:22 2026 -0400 Update to Org 9.8.7 diff --git a/doc/misc/org.org b/doc/misc/org.org index 8644109a6a1..d4bf8cb009c 100644 --- a/doc/misc/org.org +++ b/doc/misc/org.org @@ -10013,8 +10013,8 @@ entries with a =NEXT= TODO keyword. ((org-agenda-max-entries 5))))) #+end_src -Once you mark one of these five entry as DONE, rebuilding the agenda -will again the next five entries again, including the first entry that +Once you mark one of these five entries as DONE, rebuilding the agenda +will show the next five entries again, including the first entry that was excluded so far. You can also dynamically set temporary limits, which are lost when @@ -10269,7 +10269,7 @@ the other commands, point needs to be in the desired line. Toggle Archives mode. In Archives mode, trees that are archived (see [[*Internal archiving]]) are also scanned when producing the agenda. To exit archives mode, press {{{kbd(v a)}}} again. The - initial setting for this mode in new agenda buffers can set with the + initial setting for this mode in new agenda buffers can be set with the variable ~org-agenda-start-with-archives-mode~, which can be set with the same values as ~org-agenda-archives-mode~. @@ -14552,11 +14552,13 @@ include: #+vindex: org-latex-tables-booktabs #+vindex: org-latex-tables-centered All three commands are toggles. =:booktabs= brings in modern - typesetting enhancements to regular tables. The booktabs package - has to be loaded through ~org-latex-packages-alist~. =:center= is - for centering the table. =:rmlines= removes all but the very first - horizontal line made of ASCII characters from "table.el" tables - only. + typesetting enhancements to regular tables. The =booktabs= package + needs to be loaded through ~org-latex-packages-alist~, unless it is + already included by your document class[fn:: For example, + [[https://authors.acm.org/proceedings/production-information/preparing-your-article-with-latex][the + ACM article template]].]. =:center= is for centering the table. + =:rmlines= removes all but the very first horizontal line made of + ASCII characters from "table.el" tables only. - =:math-prefix=, =:math-suffix=, =:math-arguments= :: diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex index 300af8d9d8c..f558d05ae74 100644 --- a/etc/refcards/orgcard.tex +++ b/etc/refcards/orgcard.tex @@ -1,5 +1,5 @@ % Reference Card for Org Mode -\def\orgversionnumber{9.8.6} +\def\orgversionnumber{9.8.7} \def\versionyear{2026} % latest update \input emacsver.tex diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el index 481eba50313..d727ab4cef0 100644 --- a/lisp/org/org-agenda.el +++ b/lisp/org/org-agenda.el @@ -9723,8 +9723,10 @@ the dedicated frame." (pos (marker-position marker))) (with-current-buffer buffer (save-excursion - (goto-char pos) - (org-tree-to-indirect-buffer arg)))) + (save-restriction + (widen) + (goto-char pos) + (org-tree-to-indirect-buffer arg))))) (setq org-agenda-last-indirect-buffer org-last-indirect-buffer)) (defvar org-last-heading-marker (make-marker) diff --git a/lisp/org/org-feed.el b/lisp/org/org-feed.el index 139c7f729ef..8ed79121711 100644 --- a/lisp/org/org-feed.el +++ b/lisp/org/org-feed.el @@ -112,7 +112,7 @@ (defcustom org-feed-alist nil "Alist specifying RSS feeds that should create inputs for Org. -Each entry in this list specified an RSS feed tat should be queried +Each entry in this list specified an RSS feed that should be queried to create inbox items in Org. Each entry is a list with the following items: name a custom name for this feed diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el index 25cbd97621b..9a46c453c2f 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.6")) + (let ((org-release "9.8.7")) 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.6")) + (let ((org-git-version "release_9.8.7")) org-git-version)) (provide 'org-version) diff --git a/lisp/org/org.el b/lisp/org/org.el index be9f31ecc9e..a20ecc3c38f 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.6 +;; Version: 9.8.7 ;; This file is part of GNU Emacs. ;; diff --git a/lisp/org/ox-beamer.el b/lisp/org/ox-beamer.el index 72fe18acdb8..302ebdc6a40 100644 --- a/lisp/org/ox-beamer.el +++ b/lisp/org/ox-beamer.el @@ -4,6 +4,7 @@ ;; Author: Carsten Dominik ;; Nicolas Goaziou +;; Maintainer: Pedro A. Aranda ;; Keywords: org, text, tex ;; This file is part of GNU Emacs. commit 9ab1aa887abdb6035c02f96b084f0fcaaa2b60d9 Author: Michael Albinus Date: Sun Jul 5 09:27:30 2026 +0200 Ensure, that `buffer-file-name' is expanded in tramp-archive * lisp/net/tramp-archive.el (tramp-archive-handle-insert-file-contents): Ensure, that `buffer-file-name' is expanded. diff --git a/lisp/net/tramp-archive.el b/lisp/net/tramp-archive.el index e970fd1cd56..2c7a65b375f 100644 --- a/lisp/net/tramp-archive.el +++ b/lisp/net/tramp-archive.el @@ -710,11 +710,12 @@ offered." (defun tramp-archive-handle-insert-file-contents (filename &optional visit beg end replace) "Like `insert-file-contents' for file archives." + (setq filename (expand-file-name filename)) (let ((result (insert-file-contents (tramp-archive-gvfs-file-name filename) visit beg end replace))) (when visit (setq buffer-file-name filename)) - (cons (expand-file-name filename) (cdr result)))) + (cons filename (cdr result)))) (defun tramp-archive-handle-load (file &optional noerror nomessage nosuffix must-suffix) commit 4721a44e8ab2bac275611403118d3101dda8d382 Author: Eli Zaretskii Date: Sun Jul 5 08:35:40 2026 +0300 ; * doc/lispref/buffers.texi (Buffer File Name): Clarify (bug#81340). diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi index 054efba9ae1..33fab9e89bc 100644 --- a/doc/lispref/buffers.texi +++ b/doc/lispref/buffers.texi @@ -391,7 +391,7 @@ the buffer name are distinct and can be set independently. @xref{Visiting Files}. @defun buffer-file-name &optional buffer -This function returns the absolute file name of the file that +This function returns the fully-expanded absolute file name of the file that @var{buffer} is visiting. If @var{buffer} is not visiting any file, @code{buffer-file-name} returns @code{nil}. If @var{buffer} is not supplied, it defaults to the current buffer. @@ -405,10 +405,11 @@ supplied, it defaults to the current buffer. @end defun @defvar buffer-file-name -This buffer-local variable contains the name of the file being visited +This buffer-local variable contains the absolute name of the file being visited in the current buffer, or @code{nil} if it is not visiting a file. It is a permanent local variable, unaffected by -@code{kill-all-local-variables}. +@code{kill-all-local-variables}. The value is identical to the one +which the @code{buffer-file-name} function returns. @example @group commit 9777acdc95aecb0547dfbab31931c51c6a3abf0c Author: Eshel Yaron Date: Sat Jul 4 21:28:57 2026 +0200 ; etc/NEWS: Fix duplicate "Emacs Lisp mode" heading. diff --git a/etc/NEWS b/etc/NEWS index 89c8e592f9c..4609e9b6910 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1640,15 +1640,6 @@ at run-time for the use of the associated deprecated features. '(setq eieio-backward-compatibility t)' can be used to recover the previous silence. -** Emacs Lisp mode - -+++ -*** Semantic highlighting support for Emacs Lisp. -'emacs-lisp-mode' can now use code analysis to highlight more symbols -more accurately. Customize the new user option -'elisp-fontify-semantically' to non-nil to enable this feature, and see -the Info node "(emacs) Semantic Font Lock" for more information. - ** Text mode --- @@ -2338,6 +2329,13 @@ To get the old behavior back, add an element '(enum-open ** Emacs Lisp mode ++++ +*** Semantic highlighting support for Emacs Lisp. +'emacs-lisp-mode' can now use code analysis to highlight more symbols +more accurately. Customize the new user option +'elisp-fontify-semantically' to non-nil to enable this feature, and see +the Info node "(emacs) Semantic Font Lock" for more information. + --- *** Checkdoc no longer warns about missing footer lines in some cases. Emacs Lisp libraries have traditionally ended with a footer line