Commit graph

14505 commits

Author SHA1 Message Date
Stefan Monnier
4141beb78c etc/NEWS: Improve text for threads' "buffer disposition" 2026-02-14 16:54:19 -05:00
Eshel Yaron
47b48346a3
New option 'completion-preview-inhibit-functions' (bug#80370)
* lisp/completion-preview.el
(completion-preview-inhibit-functions): New option.
(completion-preview--post-command): Respect it.
* etc/NEWS: Announce it.
2026-02-14 12:33:28 +01:00
Eli Zaretskii
6aefaca819 Adjust documentation to changes in 'overlays-in' and 'overlays-at'
* src/buffer.c (overlays_in): Fix commentary to match the code.
(Foverlays_in, Foverlays_at): Doc fixes.  (Bug#80242)

* test/src/buffer-tests.el (test-overlays-at-2): Add one test.

* doc/lispref/display.texi (Finding Overlays): Update and improve
the documentation of 'overlays-in' and 'overlays-at'.

* etc/NEWS: Announce the changes.
2026-02-14 11:37:52 +02:00
João Távora
aa181cd352 Rewrite flex completion with Gotoh algorithm
The greedy regexp matching, broken scoring and broken highlight were
sources of frequent complaints about the 'flex' matching style.  This
commit fixes that.

Inspired by the 'hotfuzz' style (available at
https://github.com/axelf4/hotfuzz) it uses a modified version of Gotoh's
1982 dynamic programming algorithm. It is strictly more correct than the
"old" flex.  For example, when matching the pattern 'goto' to no longer
will 'eglot-format' be sorted before some hypothetical much better
'goobarbaz-goto'.  And of course the highlighting is also correctly
placed on the 'goto', not scattered across the candidate.

Regarding performance, it is faster than the naive 'flex', primarily
because of the Elisp rewrite in minibuffer.el.  The matching and costing
algorithm matters but is not the bottleneck.

The Elisp parts of the style were almost completely decoupled from the
pcm/substring styles in lisp/minibuffer.el.  Only
'completion-flex-try-completion' uses some of pcm's code for pattern
augmentation.

* src/minibuf.c (completion--flex-cost-gotoh): New function.

* lisp/minibuffer.el (completion-flex--pattern-str): New variable.
(flex-score-match-tightness): Make obsolete.
(completion--flex-all-completions-1): New helper function.
(completion-flex-try-completion, completion-flex-all-completions): Rewrite.
(completion-substring--all-completions): No longer take transform-pattern-fn.
(completion--flex-adjust-metadata): Tweak.
(completion--flex-score, completion--flex-score-1)
(completion--flex-score-last-md, completion-flex--make-flex-pattern): Delete.

* test/lisp/minibuffer-tests.el (completion--sorted-flex-completions):
New helper function.
(completion-flex-test-non-ascii): New test.
(completion--pcm-score): Delete.
(completion-pcm-test-3, completion-pcm-test-4)
(completion-substring-test-1, completion-substring-test-2)
(completion-flex-test-2, completion-flex-test-3): Tweak.

* etc/NEWS: Describe change.
2026-02-13 23:46:11 +00:00
Philip Kaludercic
5a99c7f4e7
; Add missing periods to package-autosuggest NEWS entries 2026-02-13 19:06:18 +01:00
Eli Zaretskii
48525f500e ; Improve documentation of 'package-autosuggest-mode'
* lisp/emacs-lisp/package.el (package--autosuggest-install-and-enable)
(package--autosugest-prompt, package-autosuggest): Doc fixes.
* lisp/emacs-lisp/package-activate.el (package-autosuggest-style)
(package-autosuggest-once, package-autosuggest-mode)
(package--suggestion-applies-p)
(package--autosuggest-find-candidates)
(package--autosugest-line-format)
(package--autosuggest-after-change-mode): Fix doc strings and add
:version tags.

* etc/NEWS (bindings):
* doc/emacs/package.texi (Package Installation): Improve wording,
markup and indexing.
2026-02-13 09:39:02 +02:00
Philip Kaludercic
1e6d4f827c
Merge branch 'feature/package-autosuggest' 2026-02-12 23:08:42 +01:00
Michael Albinus
5ba4446e25 Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs 2026-02-12 19:24:44 +01:00
Michael Albinus
e0e0e95f5b Tramp signals 'remote-file-error' consequently
* doc/misc/tramp.texi (External packages): Mention also special events.
Emphasise, that Tramp raises remote-file-error.

* etc/NEWS: Tramp signals 'remote-file-error' consequently.
Presentational fixes and improvements.

* lisp/net/tramp.el (tramp-skeleton-process-file)
(tramp-handle-make-symbolic-link, tramp-process-actions)
(tramp-wait-for-regexp, tramp-send-string):
* lisp/net/tramp-adb.el (tramp-adb-get-device)
(tramp-adb-send-command-and-check, tramp-adb-barf-unless-okay)
(tramp-adb-wait-for-output, tramp-adb-maybe-open-connection):
* lisp/net/tramp-archive.el (tramp-archive-handle-not-implemented):
* lisp/net/tramp-crypt.el (tramp-crypt-do-encrypt-or-decrypt-file-name)
(tramp-crypt-do-encrypt-or-decrypt-file):
* lisp/net/tramp-gvfs.el (tramp-gvfs-dbus-event-error)
(tramp-gvfs-maybe-open-connection):
* lisp/net/tramp-sh.el
(tramp-do-directory-files-and-attributes-with-perl)
(tramp-do-copy-or-rename-file-directly)
(tramp-do-copy-or-rename-file-out-of-band)
(tramp-sh-handle-file-local-copy, tramp-sh-handle-write-region)
(tramp-bundle-read-file-names, tramp-maybe-send-script)
(tramp-find-file-exists-command, tramp-barf-if-no-shell-prompt)
(tramp-maybe-open-connection, tramp-wait-for-output)
(tramp-send-command-and-check, tramp-barf-unless-okay)
(tramp-send-command-and-read, tramp-get-ls-command):
* lisp/net/tramp-smb.el (tramp-smb-handle-file-attributes)
(tramp-smb-handle-make-symbolic-link)
(tramp-smb-maybe-open-connection, tramp-smb-call-winexe):
* lisp/net/tramp-sshfs.el (tramp-sshfs-maybe-open-connection):
* lisp/net/tramp-sudoedit.el (tramp-sudoedit-send-command-and-read):
Raise a `remote-file-error' in case of connection problems.

* lisp/net/tramp-rclone.el (tramp-rclone-maybe-open-connection): Improve
check for host.

* lisp/net/tramp-smb.el (tramp-smb-get-localname): Improve error message.

* lisp/net/tramp-sudoedit.el (tramp-default-host-alist):
Set a default for "sudoedit" method.
(tramp-sudoedit-maybe-open-connection): Check for proper host name.
(tramp-sudoedit-send-command): Do not expand ?h.

* lisp/net/tramp.el (tramp-compute-multi-hops): Check for cycle
proxy definition.

* test/lisp/net/tramp-archive-tests.el (tramp-archive-test20-file-modes)
(tramp-archive-test21-file-links): Check for `rmote-file-error'.

* test/lisp/net/tramp-tests.el (tramp-file-name-with-sudo): Declare.
(tramp--test-ignore-make-symbolic-link-error): Check for
`rmote-file-error'.
(tramp-test03-file-name-method-rules): Delete.
(tramp-test03-file-error): New test.
(tramp--test-supports-processes-p): Make it more rebust.
2026-02-12 19:24:10 +01:00
Basil L. Contovounesios
80a52e118d ; List my areas of interest in maintaining. 2026-02-12 19:15:39 +01:00
Basil L. Contovounesios
0a02ab6db8 Allow disabling battery-update-timer
Now that battery--upower-subscribe registers to signals from
DisplayDevice (bug#80229), it is possible to react to more than just
State changes, including Percentage and IsPresent (although the
latter may already be covered by the DeviceAdded and DeviceRemoved
signals).

That means that it should be possible to disable polling via
battery-update-timer and still get timely mode line updates.

* etc/NEWS
(Changes in Specialized Modes and Packages in Emacs 31.1):
Announce new battery-update-interval :type.

* lisp/battery.el (battery-update-interval): Allow setting to nil.
(display-battery-mode): Do not create battery-update-timer then.
(battery-upower-display-device-path): New constant.
(battery--upower-subscribe): Use it.
(battery-upower-subscribe-properties): New variable.
(battery--upower-props-changed): Use it for more flexibility over
which DisplayDevice properties to react to.
(battery--upower-signal-handler): Call battery-update-handler
directly when there is no battery-update-timer.
2026-02-12 19:15:39 +01:00
Sean Whitton
2e7a066d56 icomplete-ret: Ignore icomplete-show-matches-on-no-input
* lisp/icomplete.el (icomplete-ret): No longer conditionalize on
icomplete-show-matches-on-no-input.
Suggested by Juri Linkov <juri@linkov.net> in bug#62108.
(icomplete-show-matches-on-no-input, icomplete-ret):
* etc/NEWS: Improve documentation.
2026-02-11 15:04:18 +00:00
Eli Zaretskii
e464052a28 ; Fix recently installed changes
* src/w32fns.c (w32_register_for_sleep_notifications)
(sleep_notification_callback): Fix signatures.
* src/w32term.h (w32_register_for_sleep_notifications): Fix
prototype.  These changes avoid compilation warnings.

* lisp/system-sleep.el: Remove stray non-ASCII character.

* doc/lispref/os.texi (System Sleep): Remove non-ASCII character,
and fix wording and markup.

* etc/NEWS: Fix wording of recently-added entry.
2026-02-11 14:44:09 +02:00
Stéphane Marks
0bee754a72 system-sleep sleep blocker and sleep/wake event package (bug#80348)
This package provides platform-neutral interfaces to block your
system from entering idle sleep and a hook to process pre-sleep
and post-wake events.

Implementations are for D-Bus on GNU/Linux, macOS/GNUstep, and
MS-Windows.

* lisp/system-sleep.el: New package.
* src/fns.c: Qpre_sleep, Qpost_wake: New DEFSYM.
* src/nsfns.m (Fns_block_system_sleep, Fns_unblock_system_sleep)
(syms_of_nsfns): New functions.
* src/nsterm.m (applicationDidFinishLaunching): Subscribe to
pre-sleep and post-wake notifications.
(systemWillSleep, systemDidWake): New function.
* src/w32fns.c (Fw32_block_system_sleep)
(Fw32_unblock_system_sleep, Fw32_system_sleep_block_count)
(sleep_notification_callback)
(w32_register_for_sleep_notifications): New function.
(syms_of_w32fns): Sw32_unblock_system_sleep
Sw32_block_system_sleep Sw32_system_sleep_block_count: New
defsubr.
* src/w32term.h (Fw32_block_system_sleep): New extern.
* src/w32term.c (w32_initialize): Call
w32_register_for_sleep_notifications.
* doc/lispref/os.texi: Document the system-sleep package.
* doc/lispref/commands.texi: Update sleep-event special
documentation.
* etc/NEWS: Announce the new package.
2026-02-11 09:52:38 +01:00
Juri Linkov
f13ab20f04 Don't remap RET to 'icomplete-ret' in 'icomplete-mode' (bug#62108)
* lisp/icomplete.el (icomplete-show-matches-on-no-input): Fix docstring.
(icomplete-minibuffer-map): Don't remap 'minibuffer-complete-and-exit' (RET)
to 'icomplete-ret'.
(icomplete-ret): Improve docstring.
2026-02-11 09:50:34 +02:00
Juri Linkov
79fda66327 Revert "New key 'M-j' for 'icomplete-mode' (bug#62108)"
This reverts commit 3584a762b8.
Another fix follows shortly after this commit.
2026-02-11 09:19:52 +02:00
Dmitry Gutov
583a112169 Do cache and timed invalidation in "VC-aware" project backend
* lisp/progmodes/project.el: Describe the new cache in Commentary,
the "VC-aware project" section.
(project-vc-cache-timeout)
(project-vc-non-essential-cache-timeout): New variables.
(project--get-cached, project--set-cached):
New functions.
(project-try-vc, project--value-in-dir): Use them.
(project--read-dir-locals): New function, extracted from the
above.  Return the full alist, to be saved to cache at once.
(project--clear-cache): New function.
(project-remember-projects-under)
(project-forget-zombie-projects, project-forget-projects-under):
Use it.
(project-uniquify-dirname-transform, project-mode-line-format):
Bind 'non-essential' to choose the longer caching strategy.
(project-name-cache-timeout, project-name-cached): Remove.
(project-mode-line-format): Switch to calling 'project-name'
directly, with the new caching in use.

Co-authored-by: Juri Linkov <juri@linkov.net>
2026-02-10 02:54:14 +02:00
Philip Kaludercic
4a3640c3f8
Detect more package suggestions
* admin/scrape-elpa.el (scrape-elpa--safe-eval): Add new
function.
(scrape-elpa): Evaluate part of the matched expression to catch
more entries.
* etc/package-autosuggest.eld: Update database.
2026-02-09 21:12:21 +01:00
Manuel Giraud
8325809896 Fix selected group sort with topics (bug#80341)
* lisp/gnus/gnus-topic.el (gnus-group-sort-selected-topic): New
function to sort selected groups into topic.
(gnus-topic-mode): Use it as sort selected function in topic
mode.
* etc/NEWS: Announce the change.
2026-02-09 18:28:08 +01:00
Manuel Giraud
ed158fb8fc Add missing symbolic prefix keybinding
* lisp/gnus/gnus-group.el (:keymap): Add symbolic prefix to
group keymap.
* etc/NEWS: Announce the change.
2026-02-09 18:27:36 +01:00
Stefan Monnier
f39eaad491 Merge branch 'main' into icalendar 2026-02-08 16:05:31 -05:00
kobarity
3107c66c84 Change the type of 'python-eldoc-function-timeout' to number
* etc/NEWS: Announce the change.
* lisp/progmodes/python.el (python-eldoc-function-timeout):
Change the type.  (Bug#80045)
2026-02-07 14:44:27 +02:00
Michael Albinus
89209a83b6 Support D-Bus file descriptor manipulation
* doc/misc/dbus.texi (Synchronous Methods): Adapt `dbus-call-method'.
(Asynchronous Methods): Adapt `dbus-call-method-asynchronously'.
(File Descriptors): New chapter, replaces Inhibitor Locks.

* etc/NEWS: Replace "New D-Bus functions to support systemd
inhibitor locks" by "Support D-Bus file descriptor manipulation".
Presentational fixes and improvements.

* lisp/net/dbus.el (dbus-call-method)
(dbus-call-method-asynchronously): Adapt docstring.
(dbus-list-hash-table): Return (nreverse result).
(dbus-monitor-goto-serial): Declare `completion'.

* src/dbusbind.c (Fdbus_message_internal, xd_read_message_1):
Handle `:keep-fd'.
(xd_registered_inhibitor_locks, Fdbus_make_inhibitor_lock)
(Fdbus_close_inhibitor_lock, Fdbus_registered_inhibitor_locks): Delete.
(xd_registered_fds): New variable.
(Fdbus__fd_open, Fdbus__fd_close, Fdbus__registered_fds):
New DEFUNs.  (Bug#79963)
(syms_of_dbusbind_for_pdumper): Initialize `xd_registered_fds'.
(syms_of_dbusbind): Remove subroutines
`Sdbus_make_inhibitor_lock', `Sdbus_close_inhibitor_lock' and
`Sdbus_registered_inhibitor_locks'.  Remove symbol `Qdbus_call_method'.
Declare subroutines `Sdbus__fd_open', `Sdbus__fd_close' and
`Sdbus__registered_fds'.  Declare symbol `QCkeep_fd'.  staticpro
`xd_registered_fds'.

* test/lisp/net/dbus-tests.el (dbus-test10-inhibitor-locks): Delete.
(dbus-test10-keep-fd, dbus-test10-open-close-fd): New tests.
2026-02-07 11:32:54 +01:00
Dmitry Gutov
b37711a25f Some manual updates for the recent change
* doc/emacs/maintaining.texi (Looking Up Identifiers):
Mention that 'M-.' can signal an error.
(Xref): Recommend using 'etags-regen-mode' (bug#43086).

* etc/NEWS: Add updated marks.
2026-02-07 00:01:56 +02:00
Mattias Engdegård
66d307aa08 ; * etc/NEWS (help-setup-xref): slight polish (bug#80276) 2026-02-06 17:11:17 +01:00
Sean Whitton
c6e550c24e Separate input histories for 'C-x v !' and Git pulling & pushing
* lisp/vc/vc-dispatcher.el (vc-user-edit-command-history): Use
this as a dynamically bound variable, not a minibuffer history.
(vc-user-edit-command): Pass its value to read-shell-command.
* lisp/vc/vc-git.el (vc-git--pushpull):
* lisp/vc/vc.el (vc-edit-next-command): Bind it.
(vc-edit-next-command-history): New variable.
* etc/NEWS: Document the change.
2026-02-06 14:06:36 +00:00
Dmitry Gutov
90d3fdaffc Allow using xref-find-references without visiting a tags table
* lisp/progmodes/xref.el (xref-find-backend):
Allow returning nil (bug#43086).
(xref-backend-definitions, xref-backend-apropos):
Signal user-error when no backend is available.  The error text
suggests a few built-in Xref backends.
(xref-backend-identifier-completion-table): Default to nil.
(xref--no-backend-available): New helper function.

* lisp/progmodes/etags.el (etags--xref-backend):
Return nil when no tags table is visited.
2026-02-06 05:56:52 +02:00
Protesilaos Stavrou
dda572a2fa New minibuffer history for vc-user-edit-command (bug#80169)
* lisp/vc/vc-dispatcher.el (vc-user-edit-command-history): New variable.
(vc-user-edit-command): Use it (bug#80169).
* etc/NEWS: Announce it.
2026-02-05 12:01:43 +00:00
Philip Kaludercic
ebe3838011
Merge remote-tracking branch 'origin/master' into feature/package-autosuggest 2026-02-04 17:36:37 +01:00
Dmitry Gutov
083f89f858 Fix [More] buttons in tutorial and other buttons in Semantic
* lisp/help-mode.el (help-setup-xref): Update docstring (bug#80276).

* etc/NEWS: Add description for the earlier change in help-setup-xref.

* lisp/tutorial.el (tutorial--describe-nonstandard-key)
(tutorial--detailed-help): Use 'with-help-window', call it after.

* lisp/cedet/semantic/util.el (semantic-describe-buffer): Same.

* lisp/cedet/semantic/decorate/include.el
(semantic-decoration-include-describe)
(semantic-decoration-unknown-include-describe)
(semantic-decoration-fileless-include-describe)
(semantic-decoration-unparsed-include-describe)
(semantic-decoration-all-include-summary): Same.
2026-02-03 05:14:59 +02:00
Philip Kaludercic
2cde30aa1b
Merge remote-tracking branch 'origin/master' into feature/package-autosuggest 2026-02-01 21:01:40 +01:00
Mattias Engdegård
8f5badc26b * etc/symbol-releases.eld: 'any' and 'all' added in Emacs 31 2026-02-01 18:20:56 +01:00
Jacob S. Gordon
049eefa611 display-time: Add option to customize help-echo format
This option controls the format of the help-echo when hovering
over the time display in mode line.  (Bug#80143)
* lisp/time.el (display-time-help-echo-format): Add option.
(display-time-string-forms): Use it.

* etc/NEWS (Time): Announce the new option.
2026-01-31 12:12:21 +02:00
Kierin Bell
39dc99518c Add new input method for Tuscarora
* lisp/leim/quail/iroquoian.el: New input method "tuscarora-postfix".

* etc/NEWS: Announce the new input method.  (Bug#80264)
2026-01-31 12:01:48 +02:00
Stéphane Marks
a0748d9791 New function 'truncate-string-pixelwise' (bug#80244)
This function will truncate a string on a pixelwise basis in a
work buffer and using a binary search rather than brute force.

* lisp/emacs-lisp/subr-x.el (work-buffer--prepare-pixelwise):
New defun helper function.
(string-pixel-width): Use the helper function.
(truncate-string-pixelwise): New defun.
* test/lisp/misc-tests.el (misc-test-truncate-string-pixelwise):
(misc-test-truncate-string-pixelwise-unicode): New test.
* doc/lispref/display.texi (Size of Displayed Text): Document
the function.
* etc/NEWS: Announce the function.
2026-01-31 11:04:40 +02:00
Sean Whitton
fcdd8678f9 Make diff-hunk-kill respect an active region
* lisp/vc/diff-mode.el (diff--revert-kill-hunks): New workhorse
routine.
(diff-hunk-kill, diff-revert-and-kill-hunk): Call it.
(diff-hunk-kill): New BEG and END parameters and interactive
form.
* doc/emacs/files.texi (Diff Mode):
* etc/NEWS: Document the change.
2026-01-30 15:06:52 +00:00
Sean Whitton
705c0e3729 Bind 's' to diff-split-hunk in read-only diff-mode
* lisp/vc/diff-mode.el (diff-mode-shared-map): Bind 's' to
'diff-split-hunk'.
* etc/NEWS: Document the change.
2026-01-30 11:21:27 +00:00
Juri Linkov
1ff0c58fee New function 'checkdoc-batch' (bug#80199)
* lisp/emacs-lisp/checkdoc.el (checkdoc--batch-flag): New variable.
(checkdoc-rogue-spaces, checkdoc-message-text): Use it along the
check for interactive calls to be able to collect errors in the
diagnostic buffer.
(checkdoc-show-diagnostics): Don't show the diagnostic buffer
when 'checkdoc--batch-flag' is non-nil.
(checkdoc-batch): New function to check the buffer and print the
content of the diagnostic buffer.
2026-01-30 09:41:42 +02:00
Juri Linkov
3584a762b8 New key 'M-j' for 'icomplete-mode' (bug#62108)
* lisp/icomplete.el (icomplete-exit): New alias for 'icomplete-fido-exit'.
(icomplete-minibuffer-map): Bind it to "M-j" .

* lisp/replace.el (multi-occur--prompt): Show "M-j" bound to 'icomplete-exit'
in 'icomplete-mode'.
2026-01-30 09:27:12 +02:00
Eli Zaretskii
eca025334e ; Fix last change
* etc/NEWS:
* doc/lispref/windows.texi (Choosing Window Options):
* doc/emacs/windows.texi (Window Choice): Improve documentation of
'split-window-preferred-direction'.
2026-01-29 22:13:02 +02:00
Sean Whitton
b9bfe461b2 ; Fix minibuffer-message NEWS entry. 2026-01-29 17:08:55 +00:00
Sean Whitton
12e53dfafe New C-x v T l and C-x v T L commands
* lisp/vc/vc.el (vc-log-outgoing-base)
(vc-root-log-outgoing-base): New commands.
* lisp/vc/vc-dir.el (vc-dir-mode-map):
* lisp/vc/vc-hooks.el (vc-prefix-map): Bind them.
* doc/emacs/vc1-xtra.texi (Outstanding Changes):
* etc/NEWS: Document them.
2026-01-29 17:01:32 +00:00
Spencer Baugh
0ab5db015f (minibuffer-message): Do not block while displaying message.
* lisp/minibuffer.el (minibuffer--message-overlay)
(minibuffer--message-timer): New variables.
(minibuffer--delete-message-overlay): New function.
(minibuffer-message): Use a timer and 'pre-command-hook' to
clear message overlay instead of blocking with
'sit-for'. (bug#79510)
* etc/NEWS: Document the change.
2026-01-29 16:56:38 +00:00
Sean Whitton
43d6907ad9 Move outstanding changes commands from 'o' to 'T'
The main reason for this is that then these commands can have
the same bindings in VC-Dir buffers that they have under
vc-prefix-map.  'T' is a good mnemonic for "Topic" and a
serviceable mnemonic for "outsTanding".

* lisp/vc/vc-hooks.el (vc-prefix-map): Move 'o' to 'T'.
* lisp/vc/vc-dir.el (vc-dir-mode-map): New 'T' bindings.
2026-01-28 16:13:47 +00:00
Bastien Guerry
d5a0dc0bad Update TUTORIAL.translators
* etc/tutorials/TUTORIAL.translators (Maintainer): Add myself
as TUTORIAL.fr co-maintainer.
2026-01-26 14:45:48 +01:00
Philip Kaludercic
e6fd21faf7
Update 'package-autosuggest' database
* etc/package-autosuggest.eld: Add changes detected by the
'scrape-elpa' command.
2026-01-25 15:57:06 +01:00
Philip Kaludercic
3a3a9e21c1
Mark 'package-autosuggest-database' as private
* admin/scrape-elpa.el (scrape-elpa):
* etc/package-autosuggest.eld:
* lisp/emacs-lisp/package.el (package-autosuggest-database)
(package--autosuggest-suggested, package--suggestion-applies-p)
(package--autosuggest-find-candidates)
(package--autosuggest-install-and-enable): Rename constant name
to add double-dash.
2026-01-25 15:49:38 +01:00
Philip Kaludercic
5a53e27748
Merge branch 'feature/package-autosuggest' 2026-01-25 15:43:20 +01:00
Stéphane Marks
6a071ad373 Add 'select-frame-by-id' and 'undelete-frame-by-id' (Bug#80192)
'select-frame-by-id' will also undelete a deleted frame ID.

* lisp/frame.el (select-frame-by-id, undelete-frame-by-id): New
commands.
(make-frame-ids-alist, frame-by-id, frame-id-live-p)
(undelete-frame-id-index): New defuns.
* etc/NEWS: Announce the commands.
2026-01-25 09:43:47 +01:00
Eli Zaretskii
3ce57b05a2 ; Fix last change. 2026-01-24 13:39:23 +02:00
Daniel Mendler
e8f26d554b Support cons cell for 'line-spacing'
* etc/NEWS: Announce the change.
* src/dispextern.h (struct glyph_row): Add
'extra_line_spacing_above' member.
(struct it): Add 'extra_line_spacing_above' member.
* src/frame.h (struct frame): Add 'extra_line_spacing_above'
member.  Update comment for 'extra_line_spacing.'
* src/buffer.c (syms_of_buffer): Update the docstring of
'line-spacing' to describe the cons cell usage.
* src/buffer.h (struct buffer): Update comment for
'extra_line_spacing'.
* src/frame.c (gui_set_line_spacing): Handle cons cell value for
'line-spacing'.  Calculate and set 'extra_line_spacing_above'
for both integer and float pairs.
* src/xdisp.c (init_iterator): Initialize 'extra_line_spacing_above'
from buffer or frame 'line-spacing', handling cons cells for both
integer and float values.
(gui_produce_glyphs): Use 'extra_line_spacing_above' to distribute
spacing between ascent and descent.  Update 'max_extra_line_spacing'
calculation.
(resize_mini_window): Take line spacing into account when resizing the
mini window.  Pass height of a single line to 'grow_mini_window' and
'shrink_mini_window'.
* src/window.c (grow_mini_window, shrink_mini_window): Add unit
argument which defines height of a single line.
* src/window.h (grow_mini_window, shrink_mini_window): Adjust function
prototypes accordingly with unit argument.
* lisp/subr.el (total-line-spacing): New function to calculate total
spacing from a number or cons cell.
(posn-col-row): Use total-line-spacing.
* lisp/simple.el (default-line-height): Use 'total-line-spacing'.
* lisp/textmodes/picture.el (picture-mouse-set-point): Use
'total-line-spacing'.
* lisp/window.el (window-default-line-height): Use
'total-line-spacing'.
(window--resize-mini-window): Take 'line-spacing' into account.
* test/lisp/subr-tests.el (total-line-spacing): New test.
* test/src/buffer-tests.el (test-line-spacing): New test.
* doc/emacs/display.texi (Display Custom): Document that
'line-spacing' can be a cons cell.
(Line Height): Document the new cons cell format for 'line-spacing'
to allow vertical centering.

Co-authored-by: Przemysław Alexander Kamiński <alexander@kaminski.se>
Co-authored-by: Daniel Mendler <mail@daniel-mendler.de>
2026-01-24 13:32:44 +02:00
Sean Whitton
29bdba37f2 New bindings for vc-revert
* lisp/vc/vc-dir.el (vc-dir-mode-map): Bind vc-revert to '@'.
* lisp/vc/vc-hooks.el (vc-prefix-map): Additionally bind
vc-revert to 'C-x v @'.
* doc/emacs/maintaining.texi (VC Undo, VC Directory Commands):
* etc/NEWS: Document the change.
2026-01-23 14:11:27 +00:00
João Távora
f2250ba244 Eglot: simplify Imenu setup again
See https://github.com/joaotavora/eglot/issues/1569.

* lisp/progmodes/eglot.el (eglot--managed-mode): Tweak.

* etc/EGLOT-NEWS: Tweak.
2026-01-21 23:09:19 +00:00
Vincenzo Pupillo
15d3cc3f65 Flymake support for yaml-ts-mode.
* etc/NEWS: Announce the new customization option (bug#80215).
* lisp/textmodes/yaml-ts-mode.el (yaml-ts-mode): New customization group.
(yaml-ts-mode-yamllint-options): New customization option.
(yaml-ts-mode--flymake-process): New variable that stores the reference
to the flymake process.
(yaml-ts-mode-flymake): New function that implements support for Flymake.
2026-01-21 19:41:40 +02:00
Binbin Ye
8ea6f6da77 Add JSON path utility command to json-ts-mode
* lisp/progmodes/json-ts-mode.el (json-ts--get-path-at-node)
(json-ts--path-to-jq, json-ts--path-to-python): New functions.
(json-ts-jq-path-at-point): New command for getting JSON path at point.

* test/lisp/progmodes/json-ts-mode-tests.el: New file.
Add tests for the utility command.

* etc/NEWS: Announce new command 'json-ts-jq-path-at-point' (bug#80190).
2026-01-21 19:27:03 +02:00
João Távora
9d8e1af6f4 Eglot: fix textDocument/prepareRename support
Can't send prepareRename requests willy-nilly.

See https://github.com/joaotavora/eglot/issues/1554.

* lisp/progmodes/eglot.el (eglot--rename-interactive): Fix.
(eglot-client-capabilities): Advertise "prepareSupport".

* etc/EGLOT-NEWS: Mention change.
2026-01-21 12:26:24 +00:00
João Távora
f643ad53c7 Eglot: set imenu-create-index-function without advice
See https://github.com/joaotavora/eglot/issues/1569.

* lisp/progmodes/eglot.el (eglot--managed-mode): Stomp on
imenu-create-index-function conditionally.
(eglot-imenu): Don't check eglot-server-capable here.

* etc/EGLOT-NEWS: Mention change.
2026-01-21 12:26:24 +00:00
João Távora
d3548aea96 Eglot: limit the number of file watches
Some language servers request file watching for a very large number of
directories (e.g. Python virtualenvs), which can exhaust system
resources and cause slow startup.

https://github.com/joaotavora/eglot/issues/1568

* lisp/progmodes/eglot.el (eglot-max-file-watches): New variable.
(eglot--count-file-watches): New function.
(eglot--watch-globs): Use them to limit watches.  Signal jsonrpc-error
when limit is reached.
(eglot-watch-files-outside-project-root): Fix docstring punctuation.

* etc/EGLOT-NEWS: Mention change.
2026-01-21 12:26:24 +00:00
João Távora
a3ea65a984 Eglot: support more complex workspace edits (create/rename/delete)
Advertise support for file resource operations in workspace edits.
Implement create, rename, and delete file operations.  Rework
confirmation UI to handle mixed operation types.

* lisp/progmodes/eglot.el (eglot--lsp-interface-alist): Add
CreateFile, RenameFile, DeleteFile interfaces.
(eglot-client-capabilities): Advertise resourceOperations and
failureHandling.
(eglot-handle-request<workspace/applyEdit>): Return failureReason.
(eglot--apply-text-edits): Tweak error message.
(eglot--propose-changes-as-diff): Adjust for new prepared format.
Return buffer.
(eglot--apply-workspace-edit): Rework.  Handle file operations.

* etc/EGLOT-NEWS: Mention change.
2026-01-21 12:26:24 +00:00
João Távora
b40e89e523 Eglot: default eglot-advertise-cancellation to t
The current 2026 landscape suggests servers (especially gopls
and ocamllsp) take advantage of this, so let's give it to them
by default.

* lisp/progmodes/eglot.el (eglot-advertise-cancellation):
Default to t.

* etc/EGLOT-NEWS: Mention change.
2026-01-21 12:26:24 +00:00
Stefan Monnier
4150c2e22e (garbage-collect-heapsize): New function
The info returned from `garbage-collect` is really handy to
track the evolution of the heap size, but sadly it's available only
at the cost of running a full GC, which has two big downsides:
it's slow, it affects what we're measuring, and it can't be used
in `post-gc-hook`.
So, this patch makes it available without running the GC.

* src/alloc.c (Fgarbage_collect_heapsize): New function, extracted from
`Fgarbage_collect`.
(Fgarbage_collect): Use it.
(syms_of_alloc): defsubr it.

* doc/lispref/internals.texi (Garbage Collection): Extract
documentation for it from that of `garbage-collect`.
2026-01-20 16:09:22 -05:00
Juri Linkov
9ba2f13176 * lisp/tab-bar.el (tab-bar-split-tab): New command.
(split-tab): Alias for 'tab-bar-split-tab'.
2026-01-20 19:32:16 +02:00
Sean Whitton
852ca2ff40 Disable diff-restrict-view by default
* lisp/vc/diff-mode.el (diff-restrict-view): Disable it.
* etc/NEWS: Announce the change.
2026-01-17 17:17:52 +00:00
Amin Bandali
5020d89104 New minor mode center-line-mode
* lisp/textmodes/text-mode.el (center-line-mode--track-changes):
New local variable for storing the id of the change tracker registered
for the current buffer.
(center-line-mode--track-changes-signal): New function to be called by
the track-changes library whenever there is a change in the current
buffer.
(center-line-mode--track-changes-function): New function called from the
above signal function, iterates over the lines of the modified region,
calling 'center-line' for each non-empty line.
(center-line-mode): New minor mode.
* etc/NEWS: Document the new minor mode.
2026-01-17 14:33:35 +02:00
Michael Albinus
ab77b4b60c New D-Bus functions to support systemd inhibitor locks
* doc/misc/dbus.texi (Top): Add "Inhibitor Locks" submenu.
Remove trailing period from chapter and section titles.
(Inhibitor Locks): New node.

* etc/NEWS: New D-Bus functions to support systemd inhibitor locks.
Presentational fixes and improvements.

* src/dbusbind.c (xd_registered_inhibitor_locks): New variable.
(Fdbus_make_inhibitor_lock, Fdbus_close_inhibitor_lock)
(Fdbus_registered_inhibitor_locks): New DEFUNs.  (Bug#79963)
(syms_of_dbusbind_for_pdumper): Initialize
`xd_registered_inhibitor_locks'.
(syms_of_dbusbind): Declare subroutines
`Sdbus_make_inhibitor_lock', `Sdbus_close_inhibitor_lock' and
`Sdbus_registered_inhibitor_locks'.  Declare symbol `Qdbus_call_method'.
staticpro `xd_registered_inhibitor_locks'.

* test/lisp/net/dbus-tests.el (dbus--test-systemd-service)
(dbus--test-systemd-path, dbus--test-systemd-manager-interface):
New defconsts.
(dbus-test10-inhibitor-locks): New test.
2026-01-17 11:40:31 +01:00
Sean Whitton
f41a594bf3 ; Improve docs for last change. 2026-01-15 11:12:12 +00:00
Jared Finder
6d0d71de68 New IELM option to insert newline when inside sexp (bug#80123)
* lisp/ielm.el (ielm-dynamic-return): Add new value `point' to
user option.
(ielm-return): Implement it (bug#80123).
2026-01-15 11:09:39 +00:00
Eli Zaretskii
18f9f0bdc9 ; Update Project documentation due to recent changes
* etc/NEWS:
* doc/emacs/maintaining.texi (Projects):
* lisp/progmodes/project.el (project-mode-line): Update
documentation due to changes in bug#78545.
2026-01-15 08:52:20 +02:00
Eli Zaretskii
cd9ff47ba8 ; Update documentation due to a recent change
* etc/NEWS:
* doc/emacs/mini.texi (Completion Commands):
* lisp/minibuffer.el (minibuffer-visible-completions): Update doc
string, user manual, and NEWS to reflect changes for bug#80024.
2026-01-15 08:36:46 +02:00
Stefan Monnier
c6b62b42e0 (make-progress-reporter): Tweak wording of CONTEXT doc 2026-01-14 16:25:57 -05:00
Stéphane Marks
9c1da99a85 Optionally inhibit echo area progress reporting (bug#80198)
Add an optional 'context' argument to 'make-progress-reporter'
which 'progress-reporter-echo-area' consults to inhibit updates
if the context is 'async' and the echo area is busy.

* lisp/subr.el (make-progress-reporter): Add the optional
'context' argument.
(progress-reporter-context): New defun accessor.
(progress-reporter-echo-area): Consult
'progress-reporter-context'.
* doc/lispref/display.texi: Document context.
* etc/NEWS: Announce context.
2026-01-14 16:14:08 -05:00
Paul Nelson
ea5d079e26 Allow Ispell to save corrections as abbrevs
* lisp/textmodes/ispell.el (ispell-save-corrections-as-abbrevs):
New user option.
(ispell--abbrev-saving-allowed)
(ispell--save-correction-as-abbrev): New variables.
(ispell--maybe-save-correction-abbrev): New function.
(ispell-word, ispell-process-line): Use them to save corrections
as abbrevs when appropriate (bug#79985).
(ispell-command-loop): Add C-u as command character to toggle
abbrev saving for an immediately following replacement command.
(ispell-help): Document C-u binding.

* doc/emacs/fixit.texi (Spelling): Document new feature.
2026-01-14 18:48:56 +00:00
Sean Whitton
aa6e42f18b Rename VC outgoing and incoming log commands to include "-root-"
* lisp/vc/vc.el (vc-log-incoming, vc-log-outgoing): Rename ...
(vc-root-log-incoming, vc-root-log-outgoing): ... to these.  All
uses changed.  Leave behind obsolete function aliases.
* lisp/emacs-lisp/package-vc.el (package-vc-log-incoming):
Rename ...
(package-vc-root-log-incoming): ... to this.  All uses changed.
Leave behind obsolete function alias.
2026-01-14 12:48:02 +00:00
Bastien Guerry
b2bb3b50ac ; * etc/tutorials/TUTORIAL.fr: fix mistake
Reported-by: Ronan Plantec <rplantec@laposte.net>
2026-01-13 16:13:18 +01:00
Stéphane Marks
785059a1f7 Add frame identifiers (bug#80138)
A unique frame id is assigned to a new or cloned frame, and
reused on an undeleted frame.

The id facilitates unambiguous identification among frames that
share identical names or titles, deleted frames where a live
frame object no longer exists that we can resurrect by id, for
example via 'tab-bar-undo-close-tab'.  It also aids debugging at
the C level using the frame struct member id.

Rewrite 'clone-frame' and 'undelete-frame' to not let bind
variables that 'make-frame' uses to avoid conflicts with nested
'make-frame' calls, for example via
'after-make-frame-functions'.

* lisp/frame.el (clone-frame, undelete-frame): Use
'frame--purify-parameters' to supply parameters explicitly.
(undelete-frame--save-deleted-frame): Save frame id for
restoration.
(undelete-frame): Restore frame id.
(frame--purify-parameters): New defun.
(make-frame): Assign a new id for a new or cloned frame, reuse
for undeleted frame.
* src/frame.h (struct frame): Add id member.
(frame_next_id): New extern.
* src/frame.c (frame_next_id): New global counter.
(frame_set_id, frame_set_id_from_params): New function.
(Fframe_id): New DEFUN.
(syms_of_frame <Sframe_id>): New defsubr.
(syms_of_frame <Qinternal_id>): New DEFSYM.
(syms_of_frame <frame_internal_parameters>): Add 'Qinternal_id'.
* src/androidfns.c (Fx_create_frame):
* src/haikufns.c (Fx_create_frame):
* src/nsfns.m (Fx_create_frame):
* src/pgtkfns.c (Fx_create_frame):
* src/w32fns.c (Fx_create_frame):
* src/xfns.c (Fx_create_frame): Call 'frame_set_id_from_params'.
* doc/lispref/frames.texi: Add documentation.
* etc/NEWS: Announce frame id.
2026-01-13 09:29:44 +01:00
João Távora
12730179ac Eglot: release version 1.21
* lisp/progmodes/eglot.el (Version): Bump to 1.21.

* etc/EGLOT-NEWS: Announce new version.
2026-01-11 13:15:27 +00:00
João Távora
25a6f28ad5 Eglot: release version 1.20
* lisp/progmodes/eglot.el (Version): Bump to 1.20.

* etc/EGLOT-NEWS: Announce new version.
2026-01-11 03:42:01 +00:00
João Távora
4e6a81da6c Eglot: add new command 'eglot-momentary-inlay-hints'
* doc/misc/eglot.texi (Eglot Commands)
(Customization Variables): Advertise eglot-momentary-inlay-hints.

* etc/EGLOT-NEWS: Advertise new command.

* lisp/progmodes/eglot.el (eglot--momentary-hints-data): New variable.
(eglot-momentary-inlay-hints): New command.
2026-01-11 03:42:01 +00:00
João Távora
236647ab58 Eglot: spectacular optimization in files with many diagnostics
In a large (or simply long) file with many diagnostics, calling
eglot-range-region repeteadly constantly throws Emacs for a spin
around the buffer, since each diagnostics comes annotated with a
(line/col): LSP range spec that is reasonably expensive to
translate into Elisp point positions.

A much faster approach for such large lists is to first sort all the
objects containing ranges by their start lines and then do a
single pass of the buffer, moving lines by delta.

By much faster, I do mean spectacularly (100x) faster. A long python
with 7000 "ruff" diagnostics, before the change, typical editor
operations (add/delete words) are impossible.

       14053  84%    - jsonrpc-connection-receive
       14052  84%     - #<byte-code-function B94>
       14052  84%      - apply
       14052  84%       - eglot-handle-notification
       14052  84%        - applyn
       14052  84%         - #<byte-code-function 6DB>
       14052  84%          - eglot--flymake-handle-push
       12295  74%           - eglot--flymake-make-diag
       12218  73%            + eglot-range-region
          50   0%            + eglot--check-object
          12   0%              plist-member
           3   0%              flymake-make-diagnostic

After the change:

          99   1%    - jsonrpc-connection-receive
          99   1%     - #<byte-code-function 0EE>
          99   1%      - apply
          99   1%       - eglot-handle-notification
          99   1%        - apply
          99   1%         - #<byte-code-function E84>
          99   1%          - eglot--flymake-handle-push
          99   1%           - eglot--call-with-ranged
          99   1%            - #<byte-code-function 2C6>
          99   1%             - eglot-move-to-utf-16-linepos
          99   1%                line-end-position

* lisp/progmodes/eglot.el (eglot-move-to-linepos-function):
Forward declare.
(eglot--call-with-ranged, eglot--collecting-ranged): New helpers.
(eglot--flymake-report-1)
(eglot--imenu-SymbolInformation): Use eglot--collecting-ranged.
(eglot--imenu-DocumentSymbol): Could use eglot--collecting-ranged.

* etc/EGLOT-NEWS: Mention it
2026-01-11 03:42:01 +00:00
João Távora
6921244718 Eglot: document LSP server multiplexer support
This documents how to use LSP multiplexer programs like Rassumfrassum
to connect multiple language servers to a single buffer.

* doc/misc/eglot.texi (Top): Add "Multi-server support" menu entry.
(Multi-server support): New chapter.
(Using Rassumfrassum, Design rationale): New sections documenting
how to use the Rassumfrassum multiplexer program with Eglot, with
practical examples for C++, Python, and multi-language files.
(Performance): Mention Rassumfrassum as solution for JSONRPC traffic
performance issues.
(Reporting bugs): Add guidance for troubleshooting multiplexer-related
bugs.  Improve project description guidance.  Fix various typos.
* lisp/progmodes/eglot.el (eglot-server-programs): Add a couple
of rass entries.

* etc/EGLOT-NEWS: Announce support for LSP server multiplexers via
Rassumfrassum.
2026-01-11 03:42:01 +00:00
Elías Gabriel Pérez
bdd9acb6aa hideshow: Reword documentation (bug#80116)
* etc/NEWS: Reword entry.

* lisp/progmodes/hideshow.el: Reword Commentary Header.

(hs-block-start-mdata-select, hs-block-end-regexp)
(hs-c-start-regexp, hs-forward-sexp-function)
(hs-adjust-block-beginning-function)
(hs-adjust-block-end-function, hs-find-block-beginning-function)
(hs-find-next-block-function)
(hs-looking-at-block-start-predicate)
(hs-inside-comment-predicate): Reword docstrings.

(hs-block-positions): Reword docstring, and move
'hs-adjust-block-beginning-function' so that it is not affected
by 'pos-eol'.

(hs-find-block-beg-fn--default): Use 0 instead of
'hs-block-start-mdata-select'.

* lisp/treesit.el (treesit-hs-find-block-beginning): Update
code.
2026-01-10 14:55:55 +02:00
Jared Finder
4e779d20f1 Update cursor display using Xterm escape sequences
* lisp/term/xterm.el (xterm-update-cursor): New user option.
(xterm--init): Use it.
(xterm--post-command-hook): New function for all xterm
functionality installed in 'post-command-hook'.
(xterm--init-frame-title): Install it.
(xterm--init-update-cursor, xterm--set-cursor-type)
(xterm--update-cursor-type, xterm--update-cursor-color): New
functions.
(xterm--cursor-type-to-int): New constant.
* doc/emacs/display.texi (Cursor Display):
* etc/NEWS: Document the new feature.
2026-01-10 12:49:43 +00:00
Philip Kaludercic
5b89d46965
Bind 'apropos-user-option' to C-h u
* doc/emacs/help.texi: Adjust documentation.
* etc/NEWS: Mention change.
* lisp/help.el (help-map): Add binding.
2026-01-10 12:38:05 +01:00
Philip Kaludercic
c8d19034aa
Allow 'package-isolate' to fetch missing packages
* lisp/emacs-lisp/package.el (package-isolate): Fetch missing
packages and make them available in the new Emacs process, but
not the current one.
* etc/NEWS: Mention change.
2026-01-10 12:38:05 +01:00
Philip Kaludercic
881be95cdd
Allow reviewing packages before installaion
* lisp/emacs-lisp/package.el (package-review-policy)
(package-review-directory, package-review-diff-command): Add
new options.
(package--review-p): Add new function to consult
'package-review-policy'.
(package-review): Add new function.
(package-unpack): Use new functions.
(package-install-from-archive): Return package descriptors of
installed packages.
(package-download-transaction): Handle failure of a incomplete
transaction.
(package-install): Report if a package installation failed.
(package-upgrade): Anticipate a failed package transaction by
not deleting a package beforehand.
(package-install-from-buffer): Handle the failure to download
dependencies or a rejection during the actual package review.
* doc/emacs/package.texi: Document feature.
* etc/NEWS: Mention new feature.
2026-01-10 12:38:05 +01:00
João Távora
804f965577 Unobsolete and autoload M-x eglot-manual, mention it in manual
The only alternative I've found is

   M-: ( i n f o " ( e g l o t ) " ) RET

which isn't really very user friendly.

* lisp/progmodes/eglot.el (eglot-manual): Unobsolete.

* doc/misc/eglot.texi (Top): Mention M-x eglot-manual.

* etc/EGLOT-NEWS: Mention unobsoletion.
2026-01-08 08:36:50 +00:00
Michael Albinus
d5b9fc5579 ; Fix last entry in etc/NEWS 2026-01-07 18:49:16 +01:00
Michael Albinus
68b6137eb0 ; Fix typo 2026-01-07 14:17:11 +01:00
Michael Albinus
d7fd87b403 shadowfile.el uses eqhemeral buffer names now
* etc/NEWS: shadowfile.el uses eqhemeral buffer names now.

* lisp/shadowfile.el (shadow-find-file-noselect): New function.
(shadow-read-files, shadow-write-info-file)
(shadow-write-todo-file): Use it.
2026-01-07 10:08:45 +01:00
Michael Albinus
8343ce6c52 External Tramp methods can be used in multi-hops
* doc/misc/tramp.texi (External methods): Mention, how external
methods are used for multi-hops.
(Ad-hoc multi-hops): Change requirement of method.

* doc/misc/trampver.texi:
* lisp/net/trampver.el: Change version to "2.8.2-pre".

* etc/NEWS: External Tramp methods can be used in multi-hops.
Presentational fixes and improvements.

* lisp/net/tramp-sh.el (tramp-sh-handle-copy-directory): Check for
`tramp-method-out-of-band-p' explicitly. Don't flush directory
properties.
(tramp-method-out-of-band-p): There shouldn't be a multi-hop.

* lisp/net/tramp-smb.el (tramp-smb-handle-copy-directory): Don't
flush directory properties.

* lisp/net/tramp.el (tramp-methods): Adapt docstring.
(tramp-barf-if-file-missing)
(with-parsed-tramp-file-name): Adapt debug spec.
(tramp-skeleton-copy-directory): Flush directory properties.
(tramp-add-hops): Check for `tramp-login-args' property.
2026-01-06 15:20:58 +01:00
RadioNoiseE
48b80a1e2b New function 'window-cursor-info'
* src/window.c (Fwindow_cursor_info): New function.
(syms_of_window): Defsubr it.
* doc/lispref/windows.texi (Window Point): Document it.
* etc/NEWS: Announce new function.  (Bug#80023)
2026-01-03 12:57:28 +02:00
Eli Zaretskii
82e0951bda ; Mention in PROBLEMS the issue with XIM character-selection window
* etc/PROBLEMS: Describe the annoying XIM popup window.  Suggested
by Francesco Potortì <pot@potorti.it>.  (Bug#79423)
2026-01-03 12:30:12 +02:00
Stéphane Marks
51498a88cf Add frame parameters 'cloned-from' and 'undeleted' (bug#80104)
* lisp/frame.el (clone-frame): Set the frame parameter
'cloned-from'.
(undelete-frame): Set the frame parameter 'undeleted'.
* src/frame.c (syms_of_frame): <Qcloned_from> <Qundeleted>: New
DEFSYM.
(syms_of_frame): Add 'Qcloned_from' and 'Qundeleted' to
'frame_internal_parameters'.
* doc/lispref/frames.texi: Document these frame parameters.
* etc/NEWS: Announce the new frame parameters.
2026-01-03 09:28:03 +01:00
Eli Zaretskii
b51c95c1c7 ; Fix documentation of recent treesit changes
* etc/NEWS:
* src/treesit.c (Ftreesit_query_eagerly_compiled_p):
* doc/lispref/parsing.texi (Pattern Matching): Fix documentation
of the recent treesit-related changes.  (Bug#80108)
2026-01-02 14:48:58 +02:00
Yuan Fu
ad500a13e4
Compile queries in treesit-f-l-recompute-features (bug#80108)
The direct cause of the problem in the bug report is that when
user runs treesit-font-lock-recompute-features to add the
emacs-devel feature in c-ts-mode's mode hook, the added query
for emacs-devel aren't compiled.

This change consists of two parts:
1. The immediate fix: validate and compile queries in
treesit-font-lock-recompute-features.
2. To make it more fool-proof, change treesit-font-lock-rules
back to compile the queries and make
treesit--compile-query-with-cache support compiled queries. This
way, as long as the query goes through treesit-font-lock-rules,
it'll be compiled eventually and not cause slow-down. I had to
add some c-level functions, but they're kind of overdue anyway,
so I don't have any problem adding them to the API.

* lisp/treesit.el (treesit--compile-query-with-cache): Support
compiled queries.
(treesit-font-lock-rules): Compile the queries (but not
eagerly).
(treesit-font-lock-recompute-features): Validate and compile
queries.
(treesit-major-mode-setup): Remove call to
treesit-validate-and-compile-font-lock-rules since it's now
called in treesit-font-lock-recompute-features.

* src/treesit.c (Ftreesit_query_eagerly_compiled_p):
(Ftreesit_query_source): New functions.

* doc/lispref/parsing.texi (Pattern Matching): Add manual
entries for the new functions.
2026-01-01 23:21:27 -08:00
Eshel Yaron
e09990891f
; * etc/themes/modus-themes.el: Update comment.
See discussion here
https://lists.gnu.org/archive/html/emacs-devel/2026-01/msg00011.html
2026-01-02 07:45:14 +01:00
Sean Whitton
c31f6adc31 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
Sean Whitton
a03419b52c Factor out undo-ignore-read-only (bug#80049)
* lisp/vc/diff-mode.el (diff-undo): Rename to
undo-ignore-read-only.
(diff-mode-shared-map): Update "<remap> <undo>" binding.
* lisp/simple.el (undo-ignore-read-only): Rename from diff-undo.
* lisp/dired.el (dired-undo):
* lisp/proced.el (proced-undo): Call it.  New numeric prefix
argument to specify a repeat count.
* doc/emacs/dired.texi (Marks vs Flags):
* etc/NEWS: Document the change.
2025-12-31 18:10:48 +00:00
Protesilaos Stavrou
3e05de78df
Update Modus themes to their version 5.2.0
Release notes: <https://protesilaos.com/codelog/2025-12-31-emacs-modus-themes-5-2-0/>.
2025-12-31 10:47:14 +02:00
Sean Whitton
d79d748dee * lisp/vc/vc-hooks.el (vc-prefix-map): Move 'B' to 'o' (bug#80037). 2025-12-29 15:16:15 +00:00