Commit graph

14536 commits

Author SHA1 Message Date
Stéphane Marks
faf1932875 New macro setopt-local and function set-local (bug#80709)
'setopt-local' is the buffer local equivalent of 'setopt'.

Unify 'setopt', 'setopt-local', 'setq-local',
'buffer-local-set-state' with 'setq' to signal
'wrong-number-of-arguments'.

* lisp/cus-edit.el (setopt): Change error signal to
'wrong-number-of-arguments'.
(setopt-local): New macro.
(setopt--set-local): New function.
* lisp/subr.el (set-local): New function.
(setq-local, buffer-local-set-state): Signal
'wrong-number-of-arguments' rather than 'error'.
* doc/emacs/custom.texi (Examining): Document 'setopt-local'.
* etc/NEWS: Announce the new macro and function.
2026-04-02 13:47:36 -04:00
João Távora
dc7c36ea12 Eglot: release version 1.23
* lisp/progmodes/eglot.el (Version): Bump to 1.23.

* etc/EGLOT-NEWS: Announce new version.
2026-04-02 18:32:42 +01:00
João Távora
b93591551e Eglot: release version 1.22
* lisp/progmodes/eglot.el (Version): Bump to 1.22.
(Package-Requires): Bump eldoc to 1.16.0, flymake to 1.4.5,
jsonrpc to 1.0.27, xref to 1.7.0.

* etc/EGLOT-NEWS: Announce new version.
2026-04-01 22:37:01 +01:00
Sean Whitton
1f23eab568 newcomers-presets: Set two more variables
* etc/themes/newcomers-presets-theme.el (newcomers-presets): Set
column-number-mode and compilation-scroll-output.  Suggested by
Abdulnafé Toulaïmat <abdulnafe.toulaimat@gmail.com>.
2026-04-01 09:51:18 +01:00
Dmitry Gutov
cda65ffa58 Add xref-edit-mode (bug#80616)
Based on the existing grep-edit-mode code.

* lisp/progmodes/xref.el (xref-edit--prepare-buffer): New function.
(xref-edit-mode-map, xref-edit-mode-hook): New variables.
(xref-edit-mode, xref-change-to-xref-edit-mode)
(xref-edit-save-changes): New functions.
(xref--xref-buffer-mode-map): New binding ("e").

* doc/emacs/maintaining.texi (Identifier Search):
Mention xref-change-to-xref-edit-mode.

* etc/NEWS: Describe the addition.
2026-04-01 04:04:39 +03:00
Basil L. Contovounesios
d2a529d890 ; * etc/NEWS: Use US spelling in recent change. 2026-03-28 10:22:19 +01:00
Stephen Berman
3b7d9e37ce Implement new Dired handling of errors from 'ls'
The error messages are now displayed in a popped up buffer instead
of being output in the Dired buffer and signalling an error.  The
file name bounds in Dired entries are now determined solely by the
offsets calculated by 'ls' with the --dired option and
consequently Dired now reliably recognizes file names that contain
a newline (bug#80499).

* etc/NEWS: Announce new Dired handling of errors from 'ls'.

* lisp/dired.el (dired-internal-noselect): Check Dired buffer for
file entries and if there are none kill the buffer to prevent
displaying a Dired buffer with no file entries.
(dired--ls-error-buffer): New variable.
(dired--display-ls-error): New function.
(dired, dired-other-window, dired-other-frame, dired-other-tab):
Use it to pop up buffer with error message emitted by 'ls'.

* lisp/files.el (insert-directory-clean): Remove the code that
treats lines beginning at column 0 in a Dired buffer as error
lines and consequently also remove the code using these lines to
adjust the offsets specifying the bounds of the file name in the
Dired entries.  If the buffer contains a //DIRED-OPTIONS// line
output by --dired, delete this line even when it is at BOB.
(insert-directory): Remove the code that checks the return value
of 'ls' and signals an error based on that value.  Write any error
message emitted by 'ls' to a temporary file and insert its content
into a buffer, which will be popped when invoking a Dired command
results in the 'ls' error.  Adjust the comment above this function
to accommodate file names containing a newline in Dired entries.
(insert-directory-adj-pos): Remove this now unused function.

* test/lisp/dired-tests.el (dired-test-filename-with-newline-1)
(dired-test-filename-with-newline-2)
(dired-test-ls-error-message): New tests.

* test/lisp/files-tests.el
(files-tests-file-name-non-special-insert-directory): Adjust test
to use of 'ls' error buffer instead of signaling an error.
2026-03-27 16:36:16 +01:00
Philip Kaludercic
07baef0aff Elaborate the motivation for the "newcomers-presets" theme 2026-03-27 10:29:42 +01:00
Basil L. Contovounesios
d780007283 Add predicate for initial_terminal
This introduces the predicate frame-initial-p, which uses
struct frame.output_method or struct terminal.type to detect
initial_terminal without relying on its name (bug#80629).
For some prior discussion, see:
https://lists.gnu.org/r/emacs-devel/2019-12/msg00480.html
https://lists.gnu.org/r/emacs-devel/2020-01/msg00120.html

* doc/lispref/frames.texi (Frames): Document frame-initial-p.
(Finding All Frames): Fix grammar.
* etc/NEWS (Lisp Changes in Emacs 31.1): Announce frame-initial-p.
* lisp/desktop.el (desktop--check-dont-save):
* lisp/emacs-lisp/debug.el (debug):
* lisp/frameset.el (frameset-restore):
* lisp/menu-bar.el (menu-bar-update-buffers):
* lisp/xt-mouse.el (turn-on-xterm-mouse-tracking-on-terminal):
Use frame-initial-p instead of checking the "initial_terminal" name.
* lisp/emacs-lisp/byte-opt.el: Mark frame-initial-p as error-free.

* src/pgtkterm.c (pgtk_focus_changed): Use IS_DAEMON in place of
Fdaemonp, thus also accepting a named daemon session.
* src/terminal.c (decode_tty_terminal): Clarify commentary.
(Fframe_initial_p): New function.
(syms_of_terminal): Expose it.
(init_initial_terminal): Update commentary now that
menu-bar-update-buffers uses frame-initial-p (bug#53740).

* test/lisp/xt-mouse-tests.el (with-xterm-mouse-mode): Simulate the
lack of an initial terminal by overriding frame-initial-p now
that turn-on-xterm-mouse-tracking-on-terminal uses it.
* test/src/terminal-tests.el: New file.
2026-03-26 15:19:56 +01:00
Basil L. Contovounesios
a4d99971d8 Fix recent whitespace.el changes
* etc/NEWS
(Changes in Specialized Modes and Packages in Emacs 31.1):
Announce new user option whitespace-global-mode-buffers (bug#79230).
* lisp/whitespace.el (whitespace-global-modes): Improve docstring
grammar.
(whitespace-global-mode-buffers): Make default value match *scratch*
exactly for backward compatibility.  Fix custom :type.
(whitespace-enable-predicate): Prefer any over seq-find.
2026-03-23 16:53:57 +01:00
Eli Zaretskii
aefa854d01 ; * etc/NEWS: Fix wording. 2026-03-21 09:07:25 +02:00
Stefan Monnier
378cfb8660 (Fmakunbound): Break aliasing, if present (bug#80538)
* src/data.c (Fmakunbound): Break aliasing, if present.
* doc/lispref/variables.texi (Void Variables): Document it.
2026-03-20 17:21:05 -04:00
Elias Gabriel Perez
5c961f4903 hideshow: Fix 'hs-hide-block-behavior' set to 'after-cursor'.
Bug#80455.

* etc/NEWS: Document changed behavior.

* lisp/progmodes/hideshow.el (hs-get-near-block): Remove
'forward-line'.
(hs-hide-block-behavior): Update docstring.

* doc/emacs/programs.texi (Hideshow): Update.

Suggested-by: Dima Kogan <dima@secretsauce.net>
2026-03-19 17:27:57 +02:00
Elías Gabriel Pérez
c911495fb1 hideshow: New minor mode 'hs-indentation-mode'. (Bug#80179)
This minor mode configures hs-minor-mode to use
indentation-based folding.

* lisp/progmodes/hideshow.el (hs-hideable-block-p): New
function.
(hs-indentation-respect-end-block): New option.
(hs-indentation--store-vars): New variable.
(hs-cycle-filter, hs-get-first-block-on-line, hs-get-near-block)
(hs-find-block-beg-fn--default): Adapt code to use
'hs-hideable-block-p'.
(hs-block-positions): Update.
(hs-indentation-mode): New minor mode.

* doc/emacs/programs.texi (Hideshow): Update documentation.

* etc/NEWS: Announce changes

* test/lisp/progmodes/hideshow-tests.el: Add 'require'.
(hideshow-check-indentation-folding): New test.
2026-03-19 17:11:54 +02:00
Stefan Monnier
e2004eb56f Merge remote-tracking branch 'origin/scratch/error-API' 2026-03-15 17:17:21 -04:00
Sean Whitton
14037f5852 Set frame-inhibit-implied-resize in newcomers-presets
* etc/themes/newcomers-presets-theme.el (newcomers-presets): Set
frame-inhibit-implied-resize as suggested by Martin Rudalics.
2026-03-15 20:22:18 +00:00
Philip Kaludercic
55f0f2056c
Add new function 'ensure-proper-list' (bug#80598)
* doc/lispref/lists.texi (Building Lists): Document it.
* etc/NEWS: Mention it.
* lisp/emacs-lisp/shortdoc.el (list): Demonstrate it.
* lisp/subr.el (ensure-proper-list): Add it.
2026-03-15 10:52:01 +01:00
Michael Albinus
b38aac5439 ; * etc/NEWS: Presentational fixes and improvements. 2026-03-15 09:44:42 +01:00
Philip Kaludercic
9b97d84318
Add references to "User Lisp" Info node where applicable
* etc/NEWS: Update 'package-vc-install-from-checkout'
obsoletion notice.
* lisp/emacs-lisp/package-vc.el (package-vc-install-from-checkout):
Update obsoletion declaration.
2026-03-14 16:17:51 +01:00
Eli Zaretskii
44fa418987 ; * etc/NEWS: Improve one entry. 2026-03-14 09:29:58 +02:00
Dmitry Gutov
949f035544 etags-regen: Don't try to generate tags during completion, by default
* etc/NEWS: Describe the change.

* lisp/progmodes/etags-regen.el
(etags-regen-create-on-completion): New option.
(etags-regen-create-on-completion--set): New function.
(etags-regen-mode): Use it.  Discussed in
https://lists.gnu.org/archive/html/emacs-devel/2026-03/msg00405.html
2026-03-14 04:28:32 +02:00
Philip Kaludercic
ac39b7c451
* etc/NEWS: Announce 'package-vc-install-from-checkout' obsoletion
(Bug#80604)
2026-03-13 23:50:05 +01:00
Basil L. Contovounesios
5c2cb4ced4 ; * etc/NEWS.27: Remove duplicate entry.
This was already announced in etc/NEWS.26.
2026-03-13 09:45:23 +01:00
Philip Kaludercic
d019b5ec71
Add 'xref-mouse-mode' minor mode
* doc/emacs/maintaining.texi (Looking Up Identifiers): Document
it.
* etc/NEWS (bindings): Mention it.
* etc/themes/newcomers-presets-theme.el (newcomers-presets): Add
it.
* lisp/progmodes/xref.el (xref-mouse-mode-map, xref-mouse-mode)
(global-xref-mouse-mode): Implement it.
2026-03-12 09:01:08 +01:00
Eli Zaretskii
e2f445dfae ; * etc/NEWS: Rearrange sections. 2026-03-12 08:59:21 +02:00
Philip Kaludercic
d12ecf8aa6
; Fix broken syntax in newcomers-presets-theme 2026-03-11 22:44:10 +01:00
Philip Kaludercic
6f337499e6
; Add missing documentation for new 'cus-edit' bindings
* doc/emacs/custom.texi (Changing a Variable):
* etc/NEWS: Mention them.
2026-03-11 22:12:55 +01:00
Philip Kaludercic
4d398ae00c
Adjust structure of 'newcomers-presets-mode-enabled-local-modes'
* etc/themes/newcomers-presets-theme.el
(newcomers-presets-mode-enabled-local-modes): Interpret the
variable as a proper alist without duplicate keys.
(newcomers-presets-mode): Handle new structure.
2026-03-11 22:12:55 +01:00
Basil L. Contovounesios
8d356c55ad Tweak recent error descriptor changes
* etc/NEWS: Fix capitalization and markup.
* lisp/emacs-lisp/ert.el (ert--should-error-handle-error): Prefer
any over cl-some where either will do.
* lisp/epa-file.el (epa-file--find-file-not-found-function):
Reindent.
(epa-file--error-add-context): Use correct variables.  Add
docstring.
* lisp/ffap.el (ffap-machine-p):
* lisp/gnus/nnmaildir.el (nnmaildir--emlink-p): Prefer
string-equal-ignore-case over case fiddling.
* lisp/gnus/gnus-search.el (gnus-search-run-query): Fix typo in
error re-signaling.
* lisp/ibuffer.el (ibuffer-confirm-operation-on): Prefer string
search over regexp matching where either will do.
* test/lisp/vc/vc-tests/vc-tests.el
(vc-test--run-maybe-unsupported-function): Pacify unused
condition-case error variable warnings (bug#72212).
2026-03-11 16:05:04 -04:00
Stefan Monnier
eb8962758f etc/NEWS.26 (Changes in Emacs 26.1): List new names (for C-h f) 2026-03-11 13:46:43 -04:00
Stefan Monnier
261f4a012e (subr-error-API): New test. Also, improve the etc/NEWS
* test/lisp/subr-tests.el (subr-error-API): New test.
2026-03-11 12:39:14 -04:00
Michael Albinus
652df742c3 ; * etc/NEWS: Presentational fixes and improvements. 2026-03-11 09:01:26 +01:00
Stefan Monnier
66bd2ce8e6 (smerge-refine-regions): Refactor a bit and work between buffers
* lisp/vc/smerge-mode.el (smerge--refine-chopup-region):
Replace `beg..end` arg with an overlay.
(smerge-refine-regions): Replace `beg` arg with an overlay.
(smerge--refine-prepare-regions, smerge--refine-apply-diff-1):
New functions, extracted from `smerge-refine-regions`.
(smerge--refine-apply-diff): New function.
(smerge-refine-regions): Use them.  Also delete temp files right after
running `diff` rather than after applying diff's output.
2026-03-10 15:52:35 -04:00
Stefan Monnier
a1358530f5 Improve the error API
Define new functions to manipulate error descriptors and
add support for `signal` to *re*signal a previous error.

 * src/eval.c (Fsignal): Make the second arg optional and document
the possibility of passing a whole error descriptor to re-signal it.
(signal_or_quit): Fix a few corner case issues when
DATA is `nil` and ERROR_SYMBOL is an error descriptor.

* lisp/subr.el (error-type-p, error--p, error-type, error-data)
(error-has-type-p, error-slot-value): New function.

* doc/lispref/control.texi (Handling Errors): Prefer "error descriptor"
to "error description".  Use the new single-arg call to `signal` to
re-throw an error.
Document `error-type`, `error-data` and `error-slot-value`.
(Error Symbols): Document the new functions `error-type-p` and
`error-has-type-p`.
2026-03-10 10:48:10 -04:00
Sean Whitton
a9432736f7 newcomers-presets: Drop after-save-hook entry
* etc/themes/newcomers-presets-theme.el
(newcomers-presets-mode-enabled-local-modes): Remove
executable-make-buffer-file-executable-if-script-p.
2026-03-09 20:27:10 +00:00
Sean Whitton
a129354933 newcomers-presets: Always show the tab bar
* etc/themes/newcomers-presets-theme.el (newcomers-presets): Set
tab-bar-show to 0.
2026-03-09 11:41:22 +00:00
Sean Whitton
64b0389a2c ; newcomers-presets: Fix adding to after-save-hook. 2026-03-06 14:37:18 +00:00
Eli Zaretskii
5c1ef38b5b Fix last change in recentf.el
* lisp/recentf.el (recentf-exclude-ignored-extensions): Doc fix.
(recentf-exclude-file-by-extension-p): Rename from
`recentf-exclude-ignored-extensions'; all references changed.
Doc fix.

* etc/NEWS: Improve wording of the entry which announces the
above.
2026-03-06 09:08:03 +02:00
Stéphane Marks
81d2a7a2f5
New user option and function 'recentf-exclude-ignored-extensions'
* lisp/recentf.el (recentf-exclude-ignored-extensions): New
user option.
(recentf-exclude-ignored-extensions): New function.
* etc/NEWS: Announce the new option and function.

(Bug#80347)
2026-03-05 22:08:44 +01:00
Sean Whitton
8d16a0557d New user option vc-display-failed-async-commands
* lisp/vc/vc-dispatcher.el (vc-display-failed-async-commands):
New user option.
(vc-do-async-command): Use it.
* doc/emacs/vc1-xtra.texi (General VC Options):
* etc/NEWS: Document it.
* lisp/vc/vc-dispatcher.el (vc-do-command): Adjust message to
begin "Failed" not "Done" when command exits non-zero.
* lisp/vc/vc.el (vc-checkin): Adjust message to end in
"...failed" not "...done" when async command exits non-zero.
2026-03-05 13:24:27 +00:00
Stéphane Marks
192d4fc1f7 Make 'frame-use-time' more reliable. (bug#80397)
Walking the window tree is more reliable than using the selected
window.  Implement 'get-mru-frame' on top of 'get-mru-frames'
using 'frame-use-time'.

* lisp/frame.el (frame-use-time): Change to walk the window tree
for the specified frame.
(get-mru-frames): New defun.
(get-mru-frame): Change to call 'get-mru-frames'.
* doc/lispref/frames.texi: Update documentation.
* etc/NEWS: Update announcement.
2026-03-05 09:58:03 +01:00
Sean Whitton
7d63d267f2 Rename 'any' to 'member-if' and deprecate 'cl-member-if'
* lisp/subr.el (any): Rename from this ...
(member-if): ... to this.  All uses changed.
(any): New function alias.
* lisp/emacs-lisp/cl-seq.el (cl-member-if): Mark obsolete.
* lisp/obsolete/cl.el (member-if): Delete obsolete function
alias.
* doc/lispref/lists.texi (List Elements):
* doc/misc/cl.texi (Lists as Sets):
* etc/NEWS: Document the change.
2026-03-04 14:43:05 +00:00
Sean Whitton
4ce94139ae New command 'unfill-paragraph'
* lisp/simple.el (unfill-paragraph): New command.
* doc/emacs/indent.texi (Indentation Commands):
* etc/NEWS: Document it.
2026-03-04 14:20:47 +00:00
Mattias Engdegård
7eba545a4e Revert "Rename 'any' to 'member-if' and deprecate 'cl-member-if'"
This reverts commit 2bdf15f6d8.

There is no consensus for this change.
2026-03-03 17:21:35 +01:00
Eli Zaretskii
1a9a4d263a ; * etc/NEWS: Fix last change. 2026-03-03 16:28:53 +02:00
Manuel Giraud
d272dedf8c Add mirroring for special glyphs (bug#80440)
See initial discussion here:
https://lists.gnu.org/archive/html/emacs-devel/2026-02/msg00400.html

* lisp/international/characters.el (pairs): Populate
special-mirror-table.
* src/xdisp.c (produce_special_glyphs): Add two arguments.  One
to identify the paragraph direction and one to identify that the
glyph is produced on the left hand side of a window.  Mirror
glyph defined in the display table according to the new
special-mirror-table.  Bidi mirroring always takes precedence.
(init_iterator, insert_left_trunc_glyphs, display_line)
(display_string): Call 'produce_special_glyphs' with new arguments.
(syms_of_xdisp) <special-mirror-table>: New char-table.
* etc/NEWS: Announce the change.
2026-03-03 16:24:58 +02:00
Sean Whitton
2bdf15f6d8 Rename 'any' to 'member-if' and deprecate 'cl-member-if'
* lisp/subr.el (any): Rename from this ...
(member-if): ... to this.  All uses changed.
Implement '&key KEY-FN' for backwards compatibility.
(any): New function alias.
* lisp/emacs-lisp/cl-seq.el (cl-member-if): Make an alias for
'member-if'.
* lisp/obsolete/cl.el (member-if): Delete obsolete function
alias.
* doc/lispref/lists.texi (List Elements):
* doc/misc/cl.texi (Lists as Sets):
* etc/NEWS: Document the change.
2026-03-03 13:57:07 +00:00
Eli Zaretskii
73a2a5cd05 ; Fix documentation of recent changes in treesit.el
* etc/NEWS:
* doc/lispref/parsing.texi (User-defined Things): Fix punctuation,
markup and typos.
2026-03-03 15:21:12 +02:00
Sean Whitton
afcc930833 Add some settings to newcomers-presets
* etc/themes/newcomers-presets-theme.el (newcomers-presets): Add
mode-line-compact, indent-tabs-mode, imenu-auto-rescan,
view-read-only, shell-command-prompt-show-cwd, after-save-hook,
etags-regen-mode, vc-deduce-backend-nonvc-modes,
vc-dir-save-some-buffers-on-revert, vc-find-revision-no-save,
vc-follow-symlinks, vc-use-incoming-outgoing-prefixes,
tab-bar-history-mode.
2026-03-03 10:42:22 +00:00
Yuan Fu
18c24866af
Make tree-sitter thing navigation handle nested parsers
Not a bug report, but this is from the emacs-devel thread
"Tree-sitter: Transcendental things".

Improve tree-sitter thing navigation functions to handle the
case where there are multiple nested parsers in the
buffer. Previously these functions just grab the node at point
and are limited to the parser of that node.  Now these functions
will thoUrouly search through all parsers that covers point
before giving up.

* doc/lispref/parsing.texi: Mention the change.
* lisp/treesit.el (treesit--some): New macro.
(treesit--thing-sibling): Use the new macro, add a new PARSER
parameter.
(treesit-thing-prev):
(treesit-thing-next): Add PARSER parameter.
(treesit-thing-at):
(treesit-navigate-thing): Use the new macro, add a new PARSER
parameter.  Also pass the PARSER arg to recursive calls and
calls to treesit-thing-prev, etc.
2026-03-02 23:59:46 -08:00