Commit graph

181555 commits

Author SHA1 Message Date
João Távora
15ce665239 Flymake: bump package version to 1.4.2
* lisp/progmodes/flymake.el (Version): Bump to 1.4.2.
2025-10-23 21:46:57 +01:00
João Távora
1e7981fd86 Eglot: don't send JSONRPC params in 'shutdown' request (bug#79653)
See also bug#66144.
Github-reference: https://github.com/joaotavora/eglot/discussions/1540

* lisp/progmodes/eglot.el (eglot-shutdown): Pass :jsonrpc-omit
(Package-Requires): Require jsonrpc 1.0.26.

* etc/EGLOT-NEWS: Announce bugfix.
2025-10-23 21:46:22 +01:00
João Távora
74618070ab Jsonrpc: support requests and notifications without params (bug#79653)
See also bug#66144.
Github-reference: https://github.com/joaotavora/eglot/discussions/1540

* lisp/jsonrpc.el (jsonrpc-async-request): Fix docstring.
(jsonrpc--async-request-1): Handle :jsonrpc-omit
(jsonrpc-notify): Handle jsonrpc-omit.
(jsonrpc-request): Tweak doc.
(Version): Bump to 1.0.26.
2025-10-23 21:44:46 +01:00
Juri Linkov
ac78b945d5 * doc/lispref/display.texi (Display Margins): Remove obsolete remark.
Text and images in the margin were made mouse-sensitive long ago.
https://lists.gnu.org/archive/html/emacs-devel/2025-10/msg00596.html
2025-10-23 19:28:14 +03:00
Mattias Engdegård
c2b23a04c2 Sink calls to byte-compile-warning-enabled-p
* lisp/emacs-lisp/bytecomp.el (byte-compile--check-arity-bytecode)
(byte-compile-warn-about-unresolved-functions, byte-compile-form)
(byte-compile-free-vars-warn):
Delay checking whether a warning is enabled until we are about to emit
such a warning, since most warnings are enabled most of the time but
finding something to warn about is rare.
2025-10-23 17:53:10 +02:00
Martin Rudalics
a78bf76fb9 Revert recent additions of 'split-frame' and 'merge-frames'
* lisp/window-x.el (merge-frames, split-frame): Remove.
* doc/lispref/windows.texi (Changing Window Layouts): Remove
sections on 'split-frame' and 'merge-frames'.
* etc/NEWS: Remove announcement of 'split-frame' and
'merge-frames'.
2025-10-23 16:38:25 +02:00
Robert Pluim
a8c4f06a8e ; * etc/NEWS: Fix typo. 2025-10-23 11:44:31 +02:00
Robert Pluim
1cbc6c2f17 ; * etc/NEWS: Grammar fix. 2025-10-23 11:40:00 +02:00
Martin Rudalics
3b8cec55c4 Document and announce 'split-frame' and 'merge-frames'
* lisp/window-x.el (merge-frames): Rewrite doc-string.  Error out
when FRAME1 and FRAME2 are not distinct frames.
(split-frame): Rewrite doc-string.  Use 'user-error' instead of
'error'.
* doc/lispref/windows.texi (Changing Window Layouts): Document
'split-frame' and 'merge-frames'.
* etc/NEWS: Announce 'split-frame' and 'merge-frames'.
2025-10-23 11:14:03 +02:00
Pranshu Sharma
db6ac3c5f4 New commands to split and merge frames
* lisp/window-x.el (merge-frames, split-frame): New commands.
2025-10-23 10:04:39 +02:00
Eli Zaretskii
8fc068a15d ; Fix a recent documentation change
* doc/lispref/customize.texi (Variable Definitions): Restore
description of 'custom-initialize-delay'.  Fix indexing.
2025-10-23 07:46:12 +03:00
Stephen Gildea
953d1db6ba time-stamp-format-* tests: reduce repetitiveness
* test/lisp/time-stamp-tests.el (time-stamp-test): New macro.
Use it to coalesce the repetitive lines of the various
time-stamp-format-* tests, reducing the line count of the
time-stamp-string formatting tests by 30%.
2025-10-22 21:18:38 -07:00
F. Jason Park
7aef4db23d ; Prefer EMACS_EMBA_CI for selecting ERC tests
* test/lisp/erc/erc-scenarios-keep-place-indicator.el
(erc-scenarios-keep-place-indicator--follow):
* test/lisp/erc/erc-stamp-tests.el (erc-echo-timestamp):
* test/lisp/erc/erc-tests.el (erc--channel-modes): Use "EMACS_EMBA_CI"
for EMBA-specific test selection instead of "CI", which is a Gitlab
"predefined" variable absent from .job-template's Docker subprocess.
2025-10-22 19:20:27 -07:00
Stefan Monnier
c2127c541e lisp/comint.el (comint--mark-yanked-as-output): Use letrec 2025-10-22 17:58:16 -04:00
Stefan Monnier
287fb2fbad (custom-initialize-after-file): New function
Some global minor modes require initialization.  Those that are preloaded
currently abuse `custom-initialize-delay` for that, but it's suboptimal
and doesn't help those that aren't preloaded.
So introduce a new function to fill that need.
While at it, make `define-globalized-minor-mode` use it
automatically when useful.

* lisp/custom.el (custom-initialize-after-file-load): New function.
* lisp/tooltip.el (tooltip-mode):
* lisp/paren.el (show-paren-mode):
* lisp/rfn-eshadow.el (file-name-shadow-mode):
* lisp/epa-hook.el (auto-encryption-mode):
* lisp/minibuffer.el (minibuffer-regexp-mode, minibuffer-nonselected-mode):
* lisp/electric.el (electric-indent-mode): Use it instead of
`custom-initialize-delay` since the value does not depend on the
runtime context.
(electric-quote-mode): Don't use `custom-initialize-delay` since
the default value is nil anyway.

* lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
Automatically add `:initialize` if needed.
* lisp/emacs-lisp/eldoc.el (global-eldoc-mode): Remove `:initialize`,
now provided automatically.

* doc/lispref/customize.texi (Variable Definitions):
* doc/lispref/modes.texi (Defining Minor Modes): Document and Suggest
`custom-initialize-after-file-load` instead of `custom-initialize-delay`.
2025-10-22 17:12:10 -04:00
Eli Zaretskii
100963b492 ; * src/frame.c (frame_get): Fix a thinko. 2025-10-22 19:03:53 +03:00
Alan Mackenzie
1a75481932 Allow renaming of frames to F<num> on text terminals
This fixes bug#79649.  Creating duplicate names F<num> is
prevented, ensuring that select-frame-by-name is still
effective on text terminals.

* src/frame.c (frame_get, frame_next_F_name): New functions.
(make_terminal_frame): Use frame_next_F_name.
(set_term_frame_name): In place of disallowing F<num>, check
that the requested F<num> doesn't already exist.

* etc/NEWS (Frames): Add an entry for this amendment.
2025-10-22 12:44:34 +00:00
Mattias Engdegård
6a3d22f3a0 ; * src/lisp.h (struct Lisp_String): mention terminating NUL 2025-10-22 09:03:38 +02:00
Elías Gabriel Pérez
ef58006fee ; * lisp/progmodes/hideshow.el: More fixes for recent changes.
(hs-discard-overlays, hs-show-block): Fix the case when
`hs-allow-nesting` is enabled (bug#79616).
2025-10-22 09:42:29 +03:00
F. Jason Park
1b5fef63b4 Release ERC 5.6.1
* lisp/erc/erc.el: Change "Version" header from 5.6.1-git to 5.6.1.  A
`customize-package-emacs-version-alist' mapping to Emacs 31.1 was
already added at some point during the course of development for this
release.  The ERCVER variable in doc/misc/erc.texi was updated when
moving to the "-git" suffixed version.
(erc-version): Change version from 5.6.1-git to 5.6.1.
2025-10-21 18:21:46 -07:00
F. Jason Park
61f4d97a0b ; Remove unwanted noise from ERC test output
Omit newlines and other stray chars, such as "^G", from log output when
running tests for ERC non-interactively.

* test/lisp/erc/erc-match-tests.el (erc-add-entry-to-list, erc-pals)
(erc-fools, erc-keywords, erc-dangerous-hosts): Make `inhibit-message'
non-nil when `noninteractive'.
* test/lisp/erc/erc-sasl-tests.el (erc-sasl--read-password--basic): Make
`inhibit-message' non-nil when `noninteractive'.
* test/lisp/erc/erc-scenarios-base-buffer-display.el
(erc-scenarios-base-buffer-display--interactive-default): Make
`inhibit-message' non-nil when `noninteractive'.
* test/lisp/erc/erc-scenarios-services-misc.el
(erc-scenarios-services-prompt): Make `inhibit-message' non-nil when
`noninteractive'.
* test/lisp/erc/erc-services-tests.el (erc-nickserv-get-password): Make
`inhibit-message' non-nil when `noninteractive'.
* test/lisp/erc/erc-stamp-tests.el (erc-timestamp-intangible--left):
Make `inhibit-message' non-nil when `noninteractive'.
* test/lisp/erc/erc-tests.el (erc-cmd-UNIGNORE, erc-hide-prompt)
(erc--check-prompt-input-for-excess-lines, erc-select-read-args, erc-tls)
(erc--interactive, erc-server-select): Make `inhibit-message' non-nil
when `noninteractive'.
(erc--modify-local-map): Inhibit call to `ding' because it inserts an 07
char, which shows up in the test result logs.
2025-10-21 18:21:46 -07:00
Stephen Berman
9a56cf9194 Improve Dired handling of file names with newlines (bug#79528)
* doc/emacs/dired.texi (Dired Enter): Update documentation of
Dired's display and handling of file names that contain newlines.
Document new user option 'dired-auto-toggle-b-switch'.

* etc/NEWS: Announce new warning and new user option.

* lisp/dired.el (dired-auto-toggle-b-switch): New user option.
(dired-internal-noselect): Pop up a warning if the Dired listing
displays a literal newline.
(dired-switches-escape-p): Take the 'ls' switch
'--quoting-style=escape' into account.
(dired-mode): Add 'dired--toggle-b-switch' to 'post-command-hook'.
(dired-move-to-end-of-filename): When the Dired listing includes a
file name containing a newline, this can result in no change in
the 'dired-filename' text property on the last file name, so in
this case take the position just before the final newline as the
end of the last file name to prevent a wrong-type-argument error.
(dired--filename-with-newline-p, dired--remove-b-switch)
(dired--toggle-b-switch, dired--set-auto-toggle-b-switch)
(dired--display-filename-with-newline-warning): New functions.
2025-10-22 00:06:03 +02:00
Stefan Monnier
38c32ed3ea (easy-mmode--less-selective-first): Enable test
*  test/lisp/emacs-lisp/easy-mmode-tests.el
(easy-mmode--less-selective-first): Enable test since it now succeeds.
2025-10-21 15:37:38 -04:00
Stefan Monnier
698a584e92 (define-globalized-minor-mode): Remove MODE-mode-name hack (bug#79624)
Stop trying to detect when a globalized mode enabled its
minor mode "too early".  This reverts the core of commit 876daebc85
since the problem it tried to circumvent has been made almost impossible
by commit 17e26cf57e.

* lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
Remove the `MODE-mode-name` variable, don't remember in which major
mode we enabled the minor mode, and don't disable the minor mode
before (re)enabling it.
2025-10-21 15:35:36 -04:00
Eshel Yaron
9f35d1653f
; elisp-scope.el: Fix error during widget args analysis
* lisp/emacs-lisp/elisp-scope.el (elisp-scope--match-spec-to-arg):
Simplify and fix handling of empty list.

* test/lisp/progmodes/elisp-mode-resources/semantic-highlighting.el:
Add test.
2025-10-21 16:18:24 +02:00
Eshel Yaron
93dcc342a5
; Simplify symbol role ':help' functions.
* lisp/progmodes/elisp-mode.el
(elisp--annotate-symbol-with-help-echo): Take SYM argument
instead of DEF.  Apply ':help' function partially with SYM
instead of calling it.

* lisp/emacs-lisp/elisp-scope.el: Adapt ':help' functions.
2025-10-21 16:18:23 +02:00
Eshel Yaron
bb54174c21
; Fix semantic highlighting in presence of shorthands
So far, 'scope-elisp-analyze-form' would disable
'read-symbol-shorthands' while reading a source form in
order to obtain the "original" length of symbols and pass
that length to the callback called for each analyzed symbol.
However, 'scope-elisp-analyze-form' could report an
incorrect length when a symbol was written with redundant
escaping (e.g. 'f\oo').  Moreover, disabling
'read-symbol-shorthands' breaks macro-expansion during
analysis, because macros may expect "expanded" symbols,
without shorthands.

In this commit we address these issues by leaving
'scope-elisp-analyze-form' enabled (so we get expended
symbols for macro-expansion) and recovering the original
length lazily in the callback, if needed, by going to the
beginning of the symbol and searching forward for its end.

* lisp/emacs-lisp/elisp-scope.el (elisp-scope--report):
Replace LEN argument with SYM, the analyzed symbol itself.
Adapt all callers.
(elisp-scope-analyze-form): Cease let-binding
'read-symbol-shorthands' to nil while reading.  Wrap
analysis in 'save-excursion' when reading from current
buffer.  Update docstring.
* lisp/progmodes/elisp-mode.el (elisp-local-references)
(elisp-fontify-symbol): Obtain symbol length from buffer.

* test/lisp/progmodes/elisp-mode-resources/semantic-highlighting.el:
Add test that incorporates 'read-symbol-shorthands'.
* test/lisp/progmodes/elisp-mode-tests.el (elisp-test-font-lock):
Set up 'read-symbol-shorthands' in test file.
2025-10-21 16:12:11 +02:00
Mattias Engdegård
bcc88bc5c2 Use 'any' and 'all' to simplify parts of the byte-compiler
* lisp/emacs-lisp/byte-opt.el (byte-opt--nary-comparison)
(byte-optimize-constant-args, byte-optimize-member)
(byte-optimize-append):
* lisp/emacs-lisp/bytecomp.el (byte-compile-warnings)
(byte-compile-out-toplevel):
* lisp/emacs-lisp/cconv.el (cconv-convert):
Replace various hand-written 'any' and 'all' expressions with
calls to the new functions, for readability and speed.
2025-10-21 13:20:04 +02:00
Mattias Engdegård
4a39e46d9c * lisp/emacs-lisp/shortdoc.el: Add take-while, drop-while, any, all. 2025-10-21 13:19:08 +02:00
Mattias Engdegård
eed2fce541 Disable one tab-bar-test case on macOS
The test works when run interactively and in batch mode started from
a terminal, but not from M-x compile.

* test/lisp/tab-bar-tests.el (tab-bar-tests-quit-restore-window):
Disable on macOS when TERM=dumb.
2025-10-21 13:19:07 +02:00
Yuan Fu
11915c6acb
; Fix previous tree-sitter commit
* lisp/treesit.el (treesit-font-lock-rules): Use lang instead of
current-language, lang = (or cunrrent-language default-language).
2025-10-21 00:01:59 -07:00
Elías Gabriel Pérez
1c8fc379b8 hideshow: Define new keymap for all the commands.
bug#79569

* lisp/progmodes/hideshow.el (hs-prefix-map): New keymap.
(hs-minor-mode-map): Use the new keymap.
2025-10-21 09:37:37 +03:00
Elías Gabriel Pérez
c513224fa3 hideshow: Update the indicators properly after showing/hiding
bug#79616

* lisp/progmodes/hideshow.el (hs-discard-overlays)
(hs-make-overlay, hs-show-block): Rework
'hs--refresh-indicators' calls.
(hs--refresh-indicators): Rework code, add new function
arguments.
(hs-minor-mode): Properly remove the indicators after turning
off the mode.
2025-10-21 09:33:16 +03:00
Yuan Fu
80a17f7a30
Cache compiled tree-sitter queries (bug#79363)
This way major modes can compute font-lock settings and
indentation rules dynamically when the major mode is enabled.
We don't want to compute it at package load time because the
grammar might not be installed at that point.  (Grammar might
be (semi)auto-installed when the major mode is enabled.)

This commit adds treesit--query-cache and changes
treesit-font-lock-rules to not compile the query.  Instead, the
queries are compiled in
treesit-validate-and-compile-font-lock-rules.

Go-ts-mode is modified to use this new framework.

* lisp/progmodes/go-ts-mode.el (go-ts-mode--iota-query-supported-p):
(go-ts-mode--method-elem-supported-p):
(go-ts-mode--font-lock-settings-cached): Removed.
(go-ts-mode--font-lock-settings): Simply return the result of
treesit-font-lock-rules rather than saving to
go-ts-mode--font-lock-settings-cached.  Use
treesit-query-with-optional for computed queries.
* lisp/treesit.el (treesit--query-cache): New variable.
(treesit-font-lock-settings): Add new field language.
(treesit-font-lock-setting-language): New function.
(treesit-query-with-optional): New function.
(treesit-font-lock-recompute-features): Don't compile query and
store language (because we can't derive from compiled query anymore).
(treesit-replace-font-lock-feature-settings): Use the new
language field.
(treesit-validate-and-compile-font-lock-rules): Renamed from
treesit-validate-font-lock-rules, add logic to compile queries.
(treesit-major-mode-setup): Use treesit-validate-and-compile-font-lock-rules.
2025-10-20 22:12:35 -07:00
Elías Gabriel Pérez
4565870dfa hideshow: Add new option for control how the block should be hidden.
bug#79585

* doc/emacs/programs.texi (Hideshow):
* etc/NEWS: Document changes.

* lisp/progmodes/hideshow.el (hs-hide-behavior): New user option.
(hs-life-goes-on): Add 'save-excursion' and 'save-match-data'.
(hs-hide-block): Rework.
2025-10-20 20:57:17 +03:00
Mattias Engdegård
498f89af2a Don't feed the stack overflow detector bad data
* src/lisp.h (record_in_backtrace): Don't record the argument address as
stack_top because most of the time it won't be on the C stack at all.
* src/eval.c (eval_sub): Do it here instead using an address guaranteed
to be on the C stack and we are just in the Lisp interpreter anyway.
2025-10-20 17:53:48 +02:00
Mattias Engdegård
e443811bd7 ; * test/lisp/vc/vc-tests/vc-tests.el: use write-region, again 2025-10-20 16:25:55 +02:00
Sean Whitton
095956a745 vc-test--with-temp-change: Use write-region
* test/lisp/vc/vc-tests/vc-tests.el (vc-test--with-temp-change):
Use write-region (bug#79657).
2025-10-20 15:16:05 +01:00
Michael Albinus
fb48f6016e Revert "* test/lisp/net/tramp-resources/foo.tar.gz: Remove."
This reverts commit e5cd797988.
2025-10-20 14:58:38 +02:00
Michael Albinus
e5cd797988 * test/lisp/net/tramp-resources/foo.tar.gz: Remove. 2025-10-20 14:43:04 +02:00
Michael Albinus
c024b9c661 Tramp cleanup
* doc/misc/tramp.texi (Configuration): Extend example.

* lisp/net/tramp.el (tramp-skeleton-write-region):
* lisp/net/tramp-cache.el (tramp-flush-file-upper-properties):
* lisp/net/tramp-sh.el (tramp-sh-handle-insert-directory):
Use `when-let*'	consequently.

* lisp/net/tramp-cmds.el (tramp-file-name-with-method):
Add :initialize and :set functions.
(tramp-set-file-name-with-method): New defun.
(with-tramp-file-name-with-method): Filter out enabled methods.

* lisp/net/tramp-compat.el: Add TODO.

* test/lisp/net/tramp-archive-tests.el
(tramp-archive-test-cascaded-file-archive): Use "foo.zip".

* test/lisp/net/tramp-tests.el (tramp--test-instrument-test-case-p):
Extend check.
(tramp-test48-session-timeout): Adapt test.

* test/lisp/net/tramp-archive-resources/foo.zip: Renamed from outer.zip.
2025-10-20 14:42:12 +02:00
Eli Zaretskii
71526e7584 Avoid unnecessary y-or-n-p questions in client frames
* lisp/server.el (server-visit-files): Don't consider the file as
having disappeared if it never existed when visited previously.
Doc fix.  (Bug#79609)
2025-10-20 15:10:28 +03:00
João Távora
61a05c3088 Eglot: expand on eglot-workspace-configuration sections (bug#79655)
* doc/misc/eglot.texi (Project-specific configuration): Clarify section.
2025-10-20 12:59:03 +01:00
Mattias Engdegård
3179f3aba0 ; * lisp/emacs-lisp/rx.el (rx--foldl): Replace with 'all' and 'any'. 2025-10-20 12:55:19 +02:00
Mattias Engdegård
d1b3eb7eec Add any and all (bug#79611)
* lisp/subr.el (all, any): New.
* test/lisp/subr-tests.el (subr-all, subr-any): New tests.
* doc/lispref/lists.texi (List Elements): Document.
* etc/NEWS: Announce.
2025-10-20 11:39:16 +02:00
Mattias Engdegård
cfe3c1c840 Add drop-while and take-while (bug#79611)
* lisp/subr.el (internal--effect-free-fun-arg-p)
(drop-while, take-while): New.
* test/lisp/subr-tests.el (subr-drop-while, subr-take-while): New tests.
* doc/lispref/lists.texi (List Elements): Document.
* etc/NEWS: Announce.
2025-10-20 11:38:42 +02:00
João Távora
72255c9992 Flymake: fix daemon-mode + and window client fringe usage (bug#77313)
To make Flymake's margin/fringe decision correct, four cases
must be tested. (1) A daemon that starts flymake-mode on a
buffer and then connecting a graphical client.  Here fringes
must be used. (2) Like 1, but with a tty client.  Here margins
must be used automatically.  (3) A non-daemonic start of a
graphical emacs. (4) A non-daemonic start of a tty emacs.

The code was failing case 1.  1 and 2 are the trickiest to get
right and currently can't be gotten right unless the margin
auto-resize is done at buffer annotation time.

Additionally, fix bugs in 'flymake-start's buffer visibility logic.
Refactor duplicate code in 'flymake--highlight-line' and fix docstrings.

* lisp/progmodes/flymake.el (flymake-autoresize-margins): Fix
focstring.
(flymake--bs-display): Rename from flymake--indicator-overlay-spec.
Fix docstring. Return just the display spec.
(flymake--suitably-fringed-p): New helper, instead of duplication.
(flymake--resize-margins): Cut up into two functions.
(flymake--restore-margins): Dedicated to restoring functions.
(flymake--highlight-line): Simplify logic when
flymake-indicator-type is 'auto'.
(flymake-start): Fix visibility logic to account for daemon mode.
Maybe resize margins here.
(flymake-mode): Call restore margins.
2025-10-19 23:48:58 +01:00
Juri Linkov
7df7a90e2c * lisp/progmodes/compile.el (compilation--set-up-margin): Fix.
Call 'set-window-margins' only on the compilation buffer where the
hook 'window-buffer-change-functions' is set buffer-locally (bug#79640).
2025-10-19 20:56:30 +03:00
Juri Linkov
3212bdc464 New value 'auto' of user option 'flymake-indicator-type' used by default
* lisp/progmodes/flymake.el (flymake-indicator-type):
Change the default value from 'fringes' to 'auto'.
(flymake--resize-margins): Use margins when
'flymake-indicator-type' is 'auto', but fringes are no available.
(flymake--highlight-line): Use display condition '(when CONDITION . SPEC)'
that checks for 'window-fringes' at display time and switches
between fringes and margins (bug#77313).
2025-10-19 20:41:12 +03:00
Sean Whitton
4faebea822 vc-git-registered: Be quieter when Git is not installed
* lisp/vc/vc-git.el (vc-git-registered): If Git is not
installed, don't echo a message about it.
2025-10-19 16:41:11 +01:00