1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-26 16:51:46 -07:00
Commit graph

47962 commits

Author SHA1 Message Date
Po Lu
f85bdb4992 Further fixes to menu event processing on no-toolkit builds
* src/xdisp.c (note_mouse_highlight): Return if a popup is
activated under the no-toolkit build as well.
* src/xmenu.c (pop_down_menu): Clear popup_activated_flag when
not on MS-DOS.
(x_menu_show): Set popup_activated_flag under X.
2022-10-22 20:21:55 +08:00
Matt Armstrong
f2a51774a9 Fix a narrow-to-region vs. overlays-at bug
See bug#58703.

* src/buffer.c (overlays_in): Add a new TRAILING arg expressing the
behavior wanted by `overlays-at', namely to include all overlays
beginning at the POS passed to `overlays-at', even if POS is the end
of the narrowed region.  Pass true and the search range is extended to
ZV+1 if END is greater than ZV, just as is done for EMPTY.
(overlays_at): Pass 'true' for the new trailing arg.  At present this
is the only caller passing 'true'.
(mouse_face_overlay_overlaps): Pass 'false' for the new trailing arg.
(disable_line_numbers_overlay_at_eob): ditto.
(Foverlays_in): ditto.
* src/editfns.c (overlays_around): ditto.
* test/src/buffer-tests.el (sorted-overlays): Add a spot test for
this.
2022-10-21 19:58:34 -07:00
Matt Armstrong
a2fde77b5c Fix handling of overlays that begin at END in 'overlays_in'
When passed EMPTY, 'overlays_in' should return empty overlays at END.
It was doing so, but it was also returning any other overlay that
happened to begin at END.

bug#58672

* src/buffer.c (overlays_in): Don't return overlays at END unless they
are empty overlays.
(disable_line_numbers_overlay_at_eob): Pass 'false' instead of 'NULL'
for the bool 'empty' arg.
* test/src/buffer-tests.el (sorted-overlays-in): New helper function.
(test-overlays-in-empty-range): New test exhaustively covering these
edge conditions.
(test-overlays-in-empty-range-bug58672): Simple test for one case.
2022-10-21 16:19:56 -07:00
Eli Zaretskii
444c7ea83f ; * src/menu.c (x_popup_menu_1): Make 'cancel_hourglass' call conditional. 2022-10-21 19:05:48 +03:00
Eli Zaretskii
4bb4b2a921 ; * src/menu.c: Include dispextern.h (bug#58688). 2022-10-21 18:27:30 +03:00
Po Lu
693443bbf7 Fix various menu problems
* src/menu.c (x_popup_menu_1): Cancel hourglass timer before
displaying popup.
* src/xterm.c (x_show_hourglass): Avoid displaying hourglass
cursor during a popup.
(handle_one_xevent): Under X Toolkit and GTK+ 2.x builds with
XInput 2, clear the mouse face upon a core LeaveNotify; these
can be generated by menu grabs.
(x_wm_set_size_hint): Fix Motif build warning.
2022-10-21 21:32:34 +08:00
Po Lu
ea70e545c9 Fix delivery of window manager ping events during menu
* oldXMenu/Activate.c (XMenuActivateSetExposeFunction)
(XMenuActivate):
* oldXMenu/XMenu.h: Remove expose functions.
* src/msdos.h (XMenuSetAEQ): Remove no longer used function.
* src/xmenu.c (x_menu_expose_event): Delete function.
(x_menu_dispatch_event): New function.
(x_menu_show): Set it as the XMenu event handler.
2022-10-21 19:19:48 +08:00
Philip Kaludercic
37bfb623e4
Merge remote-tracking branch 'origin/master' into feature/package+vc 2022-10-20 20:00:32 +02:00
Po Lu
6f3ade1c08 Work around problems setting input focus when a frame is in the background
* src/xterm.c (server_timestamp_predicate, x_get_server_time):
New functions.
(x_ewmh_activate_frame, x_focus_frame, syms_of_xterm): Apply
various workarounds for window manager "focus stealing
prevention".  (bug#57012)
2022-10-20 19:30:50 +08:00
Matt Armstrong
37a1145410 Rename all exported itree.h functions with the itree_ prefix
For the most part, I replaced the interval_tree_ prefix with itree_,
interval_node_ with itree_node_, etc.

* src/alloc.c: Rename everywhere as appropriate.
* src/alloc.c: ditto.
* src/buffer.c: ditto.
* src/buffer.h: ditto.
* src/itree.c: ditto.
* src/itree.h: ditto.
2022-10-19 21:35:09 -04:00
Matt Armstrong
f421b58db5 Prefix all itree.h type names with itree_
Rename interval_node -> itree_node, interval_tree -> itree_tree,
interval_tree_order -> itree_order.

* src/alloc.c: Renames.
* src/buffer.c: ditto.
* src/itree.c: ditto.
* src/itree.h: ditto.
* src/lisp.h: ditto.
* src/pdumper.h: ditto.
* src/textprop.h: ditto.
* src/xdisp.h: ditto.
2022-10-19 21:35:09 -04:00
Matt Armstrong
06252617b2 Revert "mark_overlays: Use the normal ITREE_FOREACH"
This reverts commit b8fbd42f0a,
with edits.

* src/alloc.c (mark_overlays): restore function.
(mark_buffer): Call it, not ITREE_FOREACH.
(garbage_collect): eassert (!itree_busy_p ()).
* src/itree.h: Comment tweak: explain why GC is considered risky.  It
isn't that GC itself is risky, it is that GC can call ELisp by way of
a hook, and running ELisp during iteration is risks nested iteration.
2022-10-19 21:35:09 -04:00
Matt Armstrong
8159d8b1a7 Remove the ITREE_NULL macro and use NULL everywhere.
* src/itree.h: Delete the ITREE_NULL macro.
* src/itree.c (check_subtree): Use NULL everywhere.
* src/pdumper.c (dump_buffer): ditto.
2022-10-19 21:34:58 -04:00
Matt Armstrong
1c44f6c83d ; * src/buffer.c (set_overlay_region): remove unused function. 2022-10-19 15:09:42 -07:00
Po Lu
6b82958b9f Fix various builds
* src/xterm.c (x_handle_selection_monitor_event): Adjust for
build without XInput2.
(x_maybe_clear_preedit, xim_destroy_callback): Make conditional
on Release 6 XIM.
(x_get_keyboard_modifiers): Adjust for build without XCB.
2022-10-19 21:33:05 +08:00
Po Lu
ccd0ad72f2 Fix build warning without XKB, Xmb, and XInput 2
* src/xterm.c (handle_one_xevent): Avoid defining
USE_SAFE_ALLOCA when SAFE_ALLOCA is not actually used.
2022-10-19 21:33:05 +08:00
Stefan Kangas
e42a68720e Merge from origin/emacs-28
efd3ef3ceb ; * src/window.c: Fix some comments.  (Bug#58550)
2022-10-19 06:31:16 +02:00
Randy Taylor
620f18c489 ; * src/xterm.c (mark_xterm): Fix x11 with i18n build 2022-10-19 08:55:44 +08:00
Philip Kaludercic
65fa87329c
Merge remote-tracking branch 'origin/master' into feature/package+vc 2022-10-18 21:53:25 +02:00
Daniel Martín
851a8f65e9 ; Fix typos in treesit.c
* src/treesit.c: Fix a couple of typos.  (Bug#58600)
2022-10-18 07:39:25 +02:00
Po Lu
0dbd1dbe7d Fix bug#58584
* src/xterm.c (x_handle_selection_monitor_event): Return if
selection event is one Emacs asked for.
(handle_one_xevent): In that case, drop the event and don't let
it reach GTK.
2022-10-18 08:53:43 +08:00
Yuan Fu
c4122067d9
Change free to xfree in treesit.el
This should be in the last commit but I forgot.

* src/treesit.c (Ftreesit_parser_set_included_ranges): Change free to
xfree.
2022-10-17 17:31:23 -07:00
Yuan Fu
ddae8d4a13
Change malloc to xmalloc in treesit.c
* src/treesit.c (Ftreesit_parser_set_included_ranges): Change malloc
to xmalloc.
2022-10-17 17:13:25 -07:00
Yuan Fu
954b6e1dc3
Fix casts to uint32_t in treesit.c
* src/treesit.c (treesit_tree_edit_1): Add assertion.
(treesit_ensure_position_synced): Add assertion.
(treesit_check_buffer_size): Change error message.
(treesit_ensure_parsed): Move treesit_check_buffer_size and
treesit_ensure_position_synced together
(treesit_read_buffer): Add assertion.
(Ftreesit_parser_set_included_ranges): Add assertion.  Signal error if
list too long.  Add check for buffer size.
(Ftreesit_parser_included_ranges): Add check for buffer size.
(Ftreesit_query_capture): Add assertion.
2022-10-17 17:04:49 -07:00
Yuan Fu
e8df6c311f
Simplify error reported by loading tree-sitter language definition
Before:

Error: Cannot load language definition:
"javascript",
("/home/jostein/.emacs.d/tree-sitter/libtree-sitter-javascript:
cannot open shared object file: No such file or directory"
"/home/jostein/.emacs.d/tree-sitter/libtree-sitter-javascript.so:
cannot open shared object file: No such file or directory"
"libtree-sitter-javascript: cannot open shared object file: No such
file or directory" "libtree-sitter-javascript.so: cannot open shared
object file: No such file or directory")

After:

(treesit-load-language-error
not-found
("libtree-sitter-z.so" "libtree-sitter-z.dylib")
"No such file or directory")

* src/treesit.c (treesit_load_language): Add base_candidates, remove
error_list, report base_candidates rather than error_list.
2022-10-17 14:12:24 -07:00
Yuan Fu
1cd42bfb8a
Fix memory leak in ts_load_language
* src/treesit.c (ts_load_language): Move initialization of c_name down
and free it right after use.
2022-10-17 13:52:31 -07:00
Stefan Monnier
19f5431cf6 * src/itree.c: Eliminate all prototypes for static functions
Massive code reorganization to move definitions of static functions
before their first use, so as to remove the need for
redundant prototypes.
While at it, fix a few places where the used more than 80 column.
2022-10-17 14:10:06 -04:00
Eli Zaretskii
5a2c1a743b Make sure the treesit path variables are lists
* src/treesit.c: (treesit_load_language)
(treesit_find_override_name): Make sure the lists we use are
really lists.
2022-10-17 20:39:23 +03:00
Matt Armstrong
75bfb2614d Rename itree iterators with itree_iterator prefix
* src/itree.h: Rename struct interval_generator -> itree_iterator.
Rename functions: itree_busy_p -> itree_iterator_busy_p,
interval_tree_iter_start -> itree_iterator_start,
interval_generator_narrow -> itree_iterator_narrow,
interval_tree_iter_finish -> itree_iterator_finish,
interval_generator_next -> itree_iterator_next.
* src/itree.c: Use new names everywhere.
* src/eval.c: ditto.
2022-10-17 13:03:28 -04:00
Matt Armstrong
4020dde296 ; * src/itree.c: remove 'inline' from functions with extern linkage 2022-10-17 13:03:17 -04:00
Matt Armstrong
258e618364 Delete the itree_null sentinel node, use NULL everywhere.
This effort caught a few (already commited) places that were
dereferencing through ITREE_NULL in a confusing way.  It makes some
functions have to check for NULL in more places, but in my experinece
this is worth it from a code clarity point of view.

In doing this I rewrote `interval_tree_remove` completely.  There
there was one final bug in that function that I simply could not find
when I #define'd ITREE_NULL to NULL.  I couldn't easily understand
that function, so instead I rewrote it completely with a focus on code
clarity.  Bug went away.

I have left the ITREE_NULL #define in code, to reduce code review
noise.  It is easily removed later, mechanically.

* src/itree.h: #define ITREE_NULL to NULL and leave a FIXME.
* src/itree.c (itree_null): Delete the itree_null static variable.
(null_is_sane): Delete (and all callers).
(interval_tree_insert): Insert the first node as black straight away.
(itree_newlimit): Handle NULL children.
(interval_tree_remove_fix): ditto.
(interval_tree_insert_fix): ditto.
(interval_tree_remove): Rewrite for clarity.
(null_safe_is_red): New function.
(null_safe_is_black): New function.
(interval_tree_replace_child): Renamed from interval_tree_transplant.
(interval_tree_transplant): New function that something I think is
more like a full transplantation.  (names are hard)
2022-10-17 10:16:27 -04:00
Po Lu
abf683bb03 Fix pieces of code being too expensive over slow network connections
* lisp/menu-bar.el (menu-bar-edit-menu): Test buffer-read-only
before gui-backend-selection-exists-p.  This places the less
expensive condition before the more expensive one.
* src/xfns.c (compute_tip_xy): Use cached monitor attributes
whenever available.
(Fx_show_tip): Remove code that really did nothing.
(Fx_backspace_delete_keys_p): Do not download the entire keymap
from the server upon creating a frame.
* src/xmenu.c (create_and_show_popup_menu): Use
x_translate_coordinates_to_root.
(x_menu_show): Use x_translate_coordinates_to_root.
* src/xselect.c (Fx_selection_exists_p): If a temporary
selection owner can be found, use it.
* src/xterm.c (x_translate_coordinates_to_root)
(x_handle_selection_monitor_event, x_find_selection_owner): New
functions.  These functions try to avoid downloading data from
the X server in places that are called very often (i.e. during
tool bar updates.)
(handle_one_xevent): Handle selection notify events.  Also catch
some mistakes found.  Fetch all kinds of key names as well.
(x_create_special_window): New function.
(x_term_init, x_delete_display): Ask for all key names.  Also,
passively monitor selections that are given to
`x-selection-exists-p' during redisplay, so we do not have to
ask the server about them upon each redisplay.
(syms_of_xterm): New variable `x-fast-selection-list'.
* src/xterm.h (struct x_monitored_selection): New structure.
(X_INVALID_WINDOW): New define.
(struct x_display_info): New fields for selection monitoring.
Also, record the fixes extension base.
2022-10-17 21:00:09 +08:00
Manuel Giraud
efd3ef3ceb ; * src/window.c: Fix some comments. (Bug#58550) 2022-10-17 13:51:39 +03:00
Eli Zaretskii
02f78c09b0 ; Rename ts_* symbols in treesit.c
* src/treesit.c: Rename all ts_* functions and variables to
treesit_*; all references changed.  Fix whitespace.
2022-10-17 13:11:13 +03:00
Yuan Fu
85d0c11119
; * src/treesit.c (ts_search_dfs): Fix tab inline.
Introduced by c6dce90d7e which is a format-fix so I think it's fine
to fix this as a standalone change?
2022-10-17 01:48:50 -07:00
Yuan Fu
2349ecb321
; * src/treesit.c: Change commentary to reflect recent changes. 2022-10-17 01:48:50 -07:00
Eli Zaretskii
260e47e9a3 ; Fix doc strings in treesit.c
* src/treesit.c (Ftreesit_language_version)
(Ftreesit_parser_create, Ftreesit_parser_delete)
(Ftreesit_parser_language, Ftreesit_parser_set_included_ranges)
(Ftreesit_parser_included_ranges, Ftreesit_node_start)
(Ftreesit_node_end, Ftreesit_node_parent, Ftreesit_node_child)
(Ftreesit_node_check, Ftreesit_node_field_name_for_child)
(Ftreesit_node_child_by_field_name, Ftreesit_node_next_sibling)
(Ftreesit_node_prev_sibling, Ftreesit_node_first_child_for_pos)
(Ftreesit_node_descendant_for_range, Ftreesit_pattern_expand)
(Ftreesit_query_expand, Ftreesit_query_compile)
(Ftreesit_query_capture, Ftreesit_search_subtree)
(Ftreesit_search_forward, Ftreesit_induce_sparse_tree)
(syms_of_treesit): Doc string fixes.
2022-10-17 10:54:55 +03:00
Philip Kaludercic
c25e78d802
* src/keyboard.c (echo_add_key): Mention quick-help 2022-10-17 00:36:06 +02:00
Eli Zaretskii
c6dce90d7e ; * src/treesit.c: Fix some indentation problems and doc strings. 2022-10-16 18:09:01 +03:00
Eli Zaretskii
9d3f8912b4 Support MinGW build on MS-Windows
* src/treesit.c [WINDOWSNT]: Add MS-Windows boilerplate for
dynamically-loaded optional libraries.
(init_treesit_functions) [WINDOWSNT]: New function.
(load_tree_sitter_if_necessary): New function.
(ts_initialize): Call 'load_tree_sitter_if_necessary'.
(ts_delete_parser, ts_delete_query, ts_named_node_p): Wrapper
functions for TS calls from outside treesit.c.
(Ftreesit_parser_root_node, Ftreesit_parser_set_included_ranges)
(Ftreesit_parser_included_ranges, Ftreesit_node_type)
(Ftreesit_node_start, Ftreesit_node_end, Ftreesit_node_string)
(Ftreesit_node_parent, Ftreesit_node_child, Ftreesit_node_check)
(Ftreesit_node_field_name_for_child, Ftreesit_node_child_count)
(Ftreesit_node_next_sibling, Ftreesit_node_prev_sibling)
(Ftreesit_node_first_child_for_pos)
(Ftreesit_node_descendant_for_range, Ftreesit_node_eq)
(Ftreesit_query_compile, Ftreesit_query_capture)
(Ftreesit_search_subtree, Ftreesit_search_forward)
(Ftreesit_induce_sparse_tree): Call 'ts_initialize' before any
other TS functions.
(Ftreesit_available_p): 'treesit-available-p' implemented in C, so
that on WINDOWSNT the library could be loaded dynamically.
* src/treesit.h (ts_delete_parser, ts_delete_query)
(ts_named_node_p): Add prototypes.
* src/print.c (print_vectorlike):
* src/alloc.c (cleanup_vector): Call tree-sitter function via
wrappers defined in treesit.c, not directly, because WINDOWSNT
redefines the TS functions to be called via function pointers.
* src/Makefile.in (base_obj): Add treesit.o
(TREE_SITTER_OBJ): Remove.

* lisp/treesit.el (treesit-available-p): Remove: now implemented
in C.
* lisp/term/w32-win.el (dynamic-library-alist): Add libtree-sitter
DLLs.

* configure.ac (TREE_SITTER): Support the MinGW build.
(TREE_SITTER_OBJ): Remove.
2022-10-16 16:22:09 +03:00
Stefan Kangas
07222447b6 Merge from origin/emacs-28
067361f3a2 ; Improve documentation of 'C-M-i'
fdb6f7cf26 ; Fix documentation of 'comp-enable-subr-trampolines'
be30369e01 ; Avoid incorrect indentation in an @example.
4bd3dd505e Document how to control where the *.eln files are written
b7d7c2d9e9 Add cross-reference to alternative syntaxes for Unicode

# Conflicts:
#	doc/emacs/custom.texi
2022-10-16 08:27:16 +02:00
Po Lu
cf19743aca Adapt last change to Haiku port
* src/haikuterm.c (haiku_frame_up_to_date):
(haiku_clear_frame):
(haiku_update_begin):
(haiku_flush):
(haiku_flush_dirty_back_buffer_on):
(haiku_read_socket):
* src/haikuterm.h (struct haiku_output):
(FRAME_COMPLETE_P): Synchronize logic with X.
2022-10-16 06:19:12 +00:00
Po Lu
da6778d1ce Fix multiple sources of flicker under X
Fix three kinds of flicker.  The first is if you do:

  (while t (sit-for 1) (redraw-display))

and press a key, the frame will turn blank until you C-g.  The
second is where handling async input happens in the middle of
drawing and causes a buffer flip to happen.  The third is where
unmapping the hourglass window causes exposures.

* src/dispnew.c (redraw_frame): Garbage the frame if it is a
window system frame.
* src/xterm.c (x_update_begin): Clear complete flag.
(x_flip_and_flush, XTframe_up_to_date): Set complete flag.
(x_show_hourglass): Fix hourglass window class.
(flush_dirty_back_buffer_on): Rename to
x_flush_dirty_back_buffer_on.
(x_flush_dirty_back_buffer_on): Check if the frame is complete
before trying to flip.
(handle_one_xevent): Flush frames in a more detailed fashion.
* src/xterm.h (struct x_output): New flag `complete'.
(FRAME_X_COMPLETE_P): New macro.
2022-10-16 14:02:31 +08:00
Stefan Kangas
3187225416 ; Prefer HTTPS to HTTP in many URLs 2022-10-15 13:06:45 +02:00
Eli Zaretskii
fdb6f7cf26 ; Fix documentation of 'comp-enable-subr-trampolines'
* src/comp.c (syms_of_comp) <comp-enable-subr-trampolines>:
Explain better what it means to disable trampoline synthesis.
2022-10-15 12:15:17 +03:00
Po Lu
a06c542094 Remove redundant call to expensive function XOpenDisplay
* src/xterm.c (x_term_init): Speed up opening Emacs over a slow
network connection by an order of magnitude on no toolkit builds
by avoiding a redundant call to XOpenDisplay.
2022-10-15 16:25:22 +08:00
Stefan Monnier
b865053874 src/textprop.c (get_char_property_and_overlay): Fix bug#58479
Correct `get-char-property` which failed to ignore empty overlays.

* src/textprop.c (get_char_property_and_overlay): Make sure the
overlay covers the character.
* test/src/buffer-tests.el (buffer-tests--overlay-bug58479): New test.
* src/buffer.h (buffer_has_overlays): Avoid `interval_tree_size`.
2022-10-14 16:28:33 -04:00
Michael Albinus
eeffc1f5ae Rename file-attribute-file-number' to file-attribute-file-identifier'
* doc/lispref/files.texi (File Attributes):
* etc/NEWS:
* lisp/files.el (find-buffer-visiting, find-file-noselect)
(set-visited-file-name, basic-save-buffer)
(file-attribute-file-identifier):
* lisp/startup.el (normal-top-level-add-subdirs-to-load-path):
* lisp/eshell/em-unix.el (eshell-shuffle-files):
* src/dired.c (Ffile_attributes):
Rename `file-attribute-file-number' to `file-attribute-file-identifier'.
2022-10-14 21:32:15 +02:00
Po Lu
271791b55b Fix bug#56153
* src/nsterm.m (get_keysym_name)
(ns_draw_glyphless_glyph_string_foreground): Fix new Mac OS
deprecations.

([EmacsApp terminate:]): Use kbd_buffer_store_event instead
of emacs_event.  (bug#56153)
([EmacsView windowDidChangeBackingProperties:]): Fix new Mac
OS deprecation.
2022-10-14 19:04:44 +08:00
Po Lu
6ea69fc734 Avoid redundant creation of XRender pictures
* src/xterm.c (x_composite_image): Take arg DESTINATION.  Do not
create a picture if it is set.
(x_draw_image_foreground, x_draw_image_foreground_1): Pass
destination where appropriate.
2022-10-14 15:56:15 +08:00