diff options
| author | Eli Zaretskii | 2023-08-12 13:50:38 -0400 |
|---|---|---|
| committer | Eli Zaretskii | 2023-08-12 13:50:38 -0400 |
| commit | 3fc9793a260feed0deda8b6bdfd3e1c73774181a (patch) | |
| tree | a0ec5882b60ae1a5deff188971f6ae3586d5d0fa | |
| parent | 276bf5369ffa47f994586b932cb6a9dd760ecfeb (diff) | |
| parent | 842dbf500e0fcf44d686d480f39d067b19ff38a9 (diff) | |
| download | emacs-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-x | admin/git-bisect-start | 21 | ||||
| -rw-r--r-- | doc/emacs/dired.texi | 17 | ||||
| -rw-r--r-- | doc/emacs/mini.texi | 4 | ||||
| -rw-r--r-- | doc/misc/eglot.texi | 7 | ||||
| -rw-r--r-- | etc/PROBLEMS | 63 | ||||
| -rw-r--r-- | etc/themes/leuven-dark-theme.el | 2 | ||||
| -rw-r--r-- | lisp/dired.el | 24 | ||||
| -rw-r--r-- | lisp/emacs-lisp/comp.el | 14 | ||||
| -rw-r--r-- | lisp/help.el | 2 | ||||
| -rw-r--r-- | lisp/ielm.el | 5 | ||||
| -rw-r--r-- | lisp/progmodes/csharp-mode.el | 11 | ||||
| -rw-r--r-- | lisp/progmodes/elisp-mode.el | 23 | ||||
| -rw-r--r-- | lisp/progmodes/js.el | 2 | ||||
| -rw-r--r-- | src/emacs.c | 24 | ||||
| -rw-r--r-- | src/fns.c | 3 | ||||
| -rw-r--r-- | src/xdisp.c | 23 | ||||
| -rw-r--r-- | test/lisp/net/tramp-tests.el | 1 | ||||
| -rw-r--r-- | test/src/comp-tests.el | 6 |
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 |
| 1743 | the first line. This is the @code{first} value of the | 1743 | disk on the first line of that directory's listing, following the |
| 1744 | @code{dired-free-space} variable. If you set this to | 1744 | directory name. You can control this display by customizing the |
| 1745 | @code{separate} instead, Dired will display this on a separate line | 1745 | variable @code{dired-free-space}. Its default value is @code{first}, |
| 1746 | (including the space the files in the current directory takes). If | 1746 | which produces the available space after the directory name. If you |
| 1747 | you set this to @code{nil}, the free space isn't displayed at all. | 1747 | customize it to the value @code{separate} instead, Dired will display |
| 1748 | the disk space information on a separate line, following the line with | ||
| 1749 | the directory name, and will include in that line the space used by | ||
| 1750 | the files in the current directory as well as the available disk | ||
| 1751 | space. If you set this to @code{nil}, the available disk space | ||
| 1752 | information 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} |
| 412 | Typing @kbd{M-v}, while in the minibuffer, selects the window showing | 412 | Typing @kbd{M-v}, while in the minibuffer, selects the window showing |
| 413 | the completion list (@code{switch-to-completions}). This paves the | 413 | the completion list (@code{switch-to-completions}). This paves the |
| 414 | way for also using the commands below. @key{PageUp}, @key{prior} and | 414 | way 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 |
| 416 | ways (@pxref{Windows}). | 416 | ways (@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: | |||
| 406 | At-point documentation: when point is at or near a symbol or an | 406 | At-point documentation: when point is at or near a symbol or an |
| 407 | identifier, the information about the symbol/identifier, such as the | 407 | identifier, the information about the symbol/identifier, such as the |
| 408 | signature of a function or class method and server-generated | 408 | signature of a function or class method and server-generated |
| 409 | diagnostics, is made available via the ElDoc package (@pxref{Lisp | 409 | diagnostics, is made available via the ElDoc package |
| 410 | Doc,,, emacs, GNU Emacs Manual}). This allows major modes to provide | 410 | (@pxref{Programming Language Doc,,, emacs, GNU Emacs Manual}). This |
| 411 | extensive help and documentation about the program identifiers. | 411 | allows major modes to provide extensive help and documentation about |
| 412 | the program identifiers. | ||
| 412 | 413 | ||
| 413 | @item | 414 | @item |
| 414 | On-the-fly diagnostic annotations with server-suggested fixes, via the | 415 | On-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. | |||
| 516 | This is due to an arbitrary limit in certain versions of awk. | 516 | This is due to an arbitrary limit in certain versions of awk. |
| 517 | The solution is to use gawk (GNU awk). | 517 | The 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 | ||
| 521 | This is known to happen with GnuPG v2.4.1. The only known workaround | 521 | This is known to happen with GnuPG v2.4.1. The only known workaround |
| 522 | is to downgrade to a version of GnuPG older than 2.4.1 (or, in the | 522 | is 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 | |||
| 580 | Systems where the default cursors are not simple 1 bit-per-pixel | ||
| 581 | bitmaps usually forbid recoloring the cursor, since it is unclear | ||
| 582 | which colors should replace those already present within each cursor | ||
| 583 | image. For example, 'set-mouse-color' and '-ms' have no function on X | ||
| 584 | systems with GNOME, KDE, and other recent desktop environments | ||
| 585 | employing cursor images containing colors and partial transparency. | ||
| 586 | |||
| 587 | Changing the cursor color is also impossible on MS-Windows and PGTK | ||
| 588 | systems. In the former case, it is because the prerequisite code has | ||
| 589 | yet to be written. In the latter, it is because GTK does not provide | ||
| 590 | for 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 | ||
| 580 | This is known to be caused by using double-buffering (which is enabled | 594 | This 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 | |||
| 1168 | XFree86 4 contains many fonts in iso10646-1 encoding which have | ||
| 1169 | minimal character repertoires (whereas the encoding part of the font | ||
| 1170 | name is meant to be a reasonable indication of the repertoire | ||
| 1171 | according to the XLFD spec). Emacs may choose one of these to display | ||
| 1172 | characters from the mule-unicode charsets and then typically won't be | ||
| 1173 | able to find the glyphs to display many characters. (Check with C-u | ||
| 1174 | C-x = .) To avoid this, you may need to use a fontset which sets the | ||
| 1175 | font for the mule-unicode sets explicitly. E.g. to use GNU unifont, | ||
| 1176 | include in the fontset spec: | ||
| 1177 | |||
| 1178 | mule-unicode-2500-33ff:-gnu-unifont-*-iso10646-1,\ | ||
| 1179 | mule-unicode-e000-ffff:-gnu-unifont-*-iso10646-1,\ | ||
| 1180 | mule-unicode-0100-24ff:-gnu-unifont-*-iso10646-1 | ||
| 1181 | |||
| 1182 | ** The UTF-8/16/7 coding systems don't encode CJK (Far Eastern) characters. | ||
| 1183 | |||
| 1184 | Emacs directly supports the Unicode BMP whose code points are in the | ||
| 1185 | ranges 0000-33ff and e000-ffff, and indirectly supports the parts of | ||
| 1186 | CJK characters belonging to these legacy charsets: | ||
| 1187 | |||
| 1188 | GB2312, Big5, JISX0208, JISX0212, JISX0213-1, JISX0213-2, KSC5601 | ||
| 1189 | |||
| 1190 | The latter support is done in Utf-Translate-Cjk mode (turned on by | ||
| 1191 | default). Which Unicode CJK characters are decoded into which Emacs | ||
| 1192 | charset is decided by the current language environment. For instance, | ||
| 1193 | in Chinese-GB, most of them are decoded into chinese-gb2312. | ||
| 1194 | |||
| 1195 | If you read UTF-8 data with code points outside these ranges, the | ||
| 1196 | characters 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 | ||
| 1198 | correctly as UTF-8, assuming you don't break the composed sequences. | ||
| 1199 | If you read such characters from UTF-16 or UTF-7 data, they are | ||
| 1200 | substituted with the Unicode 'replacement character', and you lose | ||
| 1201 | information. | ||
| 1202 | |||
| 1203 | ** Accented ISO-8859-1 characters are displayed as | or _. | 1180 | ** Accented ISO-8859-1 characters are displayed as | or _. |
| 1204 | 1181 | ||
| 1205 | Try other font set sizes (S-mouse-1). If the problem persists with | 1182 | Try other font set sizes (S-mouse-1). If the problem persists with |
| @@ -1237,6 +1214,16 @@ In your ~/.Xresources file, then run | |||
| 1237 | 1214 | ||
| 1238 | And restart Emacs. | 1215 | And restart Emacs. |
| 1239 | 1216 | ||
| 1217 | ** Emacs hangs when using XIM | ||
| 1218 | |||
| 1219 | This is due to an old bug in the implementation of the X protocol's | ||
| 1220 | XIM transport: when an input method crashes for some reason, Xlib | ||
| 1221 | cannot recover. Emacs cannot do anything about this except wait for | ||
| 1222 | the I-Bux developers to fix their crashes. You can work around these | ||
| 1223 | problems 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 | ||
| 1242 | Some popular Haiku input methods such BeCJK are known to behave badly | 1229 | Some 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. |
| 99 | Basic, Font Lock, Isearch, Gnus, Message, Org mode, Diff, Ediff, | 99 | Basic, Font Lock, Isearch, Gnus, Message, Org mode, Diff, Ediff, |
| 100 | Flyspell, Semantic, and Ansi-Color faces are included -- and much | 100 | Flyspell, Semantic, and Ansi-Color faces are included -- and much |
| 101 | more..." | 101 | more..." |
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. | |||
| 218 | If a character, new links are unconditionally marked with that character.") | 218 | If 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. |
| 222 | If nil, don't display. | 222 | If nil, don't display. |
| 223 | If `separate', display on a separate line (along with used count). | 223 | If `separate', display on a separate line, and include both the used |
| 224 | If `first', display only the free disk space on the first line, | 224 | and the free disk space. |
| 225 | following the directory name." | 225 | If `first', the default, display only the free disk space on the first |
| 226 | :type '(choice (const :tag "On a separate line" separate) | 226 | line, 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. | |||
| 1493 | If TITLE is non-nil, is a string to insert at the beginning. | 1493 | If TITLE is non-nil, is a string to insert at the beginning. |
| 1494 | TITLE should not end with a colon or a newline; we supply that. | 1494 | TITLE should not end with a colon or a newline; we supply that. |
| 1495 | 1495 | ||
| 1496 | If NOMENU is non-nil, then omit menu-bar commands. | 1496 | If NO-MENU is non-nil, then omit menu-bar commands. |
| 1497 | 1497 | ||
| 1498 | If TRANSL is non-nil, the definitions are actually key | 1498 | If TRANSL is non-nil, the definitions are actually key |
| 1499 | translations so print strings and vectors differently. | 1499 | translations 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." | |||
| 148 | This variable is buffer-local.") | 148 | This 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). |
| 222 | Load the compiled code when finished. | 238 | Load 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 |
| 226 | native compilation." | 242 | native 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 |
| @@ -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) |