Commit graph

46782 commits

Author SHA1 Message Date
Mattias Engdegård
53c0690fa2 Faster append and vconcat
By separating the code paths for append and vconcat, each becomes
simpler and faster.

* src/fns.c (concat_strings): Rename to...
(concat_to_string): ...this.
(concat): Split into concat_to_list and concat_to_vector.
(concat_to_list, concat_to_vector): New, specialised and
streamlined from earlier combined code.
(concat2, concat3, Fappend, Fconcat, Fvconcat): Adjust calls.
2022-07-07 17:43:21 +02:00
Alan Mackenzie
9cd72b02b6 Remove obscure, obsolete code from do_switch_frame
This is relevant for bug #56305, and might solve that bug.  The code being
removed went into Emacs between 1992 and 1994, and looks to have been a
workaround for switching frames, before the command 'other-frame' had been
written.  Nowadays, that code has harmful effects, causing frames' focus to be
redirected at random, sometimes back to the frame itself.

* src/frame.c (do_switch_frame): Remove 53 lines of code.
2022-07-07 15:38:09 +00:00
Po Lu
1fa5f0428f Fix selection disowning upon frame deletion on Wayland
* src/pgtkselect.c (pgtk_clear_frame_selections): Manually
disown cleared selections.  (bug#56434)
2022-07-07 21:15:29 +08:00
Po Lu
59a798b3f0 Fix GTK build
* src/xterm.c (x_dnd_begin_drag_and_drop): Update GTK quitting
code for last change too.  Reported by Norbert Koch
<viteno@netic.de>.
2022-07-07 20:16:43 +08:00
Po Lu
7a9f8ed6fb Fix quitting out of selection converters during drag and drop
* src/xterm.c (x_dnd_process_quit): New function.
(x_dnd_begin_drag_and_drop): Use it instead.  Also quit if
quit-flag is true immediately after a selection converter is
run.
2022-07-07 18:39:51 +08:00
Eli Zaretskii
74f43f82e6 Fix undo of changes in cloned indirect buffers
* lisp/simple.el (primitive-undo): If the visited-modtime of the
indirect buffer's file is bogus, use the modtime of the file
visited by its base buffer.

* src/undo.c (record_first_change): Call
'buffer_visited_file_modtime' with the correct buffer, instead of
always calling 'Fvisited_file_modtime', which returns possibly
bogus values for indirect buffers.
* src/fileio.c (Fset_visited_file_modtime): Signal a meaningful
error for indirect buffers.
(buffer_visited_file_modtime): New function, with implementation
taken from 'Fvisited_file_modtime'.
(Fvisited_file_modtime): Call 'buffer_visited_file_modtime'.
* src/lisp.h: Add prototype for 'buffer_visited_file_modtime'.
(Bug#56397)
2022-07-07 11:56:31 +03:00
Po Lu
ca58872a53 Fix NS build
* src/keyboard.c (process_special_events): Don't define copy and
moved events on the wrong toolkit.
2022-07-07 10:50:49 +08:00
Po Lu
fd016ea997 Port `x-lost-selection-functions' to Haiku
* src/haiku_io.c (haiku_len): Add `CLIPBOARD_CHANGED_EVENT'.
* src/haiku_select.cc (be_update_clipboard_count): Set ownership
flags.
(be_handle_clipboard_changed_message):
(be_start_watching_selection): New functions.

* src/haiku_support.cc (class Emacs): Handle
B_CLIPBOARD_CHANGED.

* src/haiku_support.h (enum haiku_event_type): New event
`CLIPBOARD_CHANGED_EVENT'.
(struct haiku_clipboard_changed_event): New struct.

* src/haikuselect.c (haiku_handle_selection_clear)
(haiku_selection_disowned, haiku_start_watching_selections): New
functions.
(syms_of_haikuselect): New defsym and defvar.

* src/haikuselect.h: Update prototypes.
* src/haikuterm.c (haiku_read_socket): Handle selection events.
(haiku_term_init): Start watching selections.
* src/haikuterm.h: Update prototypes.
* src/keyboard.c (kbd_buffer_get_event, process_special_events)
(mark_kboards): Handle SELECTON_CLEAR_EVENTs correctly on Haiku.
2022-07-07 02:48:19 +00:00
Po Lu
8575962d46 Avoid excessive synchronization performing "xterm" drops
* src/xterm.c (x_dnd_do_unsupported_drop): Asynchronously catch
errors around XSendEvent.
2022-07-07 09:21:22 +08:00
Po Lu
b5cd9343ae Fix infinite looping around Haiku menus
* src/haikumenu.c (haiku_menu_show): Block SIGIO around menu
event loop.
* src/haikuterm.c (haiku_read_socket): Flush tooltip frames
after resize.
2022-07-06 12:24:20 +00:00
Po Lu
e6504c3eda Stop synchronizing after sending XEmbed events
* src/xterm.c (xembed_send_message): Don't sync and handle
errors, which is actually why the XSync call in the spec exists.
2022-07-06 16:32:02 +08:00
Po Lu
1540481850 Fix the MS-DOS build
* msdos/sedlibmk.inp: Define GL_GNULIB_RAWMEMCHR.
* src/process.c (Fsignal_names): Disable on MS-DOS and use
SIGNUM_BOUND, which is always provided by gnulib.
2022-07-06 14:09:51 +08:00
Po Lu
18050712a4 Speed up interning XDS atoms
* src/xselect.c (symbol_to_x_atom, x_atom_to_symbol)
(syms_of_xselect): Handle new atoms.
* src/xterm.c (x_atom_refs):
* src/xterm.h (struct x_display_info): New atoms
`XdndDirectSave0', `XdndActionDirectSave' and `text/plain'.
2022-07-06 13:43:38 +08:00
Paul Eggert
54e0b14a69 Adjust better to Autoconf quoting style change
* admin/gitmerge.el (gitmerge-emacs-version):
* admin/nt/dist-build/build-zips.sh (ACTUAL_VERSION):
* admin/quick-install-emacs (VERSION):
* lisp/cedet/ede/emacs.el (ede-emacs-version):
Adjust to change in configure.ac’s Autoconf quoting style.
* etc/srecode/ede-autoconf.srt:
* test/lisp/progmodes/autoconf-tests.el:
(autoconf-tests-current-defun-function-define)
(autoconf-tests-current-defun-function-subst):
Use better Autoconf quoting.
* make-dist (version): Simplify.
2022-07-05 23:27:17 -05:00
Po Lu
e482379a65 Reduce duplicate code cleaning up DND processes
* src/xterm.c (x_restore_events_after_dnd): New function.
(x_dnd_cleanup_drag_and_drop, x_dnd_begin_drag_and_drop): Use
that instead of manually cleaning up properties and events.
2022-07-06 10:42:12 +08:00
Po Lu
cd18cee96e Don't select for unnecessary properties during DND
* src/xterm.c (x_dnd_begin_drag_and_drop): Don't select for
property changes when not using toplevels.
2022-07-06 09:01:02 +08:00
Po Lu
6230ed6d63 Fix announcements of XDND mouse rectangles
* lisp/x-dnd.el (x-dnd-handle-xdnd): Use correct meaning of "2",
which isn't well documented.
* src/xterm.c (handle_one_xevent): Likewise.  Also fix unpacking
of mouse rects.
2022-07-06 08:45:34 +08:00
Po Lu
9298a571eb Fix manually disowning Emacs drag atoms
* src/xterm.c (handle_one_xevent): Disown Motif drag atom if
eventp->time is CurrentTime as well.  This can happen with some
synthetic events.
2022-07-05 19:17:37 +08:00
Po Lu
b4d766fba5 Don't take XCB socket every time we want the no of the next request
* src/xterm.c (x_ignore_errors_for_next_request, x_uncatch_errors)
(x_check_errors, x_had_errors_p): Don't call XNextRequest
redundantly.  Use NextRequest if it was immediately preceded by
XNextRequest, which updates dpy->request.
2022-07-05 11:05:21 +08:00
Po Lu
08df1631b4 Don't overestimate supported input extension version on GTK 3
* src/xterm.c (x_term_init): If minor > original_minor (the
maximum version supported by libXi), set it back to
original_minor.
2022-07-05 10:13:37 +08:00
Paul Eggert
6d415d5f0b Fix core dump with x-get-local-selection
* src/xselect.c (Fx_get_local_selection): Check that VALUE has 4
elements, since x_get_local_selection can dump core otherwise.
This pacifies gcc -Wanalyzer-null-dereference, which found the
problem.
2022-07-04 16:22:17 -05:00
Stefan Kangas
599aea3012 * src/keymap.c (Fcopy_keymap): Document using defvar-keymap. 2022-07-04 17:01:53 +02:00
Po Lu
a218921172 Avoid code duplication converting XI event state in toolkit menu code
* src/xmenu.c (x_menu_translate_generic_event):
(popup_get_selection): Use `xi_convert_event_state' instead.
* src/xterm.c (xi_convert_event_state): Export on non-GTK
builds.
* src/xterm.h: Update prototypes.
2022-07-04 21:13:29 +08:00
Po Lu
c4e93b67c4 Handle errors caused by ignoring errors with GDK's trap installed
* src/xterm.c (x_ignore_errors_for_next_request)
(x_stop_ignoring_errors): Also tell GDK to ignore errors from
the following requests.  (bug#56372)
2022-07-04 14:02:42 +08:00
Po Lu
1da6a6d327 Always wait for XdndStatus before sending XdndDrop
* src/xterm.c (x_dnd_do_drop): New function.
(x_dnd_begin_drag_and_drop): Clear new flag.
(handle_one_xevent): Use that function; send drops upon receipt
of pending XdndStatus, to avoid race conditions where we don't
yet know the selected action.
2022-07-04 13:41:20 +08:00
Po Lu
bd034b342c Fix accessing dpyinfo after it is deallocated
* src/xterm.c (x_connection_closed): Print disconnect error for
the last terminal before freeing it.
2022-07-04 12:56:42 +08:00
Po Lu
c96cd5e2b7 Display list of traps and handlers when crashing due to an X error
* src/xterm.c (x_connection_closed): Print list of installed
error handlers if not crashing due to an IO error.
(NO_INLINE): Include error serial in error message.
2022-07-04 11:32:05 +08:00
Florian Rommel
bbca04fd9d Add support for fullscreen values fullheight and fullwidth on PGTK
* src/pgtkterm.c (window_state_event): Support values fullheight and
fullwidth for the fullscreen frame-parameter
* doc/lispref/frames.texi (Size Parameters): Document inability to
actively set hullheight/fullwidth for PGTK frames
* configure.ac: Bump GTK version for PGTK
* etc/NEWS: Change GTK version in PGTK announcement
2022-07-04 10:21:14 +08:00
Po Lu
06afa7b4e0 Add some more error checking code to `x_stop_ignoring_errors'
* src/xterm.c (x_stop_ignoring_errors): Abort if no request was
actually made, making the state inconsistent.
2022-07-04 09:33:19 +08:00
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