1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-25 07:28:20 +00:00

Merge branch 'emacs-29' of git.sv.gnu.org:/srv/git/emacs into emacs-29

This commit is contained in:
Eli Zaretskii 2023-07-30 12:19:32 -04:00
commit 1198cdb556
23 changed files with 120 additions and 43 deletions

2
README
View File

@ -2,7 +2,7 @@ Copyright (C) 2001-2023 Free Software Foundation, Inc.
See the end of the file for license conditions.
This directory tree holds version 29.1 of GNU Emacs, the extensible,
This directory tree holds version 29.1.50 of GNU Emacs, the extensible,
customizable, self-documenting real-time display editor.
The file INSTALL in this directory says how to build and install GNU

View File

@ -426,6 +426,13 @@ Now change to the 'manual' directory and invoke upload-manuals:
If upload-manuals fails, resolve the problems and re-invoke it.
This requires running make-manuals again, since upload-manuals
destructively modifies the 'manual' directory where you invoke it.
If new files fail to be "cvs add"ed, they need to be manually
removed from under /path/to/webpages/cvs/checkout before retrying
upload-manuals, because if they exist, they will not be handled as
"new" files, and will not be "cvs add"ed by the next run of the
script.
Also, upload-manuals invokes "cvs commit -f", so if you run it
several times, some files will be committed more than once even
though they were not changed in-between. Suck it up.

View File

@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
AC_PREREQ([2.65])
dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el.
AC_INIT([GNU Emacs], [29.1], [bug-gnu-emacs@gnu.org], [],
AC_INIT([GNU Emacs], [29.1.50], [bug-gnu-emacs@gnu.org], [],
[https://www.gnu.org/software/emacs/])
dnl Set emacs_config_options to the options of 'configure', quoted for the shell,

View File

@ -2804,7 +2804,12 @@ library. @xref{Hooks}.
@subsection How Emacs Finds Your Init File
Emacs normally finds your init file in a location under your home
directory. @xref{Init File}.
directory@footnote{
On MS-Windows, there's no single directory considered by all programs
as ``the home directory'' of the user. Emacs uses one of the
pertinent directories as the equivalent of your home directory; see
@ref{Windows HOME}, for the details.
}. @xref{Init File}.
Emacs looks for your init file using the filenames @file{~/.emacs.el},
@file{~/.emacs}, or @file{~/.emacs.d/init.el} in that order; you can

View File

@ -706,7 +706,7 @@ produced by typing those commands.
for the detailed raw data. Reporting the facts is straightforward,
but many people strain to posit explanations and report them instead
of the facts. If the explanations are based on guesses about how
Emacs is implemented, they night not be useful; meanwhile, lacking the
Emacs is implemented, they might not be useful; meanwhile, lacking the
facts, we will have no real information about the bug. If you want to
actually @emph{debug} the problem, and report explanations that are
more than guesses, that is useful---but please include the raw facts

View File

@ -187,9 +187,13 @@ selected frame.
@end defvar
@defopt server-after-make-frame-hook
A normal hook run when the Emacs server creates a client frame. When
this hook is called, the created frame is the selected one.
@xref{Emacs Server,,, emacs, The GNU Emacs Manual}.
A normal hook run when the Emacs server starts using a client frame.
When this hook is called, the client frame is the selected one. Note
that, depending on how @command{emacsclient} was invoked
(@pxref{Invoking emacsclient,,, emacs, The GNU Emacs Manual}), this
client frame could be a new frame created for the client, or it could
be an existing frame that the server reused for handling the client
commands. @xref{Emacs Server,,, emacs, The GNU Emacs Manual}.
@end defopt

View File

@ -15,6 +15,33 @@ in older Emacs versions.
You can narrow news to a specific version by calling 'view-emacs-news'
with a prefix argument or by typing 'C-u C-h C-n'.
* Installation Changes in Emacs 29.2
* Startup Changes in Emacs 29.2
* Changes in Emacs 29.2
* Editing Changes in Emacs 29.2
* Changes in Specialized Modes and Packages in Emacs 29.2
* New Modes and Packages in Emacs 29.2
* Incompatible Lisp Changes in Emacs 29.2
* Lisp Changes in Emacs 29.2
* Changes in Emacs 29.2 on Non-Free Operating Systems
* Installation Changes in Emacs 29.1

View File

@ -226,9 +226,9 @@ mnemonics of the following coding systems:
(put 'mode-line-mule-info 'risky-local-variable t)
(defvar mode-line-client
`(""
(:propertize ("" (:eval (if (frame-parameter nil 'client) "@" "")))
help-echo ,(purecopy "emacsclient frame")))
`(:eval
(if (frame-parameter nil 'client)
,(propertize "@" 'help-echo (purecopy "emacsclient frame"))))
"Mode line construct for identifying emacsclient frames.")
;; Autoload if this file no longer dumped.
;;;###autoload

View File

@ -445,13 +445,19 @@ classes."
(setcar dash-l ?.)) ; Reduce --x to .-x
(setq items (nconc items '((?- . ?-))))))
;; Deal with leading ^ and range ^-x.
(when (and (consp (car items))
(eq (caar items) ?^)
(cdr items))
;; Move ^ and ^-x to second place.
(setq items (cons (cadr items)
(cons (car items) (cddr items)))))
;; Deal with leading ^ and range ^-x in non-negated set.
(when (and (eq (car-safe (car items)) ?^)
(not negated))
(if (eq (cdar items) ?^)
;; single leading ^
(when (cdr items)
;; Move the ^ to second place.
(setq items (cons (cadr items)
(cons (car items) (cddr items)))))
;; Split ^-x to _-x^
(setq items (cons (cons ?_ (cdar items))
(cons '(?^ . ?^)
(cdr items))))))
(cond
;; Empty set: if negated, any char, otherwise match-nothing.

View File

@ -995,7 +995,8 @@ Returns a list of the form (REAL-FUNCTION DEF ALIASED REAL-DEF)."
(symbol-name function)))))))
(real-def (cond
((and aliased (not (subrp def)))
(car (function-alias-p real-function t)))
(or (car (function-alias-p real-function))
real-function))
((subrp def) (intern (subr-name def)))
(t def))))

View File

@ -168,7 +168,7 @@ the available version of Tree-sitter for java."
:override t
:feature 'constant
`(((identifier) @font-lock-constant-face
(:match "\\`[A-Z_][A-Z_\\d]*\\'" @font-lock-constant-face))
(:match "\\`[A-Z_][0-9A-Z_]*\\'" @font-lock-constant-face))
[(true) (false)] @font-lock-constant-face)
:language 'java
:override t

View File

@ -106,7 +106,7 @@ name.")
(defconst js--plain-method-re
(concat "^\\s-*?\\(" js--dotted-name-re "\\)\\.prototype"
"\\.\\(" js--name-re "\\)\\s-*?=\\s-*?\\(\\(:?async[ \t\n]+\\)function\\)\\_>")
"\\.\\(" js--name-re "\\)\\s-*?=\\s-*?\\(\\(?:async[ \t\n]+\\)function\\)\\_>")
"Regexp matching an explicit JavaScript prototype \"method\" declaration.
Group 1 is a (possibly-dotted) class name, group 2 is a method name,
and group 3 is the `function' keyword.")
@ -3540,7 +3540,7 @@ Check if a node type is available, then return the right font lock rules."
:language 'javascript
:feature 'constant
'(((identifier) @font-lock-constant-face
(:match "\\`[A-Z_][A-Z_\\d]*\\'" @font-lock-constant-face))
(:match "\\`[A-Z_][0-9A-Z_]*\\'" @font-lock-constant-face))
[(true) (false) (null)] @font-lock-constant-face)
@ -3646,7 +3646,7 @@ Check if a node type is available, then return the right font lock rules."
:feature 'number
'((number) @font-lock-number-face
((identifier) @font-lock-number-face
(:match "\\`\\(:?NaN\\|Infinity\\)\\'" @font-lock-number-face)))
(:match "\\`\\(?:NaN\\|Infinity\\)\\'" @font-lock-number-face)))
:language 'javascript
:feature 'operator

View File

@ -1021,7 +1021,7 @@ leading double colon is not added."
(:match "\\`\\$[#\"'`:?]" @global_var))
;; ?' ?" ?` are character literals.
((character) @char
(:match "\\`?[#\"'`:?]" @char))
(:match "\\`\\?[#\"'`:?]" @char))
;; Symbols like :+, :<=> or :foo=.
((simple_symbol) @symbol
(:match "\\s." @symbol))

View File

@ -143,7 +143,7 @@
eol))
@font-lock-builtin-face)))
((identifier) @font-lock-type-face
(:match "\\`\\(:?Err\\|Ok\\|None\\|Some\\)\\'" @font-lock-type-face)))
(:match "\\`\\(?:Err\\|Ok\\|None\\|Some\\)\\'" @font-lock-type-face)))
:language 'rust
:feature 'comment
@ -232,9 +232,12 @@
(type_identifier) @font-lock-type-face
((scoped_identifier name: (identifier) @rust-ts-mode--fontify-tail))
((scoped_identifier path: (identifier) @font-lock-type-face)
(:match
"\\`\\(u8\\|u16\\|u32\\|u64\\|u128\\|usize\\|i8\\|i16\\|i32\\|i64\\|i128\\|isize\\|char\\|str\\)\\'"
@font-lock-type-face))
(:match ,(rx bos
(or "u8" "u16" "u32" "u64" "u128" "usize"
"i8" "i16" "i32" "i64" "i128" "isize"
"char" "str")
eos)
@font-lock-type-face))
((scoped_identifier path: (identifier) @rust-ts-mode--fontify-scope))
((scoped_type_identifier path: (identifier) @rust-ts-mode--fontify-scope))
(type_identifier) @font-lock-type-face)
@ -249,7 +252,7 @@
:feature 'constant
`((boolean_literal) @font-lock-constant-face
((identifier) @font-lock-constant-face
(:match "\\`[A-Z][A-Z\\d_]*\\'" @font-lock-constant-face)))
(:match "\\`[A-Z][0-9A-Z_]*\\'" @font-lock-constant-face)))
:language 'rust
:feature 'variable

View File

@ -198,7 +198,7 @@ Argument LANGUAGE is either `typescript' or `tsx'."
:language language
:feature 'constant
`(((identifier) @font-lock-constant-face
(:match "\\`[A-Z_][A-Z_\\d]*\\'" @font-lock-constant-face))
(:match "\\`[A-Z_][0-9A-Z_]*\\'" @font-lock-constant-face))
[(true) (false) (null)] @font-lock-constant-face)
:language language
@ -345,7 +345,7 @@ Argument LANGUAGE is either `typescript' or `tsx'."
:feature 'number
`((number) @font-lock-number-face
((identifier) @font-lock-number-face
(:match "\\`\\(:?NaN\\|Infinity\\)\\'" @font-lock-number-face)))
(:match "\\`\\(?:NaN\\|Infinity\\)\\'" @font-lock-number-face)))
:language language
:feature 'operator

View File

@ -182,8 +182,10 @@ space (this means characters from ! to ~; or from code 33 to
:type 'hook)
(defcustom server-after-make-frame-hook nil
"Hook run when the Emacs server creates a client frame.
The created frame is selected when the hook is called."
"Hook run when the Emacs server starts using a client frame.
The client frame is selected when the hook is called.
The client frame could be a newly-created frame, or an
existing frame reused for this purpose."
:type 'hook
:version "27.1")

View File

@ -67,7 +67,7 @@
/^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/
/^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/
/^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/
/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "29.1"/
/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "29.1.50"/
/^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/
/^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/
/^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/

View File

@ -1,7 +1,7 @@
Copyright (C) 2001-2023 Free Software Foundation, Inc.
See the end of the file for license conditions.
Emacs version 29.1 for MS-Windows
Emacs version 29.1.50 for MS-Windows
This README file describes how to set up and run a precompiled
distribution of the latest version of GNU Emacs for MS-Windows. You

View File

@ -470,7 +470,7 @@ used for non-Latin and other unusual characters (such as emoji) is
ignored as well, as are display properties and invisible text.
For these reasons, the results are not generally reliable;
for accurate dimensions of text as it will be displayed,
use `window-text-pixel-size' instead.
use `string-pixel-width' or `window-text-pixel-size' instead.
usage: (string-width STRING &optional FROM TO) */)
(Lisp_Object str, Lisp_Object from, Lisp_Object to)
{

View File

@ -11116,8 +11116,8 @@ the command loop or by `read-key-sequence'.
The value is always a vector. */)
(void)
{
return Fvector (this_command_key_count
- this_single_command_key_start,
ptrdiff_t nkeys = this_command_key_count - this_single_command_key_start;
return Fvector (nkeys < 0 ? 0 : nkeys,
(XVECTOR (this_command_keys)->contents
+ this_single_command_key_start));
}

View File

@ -17601,6 +17601,7 @@ redisplay_window_error (Lisp_Object error_data)
if (max_redisplay_ticks > 0
&& CONSP (error_data)
&& EQ (XCAR (error_data), Qerror)
&& CONSP (XCDR (error_data))
&& STRINGP (XCAR (XCDR (error_data))))
Vdelayed_warnings_list = Fcons (list2 (XCAR (error_data),
XCAR (XCDR (error_data))),
@ -27091,7 +27092,7 @@ display_mode_element (struct it *it, int depth, int field_width, int precision,
oprops = Fcopy_sequence (oprops);
tem = props;
while (CONSP (tem))
while (CONSP (tem) && CONSP (XCDR (tem)))
{
oprops = plist_put (oprops, XCAR (tem),
XCAR (XCDR (tem)));

View File

@ -5109,6 +5109,17 @@ This function is an internal primitive--use `make-frame' instead. */)
gui_default_parameter (f, parms, Qfullscreen, Qnil,
"fullscreen", "Fullscreen", RES_TYPE_SYMBOL);
#ifdef USE_CAIRO
/* Set the initial size of the Cairo surface to the frame's current
width and height. If the window manager doesn't resize the new
frame after it's first mapped, Emacs will create a surface with
empty dimensions in response to to the initial exposure event,
which will persist until the next time it's resized.
(bug#64923) */
x_cr_update_surface_desired_size (f, FRAME_PIXEL_WIDTH (f),
FRAME_PIXEL_HEIGHT (f));
#endif /* USE_CAIRO */
/* Make the window appear on the frame and enable display, unless
the caller says not to. However, with explicit parent, Emacs
cannot control visibility, so don't try. */

View File

@ -112,23 +112,33 @@
(should (equal (rx (any "]" "^") (any "]" "-") (any "-" "^")
(not (any "]" "^")) (not (any "]" "-"))
(not (any "-" "^")))
"[]^][]-][-^][^]^][^]-][^-^]"))
"[]^][]-][-^][^]^][^]-][^^-]"))
(should (equal (rx (any "]" "^" "-") (not (any "]" "^" "-")))
"[]^-][^]^-]"))
(should (equal (rx (any "^-f") (any "^-f" "-")
(any "^-f" "z") (any "^-f" "z" "-"))
"[_-f^][_-f^-][_-f^z][_-f^z-]"))
(should (equal (rx (not (any "^-f")) (not (any "^-f" "-"))
(not (any "^-f" "z")) (not (any "^-f" "z" "-")))
"[^^-f][^^-f-][^^-fz][^^-fz-]"))
(should (equal (rx (any "^-f" word) (any "^-f" "-" word))
"[_-f^[:word:]][_-f^[:word:]-]"))
(should (equal (rx (not (any "^-f" word)) (not (any "^-f" "-" word)))
"[^^-f[:word:]][^^-f[:word:]-]"))
(should (equal (rx (any "-" ascii) (any "^" ascii) (any "]" ascii))
"[[:ascii:]-][[:ascii:]^][][:ascii:]]"))
(should (equal (rx (not (any "-" ascii)) (not (any "^" ascii))
(not (any "]" ascii)))
"[^[:ascii:]-][^[:ascii:]^][^][:ascii:]]"))
"[^[:ascii:]-][^^[:ascii:]][^][:ascii:]]"))
(should (equal (rx (any "-]" ascii) (any "^]" ascii) (any "-^" ascii))
"[][:ascii:]-][]^[:ascii:]][[:ascii:]^-]"))
(should (equal (rx (not (any "-]" ascii)) (not (any "^]" ascii))
(not (any "-^" ascii)))
"[^][:ascii:]-][^]^[:ascii:]][^[:ascii:]^-]"))
"[^][:ascii:]-][^]^[:ascii:]][^^[:ascii:]-]"))
(should (equal (rx (any "-]^" ascii) (not (any "-]^" ascii)))
"[]^[:ascii:]-][^]^[:ascii:]-]"))
(should (equal (rx (any "^" lower upper) (not (any "^" lower upper)))
"[[:lower:]^[:upper:]][^[:lower:]^[:upper:]]"))
"[[:lower:]^[:upper:]][^^[:lower:][:upper:]]"))
(should (equal (rx (any "-" lower upper) (not (any "-" lower upper)))
"[[:lower:][:upper:]-][^[:lower:][:upper:]-]"))
(should (equal (rx (any "]" lower upper) (not (any "]" lower upper)))
@ -143,7 +153,7 @@
"[]-a-][^]-a-]"))
(should (equal (rx (any "--]") (not (any "--]"))
(any "-" "^-a") (not (any "-" "^-a")))
"[].-\\-][^].-\\-][-^-a][^-^-a]"))
"[].-\\-][^].-\\-][_-a^-][^^-a-]"))
(should (equal (rx (not (any "!a" "0-8" digit nonascii)))
"[^!0-8a[:digit:][:nonascii:]]"))
(should (equal (rx (any) (not (any)))