Commit graph

46753 commits

Author SHA1 Message Date
Florian Rommel
676d38cfc3 abort-redisplay: Add missing unbind_to in 'recenter'
* src/window.c (recenter): Add ubind_to before early return.
(Bug#56369)
2022-07-03 19:07:28 +03:00
Eli Zaretskii
e9bb92940e Fix implementation of 'reset' face values
* src/xfaces.c (Finternal_merge_in_global_face)
(gui_supports_face_attributes_p):  Only modify local copy of face
attributes when replacing 'reset' pseudo-values with real values.
(Bug#38771)
2022-07-03 15:37:50 +03:00
Po Lu
cfee07d4dd Improve performance when rejecting XI touch event
* src/xterm.c (handle_one_xevent): Avoid sync handling simple
error.
2022-07-03 19:49:24 +08:00
Eli Zaretskii
f5a11369ea ; * src/xfaces.c (Finternal_set_lisp_face_attribute): Fix last change. 2022-07-03 13:22:42 +03:00
Po Lu
2c4922d76b Improve efficiency of x_frame_highlight' and x_frame_unhighlight'
* src/xterm.c (x_frame_highlight, x_frame_unhighlight): Don't
sync catching errors.
2022-07-03 17:52:14 +08:00
Eli Zaretskii
45badeceec Implement pseudo-value 'reset' of face attrributes
* doc/lispref/display.texi (Face Attributes):
* etc/NEWS: Document the new pseudo-value 'reset'.

* src/xfaces.c (realize_named_face, lookup_derived_face)
(gui_supports_face_attributes_p, lookup_named_face)
(Finternal_merge_in_global_face, merge_named_face, merge_faces):
Handle the 'reset' pseudo-value of a face's attribute.
(syms_of_xfaces): New symbol 'reset'.
(RESET_P): New macro.
(check_lface_attrs, Finternal_set_lisp_face_attribute): Allow
'reset' as a value of any attribute except ':inherit'.
(Bug#38771)
2022-07-03 12:30:24 +03:00
Po Lu
fcdaaf241e Fix deadlocks with very old versions of libXi
* src/xfns.c (setup_xi_event_mask, Fx_create_frame): Set
`xi_mask' ourselves if the version of libXi is too old to have
working XIGetSelectedEvents.
* src/xterm.c (x_destroy_window): Free `xi_mask' with xfree in
that case.
2022-07-03 14:33:16 +08:00
Po Lu
4ef1e4daf5 Speed up receiving drops over slow connections
* lisp/x-dnd.el (x-dnd-debug-errors): New variable.
(x-dnd-handle-drag-n-drop-event): Bind
`x-fast-protocol-requests' to t if that is off.

* src/xfns.c (Fx_change_window_property):
(Fx_delete_window_property):
* src/xselect.c (Fx_send_client_message, x_send_client_event):
Don't sync to check for errors if fast protocol requests are
enabled.

* src/xterm.c (x_catch_errors_for_lisp, x_check_errors_for_lisp)
(x_uncatch_errors_for_lisp): New functions.
(syms_of_xterm): New variable `x-fast-protocol-requests'.
* src/xterm.h: Update prototypes.
2022-07-03 09:43:20 +08:00
Lars Ingebrigtsen
782e48b3db REQUIRE-MATCH doc string clarification
* src/minibuf.c (Fcompleting_read):
* lisp/minibuffer.el (read-file-name): Clarify what the return
value is in the REQUIRE-MATCH function case.
2022-07-02 22:03:06 +02:00
Lars Ingebrigtsen
3c125290d2 Add sanity check for Emacsen distributed without .el files
* src/lread.c (maybe_swap_for_eln): Add sanity check for Emacsen
distributed without .el files (bug#48342).
2022-07-02 18:42:36 +02:00
Po Lu
b25ca54298 Fix error handling for XCB Xlib
* src/xterm.c (xm_send_drop_message)
(xm_send_top_level_enter_message, xm_send_drag_motion_message)
(xm_send_top_level_leave_message, x_dnd_compute_toplevels)
(x_dnd_send_enter, x_dnd_send_position, x_dnd_send_leave)
(x_dnd_send_drop, handle_one_xevent, x_catch_errors_with_handler)
(x_request_can_fail, x_clean_failable_requests)
(x_ignore_errors_for_next_request, x_stop_ignoring_errors)
(x_uncatch_errors, x_check_errors, x_had_errors_p, x_error_handler)
(frame_set_mouse_pixel_position, x_focus_frame): Record serial
sequences instead of simply the next request when ignoring a
single request.  Use XNextRequest instead of NextRequest, since
the latter is unreliable when using Xlib built with XCB.

* src/xterm.h (struct x_failable_request): New struct..
(struct x_display_info): Make failable request variables the
right type.
2022-07-02 21:56:59 +08:00
Po Lu
59d109b73c Fix display disconnect when tooltip frame is alive
* src/xterm.c (x_connection_closed): Don't dereference nil when
loop finds a tooltip frame.
2022-07-02 21:56:59 +08:00
Lars Ingebrigtsen
b2670bfe42 Add a comment about buffer_local_value/find_symbol_value
* src/data.c: Note that buffer_local_value is very similar
(bug#48281).
2022-07-02 15:22:13 +02:00
Lars Ingebrigtsen
8b52d9f5f1 Allow NUL characters in JSON input
* src/json.c (Fjson_parse_string, Fjson_parse_buffer): Allow NUL
characters in JSON (bug#48274).
2022-07-02 15:06:24 +02:00
Mattias Engdegård
8d68760dde ; Fix typos. 2022-07-02 13:32:41 +02:00
Lars Ingebrigtsen
14d4d63c8c native-comp-eln-load-path doc string fix
* src/comp.c (syms_of_comp): Fix grammar in doc string.
2022-07-02 12:54:28 +02:00
Eli Zaretskii
631b3fbde7 * src/sheap.h (STATIC_HEAP_SIZE): Double the size of static heap. 2022-07-02 12:16:33 +03:00
Po Lu
50b3e9d23d Completely get rid of races during Motif drag window creation
* src/xterm.c (x_special_window_exists_p): New function.
(xm_get_drag_window_1): Rework workflow and display grabbing.
2022-07-02 16:42:06 +08:00
Stefan Kangas
9230953f23 ; Fix typos. 2022-07-02 10:20:23 +02:00
Stefan Kangas
3112d5a2f1 * src/xfns.c (Fx_server_input_extension_version): Fix typo. 2022-07-02 09:49:08 +02:00
Stefan Kangas
52c91122ee Merge from origin/emacs-28
1c3d107cb5 Fix "C-u C-x =" for SPC
7e33618bbc ; * src/fns.c (Frequire): Fix a typo in the doc string.  (...
6908309827 Doc fixes: don't refer to some obsolete items
dc3cb749f3 Remove obsolete cust-print from elisp index
9ffbbddf8e * admin/make-tarball.txt: Minor clarifications.
f5421104e9 Fix external image conversion on MS-Windows
6f22631a63 * doc/emacs/buffers.texi (Indirect Buffers): Mention modif...

# Conflicts:
#	doc/emacs/buffers.texi
#	lisp/emacs-lisp/nadvice.el
#	lisp/image/image-converter.el
2022-07-02 09:33:51 +02:00
Lele Gaifax
9dc0fdfdc1 Fix repeated "the"
* configure.ac (EMACS_CONFIG_FEATURES):
* etc/NEWS:
* lisp/dnd.el (dnd-begin-text-drag):
* src/pgtkfns.c (Fx_display_mm_height, Fx_display_mm_width):
(Fx_display_backing_store, Fx_display_visual_class):
* src/xterm.c: Fix repeated "the".  (Bug#56341)

Copyright-paperwork-exempt: yes
2022-07-02 10:04:32 +03:00
Stefan Monnier
a2d0a9ee5c * editfns.c (Fbyte_to_string): Use make_unibyte_string 2022-07-01 21:29:45 -04:00
Po Lu
eb6d74a26c Return the correct action from the Lisp side of drag-and-drop
* lisp/x-dnd.el (x-dnd-handle-drag-n-drop-event): Select
`window' when handling internal DND events.
(x-dnd-handle-unsupported-drop): Return an appropriate action.
* src/keyboard.c (kbd_buffer_get_event):
* src/termhooks.h (enum event_kind): Delete
`UNSUPPORTED_DROP_EVENT'.
* src/xterm.c (x_dnd_send_unsupported_drop): Set flags instead
of recording input event.
(x_clear_dnd_monitors): Rename to `x_clear_dnd_variables'.  Also
clear unsupported drop data.
(x_dnd_begin_drag_and_drop): Run unsupported drop function
inline (and safely), and use its return value if it returned a
symbol.
(syms_of_xterm): Update doc string of
`x-dnd-unsupported-drop-function'.

* src/xterm.h: Update declarations.
2022-07-02 09:06:36 +08:00
Po Lu
b55059bbeb Prevent XdndPosition messages from rarely being sent out of band
* src/xterm.c (handle_one_xevent): Don't clear
`x_dnd_waiting_for_status_window' if a pending position message
was sent in reply to an XdndStatus event.
2022-07-01 16:18:50 +08:00
Brennan Vincent
7e33618bbc ; * src/fns.c (Frequire): Fix a typo in the doc string. (Bug#56328)
Copyright-paperwork-exempt: yes
2022-07-01 08:32:13 +03:00
Po Lu
833767e53f Disable middle click selection emulation during XDS
* doc/lispref/frames.texi (Drag and Drop): Document new
variable.
* lisp/x-dnd.el (x-dnd-do-direct-save): Disable drop emulation
during XDS drag-and-drop.

* src/keyboard.c (kbd_buffer_get_event): Handle recorded value.
* src/xterm.c (x_dnd_do_unsupported_drop): Return if new
variable is nil.
(x_dnd_send_unsupported_drop): Record value of new variable in
events.
(x_dnd_begin_drag_and_drop): Handle recorded value.
(syms_of_xterm): New variable `x-dnd-use-unsupported-drop'.
2022-07-01 09:10:34 +08:00
Po Lu
ebd980bc7e Disable unrelated drag-and-drop protocols during XDS drop
* doc/lispref/frames.texi (Drag and Drop): Document variables
used to control drag-and-drop protocols.
* lisp/x-dnd.el (x-dnd-do-direct-save): Disable irrelevant DND
protocols.

* src/xterm.c (x_dnd_get_target_window_1):
(x_dnd_get_target_window):
(handle_one_xevent): Respect new variable.
(syms_of_xterm): New variable `x-dnd-disable-motif-protocol'.
2022-06-30 16:41:58 +08:00
Po Lu
e161b5fa3c Fix preservation of the original value of PRIMARY after dropping on xterm
* src/xselect.c (x_own_selection): New arg `dnd_data'.  Record
it.
(x_get_local_selection, x_handle_selection_request)
(x_convert_selection): Convert the DND data instead if the
situation warrants.
(Fx_own_selection_internal, Fx_get_selection_internal)
(Fx_get_local_selection): Update calls to x_get_local_selection.

* src/xterm.c (x_dnd_do_unsupported_drop): If obtaining
selection ownership failed, return.  Record DND value and
preserve the current value of PRIMARY, if it exists.

* src/xterm.h: Update prototypes.
2022-06-30 09:46:41 +08:00
Eli Zaretskii
fb3d582e7b Fix hscrolling of :align-to when display-line-numbers is in effect
* src/dispextern.h (struct it): Rename 'tab_offset' member to
'stretch_adjust'.
* src/xdisp.c (gui_produce_glyphs, produce_stretch_glyph)
(display_line): All users of 'tab_offset' changed.
(produce_stretch_glyph): Fix calculation of ':align-to' when
line numbers are displayed and the window is hscrolled.
(calc_pixel_width_or_height): Fix calculation of width of 'space'
display property when 'display-line-numbers' is turned on, but the
line number was not yet produced for the current glyph row.
(Bug#56176)
2022-06-29 20:15:36 +03:00
Po Lu
d3492bcf30 Fix handling invalidated selection requests
* src/xselect.c (x_handle_selection_request): Correctly punt
when !dpyinfo.
2022-06-29 21:24:51 +08:00
Po Lu
d07063f69f Implement starting X Direct Save (XDS) drops
* doc/lispref/frames.texi (Drag and Drop): Document new function
`dnd-direct-save'.
* etc/NEWS: Likewise.

* lisp/dnd.el (dnd-direct-save-remote-files): New defcustom.
(dnd-begin-file-drag): Implement defucstom.
(dnd-begin-drag-files): Add kill-emacs-hook after saving remote
file.
(dnd-direct-save): New function.
* lisp/x-dnd.el (x-dnd-known-types): Fix coding style.
(x-dnd-handle-drag-n-drop-event): Handle local value with
self-originating DND events.
(x-dnd-xds-current-file, x-dnd-xds-source-frame): New defvars.
(x-dnd-handle-direct-save, x-dnd-do-direct-save): New functions.

* src/xfns.c (Fx_begin_drag): Allow any atom to be used as a DND
action.
* src/xselect.c (symbol_to_x_atom): Make public.
* src/xterm.c (x_dnd_note_self_drop): Include selection local
value.
(x_ignore_errors_for_next_request): Don't assume x_error_message
is set.
* src/xterm.h: Update prototypes.
2022-06-29 20:14:41 +08:00
Po Lu
60af986f38 Clean up failable requests in more places
* lisp/term/haiku-win.el (haiku-get-numeric-enum): Fix build.

* src/xterm.c (x_clean_failable_requests): Avoid redundant
memcpy if first == last.
(x_ignore_errors_for_next_request): Fix check for last request.
(x_check_errors, x_had_errors_p): Clean up failable requests
here.
2022-06-29 15:09:17 +08:00
Po Lu
0e6516a1f0 Fix reported problem with drag-and-drop inside VirtualBox
* lisp/x-dnd.el (x-dnd-handle-old-kde, x-dnd-handle-offix)
(x-dnd-handle-motif): Select window before handling drop, like
on Xdnd.
(x-dnd-convert-to-offix, x-dnd-do-offix-drop)
(x-dnd-handle-unsupported-drop): Accept local selection data and
use that instead.

* src/keyboard.c (kbd_buffer_get_event): Call unsupported drop
function with local selection data as 8th arg.
* src/xselect.c (x_get_local_selection): Accept new arg
`local_value'.  All callers changed.
(Fx_get_local_selection): New function.
(syms_of_xselect): Update defsubrs.

* src/xterm.c (x_dnd_lose_ownership): New function.
(x_dnd_begin_drag_and_drop): Unless new variable is true, disown
XdndSelection after returning.  This supposedly makes
drag-and-drop from guest to host work in VirtualBox without
causing pointer motion to become choppy afterwards.
(syms_of_xterm): New variable `x_dnd_preserve_selection_data'
and update doc string of `x-dnd-unsupported-drop-function'.

* test/lisp/dnd-tests.el (dnd-tests-begin-text-drag)
(dnd-tests-begin-file-drag, dnd-tests-begin-drag-files): Set new
variable to nil during tests.
2022-06-29 10:24:14 +08:00
Lars Ingebrigtsen
c23a49d256 Improve sxhash-equal documentation
* doc/lispref/hash.texi (Defining Hash): Explain more about what
sxhash-equal is for and what the caveats are.
* src/fns.c (Fsxhash_eql, Fsxhash_equal): Clarify doc string.
2022-06-28 14:58:20 +02:00
Po Lu
baec3c4974 Clean up Fx_begin_drag
* src/xfns.c (Fx_begin_drag): Use FOR_EACH_TAIL instead of
iterating manually.
2022-06-28 15:32:06 +08:00
Po Lu
748e6c1e80 Automatically detect cyclic lists in some Haiku functions
* src/haikuselect.c (haiku_lisp_to_message): Use FOR_EACH_TAIL
to iterate over message data.
2022-06-28 07:30:02 +00:00
Po Lu
9c268510cf Fix handling "C-S-u" and such when using XKB
* src/xterm.c (handle_one_xevent): Don't rely on XKB for
consumed modifiers.
2022-06-28 09:42:40 +08:00
Po Lu
dea5c528bd Always use XKB to translate keysyms when no input method is available
* src/xterm.c (handle_one_xevent) [HAVE_XKB]: Also use XKB to
handle core KeyPress events.
2022-06-28 09:40:30 +08:00
Gerd Möllmann
1e58dc46b8 Prevent regexp cache entries from being GC'ed in more cases
* src/search.c (string_match_1, fast_string_match_internal)
(fast_c_string_match_ignore_case): Use freeze_pattern.
(Bug#56108)
2022-06-27 16:23:07 +03:00
Lars Ingebrigtsen
f9f41c586a Fix some missed Fplist_put adjustments in src/w32.c
* src/w32.c (serial_configure): Adjust some missed Fplist_put renames.
2022-06-27 12:39:42 +02:00
Lars Ingebrigtsen
abdf35fac6 Adjust plist calls in .m files
* src/nsterm.m (mod_of_kind):
* src/nsimage.m (ns_load_image): Adjust plist calls in .m files.
2022-06-27 12:26:19 +02:00
Lars Ingebrigtsen
513acdc9b4 Allow plist-get/plist-put/plist-member to take a comparison function
* doc/lispref/lists.texi (Plist Access): Document it.

* lisp/filesets.el (filesets-reset-fileset)
(filesets-ingroup-cache-get):
(filesets-ingroup-cache-put):
(filesets-build-menu-now): Don't use lax-plist functions.

* lisp/simple.el (lax-plist-put, lax-plist-get): Moved here from
fns.c and make obsolete.

* lisp/emacs-lisp/byte-opt.el (side-effect-free-fns): Don't mark
plist functions as side-effect-free or pure.

* lisp/emacs-lisp/comp.el (comp-known-type-specifiers): Adjust type.

* lisp/emacs-lisp/shortdoc.el (list): Don't document deprecated
functions.

* src/xdisp.c (build_desired_tool_bar_string):
(display_mode_element):
(store_mode_line_string):
(display_string):
(produce_stretch_glyph):
(note_mode_line_or_margin_highlight):
(note_mouse_highlight):
* src/w32.c (serial_configure):
* src/sysdep.c (serial_configure):
* src/sound.c (parse_sound):
* src/process.c (Fset_process_buffer):
(Fset_process_sentinel):
(Fprocess_contact):
(Fmake_process):
(Fmake_pipe_process):
(Fset_network_process_option):
(Fserial_process_configure):
(Fmake_serial_process):
(set_network_socket_coding_system):
(finish_after_tls_connection):
(connect_network_socket):
(Fmake_network_process):
(server_accept_connection):
* src/lread.c (ADDPARAM):
(hash_table_from_plist):
* src/keyboard.c (make_lispy_position):
* src/indent.c (check_display_width):
* src/image.c (postprocess_image):
* src/gnutls.c (gnutls_verify_boot):
(Fgnutls_boot):
(gnutls_symmetric):
(Fgnutls_hash_mac):
(Fgnutls_hash_digest):
* src/dired.c (filter):
* src/data.c (add_to_function_history):
* src/coding.c (Fcoding_system_put): Adjust callers from
Fplist_put (etc) to plist_put.

* src/fns.c (plist_get):
(plist_put):
(plist_member): New functions (without optional third parameter)
to be used in C code.

* src/fns.c (Fplist_get, Fplist_put, Fplist_member): Take an
optional predicate parameter (bug#47425).

* src/lisp.h: Declare new plist_put, plist_get and plist_member
functions.

* test/lisp/json-tests.el (test-json-add-to-plist): Use plist-get.

* test/src/fns-tests.el (test-cycle-lax-plist-get):
(test-cycle-lax-plist-put):
(lax-plist-get/odd-number-of-elements):
(test-plist): Remove lax-plist tests, since semantics have changed
(they no longer error out on cycles).
2022-06-27 12:22:05 +02:00
Lars Ingebrigtsen
f7149f73b1 Fix off-by-one error in Fsignal_names
* src/process.c (Fsignal_names): Fix off-by-one error.
2022-06-27 09:02:38 +02:00
Po Lu
0c01f3fa18 Use correct background for image mask color on Haiku
* src/haikuterm.c (haiku_draw_image_glyph_string): Use adjusted
background for image mask.
2022-06-27 06:21:32 +00:00
Po Lu
d1f63b2b06 Implement stipples for images on Haiku
* src/haiku_draw_support.cc (be_draw_bitmap_with_mask): New
function.
* src/haiku_support.h: Add prototype.

* src/haikuterm.c (haiku_draw_image_glyph_string): Draw stipple
correctly.
(haiku_draw_glyph_string): Fix conditions under which
row->stipple_p is set.
2022-06-27 06:21:31 +00:00
Po Lu
363821344d Correctly convert event state in more places
* src/xterm.c (handle_one_xevent): Use `xi_convert_event_state'
to handle synthetic and xwidget button events.
2022-06-27 09:13:33 +08:00
Lars Ingebrigtsen
7865b516c8 Minor clean up of previous Fsignal_names patch
* src/process.c (Fsignal_names): Clean up code slightly.
2022-06-26 22:50:50 +02:00
Lars Ingebrigtsen
ed84f24a21 Make `signal-process' allow completing over signal names
* lisp/simple.el (read-signal-name): New function.
* src/process.c (Fsignal_process): Use it to allow completing over
the signal names (bug#56239).
(Fsignal_names): New function.
2022-06-26 22:45:39 +02:00
Eli Zaretskii
e6e818f6cf Fix re-composition under 'composition-break-at-point'
* src/xdisp.c (try_window_id): Disable this optimization if
'composition-break-at-point' is non-nil.
2022-06-26 19:55:13 +03:00