Commit graph

9314 commits

Author SHA1 Message Date
Joshua Murphy 8a287a3888 viper-ex: Implement z command
* lisp/emulation/viper-ex.el (ex-token-alist):
Add 'z' command
(ex-adjust-window-point): Add var to track previous point
(ex-adjust-window-count): Add var to track previous count
(ex-adjust-window): Implement 'z' command
* etc/NEWS: Document 'z' command
2026-08-29 19:15:30 +03:00
Eli Zaretskii b28750b822 ; * etc/NEWS: Announce addition of 'uuid' library. 2026-08-26 15:38:49 +03:00
Roi Martin e156410d30 Add button to diff failed erts-file test output in ERT
* doc/misc/ert.texi (Running Tests Interactively): Mention diff button.
* etc/NEWS: Add entry.
* lisp/emacs-lisp/ert.el (ert--erts-file-test-execution-observer): Add
docstring.
(ert--erts-file-test-description, ert--erts-file-test-mismatch): New
structures.
(ert--erts-file-test-diff-button): New button type.
(ert--erts-file-test-diff-button-action): New function.
(ert-results-pop-to-erts-file-tests-for-test-at-point): Mention diff
button in docstring.
(ert-test--erts-test): Use `ert--erts-file-test-description' and
`ert--erts-file-test-mismatch' structures.
* test/lisp/emacs-lisp/ert-resources/erts-fail-point.erts (Name): New
test file.
* test/lisp/emacs-lisp/ert-tests.el (ert-test-list-of-erts-file-tests):
Use `ert--erts-file-test-description' structure.
(ert-test-erts-file-test-output-mismatch): New test.  (Bug#81685)
2026-08-26 14:17:41 +02:00
Juri Linkov 60d0df24d3 * lisp/dired.el (dired-jump-map): Remove key 'j' bound to 'dired-jump'.
It caused a usability conflict with 'j' bound to 'dired-goto-file'
(bug#81672).
2026-08-25 18:24:44 +03:00
Rahul Martim Juliato 49f3888c5d Add new options to 'query-replace-show-preview' (bug#81583)
* lisp/replace.el (query-replace-show-preview): Accept 'both'
and a function of two arguments as values.  Doc fix.
(query-replace-preview-match): New face.
(replace-preview--propertize, replace-preview--format): New
functions.
(replace-preview-update): Use 'replace-preview--format'.
* etc/NEWS: Update the entry.
2026-08-24 18:35:11 +03:00
Eli Zaretskii b33d4088a6 ; * etc/NEWS: Fix wording and punctuation of last change. 2026-08-23 11:48:50 +03:00
Kai Ma 23b0f4bdb9 ; * etc/NEWS: Document improved Emoji support on text terminals. 2026-08-23 11:47:28 +03:00
Eli Zaretskii c5922d820b ; Fix last change
* lisp/emulation/viper-ex.el: Fix commentary.

* etc/NEWS: Fix filling and punctuation.
2026-08-22 11:31:23 +03:00
Joshua Murphy 449392bddb viper-ex: Implement list and number commands
* lisp/emulation/viper-ex.el (ex-ambiguous-char-map): Add mapping
of ambiguous chars to their equivalents.
(ex-token-alist): Add list and number commands.
(ex-print, ex-print-display-lines): Add args to print line-numbers
or unambiguously.
* etc/NEWS: Document new ex commands.  (Bug#81282)
2026-08-22 11:27:30 +03:00
Jim Porter f856da36cd Allow evaluating Eshell forms using lexical binding
* lisp/eshell/esh-cmd.el (eshell-lexical-binding): New option.
(eshell--eval): New defsubst...
(eshell-do-eval, eshell-exec-lisp):
* lisp/eshell/esh-var.el (eshell-parse-variable-ref):
* lisp/eshell/em-banner.el (eshell-banner-initialize): ... use it.

* lisp/eshell/em-ls.el (eshell-ls-applicable): Evaluate form using
lexical binding.

* test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test--binding-check): New
function.
(esh-cmd-test/lexical-binding, esh-cmd-test/dynamic-binding): New tests.

* etc/NEWS: Announce this change.
2026-08-19 18:13:45 -07:00
Jim Porter d5fea6863c Document Eshell's Lisp pipes feature
* doc/misc/eshell.texi (List of Built-ins): Document 'accumulate',
'apply-lines', and 'map-lines'.
(Pipelines): Add menu.
(Lisp Pipelines): New section.
(Bugs and ideas): Remove implemented idea.

* etc/NEWS: Announce this change.
2026-08-18 19:14:05 -07:00
Andrew Hyatt 8a8d9b5c6a Make electric-pair-mode respect field boundaries (bug#50236)
Among other potential benefits, this makes e-p-m work correctly in all
comint-based modes.

* lisp/elec-pair.el (electric-pair-field-search-size): New variable.
(electric-pair-post-self-insert-function): Tweak, call
electric--pair-psif-1 (electric--pair-psif-1): New helper from old
electric-pair-post-self-insert-function.

* etc/NEWS: Call out change.

* lisp/comint.el (electric-pair-field-search-size): Forward declare.
(comint-mode): Set electric-pair-field-search-size to 1000.

* test/lisp/electric-tests.el (preserve-balance)
(preserve-balance-not-across-fields): New tests.

Co-authored-by: João Távora <joaotavora@gmail.com>
2026-08-18 12:07:11 +01:00
Juri Linkov 664f160297 New value 'with-completions-popup' of 'icomplete-in-buffer' (bug#81537)
* etc/NEWS: Announce the change.

* lisp/minibuffer.el (completion--icomplete-in-buffer-p):
Remove function.
(completion-list-inhibit-functions): New variable.
(completion-list-inhibit-p): New function.
(completion--do-completion, completion--in-region-1): Replace
'completion--icomplete-in-buffer-p' with
'completion-list-inhibit-p'.

* lisp/icomplete.el (icomplete-in-buffer):
Add new value 'with-completions-popup'.
(icomplete-list-inhibit): New function.
(icomplete--in-region-setup): Add/remove
'icomplete-list-inhibit' from/to
'completion-list-inhibit-functions'.
2026-08-16 18:31:26 +03:00
Eli Zaretskii f4e2065697 ; Minor fixes of the last change
* etc/NEWS: Fix last changes.

* doc/lispref/internals.texi (Module Canvas API):
* doc/lispref/display.texi (Canvas Images): Fix punctuation and
markup.
2026-08-16 12:28:31 +03:00
Divya Ranjan d5f515e4a3 New image type canvas
Canvas images support efficient updating and refreshing.  An image
specifier with ':type canvas' creates a canvas image.  The canvas has an
associated writable pixel buffer.  After changing the ':data' vector or
writing to the pixel buffer a call to 'canvas-refresh' redraws the
canvas image.  See bug#80281.

Co-Authored-By: Divya Ranjan <divya@subvertising.org>
Co-Authored-By: Daniel Mendler <mail@daniel-mendler.de>

Canvas changes:

* doc/lispref/display.texi (Images): Add Canvas Images to menu.
(Canvas Images): New node documenting canvas image objects, the
`:data-width', `:data-height', `:data' and `:file' properties, and
`canvas-refresh'.
* doc/lispref/elisp.texi (Top): Reference new Canvas Images node.
* doc/lispref/internals.texi (Writing Dynamic Modules): Add Module
Canvas API to menu.
(Module Canvas API): New node documenting `canvas_data' module function.
* etc/NEWS: Announce the addition.
* lisp/image.el (create-image): Add `:id' to image specification of
canvas images.
* src/dispextern.h (struct image): Add `refresh', `original_width' and
`original_height' fields.
(redraw_image_glyphs, canvas_data): New prototypes.
* src/emacs-module.c (module_canvas_data): New function.
(initialize_environment): Register `canvas_data' module function.
* src/image.c (struct canvas): New struct for canvas.
(canvas_prepare_for_display, canvas_free_unused): New forward
declarations.
(prepare_image_for_display): Call `canvas_prepare_for_display' when the
canvas refresh counter has changed.  Set image `original_width' and
`original_height'.
(filter_image_spec): Exclude `:data' from the image cache key for canvas
images, so mutating the data vector in place does not create a new cache
entry.
(Fclear_image_cache): Call `canvas_free_unused'.
(image_set_transform): Use CAIRO_FILTER_GOOD instead of
CAIRO_FILTER_BEST for canvas images, for performance.  Do not set image
`original_width' and `original_height'.
(canvas_image_p, canvas_free_unused, canvas_apply_data, canvas_get)
(canvas_parse, canvas_load, canvas_prepare_for_display, canvas_data):
New functions implementing canvas creation, resizing, and reloading of
`:data' or `:file' content.
(Fcanvas_refresh): New defun `canvas-refresh', with an optional
RELOAD-DATA argument to reread `:data' or `:file'.
(initialize_image_type, syms_of_image): Register the `canvas' image type
and `canvas-refresh'.
* src/module-env-32.h (canvas_data): New prototype.
* src/nsimage.m (ns_image_reset): New function to recreate an NS pixmap
to update the canvas.
* src/nsterm.h: Add prototype for `ns_image_reset'.
* src/xdisp.c (redraw_image_glyphs_window)
(redraw_image_glyphs_window_tree, redraw_image_glyphs): New functions to
redraw only the glyphs referencing a given canvas image spec, falling
back to a full frame redraw if the frame is garbaged.
* test/src/emacs-module-resources/mod-test.c (mod-test-canvas-read)
(mod-test-canvas-write, mod-test-canvas-invalid): New helper functions.
* test/src/emacs-module-tests.el (test-canvas-gen-file)
(mod-test-canvas/valid, mod-test-canvas/invalid, mod-test-canvas/vector)
(mod-test-canvas/vector-reload, mod-test-canvas/unibyte)
(mod-test-canvas/file, mod-test-canvas/gc-stress): New tests.
2026-08-16 12:16:41 +03:00
Harald Jörg 7861c30642 cperl-mode.el: Support Perl 5.44: named parameters in signatures
* lisp/progmodes/cperl-mode.el (cperl--signature-rx): Allow for a
colon before a variable name to declare a named parameter
(cperl--sloppy-signature-rx): dito
(cperl-init-faces): dito
(introduction): Delete an obsolete comment

* test/lisp/progmodes/cperl-mode-tests.el
(cperl-test-signature-rx): Add a test case for a signature with
named parameters
(cperl-test-fontify-attrs-and-signatures): Verify correct
fontification of a named parameter

* test/lisp/progmodes/cperl-mode-resources/proto-and-attrs.pl: Add
test code for named signatures

* etc/NEWS: Announce Perl 5.44 syntax support
2026-08-15 00:27:07 +02:00
Eli Zaretskii 5e304cd5fc ; * etc/NEWS: Fix punctuation. 2026-08-12 13:56:56 +03:00
João Távora 6223d243da Flymake: rework inline diagnostic text annotations
Replace flymake-show-diagnostics-at-end-of-line with a simpler, more
powerful flymake-inline-diagnostics.  The new variable has an easier name
offers the new possibilities inspired by other packages, of having only
the current diagnostic be affected by each setting..

* doc/misc/flymake.texi: Update.

* etc/NEWS: Update

* lisp/progmodes/flymake.el (flymake-annotation-style): New variable.
(flymake-inline-annotation-face)
(flymake-error-inline, flymake-warning-inline)
(flymake-note-inline): New faces.
(flymake--highlight-line)
(flymake--handle-report)
(flymake-after-change-function): Update to use new variable name.
(flymake--update-current-eol-overlay): New helper.
(flymake--eol-current-overlay): New variable.
(flymake--update-all-eol-overlays): Rename from flymake--update-eol-overlays.
(flymake-make-report-fn): Keep point stable.
(flymake--update-eol-overlays): Tweak.
(flymake--eol-overlay-summary): Rewrite.
(flymake-mode): Set post-command-hook
(flymake--update-eol-overlays): Rework.
(flymake--update-eol-overlays-1): New helper.
(flymake-diagnostic-format-alist): Enhance.
(flymake--format-diagnostic): Handle old :eol value.
(flymake-inline-annotation-face)
(flymake-error-inline)
(flymake-warning-inline)
(flymake-note-inline): New faces.
(flymake-show-diagnostics-at-end-of-line)
(flymake-end-of-line-diagnostics-face)
(flymake-error-echo-at-eol)
(flymake-warning-echo-at-eol)
(flymake-note-echo-at-eol): Deprecate
(flymake--eol-draw-fancy): Tweak geometry slightly
2026-08-12 00:54:10 +01:00
Rahul Martim Juliato 765411f0cd Preview the replacement text while it is typed (bug#81583)
* lisp/replace.el (query-replace-show-preview): New user option.
(query-replace-preview): New face.
(query-replace-eval-replacement-regexp): New constant, extracted
from...
(query-replace-compile-replacement): ...here.
(replace-preview-overlays): New variable.
(replace-preview-cleanup, replace-preview-update)
(replace-preview-setup): New functions.
(query-replace-read-to): New optional argument DELIMITED-FLAG.
(query-replace-read-args): Pass the delimited flag to
'query-replace-read-to'.
* lisp/isearch.el (isearch-query-replace): Pass the delimited
flag to 'query-replace-read-to'.
* test/lisp/replace-tests.el (replace-tests--preview): New
helper.
(replace-tests-preview-update, replace-tests-preview-cleanup)
(replace-tests-preview-disabled): New tests.
* doc/emacs/search.texi (Replace): Document the preview.
* etc/NEWS: Announce it.
2026-08-11 20:22:56 +03:00
Roi Martin fcee0b4ff1 Reimplement `outline-occur' using Xref and match Outline headings
Outline provides two search strategies to locate headings.  If
`outline-search-function' is defined, it is used to find the headings.
Otherwise, `outline-regexp' is used.  Reimplement `outline-occur' as
`outline-xref' using Xref and accepting a search function.  This
supports both search strategies and ensures that the headings detected
by `outline-xref' match the Outline ones.

* lisp/outline.el (outline-mode-prefix-map): Update binding.
(outline-mode-menu-bar-map): Update menu item.
(outline-occur-regexp): Remove variable.
(outline-occur): Remove function.
(outline-xref--fetch-headings, outline-xref--show-xrefs, outline-xref):
New functions (bug#81579).
* test/lisp/outline-tests.el (outline-tests--outline-occur)
(outline-tests--outline-occur-override)
(outline-tests--outline-occur-undefined-regexp): Remove tests.
(outline-tests--outline-xref-search-function)
(outline-tests--outline-xref-regexp)
(outline-tests--outline-xref-undefined): New tests.
2026-08-11 20:06:15 +03:00
Yuan Fu 388717429c New variable comment-start-line-regexp (bug#80837)
* lisp/newcomment.el (comment-start-line-regexp): New variable
(bug#80837).
* lisp/progmodes/c-ts-common.el (c-ts-common-comment-setup):
* lisp/progmodes/cmake-ts-mode.el (cmake-ts-mode):
* lisp/progmodes/dockerfile-ts-mode.el (dockerfile-ts-mode):
* lisp/progmodes/elixir-ts-mode.el (elixir-ts-mode):
* lisp/progmodes/go-ts-mode.el (go-work-ts-mode):
* lisp/progmodes/json-ts-mode.el (json-ts-mode):
* lisp/progmodes/lua-ts-mode.el (lua-ts-mode):
* lisp/progmodes/php-ts-mode.el (php-ts-mode--comment-setup):
* lisp/progmodes/python.el (python-base-mode):
* lisp/progmodes/ruby-mode.el (ruby-base-mode):
* lisp/progmodes/sh-script.el (sh-base-mode):
* lisp/textmodes/mhtml-ts-mode.el
(mhtml-ts-mode--comment-setup):
* lisp/textmodes/toml-ts-mode.el (toml-ts-mode):
* lisp/textmodes/yaml-ts-mode.el (yaml-ts-mode): Set it.
* doc/emacs/programs.texi (Options for Comments):
* etc/NEWS: Document it.
* lisp/progmodes/c-ts-common.el
(c-ts-common-comment-start-line-regexp): New variable.
* lisp/treesit.el (newcomment): Require.
(treesit--likely-line-comment-p): New function.
(treesit-forward-comment): Use it.  Make COUNT parameter
non-optional.
2026-08-07 11:59:30 +01:00
Michael Albinus c80349352f Revert "Add comment-start-line-regexp (bug#80837)"
This reverts commit 3735384b193617a912fbf6d25844041ed288bf28.
2026-08-07 12:23:02 +02:00
Sean Whitton 59518a3c21 ; Improve last change. 2026-08-06 12:22:17 +01:00
Protesilaos 60108e7f55 Show-all values for speedbar user options for hiding
* lisp/speedbar.el (speedbar-directory-unshown-regexp)
(speedbar-file-unshown-regexp): New choice for nil to not hide
anything.
(speedbar-file-lists): Check that the user options
'speedbar-directory-unshown-regexp' and
'speedbar-file-unshown-regexp' are strings before using them.
Raise a user-error if their non-nil value is not a string.
* etc/NEWS: Announce the changes.
2026-08-06 12:19:30 +01:00
Roi Martin 8a88f3ed5a Add outline-occur' command and display-buffer-default-alist' variable
Add the `outline-occur' command that allows navigating the current
buffer's outline using Occur.  Also add the
`display-buffer-default-alist' variable, which Lisp programs may
let-bind to specify conditional actions for nested `display-buffer'
calls.

* doc/lispref/windows.texi (Choosing Window)
(Precedence of Action Functions): Document
`display-buffer-default-alist' variable.
* etc/NEWS: Add `outline-occur' and `display-buffer-default-alist'
entries.
* lisp/outline.el (outline-mode-prefix-map): Bind `outline-occur'.
(outline-mode-menu-bar-map): Add `outline-occur' menu item.
(outline-occur-regexp): New buffer-local variable.
(outline-occur): New command.
* lisp/replace.el (occur-1): Call `display-buffer' with category.
* lisp/window.el (display-buffer-alist): Update docstring.
(display-buffer-default-alist): New variable.
(display-buffer): Handle `display-buffer-default-alist' variable.
* test/lisp/outline-resources/outline.txt: New test file.
* test/lisp/outline-tests.el: New test suite.  (Bug#81512)

Co-authored-by: Martin Rudalics <rudalics@gmx.at>
Co-authored-by: Juri Linkov <juri@linkov.net>
2026-08-04 21:16:37 +03:00
Sean Whitton a1f5b8cf86 Don't immediately show *Completions* for icomplete-in-buffer
* lisp/minibuffer.el (completion--icomplete-in-buffer-p):
New function.
(completion--do-completion, completion--in-region-1):
Use it (bug#81537).
* etc/NEWS: Say that NEWS.30 advice-add isn't needed anymore.
* lisp/icomplete.el (icomplete-in-buffer): Remove advice-add
instructions.
2026-08-03 11:49:20 +01:00
Sean Whitton d9218edb3e * lisp/cus-start.el (completion-ignore-case): Make customizable. 2026-08-01 20:09:13 +01:00
Eli Zaretskii 5c10089194 ; * etc/NEWS: Announce support of Kmscon. (Bug#81428) 2026-08-01 11:44:15 +03:00
Stefan Monnier c1337758a6 Merge remote-tracking branch 'origin/scratch/intern-without-shorthands' 2026-07-29 22:12:50 -04:00
Yuan Fu fb5cf238a9 New variable comment-start-line-regexp (bug#80837)
* lisp/newcomment.el (comment-start-line-regexp): New variable
(bug#80837).
* lisp/progmodes/c-ts-common.el (c-ts-common-comment-setup):
* lisp/progmodes/cmake-ts-mode.el (cmake-ts-mode):
* lisp/progmodes/dockerfile-ts-mode.el (dockerfile-ts-mode):
* lisp/progmodes/elixir-ts-mode.el (elixir-ts-mode):
* lisp/progmodes/go-ts-mode.el (go-work-ts-mode):
* lisp/progmodes/json-ts-mode.el (json-ts-mode):
* lisp/progmodes/lua-ts-mode.el (lua-ts-mode):
* lisp/progmodes/php-ts-mode.el (php-ts-mode--comment-setup):
* lisp/progmodes/python.el (python-base-mode):
* lisp/progmodes/ruby-mode.el (ruby-base-mode):
* lisp/progmodes/sh-script.el (sh-base-mode):
* lisp/textmodes/mhtml-ts-mode.el
(mhtml-ts-mode--comment-setup):
* lisp/textmodes/toml-ts-mode.el (toml-ts-mode):
* lisp/textmodes/yaml-ts-mode.el (yaml-ts-mode): Set it.
* doc/emacs/programs.texi (Options for Comments):
* etc/NEWS: Document it.
* lisp/progmodes/c-ts-common.el
(c-ts-common-comment-start-line-regexp): New variable.
* lisp/treesit.el (newcomment): Require.
(treesit--likely-line-comment-p): New function.
(treesit-forward-comment): Use it.  Make COUNT parameter
non-optional.
2026-07-29 12:20:33 +01:00
Eli Zaretskii 6f5bcd19b2 ; * etc/NEWS: Fix typo and wording of recently-added entry. 2026-07-26 12:40:30 +01:00
Dmitry Gutov 0a714557eb vc-dir: Don't resolve DIR to truename unnecessarily
* lisp/vc/vc-dir.el (vc-dir): Use DIR without resolving truename
if the responsible VC backend is found.
(https://lists.gnu.org/archive/html/emacs-devel/2026-07/msg00147.html)
2026-07-25 06:45:27 +03:00
Michael Albinus 706828afa1 ; * etc/NEWS: Presentational fixes and improvements. 2026-07-24 12:20:41 +02:00
Paul Eggert 57c5967828 current-time-list now defaults to nil
Change the default value from current-time-list from t to nil.
This continues the transition that was begun in Emacs 29, so
that functions like current-time generate timestamps in the
more-efficient and more-consistent (TICKS . HZ) form.
* src/timefns.c: Default to false.
2026-07-23 23:05:13 -07:00
Petteri Hintsanen 074cdea573 timeclock: Optionally use 24-hour clock
* lisp/calendar/timeclock.el (timeclock-use-24hr-format): New defcustom.
(timeclock-time-format): New function.
(timeclock-status-string, timeclock-when-to-leave-string)
(timeclock-generate-report): Call timeclock-time-format to format
displayed times.  (Bug#81440)

* etc/NEWS: Document the change.

* test/lisp/calendar/timeclock-tests.el: New file.
2026-07-23 09:14:35 +03:00
Stefan Monnier 201520c0f4 etc/NEWS: Document the change in intern and shorthands 2026-07-22 15:57:32 -04:00
Earl Hyatt 541f693ca2 Create macro 'pcase-let*-strict'
Create a version of 'pcase-let*' that signals an error when a 'pcase'
pattern does not match its corresponding value.

* lisp/emacs-lisp/pcase.el (pcase--let*): Add the optional argument
'strict' to generate code for signaling an error when a 'pcase'
pattern does not match its corresponding value.
* lisp/emacs-lisp/pcase.el (pcase-let*-strict): Add the new macro.
* test/lisp/emacs-lisp/pcase-tests.el (pcase-tests-let*-strict):
Add new test.
* etc/NEWS (Pcase): Add heading for 'pcase'.
* etc/NEWS (Add 'pcase-let*-strict'): Add news entry for new macro.
2026-07-16 16:33:04 -04:00
Dan 0f043af4dd Make woman-topic-history an obsolete alias
* lisp/woman.el (woman-topic-history): Make it an obsolete
variable alias.
(woman-file-name): Use 'Man-topic-history' instead of
'woman-topic-history' (bug#81347).
* etc/NEWS: Announce the change.
2026-07-07 15:57:23 +01:00
Sean Whitton c7aab69e30 Delete dir-mode VC backend method
This overlapped with the existing support for a backend-specific
minor mode.

* lisp/vc/vc.el (dir-mode): Delete specification.
(vc-dir-mode): De-declare.
(vc-default-dir-mode): Delete.
* etc/NEWS: Update.
2026-07-06 16:50:00 +01:00
Sean Whitton 02fb63f7fe VC-Dir: Let backends supply a custom mode and key binding hints
* lisp/vc/vc.el (dir-extra-hints, dir-mode): Specify new backend
methods.
(vc-dir-mode): Declare.
(vc-default-dir-mode, vc-default-dir-extra-hints): New
functions.
* lisp/vc/vc-dir.el (vc-dir-headers, vc-dir): Call the new
backend methods.
* lisp/cedet/ede.el (ede-turn-on-hook): Use derived-mode-p
instead of looking at major-mode directly.
* etc/NEWS: Document the new backend methods.
2026-07-06 15:50:45 +01:00
Eli Zaretskii 040b5a18fc ; * etc/NEWS: Fix wording of last change. 2026-07-05 08:04:20 +03:00
Paul Nelson 35af392aee Keep Rmail collection buffers unibyte
* lisp/mail/rmail.el (rmail-enable-multibyte): Remove it.
(rmail-mode): Do not bind 'rmail-enable-multibyte'.  Do not make
the collection buffer multibyte.  (Bug#81274)
(rmail-revert): Default 'coding-system-for-read' to
'no-conversion, as in 'rmail'; remove corresponding FIXME
comment.
(rmail-get-new-mail): Do not bind 'rmail-enable-multibyte'.
* lisp/files.el (auto-mode-alist): Add Rmail file pattern.
* lisp/international/mule-conf.el (file-coding-system-alist):
Add Rmail file pattern.

* doc/emacs/rmail.texi (Rmail Files): Document that "RMAIL" and
"*.rmail" files now visit in Rmail mode automatically.

* etc/NEWS: Announce the changes.

* test/lisp/mail/rmail-tests.el
(rmail-mode-makes-collection-buffer-unibyte): New test.
2026-07-05 08:03:51 +03:00
Eshel Yaron 2a2675fd39
New macro 'elisp-scope-define-function-spec' (bug#81355)
* lisp/emacs-lisp/elisp-scope.el
(elisp-scope--analyze-function-args): New helper function.
(elisp-scope-define-function-spec): New macro.
Convert simple function analyzers to use it.

* etc/NEWS: Announce it.
2026-07-04 21:49:57 +02:00
Eshel Yaron 8c8caa3088
elisp-scope.el: Support associating analyzers with multiple symbols
Many analyzers (those defined with
'elisp-scope-define-analyzer' and friends) are appropriate
for more than one function/macro.  Before this commit, our
way of reusing an analyzer was to do this:

  ;; Define analyzer for `foo'
  (elisp-scope-define-function-analyzer foo (...) ...)

  ;; Reuse it for `bar'
  (put 'bar 'elisp-scope-analyzer #'elisp-scope--analyze-foo)

This isn't a good solution for users/packages that want to
reuse their custom analyzers, because it relies on too many
brittle internal implementation details.
This commit provides a nicer solution: we generalize the
analyzer-defining macros so they can take a list of symbols
and directly associated the defined analyzer with all of
the given symbols.  So the above example is simplified to:

  (elisp-scope-define-function-analyzer (foo bar) (...) ...)

* lisp/emacs-lisp/elisp-scope.el (elisp-scope-define-analyzer):
Accept either a symbol or a list of symbols, and register
the analyzer function for each symbol in the list (bug#81355).
(elisp-scope--define-function-analyzer)
(elisp-scope-define-function-analyzer)
(elisp-scope-define-macro-analyzer)
(elisp-scope-define-special-form-analyzer): Likewise.
Convert all call sites that used to register extra symbols
via separate 'put' calls to use this new feature instead.

* etc/NEWS: Announce it.
2026-07-04 21:48:22 +02:00
Stephen Berman 56154c939b Improve commit log entry creation from ChangeLog (bug#80928)
* lisp/vc/log-edit.el (log-edit-insert-changelog-entry): New function.
(log-edit-insert-changelog-entries): Use it when all log entries
come from the same ChangeLog file or buffer.

* test/lisp/vc/vc-tests/vc-test-misc.el
(vc-test-log-message-from-changelog): New test.

* doc/emacs/maintaining.texi (VC With A Merging VCS):
(Log Buffer): Document improved creation of commit messages from
ChangeLog.  Improve documentation of *vc-log* header lines.
Document 'log-edit-hook'.
(VC Directory Commands): Correct documentation of 'M' and 'U'.
Document determination of current VC fileset without marking.
(Format of ChangeLog): Improve documentation of multi-item entries.

* etc/NEWS: Announce user-facing changes.
2026-07-04 15:57:00 +02:00
Po Lu 44bff5182d ; * etc/NEWS: Clarify entry regarding Android 17. 2026-07-03 00:06:59 +08:00
Po Lu 850cbdfa1b Update to Android 17
* configure.ac (emacs_cv_android_x_or_later): Rename from
`emacs_cv_android_w_or_later', and test for attributes of
Android 17.

* doc/emacs/android.texi (Android Environment): Document new
permission `ACCESS_LOCAL_NETWORK'.

* java/AndroidManifest.xml.in: Declare permission
android.permission.ACCESS_LOCAL_NETWORK to re-enable Emacs to
access local network devices.  Update `targetSdkVersion' to 37.

* java/INSTALL: Document new build-time requirements and
compatibility with recent build-tools releases.

* java/org/gnu/emacs/EmacsFillPolygon.java (perform): Use
non-deprecated variant of `Path#computeBounds'.

* src/android-asset.h (struct AAsset): <bytes_read>: New field.
(AAssetManager_open): Clear exceptions if no asset fd could be
created.
(android_asset_read_internal): Cast `buffer' to (jbyte *).
Record number of bytes read from the InputStream.
(AAsset_seek): Attempt to satisfy seek operations which do not
modify the file pointer.
2026-07-02 20:08:35 +08:00
Juri Linkov d56e98592e Clicking mode line menus in inactive windows now switches the window
* lisp/bindings.el (mode-line-window-select): New function (bug#81178).
(x-pre-popup-menu-hook): Add it to 'x-pre-popup-menu-hook'.
2026-06-30 18:47:15 +03:00
Sean Whitton 268e055e05 Limit VC-Dir status process output processing
* lisp/emacs-lisp/ewoc.el (ewoc--set-buffer-bind-dll-let*): New
debug declaration.
(ewoc-set-hf): Make it possible to set only the header or
footer.
* lisp/vc/vc-dir.el (vc-dir--set-header): New RESET-FOOTER
parameter.
(vc-dir-refresh): Pass it.
(vc-dir-process-output-limit): New variable.
(vc-dir-show-more-button)
(vc-dir-maybe-narrow-and-show-more-button): New functions.
* lisp/vc/vc-bzr.el (vc-bzr-dir-status-files):
* lisp/vc/vc-cvs.el (vc-cvs-dir-status-files):
* lisp/vc/vc-git.el (vc-git-dir-status-goto-stage):
* lisp/vc/vc-hg.el (vc-hg-dir-status-files):
* lisp/vc/vc-svn.el (vc-svn-dir-status-files): Preserve a
binding of vc-dir-process-output-limit in the delayed process.
Call vc-dir-maybe-narrow-and-show-more-button.
* lisp/vc/vc.el (dir-status-files):
* etc/NEWS: Document the change.
2026-06-26 14:53:13 +01:00
Stefan Monnier c7b156dce3 gv.el: Allow use of ignore as a place (bug#81217)
* lisp/emacs-lisp/gv.el (error): Delete redundant `gv-expander` definition.
(ignore): Add a setter.
* doc/lispref/functions.texi (Calling Functions): Document `ignore`
as a place.
* lisp/xdg.el (xdg-mime-collect-associations): Silence compiler warning.
2026-06-22 12:13:36 -04:00