Merge from origin/emacs-30

a44e9139c2 loaddefs-generate--rubric: Note about committing ldefs-bo...
e4908623f2 ; Fix documentation of 'other-window'
5f3cbd62b1 ; * lisp/international/quail.el (quail-insert-kbd-layout)...
47deb38f21 ; face-font-family-alternatives, fixed-pitch: Comments.
dd29b0ab66 Fix Eshell call to 'string-suffix-p' when checking for tr...
cbfc095ed4 * etc/PROBLEMS: Describe how to work around screen reader...
8f00d36b63 (gnus)Scoring Tips: New tip regarding header continuation...
This commit is contained in:
Eli Zaretskii 2025-07-26 06:58:12 -04:00
commit ccc3068dae
9 changed files with 74 additions and 7 deletions

View file

@ -2490,7 +2490,9 @@ argument.
The optional argument @var{all-frames} has the same meaning as in
@code{next-window}, like a @code{nil} @var{minibuf} argument to
@code{next-window}.
@code{next-window}. When called interactively, @var{all-frames} is
always @code{nil}, so only windows on the selected frame can be
selected.
If the @code{other-window} parameter of the selected window is a
function, and @code{ignore-window-parameters} is @code{nil}, that

View file

@ -21168,6 +21168,29 @@ You may also consider doing something similar with @code{expunge}.
If you say stuff like @code{[^abcd]*}, you may get unexpected results.
That will match newlines, which might lead to, well, The Unknown. Say
@code{[^abcd\n]*} instead.
@item Continuation lines when scoring on other headers
When scoring on other headers using the @code{Head} or @code{All} match
keys and regexp matching, your regular expression must take into account
header continuation lines. For example, this naive attempt to match
messages including a particular address in the @code{To} field:
@lisp
("head" "^To: .*\\bspwhitton@@spwhitton\\.name\\b" r)
@end lisp
will fail to match a message with a @code{To} header like this:
@example
To: A long description of the Emacs devel list <emacs-devel@@gnu.org>,
spwhitton@@spwhitton.name, 12345@@debbugs.gnu.org
@end example
You can handle this issue with a regexp of this form:
@lisp
("head" "^To: .*\\(?:\n[\s\t].*\\)*\\bspwhitton@@spwhitton\\.name\\b" r)
@end lisp
@end table

View file

@ -2678,6 +2678,18 @@ terminals, for example, like this:
This disables 'auto-composition-mode' on frames that display on
terminals of this type.
** Screen readers get confused about character position
The Emacs display code sometimes emits TAB characters purely for motion
on the terminal, even when those characters do not exist in the buffer.
This can confuse screen reader software under certain terminal emulators
(rxvt and vte have been cited). Switching to destructive tabs by running
stty -tabs
in the terminal before starting Emacs may mitigate this. See also the
discussion in Bug#78474 <https://debbugs.gnu.org/78474>.
* Runtime problems specific to individual Unix variants
** GNU/Linux

View file

@ -557,7 +557,7 @@ If COMPILE, don't include a \"don't compile\" cookie."
file 'loaddefs-generate
:title (concat "automatically extracted " (or type "autoloads"))
:commentary (and (string-match "/lisp/loaddefs\\.el\\'" file)
"This file will be copied to ldefs-boot.el and checked in periodically."))
"This file will be copied to ldefs-boot.el and checked in periodically. Note: When checking in ldefs-boot.el, don't include changes to any other files in the commit."))
(when lp
(insert "(add-to-list 'load-path (directory-file-name
(or (file-name-directory #$) (car load-path))))\n\n"))

View file

@ -568,7 +568,7 @@ ends in a newline."
(eshell-output-object object handle)
(when (and eshell-ensure-newline-p
(not (and (stringp object)
(string-suffix-p object "\n"))))
(string-suffix-p "\n" object))))
(eshell-maybe-output-newline handle)))
(defsubst eshell-print-maybe-n (object)

View file

@ -95,9 +95,10 @@ a font height that isn't optimal."
(internal-set-font-selection-order value)))
;; In the absence of Fontconfig support, Monospace and Sans Serif are
;; unavailable, and we fall back on the courier and helv families,
;; which are generally available.
;; We use Fontconfig if we have it. This list is an alternative
;; mechanism to fall back to in the absence of Fontconfig.
;; In that situation, Monospace and Sans Serif are unavailable, and we
;; turn to the courier and helv families, which are generally available.
(defcustom face-font-family-alternatives
'(("Monospace" "Cascadia Code" "Lucida Console" "courier" "fixed")
@ -2461,6 +2462,10 @@ If you set `term-file-prefix' to nil, this function does nothing."
"Basic underlined face."
:group 'basic-faces)
;; Ideally, in Emacs's default look, we'd like the default and
;; fixed-pitch faces to use two different monospace typefaces so that
;; they're visually distinct. At present, that's achieved on MS-Windows
;; and macOS, but not on platforms that use Fontconfig. See bug#79083.
(defface fixed-pitch
'((t :family "Monospace"))
"The basic fixed-pitch face."

View file

@ -835,6 +835,8 @@ The format of KBD-LAYOUT is the same as `quail-keyboard-layout'."
(format "\t%c\t" upper))
(string upper))))
(insert (bidi-string-mark-left-to-right lower)
;; This invisible space is here to prevent the display
;; engine from composing these two characters on display.
(propertize " " 'invisible t)
(bidi-string-mark-left-to-right upper))
(if (< (string-width upper) 2)

View file

@ -4017,7 +4017,8 @@ COUNT and ALL-FRAMES. Otherwise, do not return a window for which
This function uses `next-window' for finding the window to
select. The argument ALL-FRAMES has the same meaning as in
`next-window', but the MINIBUF argument of `next-window' is
always effectively nil."
always effectively nil. Interactively, ALL-FRAMES is always
nil, which considers all windows on the selected frame."
(interactive "p\ni\np")
(let* ((window (selected-window))
(original-window window)

View file

@ -40,6 +40,28 @@
;;; Tests:
;; Newlines
(ert-deftest esh-io-test/output-newline/add-newline ()
"Ensure we add a newline when writing a string to stdout."
(with-temp-eshell
(eshell-match-command-output "(concat \"hello\")" "\\`hello\n\\'")))
(ert-deftest esh-io-test/output-newline/no-newline ()
"Ensure we don't add a newline when writing a string to a buffer."
(eshell-with-temp-buffer bufname ""
(with-temp-eshell
(eshell-match-command-output
(format "(concat \"hello\") > #<%s>" bufname)
"\\`\\'"))
(should (equal (buffer-string) "hello"))))
(ert-deftest esh-io-test/output-newline/no-extra-newline ()
"Ensure we don't add an extra newline when writing to stdout."
(with-temp-eshell
(eshell-match-command-output "(concat \"hello\n\")" "\\`hello\n\\'")))
;; Basic redirection