1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-02 05:32:08 -08:00
Commit graph

48874 commits

Author SHA1 Message Date
Po Lu
024432e583 Enlarge dumped_data
* src/w32heap.c (DUMPED_HEAP_SIZE): Increase to 24 MiB, the bare
minimum necessary to build a 32-bit Emacs.
2023-09-23 14:20:58 +08:00
Po Lu
5bd6f963f6 Correct comparisons between size_t and ssize_t
* src/sfnt.c (sfnt_read_table_directory, sfnt_read_cmap_format_0)
(sfnt_read_cmap_format_2, sfnt_read_cmap_format_4)
(sfnt_read_cmap_format_6, sfnt_read_cmap_format_8)
(sfnt_read_cmap_format_12, sfnt_read_cmap_format_14)
(sfnt_read_cmap_table_1, sfnt_read_cmap_table)
(sfnt_read_head_table, sfnt_read_hhea_table, sfnt_read_maxp_table)
(sfnt_read_glyf_table, sfnt_read_hmtx_table, sfnt_read_name_table)
(sfnt_read_meta_table, sfnt_read_ttc_header)
(sfnt_read_default_uvs_table, sfnt_read_nondefault_uvs_table)
(sfnt_read_fvar_table, sfnt_read_gvar_table, sfnt_read_avar_table)
(sfnt_read_cvar_table, sfnt_read_OS_2_table):

* src/sfntfont.c (sfnt_enum_font): Revise code written with only
signed `long' in mind to properly compare size_t values with
ssize_t.
2023-09-23 10:07:38 +08:00
Po Lu
3a1e65bd8e Properly apply XY offsets to compound component glyphs
* src/sfnt.c (sfnt_decompose_compound_glyph): Avoid overwriting
X and Y if defer_offsets is false.
2023-09-23 09:31:17 +08:00
Stefan Monnier
cc9bfcafb9 * src/regex-emacs.c (mutually_exclusive_aux) [ENABLE_CHECKING]: Fix if 2023-09-21 11:58:44 -04:00
Stefan Monnier
424b35fa24 regex-emacs.c (mutually_exclusive_aux): Rework again
Rework the way we handle loops.  This new code does not really work
better than the previous one, but it has the advantage of being "fail
safe" and also that we can dynamically check if our assumptions about
the shape of the bytecode are satisfied or not.

* src/regex-emacs.c (mutually_exclusive_aux): Replace `done_beg` and
`done_end` with `loop_beg` and `loop_end`.
(mutually_exclusive_p): Adjust accordingly.
(analyze_first): Fix incorrect assertion.
2023-09-21 11:47:31 -04:00
Po Lu
dad3afb7eb ; * src/android.c (android_damage_window): Remove unused variable. 2023-09-21 09:26:00 +08:00
Po Lu
19857b51b0 Update Android port
* src/android.c (android_query_tree, android_get_geometry)
(android_translate_coordinates, android_wc_lookup_string)
(android_get_keysym_name, android_browse_url)
(android_query_battery):

* src/androidmenu.c (android_dismiss_menu, android_menu_show):
Circumvent JNI dynamic method dispatch overhead.
2023-09-21 09:13:09 +08:00
Mattias Engdegård
a82785e297 Reorder type tests for efficiency
* src/fns.c (Flength, Fdelete, Fnreverse):
Test types in descending order of frequency, roughly.
2023-09-20 11:30:31 +02:00
Mattias Engdegård
054fc8a5e0 * src/alloc.c: (cleanup_vector) Dispatch on pseudovector type
Enable the compiler to generate a jump table instead of a chain of
conditional branches.
2023-09-20 11:30:31 +02:00
Paul Eggert
fb8dfba0f1 Fix off-by-1 typo in vadd_to_log
* src/xdisp.c (vadd_to_log): Fix off-by-1 typo that I introduced
in commit fbee6265a7
dated Thu Aug 13 13:48:28 2015 -0700.
Problem and fix reported by Robert Pluim (Bug#66098#11).
2023-09-20 01:05:42 -07:00
Mattias Engdegård
321f2e1e4d Don't use pointer arithmetic for pointer tagging (bug#65491)
This makes for safer code when tagging null pointers in particular,
since pointer arithmetic on NULL is undefined and therefore can be
assumed, by the compiler, not to occur.

* src/lisp.h (untagged_ptr): Remove.
(TAG_PTR): Cast to uintptr_t instead of untagged_ptr.
2023-09-19 15:21:03 +02:00
Po Lu
7fd2a601ab ; Fix typos in last change
* src/android.c (android_exception_check_2)
(android_exception_check_3, android_exception_check_4): Fix
typos.
2023-09-19 19:59:21 +08:00
Po Lu
d18be27594 Update Android port
* src/android.c (android_exception_check_1)
(android_exception_check_2, android_exception_check_3)
(android_exception_check_4): Permit each object to be NULL.
(android_browse_url): Release VALUE if an exception transpires.
2023-09-19 19:58:27 +08:00
Paul Eggert
e942581488 Improve XUNTAG comment
* src/lisp.h (XUNTAG): Shorten (and I hope clarify) new comment.
2023-09-18 14:11:16 -07:00
Mattias Engdegård
861f9cb783 Don't use pointer arithmetic for untagging Lisp values (bug#65491)
* src/lisp.h (XUNTAG):
Instead of casting a Lisp value to char * and subtracting the tag,
cast it to a suitable integral type and work on that.

This should result in identical or at least equivalent code, except
that it avoids potential problems arising from the restrictions on
pointer arithmetic in C.  In particular, a null pointer can be neither
an operand in nor the result of pointer arithmetic.

C compilers know this and would, prior to this change, optimise

  XUNTAG(obj, Lisp_Int0, mytype) != NULL

to 1.  This means, for example, that make_pointer_integer and
XFIXNUMPTR could not be entrusted with null pointers, and
next_vector in alloc.c was unsafe to use.
2023-09-18 20:06:01 +02:00
Po Lu
4e46df9651 Optimize damage region tracking under Android
* java/org/gnu/emacs/EmacsDrawLine.java (perform):

* java/org/gnu/emacs/EmacsDrawRectangle.java (perform): Call
damageRect with integer coordinates in lieu of consing a new
Rect.

* java/org/gnu/emacs/EmacsDrawable.java (damageRect) <IIII>:
Declare a new variant of damageRect, accepting four integers
designating the extents of the damage rectangle.

* java/org/gnu/emacs/EmacsPixmap.java (damageRect) <IIII>: New
stub.

* java/org/gnu/emacs/EmacsView.java (damageRect) <IIII>:
Implement this overloaded variant of damageRect.

* java/org/gnu/emacs/EmacsWindow.java (damageRect): Ditto.

* src/android.c (android_init_emacs_drawable)
(android_init_emacs_window): Move search for `damageRect' to
android_init_emacs_window.
(android_damage_window): Call IIII variant of `damageRect' to
avoid consing a new rectangle.  Ameliorate dynamic method
dispatch overhead.
2023-09-18 10:59:55 +08:00
Stefan Kangas
f3a50f6dd8 Rename describe-map-tree to help--describe-map-tree
This function should have been made internal in the first place.
* lisp/help.el (help--describe-map-tree): Rename from
'describe-map-tree'.  Keep old name as an obsolete alias, and update
all callers.
2023-09-17 22:56:00 +02:00
Stefan Kangas
1e270e580d ; Grammar fixes ("allow to" et al)
Ref:
https://lists.gnu.org/r/emacs-devel/2016-01/msg01598.html
https://lists.gnu.org/r/emacs-devel/2016-01/msg01465.html
2023-09-17 16:49:21 +02:00
Po Lu
b2362cdced Speed up Android context menu generation
* src/androidmenu.c (android_menu_show, android_dialog_show):
Circumvent JNI dynamic method dispatch overhead.
2023-09-17 09:12:48 +08:00
Eli Zaretskii
2a8ad64ddd Revert "Don't use pointer arithmetic for untagging Lisp values"
This reverts commit 056c99a34c.
It broke compilation of 32-bit build --with-wide-int.
2023-09-16 20:03:59 +03:00
Eli Zaretskii
f24aeaf4ff Revert "* src/lisp.h (XUNTAG): Work on 32-bit --with-wide-int builds"
This reverts commit c0788f0c47.
Let's finish discussing this before rushing to push.
2023-09-16 20:03:30 +03:00
Mattias Engdegård
c0788f0c47 * src/lisp.h (XUNTAG): Work on 32-bit --with-wide-int builds
This eliminates a compiler warning for that configuration
(see bug#65491).
2023-09-16 18:37:17 +02:00
Mattias Engdegård
056c99a34c Don't use pointer arithmetic for untagging Lisp values
* src/lisp.h (XUNTAG):
Instead of casting a Lisp value to char * and subtracting the tag,
cast it to a suitable integral type and work on that.

This should result in identical or at least equivalent code, except
that it avoids potential problems arising from the restrictions on
pointer arithmetic in C.  In particular, a null pointer can be neither
an operand in nor the result of pointer arithmetic.

C compilers know this and would, prior to this change, optimise

  XUNTAG(obj, Lisp_Int0, mytype) != NULL

to 1.  This means, for example, that make_pointer_integer and
XFIXNUMPTR could not be entrusted with null pointers, and
next_vector in alloc.c was unsafe to use.
2023-09-16 16:32:05 +02:00
Mattias Engdegård
b1881d7dab More accurate static vector block size assertion
* src/alloc.c: The size of a vector block is bound by the number of
words, not bytes, represented by the pseudovector header RESTSIZE
field, because that limits how big a PVEC_FREE object can be.
2023-09-16 16:32:05 +02:00
Eli Zaretskii
302bc23f7c Merge from origin/emacs-29
755ae813a6 ; Declare some treesit.c functions in typescript-ts-mode.el.
89fa204b70 Fix loss of encrypted data in plstore.el
d9a1175a61 Close SQL database when corresponding 'sqlite-mode' buffe...
cbd8fac283 Fix Unicode normalization of characters
825be05b37 Support one-time passwords in Tramp
f880b94e64 Fix the 'C' and 'c' categories of characters
58fd212d8a Fix Emoji zooming commands
8970cdd009 ; Fix last change.
ba924be452 ; * etc/DEBUG: Improve the redisplay section.
e110312ad9 ; * doc/lispref/minibuf.texi (Text from Minibuffer): Ment...
65f4810003 tsx-ts-mode--font-lock-compatibility-bb1f97b: Improve
6fe11b88ed Avoid using --display in emacsclient to reuse frames on PGTK
2fc7463c0e ; * INSTALL: Don't advertise -O3.  (Bug#65988)
29055412f2 ; Fix doc string of 'lsh'
738d854333 Support emacsclient on Windows with server on GNU or Unix...
f0a89fa1d0 ; * lisp/saveplace.el (save-place-ignore-files-regexp): F...
c9cb8ee0fc Fix defcustom in saveplace.el (Bug#65977)
5ec8be1d58 ; * lisp/subr.el (string-suffix-p, string-prefix-p): Doc ...
809305e6d8 Fix 'window-text-pixel-size' when there are several image...
ea14b0dcc2 : Doc fix.
01e8a0c6cb Doc fix for prettify-symbols-unprettify-at-point
0065621d0d (report_overlay_modification): Fix bug#65929
6cc6455e93 Fix SVG colors (bug#56182)
9396d73942 * doc/emacs/text.texi (Outline Minor Mode): Add a note ab...
a65d1a5a16 Improve documentation of 'list-abbrevs'
5dcc4b7eab Tweak s-p-f for js-ts-mode
1fb2fb501f typescript-ts-mode, tsx-ts-mode: Fix syntax properties fo...
946b395e7e * lisp/progmodes/c-ts-mode.el (c++-ts-mode): Provide (bug...
33ee3e588f Fix regression of treesit_cursor_helper_1
d11d81dfcc ; Fix doc typos (Bug#65868)
6554ec2246 Update docs for passing of Thien-Thi Nguyen
5ab2792d5c Update defvar usage tips example in manual
35d88c657e Document using Flymake together with Eglot
3f04efe9e7 ; * src/font.h (struct font): Comment about use of averag...
459b5f6b6d ; * admin/authors.el (authors-aliases): Update.
0c029ae8bc ; tweak etc/TODO item

# Conflicts:
#	admin/authors.el
#	lisp/subr.el
2023-09-16 07:36:49 -04:00
Andreas Schwab
d9efc9aa0f Update pdumper hashes
* src/pdumper.c (dump_vectorlike_generic, dump_vectorlike)
(dump_buffer): Update hash.
2023-09-16 09:18:25 +02:00
Po Lu
d55a106f0a ; * src/sfntfont.c (sfntfont_list_family): Remove unused variable. 2023-09-16 10:55:43 +08:00
Po Lu
ee4b6a4a2d Update Android port
* java/org/gnu/emacs/EmacsContextMenu.java (display): Return
false if the list of menu buttons is empty, lest Android cease
displaying menus on the assumption that Emacs is defective.

* java/org/gnu/emacs/EmacsView.java (popupMenu): Likewise.

* src/fns.c (sort_list): Render sentence motion commands
functional within commentary

* src/sfntfont.c (sfntfont_list_family): Sort and deduplicate
the returned family list and make it a list of symbols.
(syms_of_sfntfont) <Qstring_lessp>: New defsym.
2023-09-16 10:38:46 +08:00
Stefan Monnier
e7e925f062 (mutually_exclusive_p): Fix the regression from commit 6fad73d7cc
Commit 6fad73d7cc throws away some useful optimization because
it misfired in some cases (as seen in bug#657260).  Here we try to
recover those useful optimizations with a slightly more careful
algorithm.

* src/regex-emacs.c (mutually_exclusive_aux): Rename from
`mutually_exclusive_p`.  Add two new args.  Improve the
case where we need to recurse.
(mutually_exclusive_p): New function defined on top of it.

* test/src/regex-emacs-tests.el (regexp-tests-backtrack-optimization):
Re-enable the test.
2023-09-15 14:53:24 -04:00
Stefan Monnier
9610aaeb9e * src/regex-emacs.c (mutually_exclusive_p): Refactor
Minor refactoring to avoid swapping p1/p2.

* src/regex-emacs.c (mutually_exclusive_exactn)
(mutually_exclusive_charset): New functions, extracted from
`mutually_exclusive_p`.
(mutually_exclusive_p): Use them.
2023-09-15 14:16:48 -04:00
Eli Zaretskii
160b4c295d ; * src/process.c (child_signal_notify): Avoid compiler warning (bug#65919). 2023-09-15 09:05:14 +03:00
Po Lu
1442f4043a ; * src/xterm.c (handle_one_xevent): Cite the bug meant to be fixed. 2023-09-15 10:35:06 +08:00
Po Lu
e1a730017d Correct bug#65919
* src/process.c (child_signal_notify): Expunge call to
non-reentrant function from signal handler.

* src/xfns.c (setup_xi_event_mask): Cease selecting for
XI_FocusIn and XI_FocusOut under X toolkit builds.

* src/xterm.c (xi_handle_interaction, xi_handle_focus_change)
(xi_handle_focus_change): Make conditional on GTK 3 or no
toolkit builds.
(xi_handle_delete_frame, x_free_frame_resources): Adjust
correspondingly.
(handle_one_xevent) <EnterNotify, LeaveNotify>: Examine
EnterNotify and LeaveNotify events for focus changes
irrespective of whether XI2 is enabled under the X toolkit and
GTK 2.x.
2023-09-15 10:30:12 +08:00
Eli Zaretskii
809305e6d8 Fix 'window-text-pixel-size' when there are several images at START
* src/xdisp.c (window_text_pixel_size): Remove unnecessary call to
'move_it_to'.  (Bug#65899)  (Bug#54862)
2023-09-14 12:52:14 +03:00
Po Lu
6ffb0a1719 Avert a crash in the Android last resort font driver
* java/org/gnu/emacs/EmacsFontDriver.java (FONT_INVALID_CODE):
New constant.
(hasChar, encodeChar): Accept a jint character code rather than
a jchar.

* java/org/gnu/emacs/EmacsSdk23FontDriver.java (hasChar)
(encodeChar): Return 0 or FONT_INVALID_CODE if the character is
not representable in a Java char.

* java/org/gnu/emacs/EmacsSdk7FontDriver.java (hasChar): Ditto.

* src/androidfont.c (android_init_font_driver): Adjust signature
to match.
2023-09-14 16:53:21 +08:00
Yuan Fu
f13b08be11
; * src/treesit.c (Ftreesit_parser_set_included_ranges): Minor fix. 2023-09-13 21:41:56 -07:00
Yuan Fu
ad624b961b
Update tree-sitter traversing functions' docstrings
* src/treesit.c (Ftreesit_search_subtree)
(Ftreesit_search_forward)
(Ftreesit_induce_sparse_tree): Update docstring.
2023-09-13 18:15:27 -07:00
Stefan Monnier
0065621d0d (report_overlay_modification): Fix bug#65929
Somehow the new overlay code in Emacs-29 changed slightly
the test to decide when to run the `modification-hooks` of overlays,
with the consequence that these hook functions end up being executed
also when text is deleted right after an empty overlay, which is
contrary to Emacs-28 behavior as well as contrary to the Texinfo doc.

* src/buffer.c (report_overlay_modification): Better reproduce the
Emacs-28 code.

* test/src/buffer-tests.el (overlay-modification-hooks):
Add corresponding test.
2023-09-13 18:49:55 -04:00
Alan Third
4b44178e72 Fix build error on older macOS versions
* src/nsterm.m (ns_scroll_run): Use srcRect instead of destRect.
2023-09-13 20:27:49 +01:00
Alan Third
6cc6455e93 Fix SVG colors (bug#56182)
* src/image.c (svg_load_image): Reverse the R and B bytes in the
Windows colors before using them to generate the SVG.
2023-09-13 20:19:44 +01:00
Po Lu
3ef5f10b19 Exclude ``regular'' from font adstyle
* src/sfntfont.c (sfnt_parse_style): Disregard tokens matching
Regular entirely.
2023-09-13 13:42:29 +08:00
Yuan Fu
d1d311a3b2
Avoid unnecessary tree-sitter reparse when setting the same range
* src/treesit.h (Lisp_TS_Parser)
* src/treesit.c (make_treesit_parser): Remove has_range field, add
last_set_ranges field.
(Ftreesit_parser_set_included_ranges): Return early if the new range
is the same as the old one.
(Ftreesit_parser_included_ranges): Change has_range to
last_set_ranges.
2023-09-12 13:16:42 -07:00
Yuan Fu
b392d05089
Make sure undefined tree-sitter thing doesn't raise an error
A previous change should've achived this, but that wasn't enough.
This one actually achieves the intended effect, namely,
treesit-node-match-p doesn't raise an error if IGNORE-MISSING is
non-nil, and traverse functions don't raise error by default.

* src/treesit.c (treesit_traverse_validate_predicate): Remove
ignore_missing parameter, return error symbol.
(Ftreesit_node_match_p)
(Ftreesit_search_subtree)
(Ftreesit_search_forward)
(Ftreesit_induce_sparse_tree): Check returned error symbol.
(syms_of_treesit): New symbol.
2023-09-12 13:16:41 -07:00
Stefan Monnier
1e1f3e30ef * src/alloc.c (garbage_collect): Run post-gc-hook later (bug#65700) 2023-09-12 14:06:54 -04:00
Po Lu
c465740273 Extract font foundry metadata from the OS/2 table
* src/sfnt.c (sfnt_table_names): Append an entry for OS/2
tables.
(sfnt_read_OS_2_table): New function.
(main): Introduce a new test for the OS/2 table reader.

* src/sfnt.h (sfnt_read_OS_2_table): New declaration.

* src/sfntfont.c (sfnt_decode_foundry_name): Delete function.
(sfnt_enum_font_1): Read the font's OS/2 table and extract the
foundry name from there.  Use `misc' if absent.
(sfntfont_desc_to_entity, sfntfont_open): Cease interning
desc->designer, as that is now a symbol.
(syms_of_sfntfont) <Qmisc>: New defsym Qmisc.  (bug#65865)
2023-09-12 10:37:55 +08:00
Yuan Fu
33ee3e588f
Fix regression of treesit_cursor_helper_1
* src/treesit.c (treesit_cursor_helper_1)
(treesit_cursor_first_child_for_byte): Use
ts_tree_cursor_goto_first_child_for_byte first, and
ts_tree_cursor_goto_first_child second.
2023-09-11 12:50:31 -07:00
Alan Third
6acb3c5b05 Remove check for appdefined events on the queue (bug#65843)
It seems this was likely a bug in macOS 10.10.1. I have no way to find
out when it was fixed, but hopefully before 10.10.5, the most recent
release of that version.

* src/nsterm.m (ns_send_appdefined): Remove check for whether previous
appdefined events have been lost.
2023-09-11 17:22:01 +01:00
Alan Third
c19a2dff5a Fix crash on child frame creation (bug#65817)
* src/nsterm.m ([EmacsView initFrameFromEmacs:]): Reorder the way the
frame and layers are created.
([EmacsView makeBackingLayer]): Change to the newly renamed method
below.
([EmacsLayer initWithColorSpace:doubleBuffered:]):
([EmacsLayer initWithDoubleBuffered:]): Rename the method and remove
the colorspace argument as it's no longer able to be set on initial
creation.
* src/nsterm.h: Use new method prototype.
2023-09-11 17:22:01 +01:00
Alan Third
fa24bbb631 Simplify the EmacsLayer double buffering code (bug#63187) 2023-09-11 17:22:00 +01:00
Po Lu
38e96bee1f Provide an option to disable font instruction code execution
* etc/PROBLEMS: Mention instruction code woes and illustrate how
to circumvent them.

* src/sfntfont.c (sfntfont_setup_interpreter): Respect
Vsfnt_uninstructable_family_regexp.
(syms_of_sfntfont) <Vsfnt_uninstructable_family_regexp>: New
option.
2023-09-11 19:45:58 +08:00