Commit graph

99493 commits

Author SHA1 Message Date
Sean Whitton
da9792166b ; * lisp/ldefs-boot.el: Regenerate. 2026-01-17 17:20:22 +00: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
Sean Whitton
6e4bceb8ce Automatically detect the VC outgoing base (bug#80006)
* lisp/vc/vc-git.el (vc-git--current-branch): Rename to ...
(vc-git-working-branch): ... this.  All uses changed.
(vc-git-trunk-or-topic-p, vc-git-topic-outgoing-base):
* lisp/vc/vc-hg.el (vc-hg--working-branch, vc-hg-working-branch)
(vc-hg-trunk-or-topic-p, vc-hg-topic-outgoing-base):
* lisp/vc/vc-hooks.el (vc--safe-branch-regexps-p):
* lisp/vc/vc.el (vc-default-working-branch)
(vc-default-trunk-or-topic-p, vc--match-branch-name-regexps)
(vc--outgoing-base, vc--outgoing-base-mergebase)
(vc--maybe-read-outgoing-base): New functions.
(vc-diff-outgoing-base): Call vc--outgoing-base-mergebase.
(vc-root-diff-outgoing-base, vc-diff-outgoing-base): Use
vc--maybe-read-outgoing-base in interactive specification.
(working-branch, trunk-or-topic-p, topic-outgoing-base): New
specifications for backend functions.
(vc-trunk-branch-regexps, vc-topic-branch-regexps): New
variables.
* .dir-locals.el: Commented entries for the new variables.
* test/lisp/vc/vc-tests/vc-test-misc.el
(vc-test-match-branch-name-regexps): New test.
* doc/emacs/vc1-xtra.texi (Outstanding Changes): Document the
new functionality.
2026-01-17 17:17:51 +00:00
kobarity
83b4f1ba26 Performance improvement of 'python-shell-get-process'
'python-shell-get-process' is frequently called from
'python-eldoc--get-doc-at-point' and etc., invoking
'project-current' unless there is a buffer-specific Inferior
Python process.  When the buffer is a remote buffer not
belonging to any project and has significant latency,
'project-current' may take a long time.  To avoid this,
implement a process cache in 'python-shell-get-process'.

* lisp/progmodes/python.el (python-shell--process-cache)
(python-shell--process-cache-valid): New variables.
(python-shell--invalidate-process-cache): New function.
(python-shell-make-comint): Add a call to the above function.
(python-shell-get-process): Add process cache.  (Bug#80045)
2026-01-17 18:09:03 +02:00
Jostein Kjønigsen
83f4e48106 csharp-mode.el: Fix indentation after preprocessor statements
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--indent-rules):
Add rules for preprocessor statements.  (Bug#80202)
2026-01-17 17:34:16 +02:00
Pig Fang
023bf05816 Eglot: support 'wat-mode'
* lisp/progmodes/eglot.el (eglot-server-programs): Add wat_server.
(Bug#80188)

Copyright-paperwork-exempt: yes
2026-01-17 17:02:19 +02:00
USAMI Kenta
c68c5fbe14 ; Remove redundant cl-lib runtime dependencies across lisp/
* lisp/editorconfig-tools.el:
* lisp/emacs-lisp/shorthands.el:
* lisp/info-xref.el:
* lisp/international/quail.el:
* lisp/international/rfc1843.el:
* lisp/mail/ietf-drums.el:
* lisp/mail/rfc2047.el:
* lisp/mail/yenc.el:
* lisp/net/pop3.el:
* lisp/net/sasl-scram-sha256.el:
* lisp/net/shr-color.el:
* lisp/progmodes/grep.el:
* lisp/scroll-bar.el:
* lisp/textmodes/emacs-news-mode.el:
* lisp/textmodes/reftex-auc.el:
* lisp/textmodes/reftex-dcr.el:
* lisp/textmodes/reftex-global.el:
* lisp/textmodes/reftex-sel.el:
* lisp/url/url-dav.el:
* lisp/vc/vc-src.el:
* lisp/xwidget.el:
* lisp/yank-media.el: Remove redundant (require 'cl-lib).
(Bug#80129)
2026-01-17 15:32:15 +02:00
USAMI Kenta
4efc4dcf30 ; Gnus: Remove redundant cl-lib runtime dependencies
Since Emacs 31 moves 'incf' and 'decf' to core, these Gnus
libraries no longer require 'cl-lib' at runtime.
* lisp/gnus/gnus-async.el:
* lisp/gnus/gnus-cache.el:
* lisp/gnus/gnus-logic.el:
* lisp/gnus/gnus-salt.el:
* lisp/gnus/gnus-spec.el:
* lisp/gnus/gnus-srvr.el:
* lisp/gnus/gnus-topic.el:
* lisp/gnus/gnus-uu.el:
* lisp/gnus/gnus-win.el:
* lisp/gnus/mm-encode.el:
* lisp/gnus/mm-url.el:
* lisp/gnus/nnatom.el:
* lisp/gnus/nnbabyl.el:
* lisp/gnus/nndoc.el:
* lisp/gnus/nneething.el:
* lisp/gnus/nnmail.el:
* lisp/gnus/nnoo.el:
* lisp/gnus/nnspool.el:
* lisp/gnus/nnvirtual.el:
* lisp/gnus/nnweb.el: Remove redundant (require 'cl-lib).
(Bug#80129)
2026-01-17 15:28:58 +02:00
Daniel Mendler
b04fbc59e9 gnus-msg-mail: Attempt to start Gnus if not yet alive
* lisp/gnus/gnus-msg.el (gnus-msg-mail): Attempt to start Gnus
if not yet alive.  In case of failure, fall back to plain
message mode.  (Bug#80173)
2026-01-17 15:08:52 +02:00
kobarity
c97b8e6650 Improve non-native completion in Python mode
Previously, both the definition of __PYTHON_EL_get_completions
and the call to __PYTHON_EL_get_completions were sent to the
inferior Python each time
'python-shell-completion-get-completions' was executed.
However, there is no need to send the definition every time as
long as the definition remains unchanged.  We improved this so
that the definition of __PYTHON_EL_get_completions is only sent
during the inferior Python initialization; it is no longer sent
during 'python-shell-completion-get-completions' execution.
* lisp/progmodes/python.el
(python-shell-completion-send-setup-code): New function.
(python-shell-first-prompt-hook): Add the above new function.
(python-shell-completion-get-completions): Omit sending
'python-shell-completion-setup-code'.  (Bug#80182)
2026-01-17 15:05:33 +02:00
Jacob S. Gordon
6e37af1fe8 ; calc: Correct width of rules composed of Unicode glyphs
With higher values of 'calc-string-maximum-character', rules
made up of glyphs of non-unit width can be the wrong length.
Calculate the number of characters in the rule based on the
display width, rounded up to the nearest integer.  Refines
feature introduced in bug#78528.
* lisp/calc/calccomp.el (math-comp-simplify-term): Calculate
rule width with a ratio of 'string-pixel-width's.
2026-01-17 14:51:01 +02:00
Jacob S. Gordon
b233ca80e9 ; calc: Improve alignment for Unicode strings
With higher values of 'calc-string-maximum-character' the
string length can differ from the displayed width.  Calculate
alignment offsets based on the the display width, rounded up to
the nearest integer.  Refines feature introduced in bug#78528.
* lisp/calc/calccomp.el (math-comp-width): Replace 'length' with
a ratio of 'string-pixel-width's.
2026-01-17 14:49:53 +02:00
Jacob S. Gordon
bd96450a09 calc: Improve handling of invalid 'calc-string-maximum-character'
Previously, if 'calc-string-maximum-character' wasn't a valid
character 'math-vector-is-string' would throw an error in the
comparison, leading to an incomplete display of the stack and a
cryptic error message.  Instead, have 'math-vector-is-string'
return nil, which effectively disables the display of strings.
Refines feature introduced in bug#78528.
* doc/misc/calc.texi (Customizing Calc): Update description of
behavior for invalid 'calc-string-maximum-character'.
* lisp/calc/calccomp.el (math-vector-is-string): Return nil when
'calc-string-maximum-character' doesn't represent a character.
* test/lisp/calc/calc-tests.el (calc-math-vector-is-string): Correct
and simplify tests.
2026-01-17 14:48:06 +02: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
Jared Finder
8e4f96cffb Fix behavior for ielm-dynamic-multiline-inputs (bug#80123)
* lisp/ielm.el (ielm-return): Navigate to before the prompt when
looking for prompt (bug#80123).
2026-01-15 11:12:12 +00: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
Rudolf Adamkovič
c86067778b Update SQLite font-lock rules
* lisp/progmodes/sql.el (sql-mode-sqlite-font-lock-keywords):
Synchronize all SQLite keywords with the official documentation.
2026-01-15 10:56:45 +00:00
Andrea Corallo
a44c736c26 * Fix 'message' function signature
* lisp/emacs-lisp/comp-common.el(comp-primitive-type-specifiers): Fix
'message' entry.
2026-01-15 11:08:20 +01: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
4d9abf0bdf (define-ibuffer-column): Fix corner case miscompilations (bug#80180)
* lisp/ibuf-macs.el (define-ibuffer-column): Don't quote the
SUMMARIZER functions as data.
2026-01-14 16:52:09 -05: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
Stefan Monnier
4af7b4ce04 (package-install): Fix accidental regression
* lisp/emacs-lisp/package.el (package-install): Remove code re-added
probably by erroneous merge.
2026-01-14 15:27:51 -05:00
Mattias Engdegård
e7c5ab2015 ; * lisp/emacs-lisp/regexp-opt.el (regexp-opt-group): Clarify intent. 2026-01-14 19:53:23 +01:00
Sean Whitton
02966c8db5 ; Improve docs for last change. 2026-01-14 18:48:56 +00: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
Spencer Baugh
72cd956564 Add new up-down option for minibuffer-visible-completions
* lisp/emacs-lisp/crm.el (completing-read-multiple): Call
'minibuffer-visible-completions--maybe-compose-map'.
* lisp/minibuffer.el (completion-in-region-mode): Call
'minibuffer-visible-completions--maybe-compose-map'.
(minibuffer-visible-completions): Add new value 'up-down' (bug#80024).
(minibuffer-visible-completions-up-down-map): Add.
(minibuffer-visible-completions--maybe-compose-map): Add helper
function.
(completing-read-default): Call
'minibuffer-visible-completions--maybe-compose-map'.
* lisp/simple.el (completion-setup-function): Check
'minibuffer-visible-completions' is t, not just non-nil.
2026-01-14 20:47:07 +02:00
Juri Linkov
1e6d8e6750 * lisp/progmodes/project.el: Improve performance of 'project-mode-line'.
(project-name-cache-timeout): New variable.
(project-name-cached): New function (bug#78545).
(project-mode-line): New value 'non-remote'.
(project-mode-line-format): Don't show the remote project's name
when 'project-mode-line' is 'non-remote'.  Use 'project-name-cached'.
2026-01-14 20:07:23 +02: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
Sean Whitton
65655ccfae ; * lisp/vc/vc.el (vc-diff-outgoing-base): Document FILESET param. 2026-01-14 12:18:41 +00:00
Jared Finder
9618ac339d Reset Xterm cursor color to default when face is unspecified
* lisp/term/xterm.el (xterm-update-cursor): Mention OSC 112 in
doc string.
(xterm--reset-cursor-color-escape-sequence): New constant.
(xterm--init-update-cursor, xterm--update-cursor-color): Use it
(bug#80091).
2026-01-14 11:35:36 +00:00
Stefan Monnier
986aaf06cd (loaddefs-generate--make-autoload): Fix bug#80180
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--make-autoload):
Avoid accidentally loading the `.elc` file.
2026-01-13 16:54:40 -05:00
Jonas Bernoulli
ab8b052888
* lisp/icomplete.el (icomplete--render-vertical): Avoid trailing whitespace
When a completion candidate has no suffix, then there is no need to
add whitespace "between" the candidate and suffix, since there is no
need to align suffixes if there are none.  In this case the trailing
whitespace only serves to needlessly make all candidates the same
length, with the result that if one candidate does not fit one a
single line, then all other candidates are made to not fit either.
2026-01-13 22:19:51 +01:00
Stefan Monnier
a9bf57155b package.el: Fix bug#80172
* lisp/emacs-lisp/package-activate.el: Move defvar of
`Info-directory-list` to when we know it should exist.

* lisp/emacs-lisp/package.el (Info-directory-list): Defvar before we
`let-bind it.
2026-01-13 15:23:31 -05:00
Manuel Giraud
66ff6064f5 Fix buffer menu unmark (bug#80082)
Now when calling 'Buffer-menu-unmark-all-buffers', only the
selected mark is removed.

* lisp/buff-menu.el (Buffer-menu--unmark): Add a mark parameter
to correctly select it in the entry.
(Buffer-menu-unmark, Buffer-menu-unmark-all-buffers)
(Buffer-menu-backup-unmark): Usage.
2026-01-13 20:49:03 +02:00
Stefan Monnier
3e2ee9869d sgml-mode.el: Prefer forward-sexp over forward-list
They're always called immediately before a `<` char, in which case
they do the same anyway.  This saves us from having to touch
 `forward-list-function` in addition to `forward-exp-function`.

While at it, change `sgml-tags-invisible` to use `define-minor-mode`.

* lisp/textmodes/sgml-mode.el (sgml-delete-tag)
(sgml-electric-tag-pair-before-change-function): Prefer `forward-sexp`
over `forward-list`.
(sgml-tags-invisible): Define with `define-minor-mode`.  Don't disable
`cursor-sensor-mode` when we don't need it any more, since some other
package may be using it.  Remove redundant binding of `inhibit-read-only`.
2026-01-13 10:18:46 -05:00
Stefan Monnier
cffc4278eb (forward-sexp-function): Give it a default value
* lisp/emacs-lisp/lisp.el (forward-sexp-function): Give it a default value.
(forward-sexp): Simplify a bit.
(up-list-default-function): Fix for `forward-sexp-default-function`.
2026-01-13 09:26:20 -05:00
Stefan Monnier
b456ffc994 (forward-list-function): Give it a default value
* lisp/emacs-lisp/lisp.el (forward-list-function): Give it a default value.
(forward-list): Simplify.
2026-01-13 09:11:40 -05: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
Juri Linkov
52875b51bf * lisp/textmodes/html-ts-mode.el: Special handling of 'show-paren-mode'.
(html-ts-mode--show-paren-data): New function to exclude
unbalanced tags when the closing tag is missing.
(html-ts-mode): Set 'show-paren-data-function' to
'html-ts-mode--show-paren-data' (bug#80151).
2026-01-13 09:54:55 +02:00
Juri Linkov
578750c7c8 * lisp/textmodes/sgml-mode.el: Fix for html-ts-mode.
(sgml-electric-tag-pair-before-change-function):
Let-bind 'forward-list-function' to nil.
(sgml-delete-tag): Let-bind 'forward-sexp-function'
and 'forward-list-function' to nil.
(sgml-tags-invisible): Let-bind 'forward-list-function' to nil.

All this is required to use the default definitions of sexp/list
that significantly differ from treesit definitions (bug#80151).
2026-01-13 09:50:17 +02:00
Eli Zaretskii
ec3ade22fc ; Fix a recent change of tab-bar/line faces
* lisp/tab-line.el (tab-line-tab, tab-line-tab-inactive)
(tab-line-highlight, tab-line-tab-current):
* lisp/tab-bar.el (tab-bar-tab, tab-bar-tab-inactive):
* lisp/faces.el (tab-line, tab-bar): Update :version of modified
faces.
2026-01-12 15:10:59 +02:00
Sean Whitton
eb4c5f0095 vc--read-branch-to-log: Pass BACKEND to vc-read-revision
* lisp/vc/vc.el (vc--read-branch-to-log): When passing FILES to
vc-read-revision, also pass BACKEND.  Necessary in some cases.
2026-01-12 10:39:28 +00:00
Sean Whitton
fb09c11482 ; whitespace-global-modes: Replace "automagically". 2026-01-12 10:38:29 +00:00
Sean Whitton
c270402f71 save-place-alist-to-file: Use prin1, not pp (bug#80183)
* lisp/saveplace.el (save-place-alist-to-file): Use 'prin1', not
'pp' (bug#80183).  Suggested by Daniel Mendler
<mail@daniel-mendler.de>.
2026-01-12 09:59:40 +00:00
Stefan Monnier
9dcf0bc428 Fix recent test suite regression (bug#80177)
* lisp/emacs-lisp/cl-generic.el (cl--generic-make-function):
Preserve advertised-calling-convention info.

* test/lisp/emacs-lisp/pcase-tests.el (pcase-tests-quote-optimization):
Require `byte-opt` to fix the test when the compiler is not loaded yet.

* lisp/progmodes/elisp-mode.el: Fix some >80column problems.
(elisp--xref-format-extra)
(elisp--xref-format): Make them constant, now that we don't have
the purespace.  Also, use %S since some of the elements
don't necessarily have names and even if they do, we'd want to
escape any funny characters in them to avoid ambiguities.
(elisp--xref-find-definitions): Fix uses of
`elisp--xref-format-extra` accordingly.
Improve heuristic to distinguish proper `cl-defgeneric` from
implicit ones.
(elisp-eldoc-docstring-length-limit)
(elisp-eldoc-funcall-with-docstring-length): Remove redundant `:group`.
* lisp/cedet/mode-local.el (xref-mode-local-overload): Pass the
override symbol rather than its name through `elisp--xref-format-extra`.
* test/lisp/progmodes/elisp-mode-tests.el (find-defs-constructor):
Adjust test to new text.
2026-01-11 18:26:53 -05:00
Juri Linkov
762902c2c6 Adapt tab-bar/tab-line faces to dark background mode (bug#80135)
* lisp/faces.el (tab-bar, tab-line): Adapt to dark background.
Suggested by Philip Kaludercic <philipk@posteo.net>.

* lisp/tab-bar.el (tab-bar-tab, tab-bar-tab-inactive, tab-bar-tab-highlight):
* lisp/tab-line.el (tab-line-tab, tab-line-tab-inactive)
(tab-line-tab-current, tab-line-highlight): Adapt faces to dark background.
2026-01-11 20:58:28 +02:00
João Távora
990ef36510 Eglot: support textDocument/prepareRename for more accurate eglot-rename
See https://github.com/joaotavora/eglot/issues/1554.

* lisp/progmodes/eglot.el (eglot--rename-interactive): New helper.
(eglot-rename): Use it.
2026-01-11 18:28:25 +00:00