summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* Minimise the time Vminibuffer_list is in an inconsistent state (src/minibuf.c)Alan Mackenzie2021-01-31
| | | | | | | src/minibuf.c (get_minibuffer): Move the XSETCAR which writes the new minibuffer into Vminibuffer_list to immediately after the MB's creation, so that the list is in a consistent state before calling fundamental-mode or minibuffer-inactive-mode.
* execute-kbd-macro doc string clarificationLars Ingebrigtsen2021-01-31
| | | | | * src/macros.c (Fexecute_kbd_macro): Mention that the buffer is (potentially) changed (bug#37396).
* With minibuffer-follows-selected-frame `hybrid', preserve recursive MbuffersAlan Mackenzie2021-01-30
| | | | | | | | | | | | | | ...when enable-recursive-minibuffers is non-nil, and several minibuffers are activated from different frames. Also set the major mode of a reused active minibuffer to `fundamental-mode' - up till now it's been minibuffer-inactive-mode. * src/minibuf.c (read_minibuf): with the indicated settings of variables, "stack up" all containing minibuffers on the mini-window of the current frame. Delete another, now superfluous such stacking up. (set_minibuffer_mode): New function. (get_minibuffer): Call the above new function (twice), in place of inline code, ensuring active minibuffers are never left in minibuffer-inactive-mode.
* Fix NS build broken by a recent changeEli Zaretskii2021-01-30
| | | | | * src/nsmenu.m (set_frame_menubar, Fns_reset_menu): Adapt to recent changes in set_frame_menubar. (Bug#45759)
* Remove unused argument from set_frame_menubar (Bug#45759)Stefan Kangas2021-01-30
| | | | | | * src/w32menu.c (set_frame_menubar): * src/xmenu.c (set_frame_menubar): Remove unused argument. All callers updated.
* ; * src/process.c (child_signal_read): Don't report EAGAIN as errorMattias Engdegård2021-01-29
|
* Support 'operating-system-release' on MS-WindowsEli Zaretskii2021-01-29
| | | | | | | * src/w32fns.c (w32_version_string) [WINDOWSNT]: New function. * src/w32common.h (w32_version_string) [WINDOWSNT]: Add prototype. * src/editfns.c (init_editfns) [WINDOWSNT]: Produce a non-nil string with the OS version.
* Improve doc string of 'operating-system-release'Eli Zaretskii2021-01-29
| | | | | * src/editfns.c (syms_of_editfns) <operating-system-release>: Doc fix. (Bug#39940)
* operating-system-release doc string improvementLars Ingebrigtsen2021-01-29
| | | | | * src/editfns.c (syms_of_editfns): Be more precise about what `operating-system-release' is (bug#39940).
* * src/fns.c (hash_string): Fix bug#46111Stefan Monnier2021-01-28
| | | | | Use `memcpy` instead of an unaligned memory access. On x86 at least, GCC turns this `memcpy` into a single `mov`, so it's about as fast.
* Merge from origin/emacs-27Glenn Morris2021-01-27
|\ | | | | | | | | | | 3f610177ad Avoid sending systemd shutdown notifications if non-daemon 009df5cb3c * src/cmds.c (Fforward_line): Doc fix. (Bug#46027) ee1c54ebc0 Improve documentation of sendmail.el defcustom's
| * Avoid sending systemd shutdown notifications if non-daemonEli Zaretskii2021-01-22
| | | | | | | | | | * src/emacs.c (Fkill_emacs): Send the shutdown notification only in daemon mode. (Bug#46022)
| * * src/cmds.c (Fforward_line): Doc fix. (Bug#46027)Eli Zaretskii2021-01-22
| |
| * Don't let `maybe_quit` prevent resetting `consing_until_gc` (bug#43389)Stefan Monnier2021-01-20
| | | | | | | | | | | | | | * src/alloc.c (garbage_collect): Postpone `unblock_input` a bit. * src/window.c (window_parameter): Avoid `maybe_quit`. cherry picked from commit 420661af07448857f0a17e15dc27bceeb6aff541
* | Fix display of stretches of whitespace in the display marginsEli Zaretskii2021-01-27
| | | | | | | | | | | | | | | | | | | | * src/xdisp.c (produce_stretch_glyph): Truncate the stretch glyph due to line wrap only when drawing in the text area. * src/xterm.c (x_draw_stretch_glyph_string): * src/w32term.c (w32_draw_stretch_glyph_string): Fix the adjustment of the stretch X and width so that stretch glyphs could be drawn in the left margin. Reported by Paul W. Rankin <pwr@bydasein.com>.
* | Fix typos and punctuationEli Zaretskii2021-01-26
| | | | | | | | | | | | | | * src/w32fns.c: * src/frame.h: * doc/lispref/frames.texi (Frame Layout): * etc/NEWS: Fix typos and punctuation in recent changes.
* | Fix typo in last change of FRAME_INTERNAL_BORDER_WIDTHMartin Rudalics2021-01-26
| | | | | | | | | | * src/frame.h (FRAME_INTERNAL_BORDER_WIDTH): Fix typo in last change.
* | Add distinct controls for child frames' borders (Bug#45620)Alexander Miller2021-01-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The background of the 'child-frame-border' face instead of the 'internal-border' face now controls the color of child frames' borders. The 'child-frame-border-width' frame parameter is now used for the width of child frames' borders instead of internal-border-width', though we still fall back on using the latter if the former is not set. * doc/lispref/frames.texi (Frame Layout): Mention 'child-frame-border' and 'child-frame-border-width'. (Layout Parameters): Mention 'child-frame-border-width'. * etc/NEWS: Mention new face 'child-frame-border' and frame parameter 'child-frame-border-width'. * lisp/faces.el (child-frame-border): New face. * src/dispextern.h (enum face_id): Add CHILD_FRAME_BORDER_FACE_ID. * src/frame.c (Fframe_child_frame_border_width): New function. (gui_report_frame_params): Add entry for Qchild_frame_border_width. * src/frame.h (struct frame): New slot child_frame_border_width. (FRAME_CHILD_FRAME_BORDER_WIDTH): New inlined function. * src/nsfns.m (ns_set_child_frame_border_width): New function. (Fx_create_frame): Handle Qchild_frame_border_width parameter. (ns_frame_parm_handlers): Add ns_set_child_frame_border_width. * src/nsterm.m (ns_clear_under_internal_border): Handle CHILD_FRAME_BORDER_FACE_ID. * src/w32fns.c (w32_clear_under_internal_border): Handle CHILD_FRAME_BORDER_FACE_ID. (w32_set_internal_border_width): New function. (Fx_create_frame): Handle Qchild_frame_border_width parameter. (w32_frame_parm_handlers): Add w32_set_child_frame_border_width. * src/xfaces.c (lookup_basic_face, realize_basic_faces): Handle CHILD_FRAME_BORDER_FACE_ID. * src/xfns.c (x_set_child_frame_border_width): New function. (Fx_create_frame): Handle Qchild_frame_border_width parameter. (x_frame_parm_handlers): Add x_set_child_frame_border_width. * src/xterm.c (x_clear_under_internal_border) (x_after_update_window_line): Handle CHILD_FRAME_BORDER_FACE_ID.
* | ; * src/process.c (child_signal_read): Remove FIXME comment.Eli Zaretskii2021-01-23
| |
* | Avoid a few compilation warnings in Objective-C code.Philipp Stephani2021-01-23
| | | | | | | | | | | | | | | | | | | | | | | | * src/nsfns.m (Fns_frame_restack): Remove unused variable 'flag'. * src/nsmenu.m (ns_update_menubar): Remove unused variable 'pool'. * src/nsterm.m (focus_view, hide_bell): Define conditionally. (ns_update_end): Define variable 'view' conditionally. (ns_redraw_scroll_bars): Don't define unused function. (copyRect): Don't perform arithmetic on 'void' pointers. (nswindow_orderedIndex_sort): Make static.
* | Add a FIXME comment to improve the SIGCHLD race condition handling.Philipp Stephani2021-01-23
| | | | | | | | | | * src/process.c: Add FIXME comment describing how we could avoid the self-pipe on modern Unix-like systems.
* | Mark both ends of self-pipe a nonblocking.Philipp Stephani2021-01-23
| | | | | | | | | | | | | | | | | | While no deadlocks caused by the blocking write end have been reported yet, marking both ends nonblocking is consistent and also recommended in the GNU/Linux manpage of 'select'. * src/process.c (child_signal_init): Mark write end of self-pipe as nonblocking.
* | Clean up the recently added self-pipe mechanism for WINDOWSNTEli Zaretskii2021-01-23
| | | | | | | | | | * src/process.c (child_signal_init, child_signal_read) (child_signal_notify): #ifdef away on WINDOWSNT.
* | Work around __has_attribute bug in clang 3.4Paul Eggert2021-01-22
| | | | | | | | | | | | * src/conf_post.h (HAS_ATTRIBUTE): * src/emacs-module.h.in (EMACS_ATTRIBUTE_NONNULL): Port to clang 3.4 and earlier.
* | Fix last change for DOS_NT systemsEli Zaretskii2021-01-22
| | | | | | | | | | | | * src/term.c (tty_draw_row_with_mouse_face) (tty_write_glyphs_with_face): Don't define on MSDOS and WINDOWSNT, as those have their own implementations of that.
* | Enable TTY mouse-face support when built without GPM supportJoão Távora2021-01-22
| | | | | | | | | | | | | | * src/term.c (tty_write_glyphs_with_face): Move definition out of ifdef block. * src/xdisp.c (draw_row_with_mouse_face): Now called unconditionally on all platforms.
* | Don't let `maybe_quit` prevent resetting `consing_until_gc` (bug#43389)Stefan Monnier2021-01-20
| | | | | | | | | | * src/alloc.c (garbage_collect): Postpone `unblock_input` a bit. * src/window.c (window_parameter): Avoid `maybe_quit`.
* | Make child signal read pipe non-blocking.Philipp Stephani2021-01-19
| | | | | | | | | | | | | | | | | | Otherwise Emacs might hang when trying to read the pipe twice in a row. This is consistent with the other file descriptors we pass to 'pselect'. * src/process.c (child_signal_init): Make read end of pipe non-blocking.
* | Avoid macOS NSFilenamesPboardType warning (bug#33035)Mattias Engdegård2021-01-18
| | | | | | | | | | | | | | | | | | | | * src/nsterm.h (NS_USE_NSPasteboardTypeFileURL): New #define. * src/nsterm.m (ns_term_init): ([EmacsView performDragOperation:]): * src/nsselect.m (ns_string_to_symbol): (nxatoms_of_nsselect): NSFilenamesPboardType was deprecated in macOS 10.14; use NSPasteboardTypeFileURL instead when available.
* | Ensure that sentinels are called during 'accept-process-output'.Philipp Stephani2021-01-17
| | | | | | | | | | | | | | | | | | | | | | | | When we're trying to notify a process about a status change, we need to ignore the SIGCHLD pipe temporarily, otherwise the code would likely not run into the timeout case that's necessary for a status change to happen. * src/process.c (wait_reading_process_output): Ignore the SIGCHLD pipe when notifying a process about a status change. * test/src/process-tests.el (process-tests/sentinel-called) (process-tests/sentinel-with-multiple-processes): New unit tests.
* | Don't crash if no asynchronous process has been created yet.Philipp Stephani2021-01-16
| | | | | | | | | | * src/process.c (wait_reading_process_output): Allow child_signal_read_fd < 0.
* | Fix deadlock when receiving SIGCHLD during 'pselect'.Philipp Stephani2021-01-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we receive and handle a SIGCHLD signal for a process while waiting for that process, 'pselect' might never return. Instead, we have to explicitly 'pselect' that the process status has changed. We do this by writing to a pipe in the SIGCHLD handler and having 'wait_reading_process_output' select on it. * src/process.c (child_signal_init): New helper function to create a pipe for SIGCHLD notifications. (child_signal_read, child_signal_notify): New helper functions to read from/write to the child signal pipe. (create_process): Initialize the child signal pipe on first use. (handle_child_signal): Notify waiters that a process status has changed. (wait_reading_process_output): Make sure that we also catch SIGCHLD/process status changes. * test/src/process-tests.el (process-tests/fd-setsize-no-crash/make-process): Remove workaround, which is no longer needed.
* | Fix last changeEli Zaretskii2021-01-16
| | | | | | | | | | | | * src/frame.c (Fset_mouse_position, Fset_mouse_pixel_position): Don't compile the FRAME_MSDOS_P case on platforms other than MSDOS, as that will never happen there.
* | Make mouse-related calls be more consistent on all frame typesJared Finder2021-01-16
| | | | | | | | | | | | | | | | | | | | | | | | * src/frame.c (Fset_mouse_position, Fset_mouse_pixel_position): Call Fselect_frame and appropriate mouse_moveto function on all non-GUI frame types, independent of #ifdef's. * src/term.c (init_tty): Initialize mouse_face_window for all non-GUI frame types. (term_mouse_moveto) [HAVE_GPM]: Make available even if HAVE_WINDOW_SYSTEM is defined. * src/xdisp.c (try_window_id): Call gui_clear_window_mouse_face in all cases.
* | * src/dispnew.c (sit_for): Return nil when interrupted by process outputStefan Monnier2021-01-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before adbb4eacc2a984c0fc0b65ec761368fd9067d6c5, `read_and_dispose_of_process_output` called `record_asynch_buffer_change` which added "artificial" input events (in the form of BUFFER_SWITCH_EVENTs), causing sit_for to return Qnil when interrupted by process output. Without those BUFFER_SWITCH_EVENTs, sit_for now tends to return Qt when interrupted by process output making `read_char` believe that we've waited the whole timeout, As consequence incoming process output tended to cause premature auto-saving of files (sometimes right after almost every key press). This patch recovers the previous behavior, which is not ideal (incoming process output can delay auto-save indefinitely), but has been good enough for many years.
* | Fix 'window-text-pixel-size' when there are leading/trailing spacesAaron Jensen2021-01-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First, scan to find the first non-whitespace character and then backtrack to find the beginning of the line. The previous algorithm always started on the non-whitespace character during the backtrack, causing it to stop immediately and not actually find the beginning of the line. The same applies to the end of line calculation. * src/xdisp.c: (Fwindow_text_pixel_size): Fix off by one error. (Bug#45748) * test/src/xdisp-tests.el (xdisp-tests--window-text-pixel-size) (xdisp-tests--window-text-pixel-size-leading-space) (xdisp-tests--window-text-pixel-size-trailing-space): New tests.
* | Make libraries works with xterm-mouse-mode.Jared Finder2021-01-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change calls from 'read-event' to 'read-key' in libraries expecting mouse events. Do this only when 'xterm-mouse-mode' is enabled. That way those libraries read decoded mouse events instead of the underlying escape sequence. Add a parameter to 'read-key' that avoids running any of the unbound fallbacks in 'read-key-sequence' so the libraries can read mouse button-down events. For backward compatibility purposes, the above logic is contained in a new internal-only function: 'read--potential-mouse-event'. * doc/lispref/commands.texi (Reading One Event): Document new parameter to 'read-key'. Mention that non-character events on terminals need 'read-key'. * lisp/subr.el (read-key-full-map): Add new keymap used by 'read-key'. (read-key): Add new parameter 'fallbacks-disabled' to prevent running any of the unbound fallbacks normally run by 'read-key-sequence'. (read--potential-mouse-event): Add new function that calls 'read-key' or 'read-event' depending on if 'xterm-mouse-mode' is set. * lisp/foldout.el (foldout-mouse-swallow-events): * lisp/isearch.el (isearch-pre-command-hook): * lisp/mouse-drag.el (mouse-drag-throw, mouse-drag-drag): * lisp/mouse.el (mouse-drag-secondary): * lisp/ruler-mode.el (ruler-mode-mouse-grab-any-column) (ruler-mode-mouse-drag-any-column-iteration): * lisp/strokes.el (strokes-read-stroke, strokes-read-complex-stroke): * lisp/textmodes/artist.el (artist-mouse-draw-continously) (artist-mouse-draw-poly, artist-mouse-draw-2points): * lisp/vc/ediff-wind.el (ediff-get-window-by-clicking): * lisp/wid-edit.el (widget-button--check-and-call-button) (widget-button-click): Call 'read--potential-mouse-event' instead of 'read-event'. * lisp/wid-edit.el (widget-key-sequence-read-event): Call 'read-key' with 'fallbacks-disabled' set instead of 'read-event'. Unlike above changes, this is unconditionally applied so it works for function keys too. Apply 'local-function-key-map' instead of 'function-key-map' as that contains the full terminal translations. * lisp/vc/ediff.el (ediff-windows): Use 'display-mouse-p' to check if a mouse is available. * src/lread.c (Fread_event): Recommend 'read-key' in docstring for 'read-event' for non-character events.
* | Lift {global,local}-key-binding to LispStefan Kangas2021-01-13
| | | | | | | | | | | | | | | | * lisp/subr.el (local-key-binding, global-key-binding): New defuns. * src/keymap.c (Flocal_key_binding, Fglobal_key_binding): Remove DEFUNs. (syms_of_keymap): Remove defsubrs for above DEFUNs. * test/lisp/subr-tests.el (subr-test-local-key-binding) (subr-test-global-key-binding): New tests.
* | Fix 'visual-line-mode' when 'word-wrap-by-category' is in effectEli Zaretskii2021-01-13
| | | | | | | | | | | | | | * src/xdisp.c (move_it_in_display_line_to): Don't reset next_may_wrap after saving a potential wrap point. This fixes the case where several characters in a row can serve as a wrap point. (Bug#45837)
* | Add a new function 'buffer-line-statistics'Lars Ingebrigtsen2021-01-12
| | | | | | | | * src/fns.c (Fbuffer_line_statistics): New function.
* | Add a new variable `inhibit-interaction'Lars Ingebrigtsen2021-01-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/lispref/elisp.texi (Top): Add a link. * doc/lispref/errors.texi (Standard Errors): Mention the new error. * doc/lispref/minibuf.texi (Minibuffers): Add a link. (Inhibiting Interaction): New node. * src/data.c (syms_of_data): Define the `inhibited-interaction' error. * src/lisp.h: Export the barfing function. * src/lread.c (Fread_char, Fread_event, Fread_char_exclusive): Barf if inhibited. * src/minibuf.c (barf_if_interaction_inhibited): New function. (Fread_from_minibuffer, Fread_no_blanks_input): Barf if inhibited. (syms_of_minibuf): Define the `inhibit-interaction' variable.
* | Fix build breakage if Lisp_Object is not a primitive type.Philipp Stephani2021-01-10
| | | | | | | | | | * src/minibuf.c (choose_minibuf_frame): Don't compare Lisp_Objects with '!='. Use 'EQ' instead.
* | Add functions to open a file without quitting.Philipp Stephani2021-01-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In some situations, e.g. when the Lisp machinery isn't available, we can't quit. Don't check the quit flags in such situations, in case they contain garbage. * src/sysdep.c (emacs_open_noquit, emacs_openat_noquit): New variants of 'emacs_open' and 'emacs_openat' that don't check the quit flags. * src/emacs.c (main, Fdaemon_initialized): * src/pdumper.c (pdumper_load): * src/w32term.c (w32_initialize): * src/buffer.c (mmap_init): * src/callproc.c (emacs_spawn): Use them where we can't quit.
* | Fix incompleteness in the implementation of minibuffer-follows-selected-frameAlan Mackenzie2021-01-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In particular, add a new value to the variable, and fix several bugs apparent with the implementation up till now. * doc/emacs/mini.texi (Basic Minibuffer): Add a description of the new non-nil, non-t value of minibuffer-follows-selected-frame. * doc/emacs/trouble.texi (Quitting): Add a description of how C-g handles recursive minibuffers when typed in one which isn't the most nested. * doc/lispref/minibuf.texi (Intro to Minibuffers): Add an @dfn for "active minibuffer". (Minibuffer Commands): Document that exit-minibuffer throws an error when not invoked from the innermost Minibuffer. (Recursive Mini): Amend the description of the visibility of outer level minibuffers. (Minibuffer Misc): In the description of the minibuffer hooks, replace "the minibuffer" with "a minibuffer". * etc/NEWS (Entry announcing minibuffer-follows-selected-frame): Add a description of the new non-nil, non-t value. * lisp/cus-start.el (top level): make the customize entry for minibuffer-follows-selected-frame a choice between three entries. * lisp/minibuffer.el (exit-minibuffer): throw an error when we're not in the most nested minibuffer. (top level): Bind C-g to abort-minibuffers in minibuffer-local-map. * lisp/window.el (window-deletable-p): return the symbol `frame' when (amongst other things) minibuffer-follows-selected-frame is t. * src/eval.c (internal_catch): Add a mechanism to (throw 'exit t) repeatedly when the throw currently being processed doesn't terminate the current minibuffer. * src/lisp.h (this_minibuffer_depth): New extern declaration (minibuf_level): extern declaration moved here from window.h. * src/minibuf.c (minibuffer_follows_frame, minibuf_stays_put) (minibuf_moves_frame_when_opened): New and amended functions to query the value of minibuffer-follows-selected-frame. (choose_minibuf_frame): check (minibuf > 1) in place of (minibufer > 0) at a particular place. At another place, check that an alleged frame is so and is live. Before selecting a non-miniwindow on a different frame, ensure it really is a different frame. (move_minibuffer_onto_frame): Stack up all recursive minibuffers on the target frame. Check the minibuf_window isn't in the old frame before setting that frame's miniwindow to an inactive minibuffer. (Finnermost_minibuffer_p, Fabort_minibuffers): New primitives. (this_minibuffer_depth): New function. (read_minibuf): Record the calling frame in a variable, and switch back to it after the recursive edit has terminated normally, using select-frame-set-input-focus. Stack up all the recursive minibuffers on the miniwindow where a new minibuffer is being opened. After the recursive edit, switch the selected window away from the expired minibuffer's window. (nth_minibuffer): New function. (minibuffer-follows-selected-frame): Change from a DEFVAR_BOOL to a DEFVAR_LISP. * src/window.c (decode_next_window_args): Set *minibuf to w's mini-window's content when that content is a minibuffer. * src/window.h (minibuf_level) Declaration moved from here to lisp.h.
* | Add support for 'process-attributes' on OpenBSDOmar Polo2021-01-10
| | | | | | | | | | * src/sysdep.c (make_lisp_timeval): (system_process_attributes): Implement for OpenBSD (bug#45729).
* | Add support for flat buttonsPedro Andres Aranda Gutierrez2021-01-10
| | | | | | | | | | | | | | * src/xfaces.c (Finternal_set_lisp_face_attribute): (realize_gui_face): Add support for `flat-button' (bug#45735). Copyright-paperwork-exempt: yes
* | Remove a pointless check for WCOREDUMPED.Philipp Stephani2021-01-10
| | | | | | | | | | | | | | WCOREDUMPED can only be used if the process was killed. * src/process.c (status_convert): Don't check WCOREDUMPED if WIFEXITED.
* | Don't unblock SIGCHLD too early.Philipp Stephani2021-01-09
| | | | | | | | | | | | | | | | | | | | | | | | We first need to register the received process ID so that 'handle_child_signal' checks it. Otherwise we might never call 'waitpid' for these processes, risking deadlock. * src/callproc.c (call_process): * src/process.c (create_process): Don't unblock SIGCHLD before registering the process ID to wait for. * src/callproc.c (emacs_spawn): Accept a signal set from the caller.
* | Lift define-prefix-command to LispStefan Kangas2021-01-08
| | | | | | | | | | | | | | | | * lisp/subr.el (define-prefix-command): New defun. * src/keymap.c (Fdefine_prefix_command): Remove DEFUN. (syms_of_keymap): Remove defsubr for Fdefine_prefix_command. * test/lisp/subr-tests.el (subr-test-define-prefix-command): New test.
* | Remove unused DEFSYMStefan Kangas2021-01-08
| | | | | | | | | | * src/minibuf.c (syms_of_minibuf) <Qhistory_length>: Remove unused DEFSYM.