1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-04-27 16:51:06 -07:00
Commit graph

155367 commits

Author SHA1 Message Date
Robert Pluim
0e9420bc8f Reject invalid time-string in appt-add immediately
* lisp/calendar/appt.el (appt-add): Check the provided time-string for
validity immediately after reading it rather than after reading all
the parameters.  (Bug#54210)
2022-04-05 18:11:05 +02:00
Michael Albinus
e48ac2e204 Handle remote system processes
* doc/lispref/files.texi (Magic File Names):
Add list-system-processes and process-attributes.

* doc/lispref/processes.texi (System Processes): Document changes
in list-system-processes and process-attributes.

* doc/misc/tramp.texi (Customizing Completion): Use @ftable.
(Remote processes): Document changes in list-system-processes and
process-attributes.

* etc/NEWS: Document changes in proced, list-system-processes and
process-attributes.

* lisp/proced.el (proced-show-remote-processes): New defcustom.
(proced-remote-directory): Remove.
(proced-filter-alist): Use it.
(proced-user-name): New defun.
(proced-available): Set it to t.
(proced-mode): Adapt docstring.
(proced): Adapt docstring.  Acknowledge prefix argument.
(proced-format): Change initialization of `standard-attributes'.
(proced-send-signal, proced-renice): Adapt docstring.  Remove
special handling of prefix argument.

* lisp/net/tramp-adb.el (tramp-adb-file-name-handler-alist):
* lisp/net/tramp-archive.el (tramp-archive-file-name-handler-alist):
* lisp/net/tramp-crypt.el (tramp-crypt-file-name-handler-alist):
* lisp/net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist):
* lisp/net/tramp-rclone.el (tramp-rclone-file-name-handler-alist):
* lisp/net/tramp-sh.el (tramp-sh-file-name-handler-alist):
* lisp/net/tramp-smb.el (tramp-smb-file-name-handler-alist):
* lisp/net/tramp-sshfs.el (tramp-sshfs-file-name-handler-alist):
* lisp/net/tramp-sudoedit.el (tramp-sudoedit-file-name-handler-alist):
Add 'list-system-processes' and `process-attributes'.

* lisp/net/tramp-integration.el (files-x): Require `files-x'.
(tramp-bsd-process-attributes-ps-args)
(tramp-bsd-process-attributes-ps-format)
(tramp-connection-local-bsd-ps-variables)
(tramp-busybox-process-attributes-ps-args)
(tramp-busybox-process-attributes-ps-format)
(tramp-connection-local-busybox-ps-variables):
* lisp/net/tramp-adb.el (tramp-adb-connection-local-default-ps-variables):
New defconsts.  Add them to connection-local variables.

* lisp/net/tramp.el (tramp-file-name-for-operation):
Add 'list-system-processes' and `process-attributes'.
(tramp-process-attributes-ps-args)
(tramp-process-attributes-ps-format): New defconsts.
(tramp-ps-time, tramp-get-process-attributes)
(tramp-handle-list-system-processes)
(tramp-handle-process-attributes): New defuns.

* src/process.c (Flist_system_processes, Fprocess_attributes):
Support remote system processes.
(Qlist_system_processes, Qprocess_attributes): Declare symbols.
2022-04-05 17:08:03 +02:00
Po Lu
7d504c9acc Mark some data during drag-and-drop
It doesn't make sense to prevent the return frame or movement
frame from being deleted, but we should at least protect them
from garbage collection.

* src/alloc.c (garbage_collect): Call mark_xterm.
* src/xterm.c (x_dnd_begin_drag_and_drop)
(x_dnd_cleanup_drag_and_drop): Clear movement and return frames
upon DND completion.
(mark_xterm): Mark those frames.
* src/xterm.h: Update prototypes.
2022-04-05 20:19:09 +08:00
Jimmy Aguilar Mena
91ca41e292 Fix some details in completions
* lisp/minibuffer.el (completion--insert-one-column) : Remove the extra
new-line at the end.
* lisp/simple.el (next-completion) : Fix behavior when
completion-wrap-movement and remove bobp and eobp. This removes the
extra tab ad the end of the list before wrapping or going to the
minibuffer and apparently also fixes bug#54374
(switch-to-completions) : Simplify condition code and remove comment not
applicable anymore.
2022-04-05 13:52:53 +02:00
Po Lu
28b9dcb002 ; * lisp/term/haiku-win.el: Fix compiler warning on X. 2022-04-05 10:33:45 +00:00
Po Lu
be89d888de Allow dropping text to the root window
* src/xterm.c (x_dnd_send_unsupported_drop): Allow dropping to
the root window.
(handle_one_xevent): Send unsupported drops to the last toplevel
instead of the target window.
2022-04-05 16:19:02 +08:00
Po Lu
7f6c925383 Add support for dragging text onto windows that don't support any DND protocol
* src/xselect.c (x_own_selection): Export function.
(x_handle_selection_request): Handle selection requests to the
pending DND time.
(x_set_pending_dnd_time): New function.

* src/xterm.c (x_dnd_send_unsupported_drop): New function.
Implement according to the suggestions in the XDND protocol
specification.
(x_dnd_get_target_window): Return the toplevel window as well.
(x_dnd_cleanup_drag_and_drop, x_dnd_begin_drag_and_drop)
(x_dnd_update_state, handle_one_xevent): Send unsupported drops
and use last seen toplevel instead of target for `return_frame'.
* src/xterm.h: Update prototypes.
2022-04-05 11:37:29 +08:00
Po Lu
c51d7c9e43 * configure.ac (HAVE_GIF): Respect --with-gif on PGTK. (bug#54633) 2022-04-05 09:07:36 +08:00
Po Lu
1e1a66831b Respect new DND options when dragging to ourselves on Haiku
* lisp/mouse.el (mouse-drag-and-drop-region): Allow dragging to
the current frame if we know `return-frame' doesn't work.
* lisp/term/haiku-win.el (haiku-dnd-drag-handler): New function.
* src/haiku_support.cc (MouseMoved): Don't send drag motion
events for the drag frame.
* src/haikuselect.c (haiku_note_drag_motion_1)
(haiku_note_drag_motion_2, haiku_note_drag_motion): New
functions.
(syms_of_haikuselect): New variable `haiku-drag-track-function'.
* src/haikuterm.c (haiku_read_socket): Note mouse motion in that
case.q
* src/haikuterm.h: Update prototypes.
2022-04-05 00:54:03 +00:00
Stefan Monnier
74100997b3 * lisp/progmodes/cc-cmds.el (indent-new-comment-line): Delete advice
This piece of advice was effective only for Emacs<20.1 and old XEmacs
(at least older than Aug 2007).
2022-04-04 15:11:46 -04:00
Stefan Monnier
1f4f6b956b OClosure: add support for slot-value
* lisp/emacs-lisp/oclosure.el (oclosure--slot-index)
(oclosure--slot-value, oclosure--set-slot-value): New functions.

* lisp/emacs-lisp/eieio-core.el (eieio-oset, eieio-oref):
Consolidate the type test.  Use `oclosure--(set-)slot-value`.
(eieio--validate-slot-value, eieio--validate-class-slot-value):
Don't presume `class` is an EIEIO class.
(eieio--class): Fix bogus `:type` info.
(eieio--object-class): Simplify.
(eieio--known-slot-name-p): New function.
(eieio-oref, eieio-oref-default, eieio-oset-default): Use it.

* test/lisp/emacs-lisp/oclosure-tests.el: Require `eieio`.
(oclosure-test): Make `name` field mutable.
(oclosure-test-slot-value): New test.
2022-04-04 15:06:47 -04:00
Eli Zaretskii
6c4a4cc94e ; * src/alloc.c (grow_mark_stack): Remove unused variable. 2022-04-04 21:09:43 +03:00
Vincent Belaïche
f4b649ad0b SES with case insensitive cell names for jumping.
* doc/misc/ses.texi (The Basics): Document that ses-jump may be
customized.
(Customizing @acronym{SES}): Document new customisations for ses-jump.

* lisp/ses.el (ses-jump-cell-name-function)
(ses-jump-prefix-function): New defcustoms.
(ses-jump-prefix): New defun.
(ses-jump): Make ses-jump use the new defcustoms.

* test/lisp/ses-tests.el (ses-jump-B2-prefix-arg)
(ses-jump-B2-lowcase, ses-jump-B2-lowcase-keys)
(ses-jump-B2-symbol, ses-jump-B2-renamed): New tests.
2022-04-04 19:42:07 +02:00
Mattias Engdegård
7a8798de95 Reduce GC mark-phase recursion by using explicit stack (bug#54698)
An explict stack of objects to be traversed for marking replaces
recursion for most common object types: conses, vectors, records, hash
tables, symbols, functions etc.  Recursion is still used for other
types but those are less common and thus not as likely to cause a
problem.

The stack grows dynamically as required which eliminates almost all C
stack overflow crashes in the GC.  There is also a nontrivial GC
performance improvement.

* src/alloc.c (GC_REMEMBER_LAST_MARKED, GC_CDR_COUNT): New.
(mark_char_table, struct mark_entry):
Remove (subsumed into process_mark_stack).
(struct mark_entry, struct mark_stack, mark_stk)
(mark_stack_empty_p, mark_stack_pop, grow_mark_stack)
(mark_stack_push_value, mark_stack_push_values)
(process_mark_stack): New.
(mark_object, mark_objects):
Just push the object(s) and let process_mark_stack do the work.
2022-04-04 19:15:42 +02:00
Jürgen Hötzel
8103b060d8 Use correct signal oldset in posix_spawn implementation
posix_spawn was restoring the wrong signal set, which still had
SIGCHLD and SIGINT masked, causing problems with child processes that
spawned child processes.  (Bug#54667)

See the thread ending at
https://lists.gnu.org/archive/html/emacs-devel/2022-03/msg00067.html
for more details.

* src/callproc.c (emacs_spawn): Pass oldset parameter.
(emacs_posix_spawn_init_attributes): Use correct oldset.
(emacs_posix_spawn_init): Remove intermediate function.
2022-04-04 16:08:14 +02:00
Stefan Monnier
e7cd4bae44 test/lisp/edmacro-tests.el: Adjust to recent changes 2022-04-04 09:55:03 -04:00
Stefan Monnier
877893303b edmacro.el: Silence warnings due to kmacro changes
* lisp/edmacro.el (edit-kbd-macro): Use `kmacro-p` and kmacro accessors.
(edmacro-finish-edit): Use `kmacro-p` and the new `kmacro` constructor.
2022-04-04 09:13:10 -04:00
Po Lu
84cf3be6f7 Handle mouse movement correctly during DND from one of our own frames
* lisp/dnd.el (dnd-handle-movement): Select the window specified
in posn.
* lisp/term/x-win.el (x-dnd-movement): New function.
(x-dnd-movement-function): Set it as the default.
* src/frame.c (delete_frame): Prevent deleting the drop source
frame.
* src/xterm.c (x_dnd_send_position): Set new mouse movement
flags if the target window is one of our own frames.
(x_dnd_begin_drag_and_drop): Call DND movement function whenever
appropriate.
(x_free_frame_resources): Remove useless code.
(syms_of_xterm): New defvar `x-dnd-movement-function'.
* src/xterm.h: Update prototypes.
2022-04-04 20:32:46 +08:00
Po Lu
3d2531c12c Fix generation of extra DND events while dragging on Haiku
* src/haiku_support.cc (be_drag_message): Set new DND flag.
(be_drag_and_drop_in_progress): New function.
* src/haiku_support.h: Update prototypes.
* src/haikuterm.c (haiku_read_socket): Don't store DND motion
events if DND is in progress.
2022-04-04 11:37:12 +00:00
Po Lu
728a1c2fe0 * src/xterm.c: Explain meaning of drag-and-drop state variables. 2022-04-04 19:10:30 +08:00
Lars Ingebrigtsen
773d4104a5 Further fixes for cl--generic-describe and (function ...)
* lisp/emacs-lisp/cl-generic.el (cl--generic-describe): Fix the #'
problem for defmethods, too (bug#54628).
2022-04-04 12:48:47 +02:00
Mattias Engdegård
f365607bc0 Inline call0..8
Inlining these trivial functions gives a healthy speed boost to many
common functions such as `sort`, `mapcar` etc.

* src/eval.c (call0, ..., call8): Move functions...
* src/lisp.h (call0, ..., call8): ...here and declare them inline.
2022-04-04 09:49:31 +02:00
Mattias Engdegård
530f163a7f Speed up comparisons between 2 fixnums
Since <, <=, > and >= have their own byte-ops, the corresponding
functions are mostly used as arguments to higher-order functions.
This optimisation is particularly beneficial for sorting, where the
comparison function is time-critical.

* src/data.c (Flss, Fgtr, Fleq, Fgeq):
* src/fileio.c (Fcar_less_than_car):
Fast path for calls with 2 fixnum arguments.
2022-04-04 09:49:31 +02:00
Mattias Engdegård
f4833c88bb Rewrite string-greaterp and string> using string-lessp
Since string-lessp has its own byte-op, using it is much faster than
calling string-greaterp even with the need to bind a temporary
variable.

* lisp/emacs-lisp/byte-opt.el (byte-optimize-string-greaterp): New.
(string-greaterp, string>): Set byte-optimizer.
2022-04-04 09:49:31 +02:00
Mattias Engdegård
16ee9fa138 Faster string-lessp for unibyte arguments
Since this function is commonly used as a sorting predicate
where it is time-critical, this is a useful optimisation.

* src/fns.c (Fstring_lessp): Add fast path for the common case
when both arguments are unibyte.
* test/src/fns-tests.el (fns-tests--string-lessp-cases)
(fns-tests-string-lessp): New test.
2022-04-04 09:49:31 +02:00
Po Lu
85fb2341f8 Respect frame extents during drag and drop
* xterm.c (struct x_client_list_window): New fields for frame
extents.
(x_dnd_compute_toplevels): Set window frame extents.
(x_dnd_get_target_window_1): Return None if the mouse is in a
frame extent.
(x_dnd_get_target_window): Likewise.
2022-04-04 13:42:36 +08:00
Po Lu
4431cf6047 Don't baselessly ignore frames after passing through the root window
* src/xterm.c (x_dnd_begin_drag_and_drop):
(handle_one_xevent): Don't rely on target not being None to set
x_dnd_return_frame to 2.
2022-04-04 13:17:18 +08:00
Po Lu
aea799838b Improve behavior of dragging text to windows on top of frames
* doc/lispref/frames.texi (Drag and Drop): Document new meaning
of `return-frame' in `x-begin-drag'.
* lisp/mouse.el (mouse-drag-and-drop-region): Use `now' when
calling `x-begin-drag'.
* src/xfns.c (Fx_begin_drag): Update doc string.
* src/xterm.c (x_dnd_begin_drag_and_drop): Accept return_frame
as a Lisp_Object and handle Qnow correctly.
(XTmouse_position): Ignore tooltip frames when processing
`drag-source'.
(syms_of_xterm): New defsym `now'.
* src/xterm.h: Update prototypes.
2022-04-04 13:10:01 +08:00
Andrew G Cohen
9ff2f0be32 Replace list and vector sorting with TIMSORT algorithm
* src/Makefile.in (base_obj): Add sort.o.
* src/deps.mk (fns.o): Add sort.c.
* src/lisp.h: Add prototypes for inorder, tim_sort.
* src/sort.c: New file providing tim_sort.
* src/fns.c:  Remove prototypes for removed routines.
(merge_vectors, sort_vector_inplace, sort_vector_copy): Remove.
(sort_list, sort_vector): Use tim_sort.
* test/src/fns-tests.el (fns-tests-sort): New sorting unit tests.
2022-04-04 07:43:11 +08:00
Mattias Engdegård
e091bee8db Add optional GC marking function to specpdl unwind_ptr record
Add a new `record_unwind_protect_ptr_mark` function for use with C data
structures that use the specpdl for clean-up but also contain possibly
unique references to Lisp objects.

* src/eval.c (record_unwind_protect_ptr_mark): New.
(record_unwind_protect_module, set_unwind_protect_ptr):
Set the mark function to NULL.
(mark_specpdl): Call the mark function if present.
* src/lisp.h (unwind_ptr): Add a mark function pointer to the
SPECPDL_UNWIND_PTR case.
2022-04-04 07:42:12 +08:00
Po Lu
9fab134ee8 * src/xterm.c (x_dnd_get_target_window): Look at root window proxies too. 2022-04-04 07:25:27 +08:00
Juri Linkov
c0cf923b0a * lisp/tab-bar.el (tab-bar-undo-close-tab): Update tab-bar-lines (bug#54684) 2022-04-03 19:51:46 +03:00
Philipp Stephani
3c6524140b ; * lisp/emacs-lisp/cl-macs.el (cl-struct-slot-value): Fix typo. 2022-04-03 17:51:04 +02:00
Po Lu
45011b77f4 Fix various bugs with mouse dragging on Haiku
* src/haikuterm.c (haiku_mouse_position): Rewrite so that
different track-mouse types can be handled more consistently.
2022-04-03 13:37:26 +00:00
Jim Porter
c12a48c335 Fix handling of '\\' inside double-quotes in Eshell
Previously, Eshell would get confused and think the following command
was unterminated due to the second double-quote looking like it was
escaped:

  echo "\\"

* lisp/eshell/esh-util.el (eshell-find-delimiter): Correct docstring
and treat '\' as an escapeable character when using backslash escapes.

* test/lisp/eshell/eshell-tests.el
(eshell-test/escape-special-quoted): Adapt test.
2022-04-03 14:16:44 +02:00
James Thomas
9f521db6fe Ensure re-encoding after change in gnus-inews-do-gcc
* lisp/gnus/gnus-msg.el (gnus-inews-do-gcc): Re-encode the message
body if it has been modified by gnus-gcc-pre-body-encode-hook
(bug#54687).
2022-04-03 14:14:24 +02:00
Lars Ingebrigtsen
5e429e21d9 Have global minor modes say so in the doc string
* lisp/emacs-lisp/easy-mmode.el (easy-mmode--arg-docstring): Allow
saying whether it's a global minor mode or not.
(easy-mmode--mode-docstring): Use it.
(define-minor-mode): Pass in the data.
2022-04-03 14:08:04 +02:00
Po Lu
1fb20a4dde Implement drag-source' values of track-mouse' on PGTK.
* src/frame.c (Fmouse_position, mouse_position)
(Fmouse_pixel_position): Fix crashes when mouse_position_hook
stores nil.

* src/pgtkterm.c (pgtk_mouse_position): Behave appropriately.
2022-04-03 19:34:06 +08:00
Po Lu
9ccaf35e0b Implement `drag-source' values of track-mouse on NS
* src/nsterm.m (ns_mouse_position): Don't return frame when
appropriate.
2022-04-03 19:20:56 +08:00
Po Lu
c3f12cd5da Implement (sort of) `drag-source' on Haiku
* src/haikuterm.c (haiku_mouse_or_wdesc_frame)
(haiku_mouse_position): Behave reasonably when track_mouse is
Qdrag_source.
2022-04-03 11:08:42 +00:00
Po Lu
28f720e7c4 Make dragging stuff to a window above a frame work
* doc/lispref/frames.texi (Mouse Tracking):
* etc/NEWS: Announce new `drag-source' value of `track-mouse'.
* lisp/mouse.el (mouse-drag-and-drop-region): Use new value of
`track-mouse' during interprogram drag and drop.

* src/keyboard.c (make_lispy_position): Handle nil values of f
correctly.
* src/xdisp.c (define_frame_cursor1): Ignore if `drag-source' as
well.
(syms_of_xdisp): New defsym `drag-source'.
* src/xterm.c (XTmouse_position): Implement `drag-source'.
(mouse_or_wdesc_frame): Likewise.
2022-04-03 18:59:12 +08:00
Po Lu
441ce4672d Don't touch WAYLAND_DISPLAY in browse-url
* lisp/net/browse-url.el (browse-url): Don't touch
WAYLAND_DISPLAY.  (bug#53969)
2022-04-03 15:23:27 +08:00
Po Lu
35928918d1 Look for DND proxies on the root window as well
* src/xterm.c (x_dnd_get_target_window): If nothing was found on
the COW, look at the root window.
2022-04-03 13:32:25 +08:00
Po Lu
f229710d41 Implement new DND features on GNUstep
* lisp/term/ns-win.el (ns-drag-n-drop): Handle special `lambda'
drag-n-drop events.
* src/nsterm.m: ([EmacsView wantsPeriodicDraggingUpdates]):
([EmacsView draggingUpdated:]): New functions.
2022-04-03 09:59:14 +08:00
Po Lu
e9d4f119da Implement new DND options on Haiku
* lisp/term/haiku-win.el (haiku-drag-and-drop): Handle special
drag and drop motion events.
* src/haiku_support.cc (MouseMoved): Set `dnd_message' flag.
* src/haiku_support.h (struct haiku_mouse_motion_event): New
member `dnd_message'.
* src/haikuterm.c (haiku_read_socket): Create special DND events
when the mouse moves with a drop message.
2022-04-03 01:26:32 +00:00
Po Lu
1694f82e5f Add user options to move point and scroll window during DND
* doc/emacs/frames.texi (Drag and Drop):
* etc/NEWS: Document new options 'dnd-scroll-margin' and
'dnd-indicate-insertion-point'.
* lisp/dnd.el (dnd-protocol-alist):
(dnd-open-remote-file-function):
(dnd-open-file-other-window): Add right group to defcustoms.
(dnd-scroll-margin, dnd-indicate-insertion-point): New user
options.
(dnd-handle-movement): New function.
* lisp/x-dnd.el (x-dnd-handle-xdnd):
(x-dnd-handle-motif): Call `dnd-handle-movement' when
appropriate.
2022-04-03 09:14:24 +08:00
Po Lu
4afd34edd3 Fix Motif drag-and-drop on servers without XI2
* src/xterm.c (handle_one_xevent): Pass right flags to the
receiver when handling drops for core button events.
2022-04-03 08:52:26 +08:00
Po Lu
6904fcb11d Fix incorrect usage of XM_DRAG_SIDE_EFFECT
* src/xterm.c (xm_send_top_level_leave_message)
(handle_one_xevent): Pass corret alt side effects and flags to
XM_DRAG_SIDE_EFFECT.
2022-04-03 08:42:52 +08:00
Basil L. Contovounesios
98775e6cf6 ; Pacify obsoletion warnings in image-tests.el. 2022-04-02 19:41:12 +03:00
Lars Ingebrigtsen
781c43de3d Fix bootstrap errors after previous easy-mmode change
* lisp/subr.el (ensure-empty-lines, string-lines): Moved from
subr-x so that they can be used in early bootstrap files.

* lisp/emacs-lisp/easy-mmode.el (easy-mmode--mode-docstring):
Don't use string-empty-p because of bootstrap issues.
2022-04-02 16:53:24 +02:00