1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-06 06:20:55 -08:00

Merge from origin/emacs-29

bc56da92d8 ; Fix error in 'tex-recenter-output-buffer'
d17c5adc05 Fix regexp for recognizing PBM images
9e9f61866e Improve wording in ELisp manual
7427efa033 Fix typo (Bug#65764)
59c6624408 ; * lisp/ido.el (ido-completion-buffer): Fix :type (bug#6...
4ec4b18c2a Fix libgccjit build on Haiku
80bdcf8f35 (regexp-tests-backtrack-optimization): Mark it as failing
8a9e653cc8 ; Add regression test for bug#65726
6fad73d7cc * src/regex-emacs.c (mutually_exclusive_p): Fix inf-loop ...
1d3d419607 ; * lisp/files.el (save-some-buffers-functions): Doc fix ...
42b14c6e5b Bump seq version to 2.24
ff5190a174 Add note on ELPA to admin/notes/bug-triage
f1e4cbe72a ; * etc/PROBLEMS: Minor wording fix.
fd5593c7f2 * etc/PROBLEMS: Mention bug#65432 and its remedy.
dd896ea1e6 Ignore errors when checking for object initializers (bug#...
3550f44c17 ; Fix typos
5b246b9b81 * CONTRIBUTE: Document making ChangeLogs with Magit.
0bd4661941 Doc fixes for obsolete functions and variables
524c0c34f2 ; * lisp/ffap.el (ffap-rfs-regexp): Fix :type (bug#65698).
f48dccc467 Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/...
71a85e2266 A revision to the Widget manual
dbbcf4a659 Fix fontification of " in edit-kbd-macro

# Conflicts:
#	test/src/regex-emacs-tests.el
This commit is contained in:
Eli Zaretskii 2023-09-09 04:32:45 -04:00
commit 0273914921
28 changed files with 2562 additions and 1151 deletions

View file

@ -300,6 +300,11 @@ them right the first time, so here are guidelines for formatting them:
blank ChangeLog entries from the diff being committed, then use blank ChangeLog entries from the diff being committed, then use
'M-q' to combine and fill them. See 'info "(emacs) Log Buffer"'. 'M-q' to combine and fill them. See 'info "(emacs) Log Buffer"'.
- If you use the third-party package Magit, you can use
'magit-generate-changelog' from the commit message buffer.
See also 'magit-add-change-log-entry' and
'magit-add-change-log-entry-other-window'.
- Alternatively, you can use Emacs functions for ChangeLog files; see - Alternatively, you can use Emacs functions for ChangeLog files; see
https://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html https://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html
or run 'info "(emacs)Change Log Commands"'. or run 'info "(emacs)Change Log Commands"'.

View file

@ -1,10 +1,10 @@
HOW TO TRIAGE EMACS BUGS -*- outline -*- HOW TO TRIAGE EMACS BUGS -*- outline -*-
This document just describes the procedure of triaging bugs, for information on This document describes the procedure of triaging bugs. For information on how
how to work with the bug tracker, see the bugtracker file in this same directory to work with the bug tracker, see the file "bugtracker" in the same directory as
for the basics. You can also install the debbugs ELPA package for access to M-x this file for the basics. You can also install the GNU ELPA package 'debbugs'
debbugs-gnu, an emacs interface to debbugs, and M-x debbugs-org, an emacs for access to 'M-x debbugs-gnu', an Emacs interface to the debbugs bug tracker,
interface via org-mode. and 'M-x debbugs-org', an Emacs interface via org-mode.
* Bug backlog triage procedure * Bug backlog triage procedure
@ -15,9 +15,10 @@ the ones that are not reproducible on the current release.
calling debbugs-gnu-emacs-release-blocking-reports. If you want calling debbugs-gnu-emacs-release-blocking-reports. If you want
to check this for another Emacs version but the next-to-be-released-one, to check this for another Emacs version but the next-to-be-released-one,
use the "C-u" prefix. use the "C-u" prefix.
1. After that, enter debbugs mode (either debbugs-gnu, debbugs-org, or via the 1. After that, enter debbugs mode (either using 'M-x debbugs-gnu',
web browser), and accept the default list option of bugs that have severity 'M-x debbugs-org', or via the web browser), and accept the
serious, important, or normal. default list option of bugs that have severity "serious",
"important", or "normal".
2. For each bug, we want to primarily make sure it is still 2. For each bug, we want to primarily make sure it is still
reproducible. A bug can and should stay open as long as it is reproducible. A bug can and should stay open as long as it is
still a bug and no one has fixed it. The following is a still a bug and no one has fixed it. The following is a
@ -90,21 +91,51 @@ necessary information for others to act on.
For each new bug, ask the following questions: For each new bug, ask the following questions:
1. Is the bug report written in a way to be easy to reproduce (starts from 1. Is the bug report written in a way to be easy to reproduce
"emacs -Q", etc.)? If not, ask the reporter to try and reproduce it on an (starts from "emacs -Q", etc.)? If not, ask the reporter to try
emacs without customization. and reproduce it on an emacs without customization.
2. Is the bug report written against the latest emacs? If not, try to 2. Is the bug report written against the latest emacs? If not, try
reproduce on the latest version, and if it can't be reproduced, ask the to reproduce on the latest version, and if it can't be
reporter to try again with the latest version. reproduced, ask the reporter to try again with the latest
version.
3. Is the bug the same as another bug? If so, merge the bugs. 3. Is the bug the same as another bug? If so, merge the bugs.
4. What is the priority of the bug? Add a priority: serious, important, 4. What is the priority of the bug? Add a priority: "serious",
normal, minor, or wishlist. "important", "normal", "minor, or "wishlist".
5. Who should be the owner? This depends on what component the bug is part 5. Who should be the owner? This depends on what component the bug
of. You can look at the admin/MAINTAINERS file (then you can just search is part of. You can look at the "Maintainer" comment header in
emacs-devel to match the name with an email address). the relevant Lisp files. If you can't find the name there, look
at admin/MAINTAINERS file (then you can just search emacs-devel
to match the name with an email address).
In the debbugs-gnu buffer, bugs are marked in the "State" column In the debbugs-gnu buffer, bugs are marked in the "State" column
according to the communication flow. Red bugs mean that nobody has according to the communication flow. Red bugs mean that nobody has
answered, these bugs need primary attention. Green bugs flag that answered; these bugs need primary attention. Green bugs flag that
there is a recent communication about, and orange bugs flag that the there is a recent communication about, and orange bugs flag that the
bug hasn't been touched for at least two weeks. bug hasn't been touched for at least two weeks.
* Bugs in GNU ELPA and NonGNU ELPA packages
The goal here is to ping the relevant maintainers, as Emacs core
developers aren't always up-to-date with recent developments in all
GNU ELPA packages, and can't do anything with reports about bugs in
NonGNU ELPA packages.
This is how we deal with them:
1. Bugs in GNU ELPA packages can always be reported to our bug
tracker, even if they are usually tracked by other means. Search
for the maintainer of that package, e.g. on
https://elpa.gnu.org/packages and take note of their email
address. Send a reply with an email body like "<name> is the
maintainer of <package>, so I'm copying them in here.", and
include their email address in Cc.
2. Bugs in NonGNU ELPA packages should be sent to their maintainers,
because we can't do anything to fix them. If you suspect that
the bug is about a NonGNU ELPA package, it's usually polite to
ask the reporter if this is indeed the case (in case you
misunderstood something), and then to point them in the right
direction. Such bugs can be closed once the confusion has been
resolved.
3. Bugs in third-party packages that are not in any of the above
repositories are handled in the same way as packages in NonGNU
ELPA.

View file

@ -480,8 +480,6 @@ THINGS TO DO
** Have a look at set_frame_matrix_frame. ** Have a look at set_frame_matrix_frame.
** Check if we got term-setup-hook right.
** I think tip_frame should be display-local. ** I think tip_frame should be display-local.
** Check display reference count handling in x_create_tip_frame. ** Check display reference count handling in x_create_tip_frame.

View file

@ -5171,8 +5171,9 @@ if test "${with_native_compilation}" != "no"; then
case "${opsys}" in case "${opsys}" in
# mingw32 loads the library dynamically. # mingw32 loads the library dynamically.
mingw32) ;; mingw32) ;;
# OpenBSD doesn't have libdl, all the functions are in libc # Neither NetBSD, OpenBSD nor Haiku have libdl, with all dynamic
netbsd|openbsd) # linker functions placed within libc.
netbsd|openbsd|haiku)
LIBGCCJIT_LIBS="-lgccjit" ;; LIBGCCJIT_LIBS="-lgccjit" ;;
darwin) darwin)
LIBGCCJIT_CFLAGS="${MAC_CFLAGS}" LIBGCCJIT_CFLAGS="${MAC_CFLAGS}"

View file

@ -701,7 +701,6 @@ to recompile and restart the program.
@cindex GUD Tooltip mode @cindex GUD Tooltip mode
@cindex mode, GUD Tooltip @cindex mode, GUD Tooltip
@findex gud-tooltip-mode @findex gud-tooltip-mode
@vindex gud-tooltip-echo-area
GUD Tooltip mode is a global minor mode that adds tooltip support to GUD Tooltip mode is a global minor mode that adds tooltip support to
GUD@. To toggle this mode, type @kbd{M-x gud-tooltip-mode}. It is GUD@. To toggle this mode, type @kbd{M-x gud-tooltip-mode}. It is
disabled by default. If enabled, you can move the mouse pointer over a disabled by default. If enabled, you can move the mouse pointer over a
@ -713,10 +712,8 @@ you can tell Emacs more explicitly what expression to evaluate by
dragging the mouse over the expression, then leaving the mouse inside dragging the mouse over the expression, then leaving the mouse inside
the marked area. The GUD Tooltip mode takes effect in the GUD the marked area. The GUD Tooltip mode takes effect in the GUD
interaction buffer, and in all source buffers with major modes listed interaction buffer, and in all source buffers with major modes listed
in the variable @code{gud-tooltip-modes}. If the variable in the variable @code{gud-tooltip-modes}. If you turned off the
@code{gud-tooltip-echo-area} is non-@code{nil}, or if you turned off tooltip mode, values are shown in the echo area instead of a tooltip.
the tooltip mode, values are shown in the echo area instead of a
tooltip.
When using GUD Tooltip mode with @kbd{M-x gud-gdb}, displaying an When using GUD Tooltip mode with @kbd{M-x gud-gdb}, displaying an
expression's value in GDB can sometimes expand a macro, potentially expression's value in GDB can sometimes expand a macro, potentially

View file

@ -82,7 +82,9 @@ it does not make sense to enter objects of these types as constants in
a Lisp program. These objects are printed in @dfn{hash notation}, a Lisp program. These objects are printed in @dfn{hash notation},
which consists of the characters @samp{#<}, a descriptive string which consists of the characters @samp{#<}, a descriptive string
(typically the type name followed by the name of the object), and a (typically the type name followed by the name of the object), and a
closing @samp{>}. For example: closing @samp{>}. (This is called ``hash notation'' because it begins
with the @samp{#} character, known as ``hash'' or ``number sign'').
For example:
@example @example
(current-buffer) (current-buffer)

View file

@ -1168,15 +1168,15 @@ binary and the Ctrl-M characters are significant.
@subsection CR/LF translation by file system @subsection CR/LF translation by file system
@cindex line ends, determining by filesystem @cindex line ends, determining by filesystem
@cindex binary files, determining by filesystem @cindex binary files, determining by filesystem
@vindex untranslated-filesystem-list @vindex w32-untranslated-filesystem-list
@findex add-untranslated-filesystem @findex w32-add-untranslated-filesystem
@findex remove-untranslated-filesystem @findex w32-remove-untranslated-filesystem
The variable @code{untranslated-filesystem-list} defines whole The variable @code{w32-untranslated-filesystem-list} defines whole
directory trees that should not have CR/LF autodetection performed on directory trees that should not have CR/LF autodetection performed on
them. The list can be manipulated with the functions them. The list can be manipulated with the functions
@code{add-untranslated-filesystem} and @code{w32-add-untranslated-filesystem} and
@code{remove-untranslated-filesystem}. With auto-detection in @code{w32-remove-untranslated-filesystem}. With auto-detection in
recent versions of Emacs, this is seldom useful for existing files, recent versions of Emacs, this is seldom useful for existing files,
but can still be used to influence the choice of line ends for newly but can still be used to influence the choice of line ends for newly
created files. created files.

View file

@ -24526,8 +24526,8 @@ that is needed. It can also contain @samp{(@var{addr} @var{string}
@var{amount})} cells, where the @var{string} is the string to use @var{amount})} cells, where the @var{string} is the string to use
(normally the email address or newsgroup name is used). (normally the email address or newsgroup name is used).
@item hashcash-path @item hashcash-program
@vindex hashcash-path @vindex hashcash-program
Where the @code{hashcash} binary is installed. This variable should Where the @code{hashcash} binary is installed. This variable should
be automatically set by @code{executable-find}, but if it's @code{nil} be automatically set by @code{executable-find}, but if it's @code{nil}
(usually because the @code{hashcash} binary is not in your path) (usually because the @code{hashcash} binary is not in your path)

File diff suppressed because it is too large Load diff

View file

@ -1638,6 +1638,18 @@ to normal, do
(set-scroll-bar-mode 'left) (set-scroll-bar-mode 'left)
*** Redisplay with scaled images is slow in Emacs built with Cairo.
Cairo expends a noticeable amount of CPU time displaying large images
with applied transforms. These images most frequently appear within
EWW buffers or in Image Mode buffers after executing the image scaling
commands `i +' or `i -', and their presence incurs a performance
penalty of hundereds of milliseconds to seconds upon redisplay. The
remedy is to build Emacs without Cairo after verifying the XRender
extension is present on your X server and its headers are present on
your system, in which case Emacs will use XRender to efficiently
perform image transforms within the X server.
*** Error messages about undefined colors on X. *** Error messages about undefined colors on X.
The messages might say something like this: The messages might say something like this:

View file

@ -32867,7 +32867,7 @@
(reftex-index-switch-index-tag): Add `redo' to arguments of (reftex-index-switch-index-tag): Add `redo' to arguments of
`reftex-display-index'. `reftex-display-index'.
(reftex-index-make-phrase-regexp): Fix bug with case-sensitive (reftex-index-make-phrase-regexp): Fix bug with case-sensitive
indexing. Fix bug with matching is there is a quote before or indexing. Fix bug with matching if there is a quote before or
after the word. after the word.
* textmodes/reftex-cite.el (reftex-all-used-citation-keys): * textmodes/reftex-cite.el (reftex-all-used-citation-keys):

View file

@ -1598,7 +1598,7 @@ aligner would have dealt with are."
(if (= (point) search-start) (if (= (point) search-start)
(forward-char))))) (forward-char)))))
;; when they are no more matches for this rule, ;; when there are no more matches for this rule,
;; align whatever was left over ;; align whatever was left over
(if regions (if regions
(align-regions regions align-props rule func)))))))) (align-regions regions align-props rule func))))))))

View file

@ -449,16 +449,13 @@ If EXTRA, include that in the string returned to represent the symbol."
(defun eieio-class-parents (class) (defun eieio-class-parents (class)
;; FIXME: What does "(overload of variable)" mean here? ;; FIXME: What does "(overload of variable)" mean here?
"Return parent classes to CLASS. (overload of variable). "Return parent classes to CLASS. (overload of variable)."
The CLOS function `class-direct-superclasses' is aliased to this function."
(eieio--class-parents (eieio--full-class-object class))) (eieio--class-parents (eieio--full-class-object class)))
(define-obsolete-function-alias 'class-parents #'eieio-class-parents "24.4") (define-obsolete-function-alias 'class-parents #'eieio-class-parents "24.4")
(defun eieio-class-children (class) (defun eieio-class-children (class)
"Return child classes to CLASS. "Return child classes to CLASS."
The CLOS function `class-direct-subclasses' is aliased to this function."
(cl-check-type class class) (cl-check-type class class)
(eieio--class-children (cl--find-class class))) (eieio--class-children (cl--find-class class)))
(define-obsolete-function-alias (define-obsolete-function-alias

View file

@ -4,7 +4,7 @@
;; Author: Nicolas Petton <nicolas@petton.fr> ;; Author: Nicolas Petton <nicolas@petton.fr>
;; Keywords: sequences ;; Keywords: sequences
;; Version: 2.23 ;; Version: 2.24
;; Package: seq ;; Package: seq
;; Maintainer: emacs-devel@gnu.org ;; Maintainer: emacs-devel@gnu.org

View file

@ -174,7 +174,8 @@ Note this name may be omitted if it equals the default
"\\`/\\(afs\\|net\\)/." "\\`/\\(afs\\|net\\)/."
;; afs only: (and (file-exists-p "/afs") "\\`/afs/.") ;; afs only: (and (file-exists-p "/afs") "\\`/afs/.")
"Matching file names are treated as remote. Use nil to disable." "Matching file names are treated as remote. Use nil to disable."
:type 'regexp :type '(choice (const :tag "Disable" nil)
regexp)
:group 'ffap) :group 'ffap)
(defvar ffap-url-regexp (defvar ffap-url-regexp

View file

@ -6068,14 +6068,18 @@ See `save-some-buffers' for PRED values."
(defvar save-some-buffers-functions nil (defvar save-some-buffers-functions nil
"Functions to be run by `save-some-buffers' after saving the buffers. "Functions to be run by `save-some-buffers' after saving the buffers.
The functions can be called in two \"modes\", depending on the These functions should accept one mandatory and one optional
first argument. If the first argument is `query', then the argument, and they can be called in two \"modes\", depending on
the first argument. If the first argument is `query', then the
function should return non-nil if there is something to be function should return non-nil if there is something to be
saved (but it should not actually save anything). saved (but it should not actually save anything).
If the first argument is something else, then the function should If the first argument is something else, then the function should
save according to the value of the second argument, which is the save according to the value of the second argument, which is the
ARG argument from `save-some-buffers'.") ARG argument with which `save-some-buffers' was called.
The main purpose of these functions is to save stuff that is kept
in variables (rather than in buffers).")
(defun save-some-buffers (&optional arg pred) (defun save-some-buffers (&optional arg pred)
"Save some modified file-visiting buffers. Asks user about each one. "Save some modified file-visiting buffers. Asks user about each one.

View file

@ -864,7 +864,8 @@ also modify the dynamic variables described for the variable
(defcustom ido-completion-buffer "*Ido Completions*" (defcustom ido-completion-buffer "*Ido Completions*"
"Name of completion buffer used by Ido. "Name of completion buffer used by Ido.
Set to nil to disable completion buffers popping up." Set to nil to disable completion buffers popping up."
:type 'string) :type '(choice (const :tag "Disable popping up completion buffer" nil)
string))
(defcustom ido-completion-buffer-all-completions nil (defcustom ido-completion-buffer-all-completions nil
"Non-nil means to show all completions in completion buffer. "Non-nil means to show all completions in completion buffer.

View file

@ -38,7 +38,7 @@
(defconst image-type-header-regexps (defconst image-type-header-regexps
`(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm) `(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm)
("\\`P[1-6]\\(?:\ ("\\`P[1-6]\\(?:\
\\(?:\\(?:#[^\r\n]*[\r\n]\\)*[[:space:]]\\)+\ \\(?:\\(?:#[^\r\n]*[\r\n]\\)*[ \t\r\n]\\)+\
\\(?:\\(?:#[^\r\n]*[\r\n]\\)*[0-9]\\)+\ \\(?:\\(?:#[^\r\n]*[\r\n]\\)*[0-9]\\)+\
\\)\\{2\\}" . pbm) \\)\\{2\\}" . pbm)
("\\`GIF8[79]a" . gif) ("\\`GIF8[79]a" . gif)

View file

@ -25932,7 +25932,7 @@
* org-latex.el (org-export-as-latex): Do nit require the buffer to * org-latex.el (org-export-as-latex): Do nit require the buffer to
be visiting a file when only exporting to a buffer or string. be visiting a file when only exporting to a buffer or string.
(org-export-latex-fix-inputenc): Only save the buffer is there is (org-export-latex-fix-inputenc): Only save the buffer if there is
a file name attached to it. a file name attached to it.
2010-04-10 Dan Davison <davison@stats.ox.ac.uk> 2010-04-10 Dan Davison <davison@stats.ox.ac.uk>

View file

@ -493,7 +493,7 @@ compilation and evaluation time conflicts."
;; Next non-whitespace character should be '{' ;; Next non-whitespace character should be '{'
(goto-char (c-point 'boi)) (goto-char (c-point 'boi))
(unless (eq (char-after) ?{) (unless (eq (char-after) ?{)
(backward-up-list 1 t t)) (ignore-errors (backward-up-list 1 t t)))
(save-excursion (save-excursion
;; 'new' should be part of the line ;; 'new' should be part of the line
(goto-char (c-point 'iopl)) (goto-char (c-point 'iopl))

View file

@ -47,10 +47,6 @@
;; comment; move to end of line; create an empty comment; tell you that ;; comment; move to end of line; create an empty comment; tell you that
;; the line ends in a quoted string, or has a # which should be a \#. ;; the line ends in a quoted string, or has a # which should be a \#.
;; If your machine is slow, you may want to remove some of the bindings
;; to perl-electric-terminator. I changed the indenting defaults to be
;; what Larry Wall uses in perl/lib, but left in all the options.
;; I also tuned a few things: comments and labels starting in column ;; I also tuned a few things: comments and labels starting in column
;; zero are left there by perl-indent-exp; perl-beginning-of-function ;; zero are left there by perl-indent-exp; perl-beginning-of-function
;; goes back to the first open brace/paren in column zero, the open brace ;; goes back to the first open brace/paren in column zero, the open brace

View file

@ -6039,7 +6039,7 @@ by `find-word-boundary-function-table'. It is also not interactive."
With argument ARG, do this that many times. With argument ARG, do this that many times.
If ARG is omitted or nil, move point backward one word. If ARG is omitted or nil, move point backward one word.
This function is like `forward-word', but it is not affected This function is like `backward-word', but it is not affected
by `find-word-boundary-function-table'. It is also not interactive." by `find-word-boundary-function-table'. It is also not interactive."
(let ((find-word-boundary-function-table (let ((find-word-boundary-function-table
(if (char-table-p word-move-empty-char-table) (if (char-table-p word-move-empty-char-table)

View file

@ -2524,9 +2524,9 @@ this function signals an error."
(if lookup-dict (if lookup-dict
(unless (file-readable-p lookup-dict) (unless (file-readable-p lookup-dict)
(error "lookup-words error: Unreadable or missing plain word-list %s." (error "ispell-lookup-words: Unreadable or missing plain word-list %s"
lookup-dict)) lookup-dict))
(error (concat "lookup-words error: No plain word-list found at system" (error (concat "ispell-lookup-words: No plain word-list found at system"
"default locations. " "default locations. "
"Customize `ispell-alternate-dictionary' to set yours."))) "Customize `ispell-alternate-dictionary' to set yours.")))

View file

@ -2673,17 +2673,17 @@ This function is more useful than \\[tex-buffer] when you need the
The last line of the buffer is displayed on The last line of the buffer is displayed on
line LINE of the window, or centered if LINE is nil." line LINE of the window, or centered if LINE is nil."
(interactive "P") (interactive "P")
(let ((tex-shell (get-buffer "*tex-shell*")) (let ((tex-shell (get-buffer "*tex-shell*")))
(window))
(if (null tex-shell) (if (null tex-shell)
(message "No TeX output buffer") (message "No TeX output buffer")
(setq window (display-buffer tex-shell display-tex-shell-buffer-action)) (when-let ((window
(display-buffer tex-shell display-tex-shell-buffer-action)))
(with-selected-window window (with-selected-window window
(bury-buffer tex-shell) (bury-buffer tex-shell)
(goto-char (point-max)) (goto-char (point-max))
(recenter (if linenum (recenter (if linenum
(prefix-numeric-value linenum) (prefix-numeric-value linenum)
(/ (window-height) 2))))))) (/ (window-height) 2))))))))
(defcustom tex-print-file-extension ".dvi" (defcustom tex-print-file-extension ".dvi"
"The TeX-compiled file extension for viewing and printing. "The TeX-compiled file extension for viewing and printing.

View file

@ -656,9 +656,9 @@ struct buffer
ptrdiff_t last_window_start; ptrdiff_t last_window_start;
/* If the long line scan cache is enabled (i.e. the buffer-local /* If the long line scan cache is enabled (i.e. the buffer-local
variable cache-long-line-scans is non-nil), newline_cache variable cache-long-scans is non-nil), newline_cache points to
points to the newline cache, and width_run_cache points to the the newline cache, and width_run_cache points to the width run
width run cache. cache.
The newline cache records which stretches of the buffer are The newline cache records which stretches of the buffer are
known *not* to contain newlines, so that they can be skipped known *not* to contain newlines, so that they can be skipped

View file

@ -886,7 +886,7 @@ add_to_function_history (Lisp_Object symbol, Lisp_Object olddef)
Lisp_Object past = Fget (symbol, Qfunction_history); Lisp_Object past = Fget (symbol, Qfunction_history);
Lisp_Object file = Qnil; Lisp_Object file = Qnil;
/* FIXME: Sadly, `Vload_file_name` gives less precise information /* FIXME: Sadly, `Vload_file_name` gives less precise information
(it's sometimes non-nil when it shoujld be nil). */ (it's sometimes non-nil when it should be nil). */
Lisp_Object tail = Vcurrent_load_list; Lisp_Object tail = Vcurrent_load_list;
FOR_EACH_TAIL_SAFE (tail) FOR_EACH_TAIL_SAFE (tail)
if (NILP (XCDR (tail)) && STRINGP (XCAR (tail))) if (NILP (XCDR (tail)) && STRINGP (XCAR (tail)))

View file

@ -3832,7 +3832,7 @@ mutually_exclusive_p (struct re_pattern_buffer *bufp, re_char *p1,
EXTRACT_NUMBER_AND_INCR (mcnt, p2); EXTRACT_NUMBER_AND_INCR (mcnt, p2);
/* Don't just test `mcnt > 0` because non-greedy loops have /* Don't just test `mcnt > 0` because non-greedy loops have
their test at the end with an unconditional jump at the start. */ their test at the end with an unconditional jump at the start. */
if (p2 + mcnt > p2_orig) /* Ensure forward progress. */ if (p2 > p2_orig && mcnt >= 0) /* Ensure forward progress. */
return (mutually_exclusive_p (bufp, p1, p2) return (mutually_exclusive_p (bufp, p1, p2)
&& mutually_exclusive_p (bufp, p1, p2 + mcnt)); && mutually_exclusive_p (bufp, p1, p2 + mcnt));
break; break;

View file

@ -873,6 +873,7 @@ This evaluates the TESTS test cases from glibc."
(should (equal (string-match "\\`a\\{2\\}*\\'" "a") nil))) (should (equal (string-match "\\`a\\{2\\}*\\'" "a") nil)))
(ert-deftest regexp-tests-backtrack-optimization () ;bug#61514 (ert-deftest regexp-tests-backtrack-optimization () ;bug#61514
:expected-result :failed
;; Make sure we don't use up the regexp stack needlessly. ;; Make sure we don't use up the regexp stack needlessly.
(with-current-buffer (get-buffer-create "*bug*") (with-current-buffer (get-buffer-create "*bug*")
(erase-buffer) (erase-buffer)
@ -965,4 +966,8 @@ This evaluates the TESTS test cases from glibc."
(re-search-forward re nil t)) (re-search-forward re nil t))
nil)))) nil))))
(ert-deftest regex-tests-mutual-exclusive-inf-rec ()
;; Regression test for bug#65726, where this crashed Emacs.
(should (equal (string-match "a*\\(?:c\\|b*\\)*" "a") 0)))
;;; regex-emacs-tests.el ends here ;;; regex-emacs-tests.el ends here