Commit graph

14559 commits

Author SHA1 Message Date
Juri Linkov
330ccd3368 Rebind 'tab-bar-mouse-close-tab' from <down-mouse-2> to <mouse-2>
* lisp/tab-bar.el (tab-bar-map): Unbind <mouse-2> from 'ignore'.
Bind 'tab-bar-mouse-close-tab' to <mouse-2> instead of <down-mouse-2>
(bug#80858).
2026-04-21 19:30:03 +03:00
Roi Martin
62e3549f78 Show executed tests from erts files via the ERT results buffer
* lisp/emacs-lisp/ert.el: Add key binding.
(ert--erts-file-test-execution-observer): New variable.
(ert--signal-erts-file-test-execution): New function.
(ert-test-result): Add field.
(ert-run-test): Collect tests from erts files.
(ert-results-mode-menu): Add entry.
(ert--erts-file-test-name-button): New button type.
(ert--erts-file-test-name-button-action): New function.
(ert-results-pop-to-erts-file-tests-for-test-at-point): New function.
(ert-test--erts-test): Record execution of test from erts file.
* doc/misc/ert.texi (Running Tests Interactively): Update manual.
* etc/NEWS: Update NEWS.  (Bug#80806)
2026-04-21 12:30:48 +02:00
Kyle Meyer
0d8ccbfe59 Update to Org 9.8.3 2026-04-19 23:10:39 -04:00
Stephen Berman
abde2d1ed3 Restrict Dired handling of newlines in file names
* lisp/dired.el (dired--ls-accept-b-switch-p): New function.
(dired-internal-noselect): Use it in the condition on displaying
warning about filenames with newlines.
(dired--set-auto-toggle-b-switch): Use it to conditionalize
calling 'dired--toggle-b-switch'.
(dired-auto-toggle-b-switch, dired--toggle-b-switch): Improve doc
string.

* test/lisp/dired-tests.el (dired-test-filename-with-newline-1)
(dired-test-filename-with-newline-2): Skip unless Dired uses an
'ls' that supports the '-b' switch.

* etc/NEWS: Adjust accordingly the announcements of the Dired
warning and the new user option for file names with newlines.
2026-04-17 19:26:37 +02:00
João Távora
cbbe2b5f55 Eglot: add M-x eglot-describe-connection
Also add more bindings to M-x eglot-list-connections

* lisp/progmodes/eglot.el (eglot-list-connections-mode-map): Add
bindings for e, w, RET.
(eglot-events-buffer-of-listed-connection)
(eglot-show-workspace-configuration-of-listed-connection)
(eglot-describe-listed-connection): New commands.
(eglot-describe-connection): New command.

* doc/misc/eglot.texi: Document new keys and eglot-describe-connection.

* etc/EGLOT-NEWS: Announce.
2026-04-17 00:19:51 +01:00
Michael Albinus
1811ce52c2 ; * etc/NEWS: Presentational fixes and improvements. 2026-04-16 17:31:07 +02:00
Vincent Belaïche
3d822669ee Announce ert-play-keys in etc/NEWS. 2026-04-16 17:09:04 +02:00
Sean Whitton
ae822de38d ; newcomers-presets: FIXME. 2026-04-16 09:22:06 -04:00
João Távora
1c4c9d759a Eglot: add shutdown/reconnect bindings to eglot-list-connections buffer
* lisp/progmodes/eglot.el (eglot-list-connections-mode-map): New
defvar.

* lisp/progmodes/eglot.el (eglot--list-connections-entries): New
function, extracted from eglot-list-connections.

* lisp/progmodes/eglot.el (eglot--list-connections-cmd): New macro.

* lisp/progmodes/eglot.el (eglot-shutdown-listed-connection)
(eglot-reconnect-listed-connection): New commands.

* lisp/progmodes/eglot.el (eglot-list-connections): Use
eglot--list-connections-entries.

* doc/misc/eglot.texi: Document eglot-list-connections and new keys.

* etc/EGLOT-NEWS: Announce.
2026-04-16 09:28:21 +01:00
Toby Dylan Hocking
eb4835e521 Make | optional for 'gnu' regexp in compilation-mode (bug#80681)
* lisp/progmodes/compile.el
(compilation-error-regexp-alist-alist): Make leading '|'
optional when there are leading spaces (bug#80681).
* etc/compilation.txt (GNU style): New error with two leading
spaces.
* test/lisp/progmodes/compile-tests.el
(compile-test-error-regexps): Increment expected
compilation-num-errors-found.
(compile-tests--test-regexps-data): New error test case for
'gnu' with two leading spaces.  Change expected match for
'cucumber' to match again 'gnu'.

Copyright-paperwork-exempt: yes
2026-04-15 18:11:00 -04:00
Juri Linkov
0384600a21 New faces 'tab-line-active' and 'tab-line-inactive' (bug#80742)
This is intended to parallel the 'mode-line-active/inactive'
and 'header-line-active/inactive' distinction.

* doc/emacs/display.texi (Standard Faces): Document the new faces.

* lisp/faces.el (tab-line-active, tab-line-inactive): Add new faces.

* lisp/tab-line.el (tab-line-faces): Add new faces
to MEMBERS arg of 'defgroup'.
(tab-line-auto-hscroll): Use one of the faces
depending on 'mode-line-window-selected-p'.

* src/dispextern.h (CURRENT_TAB_LINE_ACTIVE_FACE_ID_3)
(CURRENT_TAB_LINE_ACTIVE_FACE_ID): New macros
based on header-line equivalents.
(CURRENT_TAB_LINE_HEIGHT): Use CURRENT_TAB_LINE_ACTIVE_FACE_ID.
(face_id): Use TAB_LINE_ACTIVE_FACE_ID and
TAB_LINE_INACTIVE_FACE_ID instead of TAB_LINE_FACE_ID.

* src/xdisp.c (window_box_height, pos_visible_p, init_iterator)
(window_text_pixel_size, display_mode_lines, display_mode_line)
(format-mode-line): Replace all uses of TAB_LINE_FACE_ID with
either a new macro or the new face IDs.

* src/xfaces.c (lookup_basic_face, realize_basic_faces):
Map new face IDs to their lisp symbols.
(syms_of_xfaces): New lisp symbols.
2026-04-14 20:14:15 +03:00
Kyle Meyer
ca33663e50 Update to Org 9.8.2 2026-04-12 16:44:03 -04:00
Mike Kupfer
bc0eacca97 ; * etc/MH-E-NEWS: Document the fix for SF#473. 2026-04-10 11:04:34 -07:00
Stéphane Marks
b4da8610cd ; New function 'ns-process-is-accessibility-trusted', no message (bug#80624)
* src/nsfns.m (Fns_process_is_accessibility_trusted): New
function.
(syms_of_nsfns): New defsubr.
* src/nsterm.m: ([EmacsApp applicationDidFinishLaunching:]):
Remove the AXIsProcessTrusted message.
* etc/NEWS: Updated.
2026-04-09 21:59:13 +01:00
ewantown
2bca4ac0ed Support 24-bit TrueColor on MS-Windows console
* src/w32console.c (DEFAULTP, SSPRINTF, w32con_write_vt_seq)
(w32con_get_cursor_coords): New functions and macros.
(w32con_write_glyphs): Hide cursor before writing to the console.
Add code for writing in virtual-terminal mode when
'w32_use_virtual_terminal' is non-zero.
(w32con_write_glyphs_with_face): Add code for writing in
virtual-terminal mode when 'w32_use_virtual_terminal' is non-zero.
(w32con_setup_virtual_terminal): New function.
(w32con_set_terminal_modes): Call it.
(turn_on_face, turn_off_face): New functions.
(initialize_w32_display): Save background and foreground, and the
current TTY.
(Fset_screen_color): Accept an additional optional argument VTP;
if non-nil, arrange for 24-bit display to use the specified
colors.
(Fget_screen_color): Accept an additional optional argument VTP;
if non-nil, return colors used by 24-bit display.
(Fw32_use_virtual_terminal, Fw32_use_virtual_terminal_p): New
functions.
* src/term.c (tty_setup_colors) [WINDOWSNT]: Set up
virtual-terminal sequences for colors.
(init_tty) [WINDOWSNT]: Set up terminfo capabilities for Windows
virtual-terminal.
* src/xdisp.c (redisplay_internal): Don't call set_tty_color_mode
for WINDOWSNT.

* lisp/term/w32console.el (w32-tty-set-base-colors)
(w32-tty-define-base-colors, w32-tty-define-8bit-colors)
(w32-tty-define-24bit-colors, w32-tty-get-pixel): New functions.
(terminal-init-w32console): Remove color setup.
(w32-tty-setup-colors): New function.
* lisp/term/tty-colors.el (tty-color-mode-alist): Add --color
modes for 256 and 24-bit color modes.
* lisp/startup.el (tty-handle-args): Fix --color handling.
* lisp/faces.el (tty-set-up-initial-frame-faces): Set up colors
for MS-Windows consoles.

* etc/NEWS:
* doc/emacs/msdos.texi (Windows Misc):
* doc/emacs/cmdargs.texi (Colors X): Document 24-bit color support
on MS-Windows.
(Bug#79298)
2026-04-08 15:12:14 +03:00
Sean Whitton
7ce60be53e vc-hg-working-revision: Return changeset hashes
* lisp/vc/vc-hg.el (vc-hg-working-revision): Return changeset
hashes instead of revision numbers.  Respect
vc-use-short-revision.
* etc/NEWS: Document the change.
2026-04-06 13:02:06 +01:00
Sean Whitton
d604445954 New option vc-dir-auto-hide-up-to-date
* lisp/vc/vc-dir.el (vc-dir-hide-up-to-date-on-revert): Delete.
(vc-dir-auto-hide-up-to-date): New option.
(vc-dir-update, vc-dir-revert-buffer-function): Use it.
* etc/NEWS: Document it.
2026-04-05 15:50:46 +01:00
Sean Whitton
859e0622ae * lisp/vc/diff-mode.el (diff-mode-read-only-map): Bind 'v'. 2026-04-05 13:50:35 +01:00
Kyle Meyer
ae1ac739b7 * etc/NEWS: Announce Org update. 2026-04-05 00:36:31 -04:00
Kyle Meyer
6c22780955 Update to Org 9.8.1 2026-04-05 00:36:31 -04:00
Eli Zaretskii
0a62e6c304 ; Fix documentation of last change
* lisp/emacs-lisp/package.el (package--compatible-packages): Doc
fix.

* etc/NEWS: Improve and expand wording in the new entry.
(Bug#80695)
2026-04-05 07:33:14 +03:00
Philip Kaludercic
6a15c02a59
Recursively check dependencies for package compatibility
* lisp/emacs-lisp/package.el (package--compatible-packages): Add
new function.
(package-install): Use new function to restrict suggestions to
not include incompatible packages.
(package--incompatible-p): Check all dependencies to determine
package compatibility.
* etc/NEWS: Mention change.  (Bug#80695)
2026-04-04 23:07:20 +02:00
Stéphane Marks
52205e38d3 Inform macOS Accessibility Zoom of cursor position (bug#80624)
Enable cursor focus tracking for visually-impaired users that
rely on macOS Zoom screen magnification.

* src/nsterm.m: Import ApplicationServices.h.
(ns_ua_zoom_enabled_p, ns_cg_rect_flip_y, ns_UAZoomChangeFocus):
New static function.  Advise UAZoomChangeFocus of potentially
new cursor position.
(ns_update_end): Call ns_UAZoomChangeFocus.
(ns_draw_window_cursor): Cache the cursor position.
(applicationDidFinishLaunching): NSLog Accessibility API
permissions AXIsProcessTrusted.
(windowDidBecomeKey): Schedule a call to ns_UAZoomChangeFocus.
(deferred_UAZoomChangeFocus_handler): New view method to call
ns_UAZoomChangeFocus.
(accessibilityFrame): New view method to help UAZoomChangeFocus.
(initFrameFromEmacs): Initialize ns_UAZoom_cursor_rect_new and
ns_UAZoom_cursor_rect_old.
* etc/NEWS: Announce the change.
2026-04-03 12:22:14 +01:00
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