1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-31 04:41:23 -08:00
Commit graph

155589 commits

Author SHA1 Message Date
Po Lu
7378287f59 ; * src/xterm.c: Update commentary. 2022-04-01 10:29:00 +08:00
Po Lu
540e7298a9 Make dropping files on Motif programs work
* lisp/dired.el (dired-mouse-drag): Announce "FILE" and
"FILE_NAME" as targets as well.
* lisp/select.el (xselect-convert-to-filename): Handle
XdndSelection specially.
(xselect-convert-to-xm-file): New function.
(selection-converter-alist): Add new converters.
2022-04-01 09:50:58 +08:00
Po Lu
79b50d0f90 Avoid extra sync if we didn't get the right wmstate
* src/xterm.c (x_dnd_get_wm_state_and_proto): Always set proto
version.
(x_dnd_get_target_window): Optimize accordingly.
2022-04-01 08:47:45 +08:00
Po Lu
c3ad47b7e4 Fix a build warning on the non-XI2 build
* src/xterm.c (xm_read_drop_start_reply): Take a const XEvent as
msg.
2022-04-01 08:40:35 +08:00
Eli Zaretskii
c5af19cba5 Fix a bug in configure.ac that failed the --without-x build
* configure.ac (USE_TOOLKIT_SCROLL_BARS): Fix test for unsupported
scroll-bars configuration.  (Bug#54629)
2022-03-31 19:15:45 +03:00
Po Lu
948181df9c Fix Motif DND on window managers that don't support client lists
* src/xterm.c (x_dnd_compute_toplevels): Fix usage of
`x_uncatch_errors_after_check'.
(x_dnd_get_wm_state_and_proto): New function.
(x_dnd_get_target_window): Also return first toplevel window
found.
2022-03-31 21:53:04 +08:00
Po Lu
1bd1438702 Implement missing parts of the Motif drag and drop protocol
* src/xterm.c (xm_drop_start_reply): New structure.
(xm_get_drag_window): Don't grab the server since this leads to
weird freezes when creating the drag window.
(xm_read_drop_start_reply): New function.
(x_dnd_begin_drag_and_drop): Set Motif finish flag to 0.
(handle_one_xevent): When starting a motif drop, set the finish
flag to 1.  When the receiver replies to our drop message, set
the finish flag to 2 if the drop was accepted, and only clear
the waiting for finish flag when a selection request for
XmTRANSFER_SUCCESS or XmTRANSFER_FAILURE arrives.
(x_term_init): New atoms.
* src/xterm.h (struct x_display_info): New atoms.
2022-03-31 21:28:22 +08:00
Lars Ingebrigtsen
af0ea35ea0 Tweak how functions are formatted in Implementation in *Help*
* lisp/emacs-lisp/cl-generic.el (cl--generic-describe): Include
the function name in the implementations (bug#54628).  This
clarifies what we're talking about here, and avoids getting
(function ...) translated into #'...
2022-03-31 13:38:33 +02:00
Po Lu
ce1f7f2467 Minor fixes to treatment of `allow_current_frame'
* src/xterm.c (x_dnd_send_drop): Don't send special event for
wrong frame.
(x_dnd_send_drop): Fix condition for returning
XdndActionPrivate.
2022-03-31 18:52:01 +08:00
Po Lu
c1792c51de ; * src/xterm.c (handle_one_xevent): Respect current window in Motif DND. 2022-03-31 17:31:45 +08:00
Po Lu
1d4306a8a7 Implement Motif drop protocol
This is the second most widely implemented drag-and-drop
protocol on X Windows, but seems to have some unsolvable
problems (i.e. stuff will keep accumulating in the drag window
as long the target lists keep changing.)  The implementation is
not yet complete and doesn't work with some programs.

* lisp/select.el (xselect-convert-xm-special): New functions.
(selection-converter-alist): Add new converters.
* lisp/x-dnd.el (x-dnd-handle-motif): Ignore messages sent by
the receiver.
* src/xterm.c (xm_targets_table_byte_order): New enum;
(SWAPCARD32, SWAPCARD16): New macros.
(xm_targets_table_rec, xm_drop_start_message)
(xm_drag_initiator_info, xm_drag_receiver_info): New structures.
(XM_DRAG_SIDE_EFFECT, xm_read_targets_table_header)
(xm_read_targets_table_rec, xm_find_targets_table_idx)
(x_atoms_compare, xm_write_targets_table)
(xm_write_drag_initiator_info, xm_get_drag_window)
(xm_setup_dnd_targets, xm_send_drop_message)
(xm_read_drag_receiver_info): New functions.
(x_dnd_compute_toplevels): Correctly free some temp data.
(x_dnd_get_window_proxy, x_dnd_get_window_proto)
(x_set_frame_alpha): Likewise.
(handle_one_xevent): If the window has no XDND proto but has
motif drag receiver data, send a motif drop protocol request.
(x_term_init): New atoms for Motif DND support.
* src/xterm.h (struct x_display_info): Add new atoms.
2022-03-31 17:21:37 +08:00
Stefan Monnier
6f973faa91 cl-generic: Use OClosures for cl--generic-isnot-nnm-p
Rewrite the handling of `cl-no-next-method` to get rid of the hideous
hack used in `cl--generic-isnot-nnm-p` and also to try and move
some of the cost to the construction of the effective method rather
than its invocation.  This speeds up method calls measurably when
there's a `cl-call-next-method` in the body.

* lisp/loadup.el ("emacs-lisp/oclosure"): Load.

* lisp/emacs-lisp/oclosure.el (oclosure-define): Remove workaround now
that we're preloaded.

* lisp/emacs-lisp/cl-generic.el (cl--generic-method): Rename `uses-cnm`
to `call-con` to reflect it's not a boolean any more.
(cl-defmethod): Adjust to the new name and new values.
(cl-generic-define-method): Adjust to the new name.
(cl--generic-lambda): Use the new `curried` calling convention.
(cl--generic-no-next-method-function): Delete function.
(cl--generic-nnm): New type.
(cl-generic-call-method): Rewrite to support the various
calling conventions.
(cl--generic-nnm-sample, cl--generic-cnm-sample): Delete consts.
(cl--generic-isnot-nnm-p): Rewrite using `oclosure-type`.
(cl--generic-method-info): Add support for new calling convention.
2022-03-30 17:08:28 -04:00
Stefan Monnier
b12ad270eb EIEIO tests: Fix failure when eieio-core.el is interpreted
* lisp/emacs-lisp/eieio-core.el (eieio--validate-slot-value)
(eieio--slot-name-index): Use the `cl--class` accessor functions.
2022-03-30 17:08:28 -04:00
Tassilo Horn
03e6a295d5 dired: implement feature from 7b50ed553f differently
* lisp/dired.el (dired-buffers-for-dir): Restore to emacs-27 version.
(dired-buffers-for-dir-or-subdir): New function.
(dired-clean-up-after-deletion): Use dired-buffers-for-dir-or-subdir
instead dired-buffers-for-dir.
2022-03-30 19:49:01 +02:00
Andrea Corallo
2ec77fcd8f * src/pdumper.c (dump_get_max_page_size): Rename from 'dump_get_page_size'. 2022-03-30 17:15:03 +02:00
Andrea Corallo
2a081274e1 * src/pdumper.c: Remove getpagesize.h dependecy. 2022-03-30 17:15:02 +02:00
Eli Zaretskii
7208106e81 Fix regression in 'dired-buffers-for-dir'
* lisp/dired.el (dired-buffers-for-dir): Fix inadvertently swapped
arguments.  (Bug#54636)
2022-03-30 16:21:02 +03:00
Michael Albinus
2212b42806 Extend signal-process and proced.el
* doc/lispref/processes.texi (Signals to Processes):
Document changes in signal-process.

* etc/NEWS: Mention changes in proced.el and signal-process.

* lisp/proced.el (proced-signal-function): Declare it obsolete.
(proced-remote-directory): New user option.
(proced-mode): Adapt docstring.
(proced-send-signal, proced-renice): Handle interactive prefix argument.

* lisp/net/tramp.el (tramp-signal-process): New defun.  Add it to
`signal-process-functions'.

* src/process.c (Finternal_default_signal_process): New defun,
providing the hitherto existing implementation of Fsignal_process.
(Fsignal_process): Loop through Vsignal_process_functions.
(Vsignal_process_functions): New defvar.
(Qinternal_default_signal_process, Qsignal_process_functions):
Declare symbols.
(Sinternal_default_signal_process): Declare subroutine.

* test/lisp/net/tramp-tests.el (tramp-test31-signal-process): New test.
2022-03-30 13:16:54 +02:00
Michael Albinus
c0f5e0a559 ; Extend Tramp FAQ
* doc/misc/tramp.texi (Frequently Asked Questions): Explain Tramp
temporary file identification.
2022-03-30 11:16:57 +02:00
Po Lu
34ff19a882 Remove local copies of remote files created for drag-and-drop
* lisp/dired.el (dired-mouse-drag): Remove last dragged remote
file and save a record of any local copy created.
(dired-remove-last-dragged-local-file): New function.
2022-03-30 16:36:10 +08:00
Po Lu
ea86ba8966 Ignore mouse movement correctly on Haiku during drag and drop
* src/haikuselect.c (haiku_unwind_drag_message): New function.
(Fhaiku_drag_message): Set `haiku_dnd_in_progress' to false.
* src/haikuterm.c (haiku_read_socket): Fix overriding of
need_flush when reading events from multiple frames.
* src/haikuterm.h (haiku_dnd_in_progress): New variable.
* src/xdisp.c (note_mouse_highlight): Ignore if said variable is
true.
2022-03-30 08:24:45 +00:00
Po Lu
9f54cb5f8f Prevent signals when dragging nonexistent files on Haiku
* lisp/term/haiku-win.el (x-begin-drag): Bind
`haiku-signal-invalid-refs' to nil.
* src/haiku_support.cc (MouseMoved): Send motion events while
dragging as well.
* src/haikuselect.c (haiku_lisp_to_message): Respect new
variable.
(syms_of_haikuselect): New variable `haiku-signal-invalid-refs'.
2022-03-30 08:13:35 +00:00
Po Lu
7a5f2b79e9 ; * lisp/dired.el (dired-mouse-drag): Create local copy if file is remote. 2022-03-30 14:20:13 +08:00
Po Lu
62c779cbde Disallow building with non-toolkit scroll bars on non-X systems
* configure.ac: Prevent building without toolkit scroll bars on
non-X systems, where they're not implemented.  (bug#54629)
2022-03-30 11:25:50 +08:00
Po Lu
c4a1e8bd7a Avoid calling XGetAtomName in a loop when fetching monitor attributes
* src/xfns.c (x_get_monitor_attributes_xrandr): Avoid syncing on
each monitor when waiting for XGetAtomName when built with XCB.
2022-03-30 09:17:58 +08:00
Po Lu
c52b58d290 Add some optimizations to ShapeNotify handling
* src/xterm.c (handle_one_xevent): Do bounding rect
optimizations on ShapeNotify events as well.
2022-03-30 08:57:55 +08:00
Michael Albinus
973608e358 Handle process property `remote-command' in Tramp
* doc/misc/tramp.texi (Remote processes): New subsection "Process
properties of asynchronous remote processes".

* lisp/net/tramp.el (tramp-handle-make-process):
* lisp/net/tramp-adb.el (tramp-adb-handle-make-process):
* lisp/net/tramp-smb.el (tramp-smb-handle-start-file-process):
* lisp/net/tramp-sh.el (tramp-sh-handle-make-process)
Set `remote-command' process property.
(tramp-scp-direct-remote-copying): Rename connection property.

* test/lisp/net/tramp-tests.el (tramp-test29-start-file-process)
(tramp-test30-make-process, tramp-test31-interrupt-process)
(tramp--test-async-shell-command): Check process property
`remote-command'.
2022-03-29 19:36:28 +02:00
Lars Ingebrigtsen
fbf2ed9a64 ipv6 addresses aren't suspicious
* lisp/international/textsec.el (textsec--ipvx-address-p): New
function.
(textsec-domain-suspicious-p): Use it to say that ipv6 addresses
aren't suspicious (bug#54624).
2022-03-29 17:12:01 +02:00
Jim Porter
283c419f9a Don't use 'eshell-convert' when all we want is a number
* lisp/eshell/em-hist.el (eshell/history): Use 'string-to-number'
instead of 'eshell-convert'.

* lisp/eshell/em-basic.el (eshell/umask): Simplify implementation and
be more careful about parsing numeric umasks to set.
2022-03-29 16:50:48 +02:00
Jim Porter
705de33072 Add tests for Eshell's umask command
'em-basic-test/umask-set' fails when passing an actual number to the
command, but this is fixed in the subsequent commit.

test/lisp/eshell/em-basic-tests.el: New file.
2022-03-29 16:50:45 +02:00
Thomas Fitzsimmons
271c03d89f Fix eww bookmark writing
* lisp/net/eww.el (eww-write-bookmarks): Ensure that the complete
bookmarks are written (bug#54612).
2022-03-29 14:35:31 +02:00
Po Lu
0e662f33e1 Rewrite desktop workarea computation to avoid too many calls to XSync
* src/xfns.c (x_get_net_workarea): Rewrite using XCB without
using long_offset and long_length, since the data transfer is
usually negligible compared to the roundtrip delay.
2022-03-29 18:33:00 +08:00
Mattias Engdegård
9aecc241e6 Fix typo in ERC DCC code in verbose mode
* lisp/erc/erc-dcc.el (erc-dcc-send-block): Typo causing incorrect
message when `erc-dcc-verbose` is set.
2022-03-29 11:17:08 +02:00
Stefan Monnier
2b5ea36ce9 * lisp/emacs-lisp/oclosure.el (oclosure--define): Autoload 2022-03-29 03:23:38 -04:00
Po Lu
080d29d52e Specially decode more selection types on Haiku
* src/haiku_select.cc (be_get_point_data, be_add_point_data):
New functions.
* src/haikuselect.c (haiku_message_to_lisp, lisp_to_type_code)
(haiku_lisp_to_message): Accept new types `size_t', `ssize_t'
and `point'.
(Fhaiku_drag_message): Update doc string.
(syms_of_haikuselect): New defsyms.
* src/haikuselect.h: Update prototypes.
2022-03-29 06:35:09 +00:00
Po Lu
55932a65ed Temporarily fix the oclosure bootstrap
* lisp/emacs-lisp/oclosure.el (oclosure-define): Load oclosure
from source if `oclosure--define' is not defined during byte
compilation.
2022-03-29 13:58:40 +08:00
Po Lu
d96db7b2e8 Don't loop through useless region when searching for DND toplevel
* src/xterm.c (x_dnd_compute_toplevels): Optimize for the
bounding rect being the window dimensions.
2022-03-29 09:08:22 +08:00
Juri Linkov
935cc42795 Add search function to search within filenames in Dired and WDired (bug#14013)
* lisp/dired-aux.el (dired-isearch-filenames-mode): Use
dired-isearch-search-filenames on isearch-search-fun-function
instead of dired-isearch-filter-filenames on isearch-filter-predicate.
(dired-isearch-filter-filenames): Remove function.
(dired-isearch-search-filenames): Add function.

* lisp/isearch.el (isearch-message-prefix): Add isearch-search-fun-function
to the list of supported advice-functions along with isearch-filter-predicate.

* lisp/replace.el (replace-search): Add comment.

* lisp/wdired.el (wdired-search-replace-filenames): New defcustom.
(wdired-isearch-filter-read-only): Remove function.
(wdired-change-to-wdired-mode, wdired-change-to-dired-mode):
Add and remove dired-isearch-search-filenames on isearch-search-fun-function
instead of wdired-isearch-filter-read-only on isearch-filter-predicate.
Also set/unset replace-search-function and replace-re-search-function.
Remove and restore isearch-mode-hook with dired-isearch-filenames-setup.
The problem is that dired-isearch-filenames-setup adds
dired-isearch-filenames-end to isearch-mode-end-hook that removes
dired-isearch-search-filenames added to isearch-search-fun-function
in wdired-change-to-wdired-mode.  Then replace-highlight can't use
dired-isearch-search-filenames.
2022-03-28 21:00:32 +03:00
Stefan Monnier
52d5771e0a Add OClosures, a cross between functions and structs
We here just add the new type.  It is not fully self-contained.
It requires cooperation from `cconv.el` on the one hand, and it
hijacks the docstring info to hold the type of OClosure objects.
This does imply that OClosures can't have docstrings, tho this
limitation will be lifted in subsequent patches.

* lisp/emacs-lisp/oclosure.el: New file.
* test/lisp/emacs-lisp/oclosure-tests.el: New file.
* doc/lispref/functions.texi (OClosures): New section.

* src/eval.c (Ffunction): Accept symbols instead of strings for docstrings.
* src/doc.c (store_function_docstring): Avoid overwriting an OClosure type.
* lisp/emacs-lisp/cconv.el (cconv--convert-function): Tweak ordering of
captured variables.
(cconv-convert): Add case for `oclosure--fix-type`.
2022-03-28 10:53:14 -04:00
Po Lu
3f19a23c1f Fix doc of gui-get-selection' as to what is really valid as data'
* doc/lispref/frames.texi (Window System Selections):
* lisp/select.el (gui-set-selection): Don't say `data' can be a
cons or list of two integers, since that's not supported.
2022-03-28 20:35:16 +08:00
Po Lu
fbbb9148cc Minor fixes to Haiku selection support
* lisp/term/haiku-win.el (haiku-selection-bounds): New function.
(haiku-dnd-convert-string, haiku-select-encode-xstring)
(haiku-select-encode-utf-8-string): Handle position pairs
correctly.
(gui-backend-set-selection): Adjust for new airity.
* src/haikuselect.c (Fhaiku_selection_put): Fix arity.
2022-03-28 12:28:53 +00:00
Po Lu
dc0ee78d93 Improve portability of XCB configure checks
* configure.ac: Look for xcb_aux_sync in -lxcb-aux if it's not
in -lxcb-util.
2022-03-28 18:41:56 +08:00
Michael Albinus
a5841b196f Do not register Tramp file name handlers twice
* lisp/net/tramp.el (tramp-register-autoload-file-name-handlers):
* lisp/net/tramp-archive.el (tramp-register-archive-file-name-handler):
Check, whether the real file name handler is already registered.
2022-03-28 12:02:23 +02:00
Po Lu
0e7314f6f1 Avoid extra sync when fetching DND proxy window
* src/xterm.c (x_dnd_get_proxy_proto): New function.
(x_dnd_get_target_window): Use it on XCB to determine window
proxy and proto for toplevel window.
2022-03-28 13:52:17 +08:00
Po Lu
f5adb2584a Clean up some uses of XInternAtom
* src/xfns.c (x_set_undecorated, x_set_no_focus_on_map, x_window)
(set_machine_and_pid_properties): Move calls to XInternAtom for
static string to use previously interned atoms.
(Fx_change_window_property): Use XCB if available to avoid extra
call to XSync.
* src/xterm.c (x_term_init):
* src/xterm.h (struct x_display_info): New atoms _MOTIF_WM_HINTS
and _NET_WM_PID.
2022-03-28 08:59:50 +08:00
Po Lu
45a1bb0efb ; * src/xterm.c (x_dnd_compute_toplevels): Use right enum on XCB. 2022-03-28 08:39:37 +08:00
Po Lu
be21c95842 Store latin-1 content into the Haiku clipboard as well
* lisp/term/haiku-win.el (haiku-normal-selection-encoders): New
variable.
(haiku-select-encode-utf-8-string, haiku-select-encode-xstring):
New functions.
(gui-backend-set-selection): Use new selection encoder functions
instead of hard-coding UTF-8.
(haiku-dnd-handle-drag-n-drop-event): Rename to
`haiku-drag-and-drop'.

* src/haiku_select.cc (be_lock_clipboard_message): Accept new
argument `clear'.
(be_unlock_clipboard): Accept new argument `discard'.

* src/haikuselect.c (Fhaiku_selection_data): Change calls to
`be_lock_clipboard_message' and `be_unlock_clipboard'.
(haiku_unwind_clipboard_lock): New function.
(Fhaiku_selection_put): Accept new meaning of `name' which means
to set the selection message.

* src/haikuselect.h: Update prototypes.
2022-03-27 13:36:45 +00:00
Po Lu
46863b7dfa Clean up PGTK cursor blanking code
* src/pgtkterm.c (XTframe_rehighlight): Rename to
`pgtk_frame_rehighlight_hook'.  All callers changed.
(x_toggle_visible_pointer): Rename to
`pgtk_toggle_visible_pointer'.  All callers changed.
(x_setup_pointer_blanking, XTtoggle_invisible_pointer): Delete
functions.
(pgtk_create_terminal): Use new names for various hooks.
(pgtk_term_init): Set up blank cursor directly.

* src/pgtkterm.h (struct pgtk_display_info): Remove
`toggle_visible_pointer'.
2022-03-27 19:53:49 +08:00
Po Lu
9f43549cdf Don't wait for XdndFinished messages if the target did not send status
* src/xterm.c (x_dnd_send_leave): Return if we should wait for a
XdndFinished message.
(handle_one_xevent): Use that value for
`x_dnd_waiting_for_finish'.
2022-03-27 15:53:56 +08:00
Augusto Stoffel
d361144f61 Always run 'isearch-lazy-count-update-hook' with point at match
* lisp/isearch.el (isearch-lazy-highlight-buffer-update):  Run
'isearch-lazy-count-update-hook' outside of save-excursion, so point
is at the current match.
2022-03-27 10:48:07 +03:00