Merge from origin/emacs-29
bc56da92d8
; Fix error in 'tex-recenter-output-buffer'd17c5adc05
Fix regexp for recognizing PBM images9e9f61866e
Improve wording in ELisp manual7427efa033
Fix typo (Bug#65764)59c6624408
; * lisp/ido.el (ido-completion-buffer): Fix :type (bug#6...4ec4b18c2a
Fix libgccjit build on Haiku80bdcf8f35
(regexp-tests-backtrack-optimization): Mark it as failing8a9e653cc8
; Add regression test for bug#657266fad73d7cc
* 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.24ff5190a174
Add note on ELPA to admin/notes/bug-triagef1e4cbe72a
; * 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 typos5b246b9b81
* CONTRIBUTE: Document making ChangeLogs with Magit.0bd4661941
Doc fixes for obsolete functions and variables524c0c34f2
; * 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 manualdbbcf4a659
Fix fontification of " in edit-kbd-macro # Conflicts: # test/src/regex-emacs-tests.el
This commit is contained in:
commit
0273914921
28 changed files with 2562 additions and 1151 deletions
|
@ -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
|
||||
'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
|
||||
https://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html
|
||||
or run 'info "(emacs)Change Log Commands"'.
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
HOW TO TRIAGE EMACS BUGS -*- outline -*-
|
||||
|
||||
This document just describes the procedure of triaging bugs, for information on
|
||||
how to work with the bug tracker, see the bugtracker file in this same directory
|
||||
for the basics. You can also install the debbugs ELPA package for access to M-x
|
||||
debbugs-gnu, an emacs interface to debbugs, and M-x debbugs-org, an emacs
|
||||
interface via org-mode.
|
||||
This document describes the procedure of triaging bugs. For information on how
|
||||
to work with the bug tracker, see the file "bugtracker" in the same directory as
|
||||
this file for the basics. You can also install the GNU ELPA package 'debbugs'
|
||||
for access to 'M-x debbugs-gnu', an Emacs interface to the debbugs bug tracker,
|
||||
and 'M-x debbugs-org', an Emacs interface via org-mode.
|
||||
|
||||
* 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
|
||||
to check this for another Emacs version but the next-to-be-released-one,
|
||||
use the "C-u" prefix.
|
||||
1. After that, enter debbugs mode (either debbugs-gnu, debbugs-org, or via the
|
||||
web browser), and accept the default list option of bugs that have severity
|
||||
serious, important, or normal.
|
||||
1. After that, enter debbugs mode (either using 'M-x debbugs-gnu',
|
||||
'M-x debbugs-org', or via the web browser), and accept the
|
||||
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
|
||||
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
|
||||
|
@ -90,21 +91,51 @@ necessary information for others to act on.
|
|||
|
||||
For each new bug, ask the following questions:
|
||||
|
||||
1. Is the bug report written in a way to be easy to reproduce (starts from
|
||||
"emacs -Q", etc.)? If not, ask the reporter to try and reproduce it on an
|
||||
emacs without customization.
|
||||
2. Is the bug report written against the latest emacs? If not, try to
|
||||
reproduce on the latest version, and if it can't be reproduced, ask the
|
||||
reporter to try again with the latest version.
|
||||
1. Is the bug report written in a way to be easy to reproduce
|
||||
(starts from "emacs -Q", etc.)? If not, ask the reporter to try
|
||||
and reproduce it on an emacs without customization.
|
||||
2. Is the bug report written against the latest emacs? If not, try
|
||||
to reproduce on the latest version, and if it can't be
|
||||
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.
|
||||
4. What is the priority of the bug? Add a priority: serious, important,
|
||||
normal, minor, or wishlist.
|
||||
5. Who should be the owner? This depends on what component the bug is part
|
||||
of. You can look at the admin/MAINTAINERS file (then you can just search
|
||||
emacs-devel to match the name with an email address).
|
||||
4. What is the priority of the bug? Add a priority: "serious",
|
||||
"important", "normal", "minor, or "wishlist".
|
||||
5. Who should be the owner? This depends on what component the bug
|
||||
is part of. You can look at the "Maintainer" comment header in
|
||||
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
|
||||
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
|
||||
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.
|
||||
|
|
|
@ -480,8 +480,6 @@ THINGS TO DO
|
|||
|
||||
** Have a look at set_frame_matrix_frame.
|
||||
|
||||
** Check if we got term-setup-hook right.
|
||||
|
||||
** I think tip_frame should be display-local.
|
||||
|
||||
** Check display reference count handling in x_create_tip_frame.
|
||||
|
|
|
@ -5171,8 +5171,9 @@ if test "${with_native_compilation}" != "no"; then
|
|||
case "${opsys}" in
|
||||
# mingw32 loads the library dynamically.
|
||||
mingw32) ;;
|
||||
# OpenBSD doesn't have libdl, all the functions are in libc
|
||||
netbsd|openbsd)
|
||||
# Neither NetBSD, OpenBSD nor Haiku have libdl, with all dynamic
|
||||
# linker functions placed within libc.
|
||||
netbsd|openbsd|haiku)
|
||||
LIBGCCJIT_LIBS="-lgccjit" ;;
|
||||
darwin)
|
||||
LIBGCCJIT_CFLAGS="${MAC_CFLAGS}"
|
||||
|
|
|
@ -701,7 +701,6 @@ to recompile and restart the program.
|
|||
@cindex GUD Tooltip mode
|
||||
@cindex mode, GUD Tooltip
|
||||
@findex gud-tooltip-mode
|
||||
@vindex gud-tooltip-echo-area
|
||||
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
|
||||
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
|
||||
the marked area. The GUD Tooltip mode takes effect in the GUD
|
||||
interaction buffer, and in all source buffers with major modes listed
|
||||
in the variable @code{gud-tooltip-modes}. If the variable
|
||||
@code{gud-tooltip-echo-area} is non-@code{nil}, or if you turned off
|
||||
the tooltip mode, values are shown in the echo area instead of a
|
||||
tooltip.
|
||||
in the variable @code{gud-tooltip-modes}. If you turned off 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
|
||||
expression's value in GDB can sometimes expand a macro, potentially
|
||||
|
|
|
@ -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},
|
||||
which consists of the characters @samp{#<}, a descriptive string
|
||||
(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
|
||||
(current-buffer)
|
||||
|
|
|
@ -1168,15 +1168,15 @@ binary and the Ctrl-M characters are significant.
|
|||
@subsection CR/LF translation by file system
|
||||
@cindex line ends, determining by filesystem
|
||||
@cindex binary files, determining by filesystem
|
||||
@vindex untranslated-filesystem-list
|
||||
@findex add-untranslated-filesystem
|
||||
@findex remove-untranslated-filesystem
|
||||
@vindex w32-untranslated-filesystem-list
|
||||
@findex w32-add-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
|
||||
them. The list can be manipulated with the functions
|
||||
@code{add-untranslated-filesystem} and
|
||||
@code{remove-untranslated-filesystem}. With auto-detection in
|
||||
@code{w32-add-untranslated-filesystem} and
|
||||
@code{w32-remove-untranslated-filesystem}. With auto-detection in
|
||||
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
|
||||
created files.
|
||||
|
|
|
@ -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
|
||||
(normally the email address or newsgroup name is used).
|
||||
|
||||
@item hashcash-path
|
||||
@vindex hashcash-path
|
||||
@item hashcash-program
|
||||
@vindex hashcash-program
|
||||
Where the @code{hashcash} binary is installed. This variable should
|
||||
be automatically set by @code{executable-find}, but if it's @code{nil}
|
||||
(usually because the @code{hashcash} binary is not in your path)
|
||||
|
|
3513
doc/misc/widget.texi
3513
doc/misc/widget.texi
File diff suppressed because it is too large
Load diff
12
etc/PROBLEMS
12
etc/PROBLEMS
|
@ -1638,6 +1638,18 @@ to normal, do
|
|||
|
||||
(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.
|
||||
|
||||
The messages might say something like this:
|
||||
|
|
|
@ -32867,7 +32867,7 @@
|
|||
(reftex-index-switch-index-tag): Add `redo' to arguments of
|
||||
`reftex-display-index'.
|
||||
(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.
|
||||
|
||||
* textmodes/reftex-cite.el (reftex-all-used-citation-keys):
|
||||
|
|
|
@ -1598,7 +1598,7 @@ aligner would have dealt with are."
|
|||
(if (= (point) search-start)
|
||||
(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
|
||||
(if regions
|
||||
(align-regions regions align-props rule func))))))))
|
||||
|
|
|
@ -449,16 +449,13 @@ If EXTRA, include that in the string returned to represent the symbol."
|
|||
|
||||
(defun eieio-class-parents (class)
|
||||
;; FIXME: What does "(overload of variable)" mean here?
|
||||
"Return parent classes to CLASS. (overload of variable).
|
||||
|
||||
The CLOS function `class-direct-superclasses' is aliased to this function."
|
||||
"Return parent classes to CLASS. (overload of variable)."
|
||||
(eieio--class-parents (eieio--full-class-object class)))
|
||||
|
||||
(define-obsolete-function-alias 'class-parents #'eieio-class-parents "24.4")
|
||||
|
||||
(defun eieio-class-children (class)
|
||||
"Return child classes to CLASS.
|
||||
The CLOS function `class-direct-subclasses' is aliased to this function."
|
||||
"Return child classes to CLASS."
|
||||
(cl-check-type class class)
|
||||
(eieio--class-children (cl--find-class class)))
|
||||
(define-obsolete-function-alias
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
;; Author: Nicolas Petton <nicolas@petton.fr>
|
||||
;; Keywords: sequences
|
||||
;; Version: 2.23
|
||||
;; Version: 2.24
|
||||
;; Package: seq
|
||||
|
||||
;; Maintainer: emacs-devel@gnu.org
|
||||
|
|
|
@ -174,7 +174,8 @@ Note this name may be omitted if it equals the default
|
|||
"\\`/\\(afs\\|net\\)/."
|
||||
;; afs only: (and (file-exists-p "/afs") "\\`/afs/.")
|
||||
"Matching file names are treated as remote. Use nil to disable."
|
||||
:type 'regexp
|
||||
:type '(choice (const :tag "Disable" nil)
|
||||
regexp)
|
||||
:group 'ffap)
|
||||
|
||||
(defvar ffap-url-regexp
|
||||
|
|
|
@ -6068,14 +6068,18 @@ See `save-some-buffers' for PRED values."
|
|||
|
||||
(defvar save-some-buffers-functions nil
|
||||
"Functions to be run by `save-some-buffers' after saving the buffers.
|
||||
The functions can be called in two \"modes\", depending on the
|
||||
first argument. If the first argument is `query', then the
|
||||
These functions should accept one mandatory and one optional
|
||||
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
|
||||
saved (but it should not actually save anything).
|
||||
|
||||
If the first argument is something else, then the function should
|
||||
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)
|
||||
"Save some modified file-visiting buffers. Asks user about each one.
|
||||
|
|
|
@ -864,7 +864,8 @@ also modify the dynamic variables described for the variable
|
|||
(defcustom ido-completion-buffer "*Ido Completions*"
|
||||
"Name of completion buffer used by Ido.
|
||||
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
|
||||
"Non-nil means to show all completions in completion buffer.
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
(defconst image-type-header-regexps
|
||||
`(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm)
|
||||
("\\`P[1-6]\\(?:\
|
||||
\\(?:\\(?:#[^\r\n]*[\r\n]\\)*[[:space:]]\\)+\
|
||||
\\(?:\\(?:#[^\r\n]*[\r\n]\\)*[ \t\r\n]\\)+\
|
||||
\\(?:\\(?:#[^\r\n]*[\r\n]\\)*[0-9]\\)+\
|
||||
\\)\\{2\\}" . pbm)
|
||||
("\\`GIF8[79]a" . gif)
|
||||
|
|
|
@ -25932,7 +25932,7 @@
|
|||
|
||||
* 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.
|
||||
(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.
|
||||
|
||||
2010-04-10 Dan Davison <davison@stats.ox.ac.uk>
|
||||
|
|
|
@ -493,7 +493,7 @@ compilation and evaluation time conflicts."
|
|||
;; Next non-whitespace character should be '{'
|
||||
(goto-char (c-point 'boi))
|
||||
(unless (eq (char-after) ?{)
|
||||
(backward-up-list 1 t t))
|
||||
(ignore-errors (backward-up-list 1 t t)))
|
||||
(save-excursion
|
||||
;; 'new' should be part of the line
|
||||
(goto-char (c-point 'iopl))
|
||||
|
|
|
@ -47,10 +47,6 @@
|
|||
;; 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 \#.
|
||||
|
||||
;; 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
|
||||
;; 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
|
||||
|
|
|
@ -6039,7 +6039,7 @@ by `find-word-boundary-function-table'. It is also not interactive."
|
|||
With argument ARG, do this that many times.
|
||||
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."
|
||||
(let ((find-word-boundary-function-table
|
||||
(if (char-table-p word-move-empty-char-table)
|
||||
|
|
|
@ -2524,9 +2524,9 @@ this function signals an error."
|
|||
|
||||
(if 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))
|
||||
(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. "
|
||||
"Customize `ispell-alternate-dictionary' to set yours.")))
|
||||
|
||||
|
|
|
@ -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
|
||||
line LINE of the window, or centered if LINE is nil."
|
||||
(interactive "P")
|
||||
(let ((tex-shell (get-buffer "*tex-shell*"))
|
||||
(window))
|
||||
(let ((tex-shell (get-buffer "*tex-shell*")))
|
||||
(if (null tex-shell)
|
||||
(message "No TeX output buffer")
|
||||
(setq window (display-buffer tex-shell display-tex-shell-buffer-action))
|
||||
(with-selected-window window
|
||||
(bury-buffer tex-shell)
|
||||
(goto-char (point-max))
|
||||
(recenter (if linenum
|
||||
(prefix-numeric-value linenum)
|
||||
(/ (window-height) 2)))))))
|
||||
(when-let ((window
|
||||
(display-buffer tex-shell display-tex-shell-buffer-action)))
|
||||
(with-selected-window window
|
||||
(bury-buffer tex-shell)
|
||||
(goto-char (point-max))
|
||||
(recenter (if linenum
|
||||
(prefix-numeric-value linenum)
|
||||
(/ (window-height) 2))))))))
|
||||
|
||||
(defcustom tex-print-file-extension ".dvi"
|
||||
"The TeX-compiled file extension for viewing and printing.
|
||||
|
|
|
@ -656,9 +656,9 @@ struct buffer
|
|||
ptrdiff_t last_window_start;
|
||||
|
||||
/* If the long line scan cache is enabled (i.e. the buffer-local
|
||||
variable cache-long-line-scans is non-nil), newline_cache
|
||||
points to the newline cache, and width_run_cache points to the
|
||||
width run cache.
|
||||
variable cache-long-scans is non-nil), newline_cache points to
|
||||
the newline cache, and width_run_cache points to the width run
|
||||
cache.
|
||||
|
||||
The newline cache records which stretches of the buffer are
|
||||
known *not* to contain newlines, so that they can be skipped
|
||||
|
|
|
@ -886,7 +886,7 @@ add_to_function_history (Lisp_Object symbol, Lisp_Object olddef)
|
|||
Lisp_Object past = Fget (symbol, Qfunction_history);
|
||||
Lisp_Object file = Qnil;
|
||||
/* 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;
|
||||
FOR_EACH_TAIL_SAFE (tail)
|
||||
if (NILP (XCDR (tail)) && STRINGP (XCAR (tail)))
|
||||
|
|
|
@ -3832,7 +3832,7 @@ mutually_exclusive_p (struct re_pattern_buffer *bufp, re_char *p1,
|
|||
EXTRACT_NUMBER_AND_INCR (mcnt, p2);
|
||||
/* Don't just test `mcnt > 0` because non-greedy loops have
|
||||
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)
|
||||
&& mutually_exclusive_p (bufp, p1, p2 + mcnt));
|
||||
break;
|
||||
|
|
|
@ -873,6 +873,7 @@ This evaluates the TESTS test cases from glibc."
|
|||
(should (equal (string-match "\\`a\\{2\\}*\\'" "a") nil)))
|
||||
|
||||
(ert-deftest regexp-tests-backtrack-optimization () ;bug#61514
|
||||
:expected-result :failed
|
||||
;; Make sure we don't use up the regexp stack needlessly.
|
||||
(with-current-buffer (get-buffer-create "*bug*")
|
||||
(erase-buffer)
|
||||
|
@ -965,4 +966,8 @@ This evaluates the TESTS test cases from glibc."
|
|||
(re-search-forward re nil t))
|
||||
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
|
||||
|
|
Loading…
Add table
Reference in a new issue