Commit graph

180294 commits

Author SHA1 Message Date
Stefan Monnier
43bcf3c43b (display-buffer-overriding-action): Try and discourage abuse
* lisp/window.el (display-buffer-overriding-action): Document
the intended use in the deluded hope to reduce the current abuse.
2025-11-27 10:20:04 -05:00
Eli Zaretskii
4b4b48d019 Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs 2025-11-27 13:43:17 +02:00
Eli Zaretskii
b6163d42d2 Improve the fix for 'd' command in 'query-replace'
* lisp/misearch.el (coding-system--for-buffer-diff): Move
definition from here...
* lisp/vc/diff.el (coding-system--for-buffer-diff): ...to here.
2025-11-27 13:42:01 +02:00
Sean Whitton
77f45c5db8 * lisp/vc/vc.el (vc--apply-to-other-working-tree): Use y-or-n-p. 2025-11-27 10:55:06 +00:00
Dmitry Gutov
702b16f999 Fix project-prompt-project-name with (choose a dir)
* lisp/progmodes/project.el (project-prompt-project-name):
Use correct equality check (bug#79894).
2025-11-27 12:27:22 +02:00
Neal Sidhwaney
26bd33c853 Add test cases for 'dolist'
This patch adds tests for the following scenarios:
 - Every element is handled (basic functionality)
 - Result specified in SPEC is returned
 - Bindings named "tail" are not shadowed by 'dolist'
* test/lisp/subr-tests.el (subr-tests--dolist--every-element-is-handled)
(subr-tests--dolist--returns-spec-result)
(subr-tests--dolist--does-not-shadow-tail-binding): New tests.
(Bug#79778)
2025-11-27 11:02:10 +02:00
Paul Eggert
1ddc28997b Work around a bug in GCC 14 i386 C23 alignas
Problem reported by Helmut Eller (bug#79886).
* src/lisp.h (USE_LSB_TAG): Adjust to alignas changes.
(alignas): For GCC and Clang, prefer __attribute__ ((__aligned__ (A)))
to alignas (A) even if the compiler claims to support the latter.
This works around a bug in GCC 14 i386 C23 alignas.
No need to worry about whether __alignas_is_defined is defined.
2025-11-27 00:40:26 -08:00
Pranshu Sharma
18a346da6a Add new commands 'merge-frames' and 'split-frame'
* lisp/window-x.el (merge-frames, split-frame): New commands.
* etc/NEWS: Announce new commands 'merge-frame' and
'split-frame'.
2025-11-27 09:34:14 +01:00
Eli Zaretskii
5822759d47 Remove all traces of MSVC support from MS-Windows code
We dropped support for MSVC long ago, and nowadays only support
MinGW for the MS-Windows builds of Emacs.
* src/w32term.h:
* src/w32fns.c:
* src/w32.c:
* nt/inc/sys/socket.h:
* nt/inc/stdalign.h:
* nt/inc/ms-w32.h: Remove MSVC-specific code and preprocessor
conditions.
* nt/inc/ms-w32.h: Don't redirect Posix functions to MS _FOO
equivalents, as MinGW headers do that nowadays better, not
necessarily via functions, and do not disable that when __STDC__
is defined.
2025-11-27 09:07:04 +02:00
Philip Kaludercic
d74bcd7b2c
; Fix order in which 'package-dir-info' searches files
See https://mail.gnu.org/archive/html/emacs-devel/2025-11/msg00977.html.

* lisp/emacs-lisp/package.el (package-dir-info): Sort files by
length instead of by the default order.  This aligns the
intention, the implementation and the preceding comment.
2025-11-26 19:32:51 +01:00
Stefan Monnier
e10c4982dc Fix completion error in C-x RET f ut-8-d TAB
The core of the problem is that `completion-pcm--prepare-delim-re`
is designed to match a "delimiter" in the pattern but was misused
to match a sequence of delimiter chars in the completions.

* lisp/minibuffer.el (completion-pcm--delim-re): Rename from
`completion-pcm--prepare-delim-re` and change its calling convention.
(completion-pcm--segments->regex): Use it.
(completion-pcm-word-delimiters): Adjust accordingly.

* test/lisp/minibuffer-tests.el (completion-pcm--test-zerowidth-delim):
New test.
2025-11-26 09:53:19 -05:00
Paul Eggert
4e7e340ee5 Port to glibc 2.43+ with GCC 15+
Port to planned glibc 2.43 (scheduled for February 2026),
which will support qualifier-generic standard functions; see:
https://sourceware.org/git/?p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690
For example, strchr (P, C) will return pointer to const if P is
pointer to const.  The idea is to catch dumb programming errors when a
program mistakenly uses strchr to convert a pointer to const
to an unrestricted pointer.  This feature is required by C23,
and will be enabled by default in GCC 15.
* src/callint.c (Fcall_interactively):
Respect constness of pointer when calling memchr.
* src/gtkutil.c (xg_get_font):
2nd arg is char *, not const char *.
* src/xfaces.c (parse_float_color_comp): Return bool, not double.
New arg DST.  All callers changed.  This makes it easier for
callers to use char const *.
(parse_color_spec): Respect constness of pointer when calling strchr.
2025-11-25 23:08:33 -08:00
Paul Eggert
8cdc8a51ef Update from Gnulib by running admin/merge-gnulib 2025-11-25 23:08:33 -08:00
Aaron Jensen
16a7051888 Fix indentation of keyword argument arrays/hashes in ruby-mode
* lisp/progmodes/ruby-mode.el (ruby-smie-rules): Check for ':' and
'=>' as previous tokens, and handle symbols ending with ':' to
properly indent keyword argument arrays and hashes when
ruby-bracketed-args-indent is nil.

* lisp/progmodes/ruby-ts-mode.el (ruby-ts--parent-call-or-bol):
Handle arrays/hashes that are children of 'pair' nodes (keyword
arguments) to ensure consistent indentation.

* test/lisp/progmodes/ruby-mode-resources/ruby-bracketed-args-indent.rb:
Add test cases for keyword argument arrays and hashes with both
symbol-colon and hash-rocket syntax.

When ruby-bracketed-args-indent is nil, arrays and hashes used as
keyword argument values now indent by ruby-indent-level from the
line start, matching the documented behavior and fixing inconsistent
indentation (bug#74517).

(https://lists.gnu.org/archive/html/emacs-devel/2025-11/msg00939.html)
2025-11-26 01:31:12 +02:00
Stephen Gildea
36f1fde9b9 * test/lisp/time-stamp-tests.el: More tests of word conversions. 2025-11-25 14:15:59 -08:00
Sean Whitton
47aec3cbc9 Make it easier to enable Abbrev mode by default
* lisp/cus-start.el: Make 'abbrev-mode' customizable.
* doc/emacs/abbrevs.texi (Abbrev Concepts):
* etc/NEWS:
* src/buffer.c (syms_of_buffer): <abbrev-mode>: Document
enabling Abbrev mode by default in all buffers by customizing
'abbrev-mode' to a non-nil value.
2025-11-25 22:08:19 +00:00
Sean Whitton
158bf5da77 Refine VC-Dir mass mark changes
* lisp/vc/vc-dir.el (vc-dir-mark-file): Prompt before unmarking
all subitems.  Use y-or-n-p and user-error instead of
yes-or-no-p and error.
(vc-dir-unmark-file): Use y-or-n-p instead of yes-or-no-p.
(vc-dir-allow-mass-mark-changes): Update docs.
2025-11-25 21:37:27 +00:00
Sean Whitton
304d4435b1 Make diff-revert-and-kill-hunk consider an active region
* lisp/vc/diff-mode.el (diff-revert-and-kill-hunk): When the
region is active, operate on all hunks it overlaps.
* doc/emacs/files.texi (Diff Mode):
* etc/NEWS: Document the change.
2025-11-25 21:07:04 +00:00
Sean Whitton
f5953186ef ; * lisp/emacs-lisp/pcase.el (pcase-setq): Fix parameter names. 2025-11-25 21:05:50 +00:00
Sean Whitton
39e9f96ba0 ; * lisp/emacs-lisp/cond-star.el: Tidy up dummy macro definitions. 2025-11-25 20:30:21 +00:00
Sean Whitton
449e15de5b ; * lisp/vc/diff-mode.el (diff-goto-source): Revise docstring again. 2025-11-25 15:53:15 +00:00
Sean Whitton
59e8b7267f Make diff-apply-hunk consider an active region
* lisp/vc/diff-mode.el (diff-apply-buffer): New 'no-save'
meaning for fourth optional argument.  Reserve other non-nil
values for this argument.  Use ngettext for one message.
(diff-apply-hunk): If the region is active, apply all hunks that
the region overlaps, like diff-apply-buffer.
* doc/emacs/files.texi (Diff Mode):
* etc/NEWS: Document the change to diff-apply-hunk.
2025-11-25 14:53:19 +00:00
Sean Whitton
1844ce4a0f * lisp/emacs-lisp/cond-star.el (pcase*): New dummy definition. 2025-11-25 14:22:58 +00:00
Sean Whitton
3f6c7d1bfb ; diff-mode-el: Improve docstrings re diff-jump-to-old-file. 2025-11-25 14:06:29 +00:00
Alan Mackenzie
9b505dd8d4 CC Mode: update Version: header. Add a comment about it
* lisp/progmodes/cc-defs.el (c-version): Add a comment
encouraging maintainers to keep cc-mode.el's Version: header
the same.

* lisp/progmodes/cc-mode.el (top level): Update the Version:
  header to 5.35.2.
2025-11-25 12:00:55 +00:00
Michael Albinus
6d600f492a Add etc/NEWS style rules
* CONTRIBUTE (Documenting your changes):
Refer to admin/notes/documentation.

* admin/notes/documentation: Add etc/NEWS style rules.  (Bug#79851)
2025-11-25 09:33:17 +01:00
Po Lu
0d1bb23d8c Fix mouse dragging on touch screens
* lisp/mouse.el (mouse-position-for-drag-line): New function;
return position of active touch screen tool if a sequence is
being translated into mouse movement events, and the last mouse
position otherwise.
(mouse-drag-line): Invoke `mouse-position-for-drag-line' rather
than reading the mouse position manually.

* lisp/touch-screen.el (touch-screen-current-tool): New 10th
field holding the frame-relative last attested position of this
tool.
(touch-screen-relative-xy): Clarify doc string.
(touch-screen-handle-point-update): Update the said field with
POSN's position relative to its frame.
(touch-screen-handle-touch): Initialize the 10th field of new
tool lists with such a position.
(touch-screen-last-drag-position): New function.
2025-11-25 10:48:56 +08:00
Philip Kaludercic
c767928997
Only search for package descriptors in package root
See the following thread for a background on this change:
https://mail.gnu.org/archive/html/emacs-devel/2025-08/msg00332.html.
This change reverts b81f937e.

* lisp/emacs-lisp/package.el (package-dir-info): Do not
recursively try to find all Lisp files that might have package
metadata.  (Bug#79742)
2025-11-24 20:53:22 +01:00
Philip Kaludercic
c3604c3224
; Fix issue when installing packages from Dired
* lisp/emacs-lisp/package.el (package-dir-info, package-unpack):
Force Dired to return list of packages explicitly marked for
installation.  Without the optional argument, Dired will return
the file under the current point if no files are selected.
2025-11-24 20:53:22 +01:00
Philip Kaludercic
4ea81f359c
Replace underscores in bind-and* with fresh symbols
* lisp/emacs-lisp/cond-star.el (cond*-convert-condition): Bind
unused values to fresh symbols, to avoid the compiler warning
that a symbol starting with an underscore is accessed later on.
This mirrors the behaviour of `if-let*' and family.
2025-11-24 20:53:22 +01:00
Juri Linkov
33d813c63b Fix query-replace-regexp for using '^' with calculated replacement '\,'
* lisp/replace.el (replace--push-stack): Add new args
'next-replacement' and 'match-again' and push them to the stack.
(perform-replace): Restore the previous already calculated values
of 'next-replacement' and 'match-again' from the stack for the
'backup' ('^') key (bug#79811).

* test/lisp/replace-tests.el (query-replace-tests): Add tests.
2025-11-24 20:14:15 +02:00
Stefan Monnier
b852555401 Don't apply EditorConfig files to themselves
* lisp/international/mule.el (auto-coding-alist): Add entry for
`.editorconfig` files.
2025-11-24 11:42:27 -05:00
Sean Whitton
4cc42911ed Persist Log View mode marks across buffer revert
* lisp/vc/log-view.el (vc-exec-after): Autoload.
(log-view--restore-marks): New function.
(log-view-mode): Add it to revert-buffer-restore-functions.
2025-11-24 16:04:42 +00:00
Stefan Monnier
e233513d28 editorconfig-core-handle.el: Fix silent misparse
See https://github.com/editorconfig/editorconfig-emacs/issues/380

* lisp/editorconfig-core-handle.el (editorconfig-core-handle--parse-file):
Fix regexp to not inadvertently match LF.  Remove an O(N²) complexity.
Use `line-number-at-pos`.

* lisp/editorconfig.el (editorconfig--get-coding-system): Don't let
errors propagate.
2025-11-24 10:26:21 -05:00
Sean Whitton
188ad4f909 ; * src/keyboard.c (read_key_sequence): Style tweaks. 2025-11-24 10:57:54 +00:00
Stephen Gildea
1f2a161f93 ; * lisp/time-stamp.el: Reformat some doc strings. 2025-11-23 18:32:41 -08:00
Po Lu
860996afb0 ; * src/gtkutil.c (xg_update_dark_mode_for_all_displays): Typo. 2025-11-24 10:19:56 +08:00
Po Lu
7550791287 Support `toolkit-theme-set-functions' on Android and execute hooks safely
* java/org/gnu/emacs/EmacsNative.java (setEmacsParams): New arg
UIMODE.
(sendConfigurationChanged): New args DETAIL and UI_MODE.

* java/org/gnu/emacs/EmacsNoninteractive.java (main1): Provide
an undefined UI mode.

* java/org/gnu/emacs/EmacsService.java (EmacsService): New field
uiMode.
(onCreate): Initialize this field at start-up and provide the
same to setEmacsParams.
(onConfigurationChanged): If the UI mode has been altered,
generate a configuration changed event to match.

* src/android.c (android_ui_mode): New variable.
(setEmacsParams): New argument UI_MODE.  Initialize the same
from this variable.

* src/androidgui.h (enum android_configuration_changed): New
enum.
(struct android_configuration_changed_event): New field
`DETAIL'.  Convert fields providing specifics into a union of
display density information and a UI mode integer.

* src/androidterm.c (handle_one_android_event): Handle both
manners of configuration change events.
(android_term_init): Initialize Vtoolkit_theme from UI mode
provided at start-up.

* src/frame.c (syms_of_frame): Always define Vtoolkit_theme.
Define Qtoolkit_theme_set_functions.

* src/gtkutil.c (xg_update_dark_mode_for_all_displays):

* src/w32term.c (w32_read_socket): Generate special toolkit
theme events, rather than executing hooks directly within the
read_socket callback.

* src/keyboard.c (kbd_buffer_get_event)
<TOOLKIT_THEME_CHANGED_EVENT>: Run Qtoolkit_theme_set_functions
and set Vtoolkit_theme from event->ie.arg.

* src/termhooks.h (enum event_kind): New event
TOOLKIT_THEME_CHANGED_EVENT.
2025-11-24 10:16:49 +08:00
Stephen Gildea
435c3948a4 ; * lisp/time-stamp.el: Minor code changes
autoloads: quote function names with #'
(time-stamp-filtered-buffer-file-name): 'member' -> 'memq'
(time-stamp-conv-warn): don't call the formats "forms".
2025-11-23 18:11:18 -08:00
Sean Whitton
11b68c6223 New commands to rewind decentralized VCS branches
* lisp/vc/vc.el (vc--remove-revisions-from-end): New function.
(vc-uncommit-revisions-from-end, vc-delete-revisions-from-end):
* lisp/vc/log-view.el (log-view-uncommit-revisions-from-end)
(log-view-delete-revisions-from-end): New commands (bug#79408).
(log-view-mode-map): Bind them.
* doc/emacs/maintaining.texi (VC Change Log):
* doc/emacs/vc1-xtra.texi (VC Auto-Reverting):
* etc/NEWS: Document them.
2025-11-23 18:36:22 +00:00
Ulf Jasper
dcc909917b Add 'newsticker--treeview-handle-url' (Bug#79849)
* lisp/net/newst-treeview.el (newsticker--treeview-url-keymap)
(newsticker--treeview-handle-url): Add 'newsticker--treeview-handle-url'
to replace 'newsticker-handle-url' in newsticker-treeview (Bug#79849).
2025-11-23 13:58:43 +01:00
Eli Zaretskii
b89fec7998 ; * doc/emacs/package.texi (Package Installation): Minor clarification. 2025-11-23 10:41:12 +02:00
Eli Zaretskii
bb1f70c901 Fix 'd' command in 'query-replace' in buffers not visiting files
* lisp/vc/diff.el (diff-file-local-copy): Use proper coding-system
when writing a local copy of a non-file visiting buffer.

* lisp/misearch.el (coding-system--for-buffer-diff): New variable.
(multi-file-replace-as-diff): Bind it to 'utf-8-emacs'.
(multi-file-diff-no-select): Use proper coding-system when reading
output of Diff.  (Bug#79761)
2025-11-23 10:33:49 +02:00
Elías Gabriel Pérez
6c30c6c87d ; hideshow: Rename 'hs--discard-overlay-after-change'.
* lisp/progmodes/hideshow.el (hs--discard-overlay-after-change):
Rename function and update docstring.
(hs-make-overlay): Update.
2025-11-23 09:48:27 +02:00
Sean Whitton
cd86307f26 vc-resynch-window: Restore always using vc-revert-buffer-internal
* lisp/vc/vc-dispatcher.el (auto-revert-buffers): Delete.
(vc-resynch-window): Always call vc-revert-buffer-internal.
Calling auto-revert-buffers will not necessarily revert the
current buffer, but we want it to happen synchronously.
2025-11-22 13:50:22 +00:00
Stefan Monnier
24c09c68dd lisp/ldefs-boot.el: Update generated presumably by lisp/Makefile.in (?) 2025-11-22 08:44:40 -05:00
Sean Whitton
75c09b03ed Default split-window-preferred-direction to 'longest'
* lisp/window.el (split-window-preferred-direction): Change
default value to 'longest'.
2025-11-22 13:20:05 +00:00
Sean Whitton
54775983ac vc-git-revision-published-p: Resolve REV
* lisp/vc/vc-git.el (vc-git-revision-published-p): Resolve REV
before using it, using vc-git--rev-parse.
2025-11-22 12:46:16 +00:00
Sean Whitton
748c3b2645 New command alias vc-restore
* lisp/vc/vc.el (vc-restore): New alias.
* etc/NEWS: Announce it.
2025-11-22 12:45:55 +00:00
Stefan Monnier
46d0f1fef1 (loaddefs-generate--make-autoload): Fix bug#79852
As JD Smith <jdtsmith@gmail.com> said we had 3 paths:

1. macro has `autoload-macro expand` and is already loaded: expand
2. macro has `autoload-macro expand` but is /not/ yet loaded: shortcut
3. macro does not have `autoload-macro expand`: shortcut

and the co-existence of 1 and 2 is a problem because it means
that same macro is sometimes handled one way and sometimes
another, with different results.
Remove number 2 by removing from the shortcut all the remaining
macros that have `autoload-macro expand`.

The immediate effect is that `make autoloads` now (auto)loads three
more files:

    [...]
    loaddefs-gen: loading file frameset (for cl-defun)
    Loading frameset...
      INFO     Scraping 1547 files for loaddefs...10%
      INFO     Scraping 1547 files for loaddefs...20%
    loaddefs-gen: loading file semantic/analyze (for define-overloadable-function)
    Loading semantic/analyze...
      INFO     Scraping 1547 files for loaddefs...30%
      INFO     Scraping 1547 files for loaddefs...40%
      INFO     Scraping 1547 files for loaddefs...50%
      INFO     Scraping 1547 files for loaddefs...60%
      INFO     Scraping 1547 files for loaddefs...70%
    loaddefs-gen: loading file tramp-adb (for tramp--with-startup)
    Loading tramp-adb...
      INFO     Scraping 1547 files for loaddefs...80%
    loaddefs-gen: loading file grep (for define-compilation-mode)
    Loading grep...
    [...]

* lisp/emacs-lisp/loaddefs-gen.el (loaddefs--defining-macros):
Remove macros that are marked `autoload-macro expand`, even if they are
not predefined.
(loaddefs-generate--make-autoload): Simplify accordingly.
2025-11-22 06:56:46 -05:00