1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-04-06 22:31:13 -07:00
Commit graph

47962 commits

Author SHA1 Message Date
Lars Ingebrigtsen
2ff5cb4cb4 Make warning about require/autoload while bootstrapping not error out
* src/fns.c (Frequire):
* src/eval.c (Fautoload_do_load): Avoid further errors while
outputting the error about not being able to autoload/require
while bootstrapping.
2022-06-24 11:04:51 +02:00
Po Lu
c148bfc229 Fix handling of mouse motion across screens during drag-and-drop
* src/xterm.c (x_dnd_fill_empty_target): New function.
(handle_one_xevent): Fill empty target if the event didn't come
from the same screen.
2022-06-24 16:41:12 +08:00
Eli Zaretskii
289b457cac Merge branch 'abort-redisplay'
This allows abandoning the redisplay of a window
that takes too long to complete.  Bug#45898
* src/xdisp.c (update_redisplay_ticks): New function.
(init_iterator, set_iterator_to_next): Call
'update_redisplay_ticks'.
(syms_of_xdisp) <max_redisplay_ticks>: New variable.
<list_of_error>: Remove 'void-variable': it is no longer needed,
since 'calc_pixel_width_or_height' can no longer signal a
void-variable error, and it gets in the way of aborting
redisplay via 'redisplay_window_error'.
* src/keyboard.c (command_loop_1): Reinitialize the tick count
before executing each command in the loop.
* src/syntax.c (scan_sexps_forward): Call 'update_redisplay_ticks'
after finishing the loop.
* src/dispnew.c (make_current): Make sure enabled rows of the
current matrix have a valid hash, even if redisplay of a window
was aborted due to slowness.  This avoids assertion violations in
'scrolling_window' due to the wrong hash value.
* src/xdisp.c (display_working_on_window_p): New global variable.
(unwind_display_working_on_window): New function.
* src/keyboard.c (command_loop_1): Reset
'display_working_on_window_p' before and after executing commands.
* src/window.c (Frecenter, window_scroll, displayed_window_lines):
* src/indent.c (Fvertical_motion): Set
'display_working_on_window_p' before calling 'start_display'.
* src/syntax.c (scan_sexps_forward): Call 'update_redisplay_ticks'
after finishing the loop.
* src/regex-emacs.c (re_match_2_internal):
* src/bidi.c (bidi_find_bracket_pairs, bidi_fetch_char)
(bidi_paragraph_init, bidi_find_other_level_edge): Update the
redisplay tick count as appropriate, when moving the iterator by
one character position actually requires to examine many more
positions.
* src/xdisp.c (redisplay_window_error): Show messages about
aborted redisplay of a window as delayed-warnings.

* doc/emacs/trouble.texi (DEL Does Not Delete): Move to the end of
the chapter.  This issue is no longer frequent or important as it
was back in Emacs 20 days.
(Long Lines): Document 'max-redisplay-ticks'.
* doc/emacs/emacs.texi (Top): Update the detailed menu.

* etc/NEWS: Announce 'max-redisplay-ticks'.
2022-06-24 10:44:44 +03:00
Po Lu
bf5c75465f Improve grabbing detection with multiple master devices (MPX)
* src/frame.c (gui_mouse_grabbed): Respect any_grab_hook.
* src/termhooks.h (GCALIGNED_STRUCT): New hook `any_grab_hook'.
* src/xterm.c (x_have_any_grab): New function.
(x_create_terminal): Define hook on XI2 builds.
2022-06-24 10:57:35 +08:00
Po Lu
ab203b0ce2 Simplify XI event state conversion
* src/xterm.c (xi_convert_button_state, xi_convert_event_state):
New functions.
(handle_one_xevent): Reduce duplicate code for converting XI
state and button state into X state.
2022-06-24 09:49:14 +08:00
Po Lu
716a0f4025 ; * src/xterm.c (x_dnd_send_leave): Remove debugging code. 2022-06-23 15:35:37 +08:00
Po Lu
1003f36feb Minor fixes to last change
* src/pgtkselect.c (pgtk_get_window_property): Add 1 to xdata
when it is GdkAtom.
* src/pgtkterm.c (drag_leave): Initialize inev.ie.
2022-06-23 13:58:38 +08:00
Po Lu
0b4db66a9d Allow dropping more data types on PGTK
* lisp/loadup.el (featurep): Load `pgtk-dnd'.
* lisp/pgtk-dnd.el: New file.
(pgtk-dnd-test-function, pgtk-dnd-types-alist)
(pgtk-dnd-known-types, pgtk-dnd-use-offix-drop)
(pgtk-dnd-current-state, pgtk-get-selection-internal)
(pgtk-register-dnd-targets, pgtk-dnd-empty-state)
(pgtk-dnd-init-frame, pgtk-dnd-get-state-cons-for-frame)
(pgtk-dnd-get-state-for-frame, pgtk-dnd-default-test-function)
(pgtk-dnd-current-type, pgtk-dnd-forget-drop)
(pgtk-dnd-maybe-call-test-function, pgtk-dnd-save-state)
(pgtk-dnd-handle-moz-url, pgtk-dnd-insert-utf8-text)
(pgtk-dnd-insert-utf16-text, pgtk-dnd-insert-ctext)
(pgtk-dnd-handle-uri-list, pgtk-dnd-handle-file-name)
(pgtk-dnd-choose-type, pgtk-dnd-drop-data)
(pgtk-dnd-handle-drag-n-drop-event, pgtk-update-drop-status)
(pgtk-drop-finish, pgtk-dnd-handle-gdk, pgtk-dnd): New variables
and functions and library.

* lisp/term/pgtk-win.el (special-event-map): Load
`drag-n-drop-event'.
(after-make-frame-functions): Register DND after make frame
functions.

* src/emacs.c (main): Stop calling empty init_pgtkterm function.

* src/pgtkselect.c (Fpgtk_register_dnd_targets, Fpgtk_drop_finish)
(Fpgtk_update_drop_status): New functions.
(syms_of_pgtkselect): Register new functions.
* src/pgtkterm.c (struct event_queue_t): Fix coding style of
definition.
(symbol_to_drag_action, drag_action_to_symbol)
(pgtk_update_drop_status, pgtk_finish_drop): New functions.
(drag_data_received): Delete function.
(pgtk_set_event_handler): Register for DND correctly.
(syms_of_pgtkterm): New defsyms for DND types.
(init_pgtkterm): Delete function.

* src/pgtkterm.h: Update prototypes, fix prototype coding style.
2022-06-23 13:58:38 +08:00
Po Lu
41540b9324 Don't send XdndPosition before XdndStatus arrives
* src/xterm.c (x_dnd_send_position): Set pending DND message if
target is right.
(x_dnd_send_leave): Clear pending status target.
(x_dnd_begin_drag_and_drop): Clear new flags.
(handle_one_xevent): Respect those flags.
2022-06-23 11:31:10 +08:00
Po Lu
ee6e4bc525 Update device-specific grab during drag-and-drop
* src/xterm.c (x_detect_focus_change): Fix typo.
(handle_one_xevent): Set device if DND is in progress and update
device->grab.
2022-06-23 08:53:55 +08:00
Gerd Moellmann
5f1bd87247 Prevent GC of window referenced from EmacsScroller
* src/nsterm.m (EmacsScroller.mark, mark_nsterm): New functions.
* src/nsterm.h (EmacsScroller.mark, mark_nsterm): Declare.
* src/alloc.c (garbage_collect) [MAVE_NS]: Call mark_nsterm.
(Bug#56095)
2022-06-22 16:50:24 +03:00
Po Lu
18d412a513 Fix non-system-malloc build
* src/xterm.c (x_gc_free_ext_data_private): New function.
(x_gc_get_ext_data): Set it as the private data free function.
2022-06-22 18:37:41 +08:00
Po Lu
582356c45f * src/xterm.c (x_scroll_bar_note_movement): Fix no-toolkit build. 2022-06-22 12:23:14 +08:00
Po Lu
ff20b0192c Port x-selection-timeout to PGTK
* src/pgtkselect.c (pgtk_own_selection): Fix comment.
(wait_for_property_change, pgtk_get_foreign_selection): Respect
selection timeout.
(syms_of_pgtkselect): New variable `pgtk-selection-timeout'.
2022-06-22 10:02:09 +08:00
Po Lu
d5a3fbe7c8 Fix setting user time for mouse movement events
* src/xterm.c (x_note_mouse_movement, XTmouse_position)
(x_scroll_bar_note_movement, handle_one_xevent): Record whether
or not mouse movement was send_event before using the mouse
movement time.

* src/xterm.h (struct x_display_info): New field
`last_mouse_movement_time_send_event'.
2022-06-22 09:49:16 +08:00
Manuel Giraud
0008003c3e Two typos captured on OpenBSD/clang
; * src/kqueue.c (kqueue_compare_dir_list): Indent typo.
; * src/sysdep.c (system_process_attributes): Unused variable on OpenBSD.
2022-06-21 18:46:53 +03:00
Po Lu
be35c92c90 Rewrite PGTK selection code from scratch
* src/frame.c (delete_frame): Clear selections and swallow
special events.

* src/keyboard.c (kbd_buffer_get_event, process_special_events):
Also handle selection events on PGTK.

* src/keyboard.h (union buffered_input_event): Include selection
events on PGTK.

* src/pgtkselect.c (symbol_to_gtk_clipboard, LOCAL_SELECTION):
New functions and macros.
(selection_type_to_quarks, get_func, clear_func): Delete
functions.
(pgtk_selection_init, pgtk_selection_lost):
(pgtk_selection_usable): New functions.
(Fpgtk_own_selection_internal, Fpgtk_disown_selection_internal)
(Fpgtk_selection_exists_p, Fpgtk_selection_owner_p)
(Fpgtk_get_selection_internal): Complete rewrite.
(syms_of_pgtkselect): Update defsyms and add more hooks.

* src/pgtkselect.h: Delete file.

* src/pgtkterm.c (evq_enqueue): Set last user time based on the
event.
(pgtk_any_window_to_frame, button_event): Fix coding style.
(pgtk_set_event_handler): Add selection events.
(pgtk_find_selection_owner, pgtk_selection_event): New
functions.
(pgtk_term_init): Remove call to `pgtk_selection_init'.

* src/pgtkterm.h (struct pgtk_display_info): New field
`display'.
(enum selection_input_event): New struct.  New macros for
accessing its fields.
2022-06-21 22:05:21 +08:00
Lars Ingebrigtsen
49137311a4 Fix previous -batch change for gc-cons-percentage
* src/emacs.c (main): Reset the default for gc-cons-percentage in
interactive Emacs.
2022-06-21 15:11:28 +02:00
Lars Ingebrigtsen
73a384a986 Increase gc-cons-percentage in -batch Emacs
* doc/lispref/os.texi (Batch Mode): Document it.

* src/emacs.c (main): Use a gc-cons-percentage of 1.0 in
noninteractive Emacsen.
2022-06-21 15:04:38 +02:00
Lars Ingebrigtsen
649b43d20c Make Lucid menus work from the keyboard also when uninstalled
* lwlib/xlwmenu.c (ungrab_all, pop_up_menu): Use it.

* src/keyboard.c (syms_of_keyboard): New variable (bug#46990).
2022-06-21 12:15:11 +02:00
Po Lu
8cf3c3203b Allow toggling antialiasing inside the Haiku font dialog
* src/haiku_support.cc (struct font_selection_dialog_message):
New field `disable_antialias'.
(MessageReceived): Handle new message SET_DISABLE_ANTIALIASING.
(class DualLayoutView): Rename to `TripleLayoutView'.
(class TripleLayoutView): Rename from `DualLayoutView'.
(MinSize): Update computations for three views.

(class EmacsFontSelectionDialog, UpdatePreview)
(EmacsFontSelectionDialog): Add an antialiasing checkbox to
control antialiasing.
(be_select_font): New arguments `initial_antialias' and
`disable_antialias'.

* src/haiku_support.h: Update prototypes.

* src/haikufont.c (haikufont_pattern_from_object): Set
FSPEC_ANTIALIAS.
(Fx_select_font): Update accordingly.
2022-06-21 05:04:47 +00:00
Stefan Kangas
c175984e2c Merge from origin/emacs-28
2eb738f2b8 Support builds configured with a separate --bindir
cf4c204df8 * doc/misc/eww.texi (Overview, Basics): Fix typos.
2022-06-21 06:30:25 +02:00
Po Lu
01834ba0c9 Remove selection requests on the keyboard buffer when closing display
* src/xterm.c (X_NEXT_KBD_EVENT): New macro.
(x_defer_selection_requests): Set input_pending if the kbd
buffer was modified.
(x_delete_selection_requests): New function.
(x_delete_display): Call that.  Bug found when a display died
while the clipboard manager was sending an unreasonably high
number of requests.
2022-06-21 09:53:14 +08:00
Po Lu
32a6d52d43 Move selection delayed message to a better location
* lisp/term/x-win.el (gui-backend-get-selection): Remove
`with-delayed-message' here.
* src/xselect.c (x_display_selection_waiting_message)
(x_cancel_atimer): New functions.
(x_get_foreign_selection): Add an atimer that displays the
message after a while.
2022-06-21 09:35:07 +08:00
Eli Zaretskii
2eb738f2b8 Support builds configured with a separate --bindir
* src/emacs.c (load_pdump): Don't overwrite the leading
directories of the Emacs executable just because the pdumper file
was not found in the expected directory relative to the binary.
This is needed to support builds with a separate --bindir
configure-time option and native-compilation.  (Bug#55741)
2022-06-20 19:04:06 +03:00
Eli Zaretskii
5e7a0873c5 ; * src/process.c (wait_reading_process_output): Fix typo. 2022-06-20 16:08:46 +03:00
Po Lu
4cc2f820b5 Fix x-selection-timeout if some keyboard input arrives while waiting
* src/process.c (wait_reading_process_output): Don't allow
skipping calls to select if detect_input_pending when just
waiting for a cell.  (bug#46935)

* src/xselect.c (x_get_foreign_selection): Add more debugging
code.
2022-06-20 20:59:38 +08:00
Po Lu
45dc99dcb9 Fix ns-reg-to-script definition
* src/nsfont.m (syms_of_nsfont): Fix definition.
2022-06-20 19:11:38 +08:00
Po Lu
f120db63a3 Fix running temacs on Haiku
* src/emacs.c (main): Run init_haiku_select at the right place.
2022-06-20 11:02:14 +00:00
Po Lu
b5dd337ada Fix initialization of Haiku font driver
* src/font.c (register_font_driver): Fix comment.

* src/haikufont.c (haikufont_booleans): New list.
(haikufont_filter_properties): New function.
(haikufont_driver): Register new hook.
(syms_of_haikufont_for_pdumper): Register font driver globally.
(syms_of_haikufont): Call it in a pdumper hook.
2022-06-20 10:58:45 +00:00
Po Lu
854714efb4 Ignore pinch events from the wrong window
* src/xterm.c (handle_one_xevent): Use x_window_to_frame to find
frames for pinch events.
2022-06-20 18:13:51 +08:00
Lars Ingebrigtsen
bd0b96d252 Allow using :width/:height as normal with xbm images
* doc/lispref/display.texi (XBM Images): Adjust the documentation.
* src/image.c (enum xbm_keyword_index): Add :data-width and
:data-height.
(xbm_format): Ditto.
(xbm_image_p): Allow passing in :width/:height for display.
(xbm_load): Use :data-width/:data-height.
2022-06-20 11:18:31 +02:00
Po Lu
382f7920ab Respect `:antialias' on Haiku
* src/haiku_font_support.cc (BFont_find): Pass through
FSPEC_ANTIALIAS.
(be_set_font_antialiasing): New function.

* src/haiku_support.h (enum haiku_font_specification): New enum
FSPEC_ANTIALIAS.
(struct haiku_font_pattern): New field `use_antialiasing'.

* src/haikufont.c (haikufont_pattern_to_entity)
(haikufont_spec_or_entity_to_pattern, haikufont_open): Respect
antialiasing.
(syms_of_haikufont): New defsym `:indices'.
2022-06-20 02:16:34 +00:00
Yuan Fu
ac4cafd66e * src/treesit.c (make_ts_parser): Initialize timestamp field. 2022-06-19 19:07:38 -07:00
Po Lu
9a6b6b1887 Don't generate superfluous wheel events during drag and drop
* src/xterm.c (handle_one_xevent): Only set user time and don't
create wheel events if DND is in progress.
2022-06-20 09:17:21 +08:00
Po Lu
772c0e6f20 Fix earlier change in xfaces.c for antialiasing in the mode line
* src/xfaces.c (realize_gui_face): Don't put QCantialias in
empty spec if it doesn't exist in the original.
2022-06-20 09:16:41 +08:00
Eli Zaretskii
b89b23079c Show warnings about aborted redisplay
* src/xdisp.c (redisplay_window_error): Show messages about
aborted redisplay of a window as delayed-warnings.
2022-06-19 17:15:40 +03:00
Po Lu
b2d11d69dd More conservative fix for bug#37473
* src/xfaces.c (realize_gui_face): Add more conservative fix,
since the last change makes C-x C-+ lead to weight weirdness on
my machine.
2022-06-19 21:57:25 +08:00
Lars Ingebrigtsen
37f168afdd Don't lose antialiasing info when hitting `C-x C-+'
* src/xfaces.c (realize_gui_face): Don't lose antialiasing info
when hitting `C-x C-+' (bug#37473).
2022-06-19 15:03:07 +02:00
Po Lu
dcb7b9f5ff Fix setting last user time during drag-and-drop
* src/xterm.c (handle_one_xevent): Set the last user time if a
button press happens during drag and drop.  Mysterious problems
were other seen with sending selections to a clipboard
immediately afterwards on Irix 6.5.
2022-06-19 20:57:13 +08:00
Eli Zaretskii
287e714fe0 Update redisplay ticks for more operations, and misc modifications
* src/xdisp.c (update_redisplay_ticks): Don't disable redisplay of
mini-windows.
* src/regex-emacs.c (re_match_2_internal):
* src/bidi.c (bidi_find_bracket_pairs, bidi_fetch_char)
(bidi_paragraph_init, bidi_find_other_level_edge): Update the
redisplay tick count as appropriate, when moving the iterator by
one character position actually requires to examine many more
positions.

* doc/emacs/trouble.texi (Long Lines):
* src/xdisp.c (syms_of_xdisp) <max_redisplay_ticks>: Update
recommended non-zero values.
2022-06-19 14:56:43 +03:00
Po Lu
76f3878e28 Ignore emulated mouse clicks during drag-and-drop
* src/xterm.c (handle_one_xevent): Don't set dpyinfo->grab and
last mouse frame for emulated mouse events during a
drag-and-drop operation.
2022-06-19 15:21:46 +08:00
Po Lu
823b503c9d Fix crashes when the _EMACS_DRAG_ATOM is the wrong type
* src/xterm.c (xm_get_drag_atom_1): Don't use PropModeAppend if
rc != Success.
2022-06-19 13:32:36 +08:00
Po Lu
fd853c71a9 Cache the Motif drag window to avoid fetching it every time
* src/xterm.c (xm_get_drag_window_1): New function.
(xm_get_drag_window): Cache the window.  If it already exists,
just return it.
(xm_setup_dnd_targets): If a BadWindow error occurs, re-create
the Motif drag window.

* src/xterm.h (struct x_display_info): New field
`motif_drag_window'.
2022-06-19 11:35:12 +08:00
Po Lu
3285901e9a Fix timestamps recorded in Motif DND top level leave messages
* src/xterm.c (xm_send_top_level_leave_message): Use X_SHRT_MAX
since Motif treats x and y as signed.
(handle_one_xevent): Use correct time for lmsg.timestamp sent in
response to entering the return-frame.
2022-06-19 10:31:33 +08:00
Basil L. Contovounesios
4e68166d77 Fix last tty-select-active-regions change
* lisp/frame.el (tty-select-active-regions): Pacify warning about
missing defcustom :group by specifying the same group as
select-active-regions, as well as the frames group.
* src/keyboard.c (command_loop_1, syms_of_keyboard): Rename last
occurrences of xterm-select-active-regions to
tty-select-active-regions (bug#55883).
2022-06-18 20:05:40 +03:00
Lars Ingebrigtsen
0dc75daf11 Filter out NS non-key events from `where-is-internal'
* doc/lispref/keymaps.texi (Scanning Keymaps): Document it.
* lisp/keymap.el (make-non-key-event): New function.

* lisp/term/common-win.el (x-setup-function-keys): Mark ns events
as not being keys (bug#55940).

* src/keymap.c (Fwhere_is_internal): Filter out key sequences that
are marked as being non-keys.
2022-06-18 14:06:30 +02:00
Po Lu
d7265d58f8 Remove unnecessary clearing of internal border on Haiku
* src/haikuterm.c (haiku_new_font): Don't clear internal border.
2022-06-18 12:04:08 +00:00
Duncan Findlay
2cb5ed66c0 Support `select-active-regions' with xterm
This allows Emacs to save the active region to the user's
primary selection on supported terminals.  The behavior follows
the existing `select-active-regions' variable and requires
`xterm-select-active-regions' to be non-nil.

* src/keyboard.c (command_loop_1):
* lisp/frame.el (display-selections-p): On text terminals, check
terminal parameter `xterm--set-selections' and variable
`xterm-select-active-regions' when deciding whether to update
primary selection. (bug#55883)
* lisp/term/xterm.el (xterm-select-active-regions): New
defcustom.
2022-06-18 14:10:19 +03:00
Eli Zaretskii
a82af5ae78 Don't count ticks too eagerly in syntax.c
* src/syntax.c (scan_sexps_forward): Don't increment redisplay
tick count of the loop didn't advance at all.
2022-06-18 13:12:21 +03:00