aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2023-08-12 13:50:38 -0400
committerEli Zaretskii2023-08-12 13:50:38 -0400
commit3fc9793a260feed0deda8b6bdfd3e1c73774181a (patch)
treea0ec5882b60ae1a5deff188971f6ae3586d5d0fa
parent276bf5369ffa47f994586b932cb6a9dd760ecfeb (diff)
parent842dbf500e0fcf44d686d480f39d067b19ff38a9 (diff)
downloademacs-3fc9793a260feed0deda8b6bdfd3e1c73774181a.tar.gz
emacs-3fc9793a260feed0deda8b6bdfd3e1c73774181a.zip
Merge from origin/emacs-29
842dbf500e0 * Fix `batch-byte+native-compile' target directory. 8dbd5aa1eef Avoid crashes in 'display_count_lines' when current buffe... 47b4f4cf783 ; * doc/emacs/mini.texi (Completion Commands): Fix a typo... 78999d52136 Update csharp tree-sitter support due to upstream changes 556cb01b48e Substitute command keys in 'ielm-header' at use time 99367078e50 ; * etc/PROBLEMS: Add entry about XIM problems (bug#65205). 03e897c08fa Fix rare crashes in redisplay due to problems with fontsets b1ba06a1e4b Fix a typo in 'leuven-dark-theme.el' e80a9dcabb9 ; * admin/git-bisect-start: Update failing commits 9091f42784b ; * admin/git-bisect-start: Update failing commits 344ac529ca9 ; * etc/PROBLEMS: Fix typo. bccf848b26c Adapt Tramp test 71bc060e403 Properly expand the JSX indentation rules in 'js-ts-mode' 889cfb42ed9 * Add `emacs-lisp-native-compile' to easy-menu. 4535aafa8a3 * lisp/progmodes/elisp-mode.el (emacs-lisp-mode-menu): Si... 173af0cad51 * Introduce `emacs-lisp-native-compile'. 063d7d89d7a Fix the -x switch in non-X builds 5a7fb0b39b7 Document that `set-mouse-color' does not work everywhere d06fc72496f ; * doc/emacs/dired.texi (Misc Dired Features): Fix last ... 97b8ac376b5 Fix the effects and documentation of 'dired-free-space' 75c72e59f69 ; Fix typo 6d11b7b3007 Fix cross-reference to eldoc in eglot manual 913e50aba6c Add native-compilation to Emacs Lisp mode menu b93107c20b2 Fix emacs-lisp-native-compile-and-load eln target directo...
-rwxr-xr-xadmin/git-bisect-start21
-rw-r--r--doc/emacs/dired.texi17
-rw-r--r--doc/emacs/mini.texi4
-rw-r--r--doc/misc/eglot.texi7
-rw-r--r--etc/PROBLEMS63
-rw-r--r--etc/themes/leuven-dark-theme.el2
-rw-r--r--lisp/dired.el24
-rw-r--r--lisp/emacs-lisp/comp.el14
-rw-r--r--lisp/help.el2
-rw-r--r--lisp/ielm.el5
-rw-r--r--lisp/progmodes/csharp-mode.el11
-rw-r--r--lisp/progmodes/elisp-mode.el23
-rw-r--r--lisp/progmodes/js.el2
-rw-r--r--src/emacs.c24
-rw-r--r--src/fns.c3
-rw-r--r--src/xdisp.c23
-rw-r--r--test/lisp/net/tramp-tests.el1
-rw-r--r--test/src/comp-tests.el6
18 files changed, 150 insertions, 102 deletions
diff --git a/admin/git-bisect-start b/admin/git-bisect-start
index 9de4d547323..8eb5328a1a1 100755
--- a/admin/git-bisect-start
+++ b/admin/git-bisect-start
@@ -82,7 +82,7 @@ done
82# SKIP-BRANCH 58cc931e92ece70c3e64131ee12a799d65409100 82# SKIP-BRANCH 58cc931e92ece70c3e64131ee12a799d65409100
83 83
84## The list below is the exhaustive list of all commits between Dec 1 84## The list below is the exhaustive list of all commits between Dec 1
85## 2016 and Jul 8 2023 on which building Emacs with the default 85## 2016 and Aug 10 2023 on which building Emacs with the default
86## options, on a GNU/Linux computer and with GCC, fails. It is 86## options, on a GNU/Linux computer and with GCC, fails. It is
87## possible (though unlikely) that building Emacs with non-default 87## possible (though unlikely) that building Emacs with non-default
88## options, with other compilers, or on other platforms, would succeed 88## options, with other compilers, or on other platforms, would succeed
@@ -1757,3 +1757,22 @@ $REAL_GIT bisect skip $(cat $0 | grep '^# SKIP-SINGLE ' | sed 's/^# SKIP-SINGLE
1757# SKIP-SINGLE 0a35c991c19a6dd0a707f2baa868f8989242c3ab 1757# SKIP-SINGLE 0a35c991c19a6dd0a707f2baa868f8989242c3ab
1758# SKIP-SINGLE e2ee646b162b87e832c8032b9d90577bd21f21f8 1758# SKIP-SINGLE e2ee646b162b87e832c8032b9d90577bd21f21f8
1759# SKIP-SINGLE 35d2fe176cb438d55552cacbdf25c3692c054d51 1759# SKIP-SINGLE 35d2fe176cb438d55552cacbdf25c3692c054d51
1760# SKIP-SINGLE de3d8ae71b43f80244c4d813ff1503b8551f0026
1761# SKIP-SINGLE a496509cedb17109d0e6297a74e2ff8ed526333c
1762# SKIP-SINGLE a6a586ffc1bd302e30d80cb88b06e1e7e1573f63
1763# SKIP-SINGLE f5d142f66370b29af58360faeea90d1112756bc5
1764# SKIP-SINGLE 46e8ab23eaeb5e453042f430fc016cf9ffc2ac37
1765# SKIP-SINGLE eb72569dbef91862a765cd4d9f380220244b4549
1766# SKIP-SINGLE c4b77b82decb757af0aff1b7420203fa0805b483
1767# SKIP-SINGLE 0ee01457a84e031d490553949a2deacd4865a5bb
1768# SKIP-SINGLE 6c68d9bd3a18c74384fc764179fd92a024d6c35d
1769# SKIP-SINGLE a46e231a5f27c46933cc53865cee452ad1a0c0d3
1770# SKIP-SINGLE c045d5322c2c1658f215bf59d431fcc8f96ffc12
1771# SKIP-SINGLE dabb713eb05aff62deb6872a3498327934f18c8d
1772# SKIP-SINGLE b8c05636ca4b28a7adc62e82a5fed528b402396d
1773# SKIP-SINGLE e72afa9dbf92f45d00c87c90ead364d52f73024f
1774# SKIP-SINGLE 9d3aacedf0c217af207d39e390f376914160396b
1775# SKIP-SINGLE 6bdbb4cbfc2deb7d3a02e1428768e101f3dbd265
1776# SKIP-SINGLE 2752573dfb76873dbe783e89a1fbf01d157c54e3
1777# SKIP-SINGLE 62e990db7a2fad16756e019b331c28ad5a5a89fe
1778# SKIP-SINGLE 6253e7e74249c7cdfa86723f0b91a1d207cb143e
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 244dd7eb525..87124e962ca 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -1739,12 +1739,17 @@ rotation is lossless, and uses an external utility called
1739@section Other Dired Features 1739@section Other Dired Features
1740 1740
1741@vindex dired-free-space 1741@vindex dired-free-space
1742 By default, Dired will display the available space on the disk in 1742 By default, Dired displays the available space on the directory's
1743the first line. This is the @code{first} value of the 1743disk on the first line of that directory's listing, following the
1744@code{dired-free-space} variable. If you set this to 1744directory name. You can control this display by customizing the
1745@code{separate} instead, Dired will display this on a separate line 1745variable @code{dired-free-space}. Its default value is @code{first},
1746(including the space the files in the current directory takes). If 1746which produces the available space after the directory name. If you
1747you set this to @code{nil}, the free space isn't displayed at all. 1747customize it to the value @code{separate} instead, Dired will display
1748the disk space information on a separate line, following the line with
1749the directory name, and will include in that line the space used by
1750the files in the current directory as well as the available disk
1751space. If you set this to @code{nil}, the available disk space
1752information will not be displayed at all.
1748 1753
1749@kindex + @r{(Dired)} 1754@kindex + @r{(Dired)}
1750@findex dired-create-directory 1755@findex dired-create-directory
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi
index 21e2d38e96f..a104cd2bfa1 100644
--- a/doc/emacs/mini.texi
+++ b/doc/emacs/mini.texi
@@ -411,8 +411,8 @@ the minibuffer.
411@itemx @key{prior} 411@itemx @key{prior}
412Typing @kbd{M-v}, while in the minibuffer, selects the window showing 412Typing @kbd{M-v}, while in the minibuffer, selects the window showing
413the completion list (@code{switch-to-completions}). This paves the 413the completion list (@code{switch-to-completions}). This paves the
414way for also using the commands below. @key{PageUp}, @key{prior} and 414way for using the commands below. @key{PageUp}, @key{prior} and
415@kbd{M-g M-c} does the same. You can also select the window in other 415@kbd{M-g M-c} do the same. You can also select the window in other
416ways (@pxref{Windows}). 416ways (@pxref{Windows}).
417 417
418@findex choose-completion 418@findex choose-completion
diff --git a/doc/misc/eglot.texi b/doc/misc/eglot.texi
index 962e6c914ce..6eb212ca841 100644
--- a/doc/misc/eglot.texi
+++ b/doc/misc/eglot.texi
@@ -406,9 +406,10 @@ provides:
406At-point documentation: when point is at or near a symbol or an 406At-point documentation: when point is at or near a symbol or an
407identifier, the information about the symbol/identifier, such as the 407identifier, the information about the symbol/identifier, such as the
408signature of a function or class method and server-generated 408signature of a function or class method and server-generated
409diagnostics, is made available via the ElDoc package (@pxref{Lisp 409diagnostics, is made available via the ElDoc package
410Doc,,, emacs, GNU Emacs Manual}). This allows major modes to provide 410(@pxref{Programming Language Doc,,, emacs, GNU Emacs Manual}). This
411extensive help and documentation about the program identifiers. 411allows major modes to provide extensive help and documentation about
412the program identifiers.
412 413
413@item 414@item
414On-the-fly diagnostic annotations with server-suggested fixes, via the 415On-the-fly diagnostic annotations with server-suggested fixes, via the
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 99e41d95cad..e4bbfc8d286 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -516,7 +516,7 @@ directory copy is ineffective.
516This is due to an arbitrary limit in certain versions of awk. 516This is due to an arbitrary limit in certain versions of awk.
517The solution is to use gawk (GNU awk). 517The solution is to use gawk (GNU awk).
518 518
519*** Saving a file encrypted with GnuPG via EasyPG hangs 519*** Saving a file encrypted with GnuPG via EasyPG hangs.
520 520
521This is known to happen with GnuPG v2.4.1. The only known workaround 521This is known to happen with GnuPG v2.4.1. The only known workaround
522is to downgrade to a version of GnuPG older than 2.4.1 (or, in the 522is to downgrade to a version of GnuPG older than 2.4.1 (or, in the
@@ -575,6 +575,20 @@ This can happen with CVS versions 1.12.8 and 1.12.9. Upgrade to CVS
575 575
576** Miscellaneous problems 576** Miscellaneous problems
577 577
578*** 'set-mouse-color' and the '-ms' command line argument do not work.
579
580Systems where the default cursors are not simple 1 bit-per-pixel
581bitmaps usually forbid recoloring the cursor, since it is unclear
582which colors should replace those already present within each cursor
583image. For example, 'set-mouse-color' and '-ms' have no function on X
584systems with GNOME, KDE, and other recent desktop environments
585employing cursor images containing colors and partial transparency.
586
587Changing the cursor color is also impossible on MS-Windows and PGTK
588systems. In the former case, it is because the prerequisite code has
589yet to be written. In the latter, it is because GTK does not provide
590for changing the color of cursor images.
591
578*** Display artifacts on GUI frames on X-based systems. 592*** Display artifacts on GUI frames on X-based systems.
579 593
580This is known to be caused by using double-buffering (which is enabled 594This is known to be caused by using double-buffering (which is enabled
@@ -1163,43 +1177,6 @@ do anything about it.
1163 1177
1164** International characters aren't displayed under X. 1178** International characters aren't displayed under X.
1165 1179
1166*** Missing X fonts
1167
1168XFree86 4 contains many fonts in iso10646-1 encoding which have
1169minimal character repertoires (whereas the encoding part of the font
1170name is meant to be a reasonable indication of the repertoire
1171according to the XLFD spec). Emacs may choose one of these to display
1172characters from the mule-unicode charsets and then typically won't be
1173able to find the glyphs to display many characters. (Check with C-u
1174C-x = .) To avoid this, you may need to use a fontset which sets the
1175font for the mule-unicode sets explicitly. E.g. to use GNU unifont,
1176include in the fontset spec:
1177
1178mule-unicode-2500-33ff:-gnu-unifont-*-iso10646-1,\
1179mule-unicode-e000-ffff:-gnu-unifont-*-iso10646-1,\
1180mule-unicode-0100-24ff:-gnu-unifont-*-iso10646-1
1181
1182** The UTF-8/16/7 coding systems don't encode CJK (Far Eastern) characters.
1183
1184Emacs directly supports the Unicode BMP whose code points are in the
1185ranges 0000-33ff and e000-ffff, and indirectly supports the parts of
1186CJK characters belonging to these legacy charsets:
1187
1188 GB2312, Big5, JISX0208, JISX0212, JISX0213-1, JISX0213-2, KSC5601
1189
1190The latter support is done in Utf-Translate-Cjk mode (turned on by
1191default). Which Unicode CJK characters are decoded into which Emacs
1192charset is decided by the current language environment. For instance,
1193in Chinese-GB, most of them are decoded into chinese-gb2312.
1194
1195If you read UTF-8 data with code points outside these ranges, the
1196characters appear in the buffer as raw bytes of the original UTF-8
1197(composed into a single quasi-character) and they will be written back
1198correctly as UTF-8, assuming you don't break the composed sequences.
1199If you read such characters from UTF-16 or UTF-7 data, they are
1200substituted with the Unicode 'replacement character', and you lose
1201information.
1202
1203** Accented ISO-8859-1 characters are displayed as | or _. 1180** Accented ISO-8859-1 characters are displayed as | or _.
1204 1181
1205Try other font set sizes (S-mouse-1). If the problem persists with 1182Try other font set sizes (S-mouse-1). If the problem persists with
@@ -1237,6 +1214,16 @@ In your ~/.Xresources file, then run
1237 1214
1238And restart Emacs. 1215And restart Emacs.
1239 1216
1217** Emacs hangs when using XIM
1218
1219This is due to an old bug in the implementation of the X protocol's
1220XIM transport: when an input method crashes for some reason, Xlib
1221cannot recover. Emacs cannot do anything about this except wait for
1222the I-Bux developers to fix their crashes. You can work around these
1223problems by disabling XIM in your X resources:
1224
1225 Emacs.useXIM: false
1226
1240** On Haiku, BeCJK doesn't work properly with Emacs 1227** On Haiku, BeCJK doesn't work properly with Emacs
1241 1228
1242Some popular Haiku input methods such BeCJK are known to behave badly 1229Some popular Haiku input methods such BeCJK are known to behave badly
diff --git a/etc/themes/leuven-dark-theme.el b/etc/themes/leuven-dark-theme.el
index bfe5256ab97..33a15945e71 100644
--- a/etc/themes/leuven-dark-theme.el
+++ b/etc/themes/leuven-dark-theme.el
@@ -95,7 +95,7 @@ CONTROL can be a number, nil, or t. When t, use DEFAULT-HEIGHT."
95 95
96;;;###theme-autoload 96;;;###theme-autoload
97(deftheme leuven-dark 97(deftheme leuven-dark
98 "Face colors with a light background. 98 "Face colors with a dark background.
99Basic, Font Lock, Isearch, Gnus, Message, Org mode, Diff, Ediff, 99Basic, Font Lock, Isearch, Gnus, Message, Org mode, Diff, Ediff,
100Flyspell, Semantic, and Ansi-Color faces are included -- and much 100Flyspell, Semantic, and Ansi-Color faces are included -- and much
101more..." 101more..."
diff --git a/lisp/dired.el b/lisp/dired.el
index fcbecbf3c08..27172c50a9f 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -218,14 +218,19 @@ If t, they are marked if and as the files linked to were marked.
218If a character, new links are unconditionally marked with that character.") 218If a character, new links are unconditionally marked with that character.")
219 219
220(defcustom dired-free-space 'first 220(defcustom dired-free-space 'first
221 "Whether and how to display the amount of free disk space in Dired buffers. 221 "Whether and how to display the disk space usage info in Dired buffers.
222If nil, don't display. 222If nil, don't display.
223If `separate', display on a separate line (along with used count). 223If `separate', display on a separate line, and include both the used
224If `first', display only the free disk space on the first line, 224and the free disk space.
225following the directory name." 225If `first', the default, display only the free disk space on the first
226 :type '(choice (const :tag "On a separate line" separate) 226line, following the directory name."
227 (const :tag "On the first line, after directory name" first) 227 :type '(choice (const
228 (const :tag "Don't display" nil)) 228 :tag
229 "On separate line, display both used and free space" separate)
230 (const
231 :tag
232 "On first line, after directory name, display only free space" first)
233 (const :tag "Don't display disk space usage" nil))
229 :version "29.1" 234 :version "29.1"
230 :group 'dired) 235 :group 'dired)
231 236
@@ -1770,7 +1775,10 @@ see `dired-use-ls-dired' for more details.")
1770 ((eq dired-free-space 'separate) 1775 ((eq dired-free-space 'separate)
1771 (end-of-line) 1776 (end-of-line)
1772 (insert " available " available) 1777 (insert " available " available)
1773 (forward-line 1) 1778 ;; The separate free-space line is considered part of the
1779 ;; directory content, for the purposes of
1780 ;; 'dired-hide-details-mode'.
1781 (beginning-of-line)
1774 (point)) 1782 (point))
1775 ((eq dired-free-space 'first) 1783 ((eq dired-free-space 'first)
1776 (goto-char beg) 1784 (goto-char beg)
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index b35e1b97e9d..bb85ef2bc06 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -1431,11 +1431,8 @@ clashes."
1431 (unless byte-to-native-top-level-forms 1431 (unless byte-to-native-top-level-forms
1432 (signal 'native-compiler-error-empty-byte (list filename))) 1432 (signal 'native-compiler-error-empty-byte (list filename)))
1433 (unless (comp-ctxt-output comp-ctxt) 1433 (unless (comp-ctxt-output comp-ctxt)
1434 (setf (comp-ctxt-output comp-ctxt) (comp-el-to-eln-filename 1434 (setf (comp-ctxt-output comp-ctxt)
1435 filename 1435 (comp-el-to-eln-filename filename native-compile-target-directory)))
1436 (or native-compile-target-directory
1437 (when byte+native-compile
1438 (car (last native-comp-eln-load-path)))))))
1439 (setf (comp-ctxt-speed comp-ctxt) (alist-get 'native-comp-speed 1436 (setf (comp-ctxt-speed comp-ctxt) (alist-get 'native-comp-speed
1440 byte-native-qualities) 1437 byte-native-qualities)
1441 (comp-ctxt-debug comp-ctxt) (alist-get 'native-comp-debug 1438 (comp-ctxt-debug comp-ctxt) (alist-get 'native-comp-debug
@@ -4374,8 +4371,9 @@ last directory in `native-comp-eln-load-path')."
4374 (comp-ensure-native-compiler) 4371 (comp-ensure-native-compiler)
4375 (let ((comp-running-batch-compilation t) 4372 (let ((comp-running-batch-compilation t)
4376 (native-compile-target-directory 4373 (native-compile-target-directory
4377 (if for-tarball 4374 (if for-tarball
4378 (car (last native-comp-eln-load-path))))) 4375 (car (last native-comp-eln-load-path))
4376 native-compile-target-directory)))
4379 (cl-loop for file in command-line-args-left 4377 (cl-loop for file in command-line-args-left
4380 if (or (null byte+native-compile) 4378 if (or (null byte+native-compile)
4381 (cl-notany (lambda (re) (string-match re file)) 4379 (cl-notany (lambda (re) (string-match re file))
@@ -4417,6 +4415,8 @@ variable \"NATIVE_DISABLED\" is set, only byte compile."
4417 (batch-byte-compile) 4415 (batch-byte-compile)
4418 (cl-assert (length= command-line-args-left 1)) 4416 (cl-assert (length= command-line-args-left 1))
4419 (let* ((byte+native-compile t) 4417 (let* ((byte+native-compile t)
4418 (native-compile-target-directory
4419 (car (last native-comp-eln-load-path)))
4420 (byte-to-native-output-buffer-file nil) 4420 (byte-to-native-output-buffer-file nil)
4421 (eln-file (car (batch-native-compile)))) 4421 (eln-file (car (batch-native-compile))))
4422 (comp-write-bytecode-file eln-file) 4422 (comp-write-bytecode-file eln-file)
diff --git a/lisp/help.el b/lisp/help.el
index 6f55136049b..f522cfac2a1 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -1493,7 +1493,7 @@ If PREFIX is non-nil, mention only keys that start with PREFIX.
1493If TITLE is non-nil, is a string to insert at the beginning. 1493If TITLE is non-nil, is a string to insert at the beginning.
1494TITLE should not end with a colon or a newline; we supply that. 1494TITLE should not end with a colon or a newline; we supply that.
1495 1495
1496If NOMENU is non-nil, then omit menu-bar commands. 1496If NO-MENU is non-nil, then omit menu-bar commands.
1497 1497
1498If TRANSL is non-nil, the definitions are actually key 1498If TRANSL is non-nil, the definitions are actually key
1499translations so print strings and vectors differently. 1499translations so print strings and vectors differently.
diff --git a/lisp/ielm.el b/lisp/ielm.el
index b45db3ec97e..f7d025b8c01 100644
--- a/lisp/ielm.el
+++ b/lisp/ielm.el
@@ -148,9 +148,8 @@ such as `edebug-defun' to work with such inputs."
148This variable is buffer-local.") 148This variable is buffer-local.")
149 149
150(defvar ielm-header 150(defvar ielm-header
151 (substitute-command-keys
152 "*** Welcome to IELM *** Type (describe-mode) or press \ 151 "*** Welcome to IELM *** Type (describe-mode) or press \
153\\[describe-mode] for help.\n") 152\\[describe-mode] for help.\n"
154 "Message to display when IELM is started.") 153 "Message to display when IELM is started.")
155 154
156(defvaralias 'inferior-emacs-lisp-mode-map 'ielm-map) 155(defvaralias 'inferior-emacs-lisp-mode-map 'ielm-map)
@@ -622,7 +621,7 @@ Customized bindings may be defined in `ielm-map', which currently contains:
622 (setq-local comint-inhibit-carriage-motion t) 621 (setq-local comint-inhibit-carriage-motion t)
623 622
624 ;; Add a silly header 623 ;; Add a silly header
625 (insert ielm-header) 624 (insert (substitute-command-keys ielm-header))
626 (ielm-set-pm (point-max)) 625 (ielm-set-pm (point-max))
627 (unless comint-use-prompt-regexp 626 (unless comint-use-prompt-regexp
628 (let ((inhibit-read-only t)) 627 (let ((inhibit-read-only t))
diff --git a/lisp/progmodes/csharp-mode.el b/lisp/progmodes/csharp-mode.el
index db036aab685..5291efda175 100644
--- a/lisp/progmodes/csharp-mode.el
+++ b/lisp/progmodes/csharp-mode.el
@@ -816,7 +816,7 @@ compilation and evaluation time conflicts."
816 :language 'c-sharp 816 :language 'c-sharp
817 :feature 'definition 817 :feature 'definition
818 :override t 818 :override t
819 '((qualified_name (identifier) @font-lock-type-face) 819 `((qualified_name (identifier) @font-lock-type-face)
820 (using_directive (identifier) @font-lock-type-face) 820 (using_directive (identifier) @font-lock-type-face)
821 (using_directive (name_equals 821 (using_directive (name_equals
822 (identifier) @font-lock-type-face)) 822 (identifier) @font-lock-type-face))
@@ -843,8 +843,13 @@ compilation and evaluation time conflicts."
843 (class_declaration (identifier) @font-lock-type-face) 843 (class_declaration (identifier) @font-lock-type-face)
844 844
845 (constructor_declaration name: (_) @font-lock-type-face) 845 (constructor_declaration name: (_) @font-lock-type-face)
846 846 ;;; Handle different releases of tree-sitter-c-sharp.
847 (method_declaration type: [(identifier) (void_keyword)] @font-lock-type-face) 847 ;;; Check if keyword void_keyword is available, then return the correct rule."
848 ,@(condition-case nil
849 (progn (treesit-query-capture 'csharp '((void_keyword) @capture))
850 `((method_declaration type: [(identifier) (void_keyword)] @font-lock-type-face)))
851 (error
852 `((method_declaration type: [(identifier) (predefined_type)] @font-lock-type-face))))
848 (method_declaration type: (generic_name (identifier) @font-lock-type-face)) 853 (method_declaration type: (generic_name (identifier) @font-lock-type-face))
849 (method_declaration name: (_) @font-lock-function-name-face) 854 (method_declaration name: (_) @font-lock-function-name-face)
850 855
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index 955b708aee9..3e1803fcc98 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -84,6 +84,12 @@ All commands in `lisp-mode-shared-map' are inherited by this map."
84 :help "Byte-compile the current file (if it has changed), then load compiled code"] 84 :help "Byte-compile the current file (if it has changed), then load compiled code"]
85 ["Byte-recompile Directory..." byte-recompile-directory 85 ["Byte-recompile Directory..." byte-recompile-directory
86 :help "Recompile every `.el' file in DIRECTORY that needs recompilation"] 86 :help "Recompile every `.el' file in DIRECTORY that needs recompilation"]
87 ["Native-compile This File" emacs-lisp-native-compile
88 :help "Compile the current file containing the current buffer to native code"
89 :active (native-comp-available-p)]
90 ["Native-compile and Load" emacs-lisp-native-compile-and-load
91 :help "Compile the current file to native code, then load compiled native code"
92 :active (native-comp-available-p)]
87 ["Disassemble Byte Compiled Object..." disassemble 93 ["Disassemble Byte Compiled Object..." disassemble
88 :help "Print disassembled code for OBJECT in a buffer"] 94 :help "Print disassembled code for OBJECT in a buffer"]
89 "---" 95 "---"
@@ -217,6 +223,16 @@ All commands in `lisp-mode-shared-map' are inherited by this map."
217(declare-function native-compile "comp") 223(declare-function native-compile "comp")
218(declare-function comp-write-bytecode-file "comp") 224(declare-function comp-write-bytecode-file "comp")
219 225
226(defun emacs-lisp-native-compile ()
227 "Native-compile synchronously the current file (if it has changed)."
228 (interactive nil emacs-lisp-mode)
229 (emacs-lisp--before-compile-buffer)
230 (let* ((byte+native-compile t)
231 (byte-to-native-output-buffer-file nil)
232 (eln (native-compile buffer-file-name)))
233 (when eln
234 (comp-write-bytecode-file eln))))
235
220(defun emacs-lisp-native-compile-and-load () 236(defun emacs-lisp-native-compile-and-load ()
221 "Native-compile synchronously the current file (if it has changed). 237 "Native-compile synchronously the current file (if it has changed).
222Load the compiled code when finished. 238Load the compiled code when finished.
@@ -225,11 +241,8 @@ Use `emacs-lisp-byte-compile-and-load' in combination with
225`native-comp-jit-compilation' set to t to achieve asynchronous 241`native-comp-jit-compilation' set to t to achieve asynchronous
226native compilation." 242native compilation."
227 (interactive nil emacs-lisp-mode) 243 (interactive nil emacs-lisp-mode)
228 (emacs-lisp--before-compile-buffer) 244 (when-let ((byte-file (emacs-lisp-native-compile)))
229 (let ((byte+native-compile t) 245 (load (file-name-sans-extension byte-file))))
230 (byte-to-native-output-buffer-file nil))
231 (when-let ((eln (native-compile buffer-file-name)))
232 (load (file-name-sans-extension (comp-write-bytecode-file eln))))))
233 246
234(defun emacs-lisp-macroexpand () 247(defun emacs-lisp-macroexpand ()
235 "Macroexpand the form after point. 248 "Macroexpand the form after point.
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index f2d7d3d3ecb..c7a031697f1 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -3474,7 +3474,7 @@ Check if a node type is available, then return the right indent rules."
3474 ((parent-is "statement_block") parent-bol js-indent-level) 3474 ((parent-is "statement_block") parent-bol js-indent-level)
3475 3475
3476 ;; JSX 3476 ;; JSX
3477 (js-jsx--treesit-indent-compatibility-bb1f97b) 3477 ,@(js-jsx--treesit-indent-compatibility-bb1f97b)
3478 ((node-is "jsx_closing_element") parent 0) 3478 ((node-is "jsx_closing_element") parent 0)
3479 ((match "jsx_element" "statement") parent js-indent-level) 3479 ((match "jsx_element" "statement") parent js-indent-level)
3480 ((parent-is "jsx_element") parent js-indent-level) 3480 ((parent-is "jsx_element") parent js-indent-level)
diff --git a/src/emacs.c b/src/emacs.c
index 36914967dc7..687b8c7f81f 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -2077,15 +2077,16 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
2077 } 2077 }
2078#endif /* HAVE_NS */ 2078#endif /* HAVE_NS */
2079 2079
2080#ifdef HAVE_X_WINDOWS
2081 /* Stupid kludge to catch command-line display spec. We can't 2080 /* Stupid kludge to catch command-line display spec. We can't
2082 handle this argument entirely in window system dependent code 2081 handle this argument entirely in window system dependent code
2083 because we don't even know which window system dependent code 2082 because we don't even know which window system dependent code
2084 to run until we've recognized this argument. */ 2083 to run until we've recognized this argument. */
2085 { 2084 {
2086 char *displayname = 0;
2087 int count_before = skip_args; 2085 int count_before = skip_args;
2088 2086
2087#ifdef HAVE_X_WINDOWS
2088 char *displayname = 0;
2089
2089 /* Skip any number of -d options, but only use the last one. */ 2090 /* Skip any number of -d options, but only use the last one. */
2090 while (!only_version) 2091 while (!only_version)
2091 { 2092 {
@@ -2115,12 +2116,15 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
2115 } 2116 }
2116 argv[count_before + 1] = (char *) "-d"; 2117 argv[count_before + 1] = (char *) "-d";
2117 } 2118 }
2119#endif /* HAVE_X_WINDOWS */
2118 2120
2119 if (! no_site_lisp) 2121 if (! no_site_lisp)
2120 { 2122 {
2121 if (argmatch (argv, argc, "-Q", "--quick", 3, NULL, &skip_args) 2123
2124 if (argmatch (argv, argc, "-Q", "--quick", 3, NULL, &skip_args)
2122 || argmatch (argv, argc, "-quick", 0, 2, NULL, &skip_args)) 2125 || argmatch (argv, argc, "-quick", 0, 2, NULL, &skip_args))
2123 no_site_lisp = 1; 2126 no_site_lisp = 1;
2127
2124 } 2128 }
2125 2129
2126 if (argmatch (argv, argc, "-x", 0, 1, &junk, &skip_args)) 2130 if (argmatch (argv, argc, "-x", 0, 1, &junk, &skip_args))
@@ -2136,18 +2140,6 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
2136 /* Don't actually discard this arg. */ 2140 /* Don't actually discard this arg. */
2137 skip_args = count_before; 2141 skip_args = count_before;
2138 } 2142 }
2139#else /* !HAVE_X_WINDOWS */
2140 if (! no_site_lisp)
2141 {
2142 int count_before = skip_args;
2143
2144 if (argmatch (argv, argc, "-Q", "--quick", 3, NULL, &skip_args)
2145 || argmatch (argv, argc, "-quick", 0, 2, NULL, &skip_args))
2146 no_site_lisp = 1;
2147
2148 skip_args = count_before;
2149 }
2150#endif
2151 2143
2152 /* argmatch must not be used after here, 2144 /* argmatch must not be used after here,
2153 except when building temacs 2145 except when building temacs
diff --git a/src/fns.c b/src/fns.c
index d7b2e7908b6..ac30670b3ac 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -6160,6 +6160,9 @@ from the absolute start of the buffer, disregarding the narrowing. */)
6160{ 6160{
6161 ptrdiff_t pos_byte, start_byte = BEGV_BYTE; 6161 ptrdiff_t pos_byte, start_byte = BEGV_BYTE;
6162 6162
6163 if (!BUFFER_LIVE_P (current_buffer))
6164 error ("Attempt to count lines in a dead buffer");
6165
6163 if (MARKERP (position)) 6166 if (MARKERP (position))
6164 { 6167 {
6165 /* We don't trust the byte position if the marker's buffer is 6168 /* We don't trust the byte position if the marker's buffer is
diff --git a/src/xdisp.c b/src/xdisp.c
index d62a8d98317..8970d5aaaf2 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -8339,9 +8339,17 @@ get_next_display_element (struct it *it)
8339 && success_p 8339 && success_p
8340 && FRAME_WINDOW_P (it->f)) 8340 && FRAME_WINDOW_P (it->f))
8341 { 8341 {
8342 struct face *face = FACE_FROM_ID (it->f, it->face_id); 8342 struct face *face = FACE_FROM_ID_OR_NULL (it->f, it->face_id);
8343 8343
8344 if (it->what == IT_COMPOSITION && it->cmp_it.ch >= 0) 8344 /* It shouldn't happen, ever, that FACE is NULL here, but
8345 evidently some faulty fonts/fontsets can sometimes cause it.
8346 In that case, we punt and consider the stuff undisplayable. */
8347 if (!face)
8348 {
8349 it->what = IT_GLYPHLESS;
8350 it->glyphless_method = GLYPHLESS_DISPLAY_EMPTY_BOX;
8351 }
8352 else if (it->what == IT_COMPOSITION && it->cmp_it.ch >= 0)
8345 { 8353 {
8346 /* Automatic composition with glyph-string. */ 8354 /* Automatic composition with glyph-string. */
8347 Lisp_Object gstring = composition_gstring_from_id (it->cmp_it.id); 8355 Lisp_Object gstring = composition_gstring_from_id (it->cmp_it.id);
@@ -27908,6 +27916,8 @@ are the selected window and the WINDOW's buffer). */)
27908 if (NILP (buffer)) 27916 if (NILP (buffer))
27909 buffer = w->contents; 27917 buffer = w->contents;
27910 CHECK_BUFFER (buffer); 27918 CHECK_BUFFER (buffer);
27919 if (!BUFFER_LIVE_P (XBUFFER (buffer)))
27920 error ("Attempt to format a mode line for a dead buffer");
27911 27921
27912 /* Make formatting the modeline a non-op when noninteractive, otherwise 27922 /* Make formatting the modeline a non-op when noninteractive, otherwise
27913 there will be problems later caused by a partially initialized frame. */ 27923 there will be problems later caused by a partially initialized frame. */
@@ -32098,9 +32108,12 @@ produce_glyphless_glyph (struct it *it, bool for_no_font, Lisp_Object acronym)
32098 int len; 32108 int len;
32099 32109
32100 /* Get the metrics of the base font. We always refer to the current 32110 /* Get the metrics of the base font. We always refer to the current
32101 ASCII face. */ 32111 ASCII face, but if some faulty setup of fontsets causes that to
32102 face = FACE_FROM_ID (it->f, it->face_id)->ascii_face; 32112 be NULL, we fall back to the frame's default font. */
32103 font = face->font ? face->font : FRAME_FONT (it->f); 32113 face = FACE_FROM_ID_OR_NULL (it->f, it->face_id);
32114 if (face)
32115 face = face->ascii_face;
32116 font = (face && face->font) ? face->font : FRAME_FONT (it->f);
32104 normal_char_ascent_descent (font, -1, &it->ascent, &it->descent); 32117 normal_char_ascent_descent (font, -1, &it->ascent, &it->descent);
32105 it->ascent += font->baseline_offset; 32118 it->ascent += font->baseline_offset;
32106 it->descent -= font->baseline_offset; 32119 it->descent -= font->baseline_offset;
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index fa68372143c..61c5378bc9f 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -7411,6 +7411,7 @@ This requires restrictions of file name syntax."
7411 (skip-unless (not (getenv "EMACS_HYDRA_CI"))) ; SLOW ~ 245s 7411 (skip-unless (not (getenv "EMACS_HYDRA_CI"))) ; SLOW ~ 245s
7412 (skip-unless (not (tramp--test-rsync-p))) 7412 (skip-unless (not (tramp--test-rsync-p)))
7413 (skip-unless (not (tramp--test-rclone-p))) 7413 (skip-unless (not (tramp--test-rclone-p)))
7414 (skip-unless (not (or (eq system-type 'darwin) (tramp--test-macos-p))))
7414 7415
7415 ;; Newlines, slashes and backslashes in file names are not 7416 ;; Newlines, slashes and backslashes in file names are not
7416 ;; supported. So we don't test. And we don't test the tab 7417 ;; supported. So we don't test. And we don't test the tab
diff --git a/test/src/comp-tests.el b/test/src/comp-tests.el
index 89b1eefb1dc..2fd70585628 100644
--- a/test/src/comp-tests.el
+++ b/test/src/comp-tests.el
@@ -72,9 +72,11 @@ Check that the resulting binaries do not differ."
72 :suffix "-comp-stage1.el" 72 :suffix "-comp-stage1.el"
73 (ert-with-temp-file comp2-src 73 (ert-with-temp-file comp2-src
74 :suffix "-comp-stage2.el" 74 :suffix "-comp-stage2.el"
75 (let* ((byte+native-compile t) ; FIXME HACK 75 (let* ((byte+native-compile t)
76 (native-compile-target-directory
77 (car (last native-comp-eln-load-path)))
76 (comp-src (expand-file-name "../../../lisp/emacs-lisp/comp.el" 78 (comp-src (expand-file-name "../../../lisp/emacs-lisp/comp.el"
77 (ert-resource-directory))) 79 (ert-resource-directory)))
78 ;; Can't use debug symbols. 80 ;; Can't use debug symbols.
79 (native-comp-debug 0)) 81 (native-comp-debug 0))
80 (copy-file comp-src comp1-src t) 82 (copy-file comp-src comp1-src t)