Commit graph

182318 commits

Author SHA1 Message Date
Paul Eggert
17215532dc Avoid a memset in emacsclient get_server_config
* lib-src/emacsclient.c (get_server_config):
Rewrite memset+assignments to compound literal.
2026-05-23 19:18:53 -07:00
Paul Eggert
ad8af430e6 Avoid a memset in alloc-colors.c
* admin/alloc-colors.c (main): Simplify.
2026-05-23 19:18:53 -07:00
Paul Eggert
8c69ba718e Fix emit_static_object comment (no bzero call) 2026-05-23 19:18:53 -07:00
Paul Eggert
1e0b0bed28 Avoid a memset in allocate_widget_instance
* lwlib/lwlib.c (allocate_widget_instance):
Simplify via xzalloc.
2026-05-23 19:18:53 -07:00
Paul Eggert
3461b450c5 Don’t silently truncate file names in exec.c
* exec/exec.c (format_pid): Simplify.  No need for a local array.
(exec_0): Shrink local buffer.
If names are too long, fail instead of silently truncating them.
Be cautious in case symlink is zero length (shouldn’t be possible
in Android, but it’s easy to be safe).
2026-05-23 19:18:53 -07:00
Paul Eggert
25a07c30e5 Don’t use VLA in etags.c mercury_decl
* lib-src/etags.c (mercury_decl): Don’t use a VLA,
as C11+ says VLAs are optional.  Instead, redo to
omit the need for an array at all.
2026-05-23 19:18:53 -07:00
Paul Eggert
b1d338d89a Fix misleading x_dnd_begin_drag_and_drop API
* src/xterm.c (x_dnd_begin_drag_and_drop): The n_ask_actions arg
is an int, not a size_t, as XChangeProperty supports only int and
our caller passes an int.
2026-05-23 19:18:53 -07:00
Paul Eggert
4d85084509 Fix unlikely json.c size overflow calculations
* src/json.c (json_out_grow_buf)
(json_make_object_workspace_for_slow_path)
(json_byte_workspace_put_slow_path):
Use xpalloc rather than doing it by hand.
* src/json.c (json_out_grow_buf):
Change arg from needed bytes to minimum increment of bytes.
Caller changed.
2026-05-23 19:18:52 -07:00
Paul Eggert
5fd1e0bbef Coalesce load_seccomp comparisons
* src/emacs.c (load_seccomp): One comparison, not two.
2026-05-23 19:18:52 -07:00
Paul Eggert
9851c5ea34 Shrink STRING_BYTES_MAX slightly
* src/alloc.c (STRING_BYTES_MAX): Also don’t allow sizes to exceed
PTRDIFF_MAX in internal calculations when calling malloc, as those
are problematic even if the final number of bytes does not exceed
PTRDIFF_MAX.
2026-05-23 19:18:52 -07:00
Paul Eggert
59b2f8f1dc Plug default_PATH memory leak
* src/emacs.c (default_PATH): Fix very-unlikely memory leak.
2026-05-23 19:18:52 -07:00
Paul Eggert
1eb2e052bb New function memory_full_up
* src/alloc.c (memory_full_up): New function.  Replace all callers
of memory_full (SIZE_MAX) with callers to this function.
This simplifies callers and should make future changes easier.
It also saves a whopping 296 bytes in executable size
with gcc 16.1.1 20260515 (Red Hat 16.1.1-2) x86-64.
2026-05-23 19:18:52 -07:00
Sean Whitton
a96fc7d546 Merge from origin/emacs-31
4f13f52a3a * build-aux/git-hooks/commit-msg: Replace Markdown-style ...
dd42133315 vc-test--rename-file: Disable part of test for SCCS
eb653865c3 markdown-ts-mode: Don't enable unconditionally by default

# Conflicts:
#	etc/NEWS
2026-05-23 17:30:21 +01:00
Sean Whitton
4f13f52a3a * build-aux/git-hooks/commit-msg: Replace Markdown-style quotation. 2026-05-23 17:25:07 +01:00
Sean Whitton
dd42133315 vc-test--rename-file: Disable part of test for SCCS
* test/lisp/vc/vc-tests/vc-tests.el (vc-test--rename-file):
Disable part of test for SCCS.
2026-05-23 16:53:36 +01:00
Rahul Martim Juliato
eb653865c3 markdown-ts-mode: Don't enable unconditionally by default
* lisp/textmodes/markdown-ts-mode.el (markdown-ts-mode-maybe):
New function.
(auto-mode-alist): Bind ".md", ".markdown", and ".mdx" to
'markdown-ts-mode-maybe' instead of 'markdown-ts-mode'.
* etc/NEWS: Update the 'markdown-ts-mode' entry.
2026-05-23 16:25:09 +01:00
Sean Whitton
7fe595465b vc-refresh-state: Use cond*
This is okay with regard to bootstrapping because vc-hooks.el is
loaded after loaddefs.el in loadup.el.

* lisp/emacs-lisp/cond-star.el (cl-lib): Don't require, so we
can use cond* in preloaded files.
(cond*-convert-condition): Replace calls to cl-assert.
* lisp/vc/vc-hooks.el (vc-refresh-state): Use cond*.
2026-05-23 12:47:24 +01:00
Eli Zaretskii
ccc94458fb Merge from origin/emacs-31
7a17f97baa Prettify special glyphs
f13287fde0 Revert "sh-script: Mark + and * as punctuation rather tha...
70b79b3ed8 Rename `icalendar-recur' type and related functions
3d2bb233f2 ; Minor Tramp changes
f6281d757d ; * etc/NEWS: Tell how to disable 'markdown-ts-mode'.
142b1e0d4c Fix Lisp injection via X-Draft-From in Gnus
d6f7b2d99b Save/restore old_buffer slot via window configurations (B...
e0fbecaf65 Adapt ert-remote-temporary-file-directory settings
3de7f0ce5e Fix warning message in 'markdown-ts-mode--initialize'
7df8604ea6 ; Improve documentation of lazy-highlight in search and r...
2936b36164 Fix "assertion 'GTK_IS_WINDOW (window)' failed"
98348a0bdc [Xt] Fix child frame resizing glitch
13b29eebc1 Eglot: use standard face for completion annotations (bug#...

# Conflicts:
#	etc/NEWS
2026-05-23 07:23:33 -04:00
Manuel Giraud
7a17f97baa Prettify special glyphs
* lisp/disp-table.el (prettify-special-glyphs-mode): New mode to
display nicer special glyphs.
(special-glyphs): New face for displaying special glyphs when
the minor mode is active.
(prettify-special-glyphs-saved-truncation)
(prettify-special-glyphs-saved-continuation): Internal variables
to save previous special glyphs.
* etc/NEWS: Announce the change.  (Bug#80628)
2026-05-23 14:12:19 +03:00
Elias Gabriel Perez
741feca497 New tool bar icons for artist-mode
* etc/images/artist-mode/README:
* etc/images/artist-mode/char-for-spray.xpm:
* etc/images/artist-mode/char-to-fill.xpm:
* etc/images/artist-mode/ellipse.xpm:
* etc/images/artist-mode/eraser.xpm:
* etc/images/artist-mode/fill.xpm:
* etc/images/artist-mode/line.xpm:
* etc/images/artist-mode/pen.xpm:
* etc/images/artist-mode/poly-line.xpm:
* etc/images/artist-mode/rectangle.xpm:
* etc/images/artist-mode/spray.xpm:
* etc/images/artist-mode/square.xpm:
* etc/images/artist-mode/text.xpm:
* etc/images/artist-mode/char-for-spray.pbm:
* etc/images/artist-mode/char-to-fill.pbm:
* etc/images/artist-mode/ellipse.pbm:
* etc/images/artist-mode/eraser.pbm:
* etc/images/artist-mode/fill.pbm:
* etc/images/artist-mode/line.pbm:
* etc/images/artist-mode/pen.pbm:
* etc/images/artist-mode/poly-line.pbm:
* etc/images/artist-mode/rectangle.pbm:
* etc/images/artist-mode/spray.pbm:
* etc/images/artist-mode/square.pbm:
* etc/images/artist-mode/text.pbm: New files.
* lisp/textmodes/artist.el (artist-tool-bar-map): New variable.
(artist-mode, artist-mode-exit): Use it (bug#80644).
2026-05-23 11:50:10 +01:00
Eli Zaretskii
f13287fde0 Revert "sh-script: Mark + and * as punctuation rather than a symbol constituent"
This reverts commit b3c0aee42b.
It caused regressions in 'sh-script', see bug#80794 and
bug#80854.
2026-05-23 13:27:49 +03:00
Richard Lawrence
70b79b3ed8 Rename `icalendar-recur' type and related functions
More context in Bug#80786 and:
https://lists.gnu.org/archive/html/emacs-orgmode/2026-03/msg00286.html

`icalendar-recur' as a type name for RRULE values was confusing and made
the accessors for this type difficult to discover, because `icalendar-recur-'
is also used as a prefix in icalendar-recur.el.  This change renames the
`icalendar-recur' type to `icalendar-rrule-value' and renames the
accessor functions for these values appropriately.

* lisp/calendar/icalendar-parser.el:  Rename symbols as follows:
(icalendar-recur): `icalendar-rrule-value'
(icalendar-read-recur-rule-part): `icalendar-read-rrule-part'
(icalendar-print-recur-rule-part): `icalendar-print-rrule-part'
(icalendar-recur-rule-part): `icalendar-rrule-part'
(icalendar-read-recur): `icalendar-read-rrule-value'
(icalendar-print-recur): `icalendar-print-rrule-value'
(icalendar--recur-value-types): `icalendar--rrule-value-types'
(icalendar-recur-value-p): `icalendar-rrule-value-p'
(icalendar-recur-freq): `icalendar-rrule-freq'
(icalendar-recur-interval-size): `icalendar-rrule-interval-size'
(icalendar-recur-until): `icalendar-rrule-until'
(icalendar-recur-count): `icalendar-rrule-count'
(icalendar-recur-weekstart): `icalendar-rrule-weekstart'
(icalendar-recur-by*): `icalendar-rrule-by*'.
(icalendar-rrule):
(icalendar-index-insert):
(icalendar-index-get): Update references.
* lisp/calendar/icalendar-recur.el (icalendar-recur-find-interval):
(icalendar-recur-nth-interval):
(icalendar-recur-next-interval):
(icalendar-recur-previous-interval):
(icalendar-recur-refine-from-clauses):
(icalendar-recur-recurrences-in-interval):
(icalendar-recur-recurrences-in-window):
(icalendar-recur-recurrences-to-count):
(icalendar-recur-tz-observance-on): Update references.
* lisp/calendar/diary-icalendar.el: Update references.
* lisp/calendar/icalendar-shortdoc.el (icalendar): Update shortdoc examples.
* lisp/gnus/gnus-icalendar.el: Update references.
* test/lisp/calendar/diary-icalendar-tests.el:
* test/lisp/calendar/icalendar-parser-tests.el:
* test/lisp/calendar/icalendar-recur-tests.el: Update references in tests.
2026-05-23 13:25:19 +03:00
Augusto Stoffel
646702f70b let-alist.el: Use 'elt' instead of 'nth'
The advantage is that this works also for mixtures of alists and
vectors, as one obtains, e.g., from 'json-parse-buffer' and
'json-parse-string'.
* lisp/emacs-lisp/let-alist.el (let-alist--list-to-sexp): Use
'elt' instead of 'nth'.
(let-alist): Adapt doc string.  (Bug#80992)
2026-05-23 12:37:34 +03:00
Michael Albinus
3d2bb233f2 ; Minor Tramp changes
* doc/misc/tramp.texi (Frequently Asked Questions):
google-drive has been disabled in GNOME 50.

* lisp/net/tramp-cmds.el (tramp-enable-method): Upcase prompt.

* lisp/net/tramp-sh.el (tramp-sh-handle-make-process)
(tramp-sh-handle-process-file): Improve setting of environment variables.

* test/lisp/net/tramp-tests.el (tramp-methods) <mock>:
Add `tramp-tmpdir'.  Adapt `tramp-login-program'.
(ert-remote-temporary-file-directory): Improve expansion.
(tramp-test35-remote-path): Adapt test.
2026-05-23 10:25:46 +02:00
Eli Zaretskii
f6281d757d ; * etc/NEWS: Tell how to disable 'markdown-ts-mode'. 2026-05-23 09:35:24 +03:00
Jacek Migacz
142b1e0d4c Fix Lisp injection via X-Draft-From in Gnus
* lisp/gnus/gnus-msg.el (gnus-inews-make-draft-meta-information):
Escape the group name with prin1-to-string to prevent arbitrary
Lisp injection through crafted group names.  The unescaped group
name was embedded into a Lisp-readable string, parsed back with
read-from-string in gnus-draft-setup, and eventually eval'd via
message-do-actions, allowing code execution when a draft was sent.
2026-05-22 11:59:43 -07:00
Martin Rudalics
d6f7b2d99b Save/restore old_buffer slot via window configurations (Bug#81097)
With Emacs 31 the old_buffer slot of a window gets overwritten
with the buffer unshown in that window when that window is
deleted.  Fset_window_configuration triggers that when calling
delete_all_child_windows.  If a window configuration gets saved
and restored in one and the same redisplay cycle, the change
time stamps of the window and its frame will be equal and
'window-buffer-change-functions' may wrongly decide that the
window's buffer has not changed because its buffer and
old_buffer slots refer to the same buffer (Bug#81097).  Fix that
by saving and restoring the old_buffer slot.

* src/window.c (struct saved_window): Add 'old_buffer' slot.
(Fset_window_configuration): Restore old_buffer slot.
(save_window_save): Save old_buffer slot.
2026-05-22 19:33:57 +02:00
Michael Albinus
e0fbecaf65 Adapt ert-remote-temporary-file-directory settings
* lisp/emacs-lisp/ert-x.el (tramp-default-remote-shell)
(tramp-encoding-shell): Declare.
(tramp-methods) <mock>: Add `tramp-tmpdir'.  Adapt
`tramp-login-program' and `tramp-remote-shell'.
2026-05-22 18:37:36 +02:00
Eli Zaretskii
3de7f0ce5e Fix warning message in 'markdown-ts-mode--initialize'
* lisp/textmodes/markdown-ts-mode.el
(markdown-ts-mode--initialize): Tweak the warning message when
Tree-sitter is not available.  (Bug#81100)
2026-05-22 19:12:12 +03:00
Eli Zaretskii
7df8604ea6 ; Improve documentation of lazy-highlight in search and replace commands
* lisp/isearch.el (lazy-highlight, lazy-highlight-initial-delay)
(lazy-highlight-buffer, isearch-lazy-highlight, isearch-forward):
* lisp/replace.el (query-replace, query-replace-lazy-highlight)
(query-replace, query-replace-regexp): Doc fixes.

* doc/emacs/search.texi (Search Customizations): Document
'lazy-highlight-buffer' and 'lazy-highlight-buffer-max-at-a-time'.
Use @vtable to avoid the need of indexing each variable
separately.
2026-05-22 14:46:13 +03:00
Eli Zaretskii
cda03bebfc Improve w32 implementations of 'signal' and 'raise'
* src/w32proc.c (w32_raise): A more complete, Posix-compliant
implementation.
(sys_signal): Support SIGBREAK.
* src/syssignal.h (raise): Redirect to 'w32_raise'.
* src/atimer.c: Don't redirect 'raise', now done in syssignal.h.
(Bug#80760)
2026-05-22 12:31:04 +03:00
Dmitry Gutov
2936b36164 Fix "assertion 'GTK_IS_WINDOW (window)' failed"
* src/gtkutil.c (xg_frame_set_size_and_position): Remove a
gtk_window_resize call which used a wrong value type
(GdkX11Window instead of GtkWindow).  The original motivation
for that line seems to be fixed by later changes (bug#80662).
2026-05-22 06:46:47 +03:00
Dmitry Gutov
98348a0bdc [Xt] Fix child frame resizing glitch
* src/widget.c (EmacsFrameResize): Exit early for child frames
(bug#81077).
2026-05-22 01:50:03 +03:00
Roland Winkler
0d5680665b Etags handling of fortran files (bug#81086).
* lib-src/etags.c: Tag fortran modules.  Honor file extensions
"f95", "f03", "f08" for fortran files.
* doc/emacs/maintaining.texi: Update accordingly.
2026-05-21 16:45:41 -05:00
João Távora
13b29eebc1 Eglot: use standard face for completion annotations (bug#81088)
* lisp/progmodes/eglot.el (eglot-completion-at-point): Use
completions-annotations face, not font-lock-function-name-face.
2026-05-21 10:33:37 +01:00
João Távora
e86825e595 Merge from origin/emacs-31
655302cc21 Fix 'shr-outline-search' (bug#81073)
1754015c60 Improve auth-source-backend-parse
8f31ccbf82 Eglot: announce markdown support for completion docs
aad170d1ed markdown-ts-mode: hide fence lines in view-mode (bug#81081)
133d1d591c markdown-ts-mode: align default face definitions with mar...
e0aeee2dc5 Fix markdown-ts-mode atx_heading face computation (bug#81...
997fc2cef7 Allow markdown-ts--run-command-in-code-block to ignore ou...
7d84e69a34 hideshow: Menu entry for 'hs-toggle-all'
e90cafc288 ; * doc/lispref/display.texi (Displaying Faces): Mention ...
520c5b7c71 ; * doc/lispref/text.texi (Special Properties): Fix last ...
8095fbef77 doc/lispref/text.texi: Add complement to commit f4a1c00656
9436d92c5d Eglot: fix eglot--format-makrup when MARKUP just a string
9ba65aa965 Fix missing margin face on display prop in erc-stamp
2026-05-21 00:24:52 +01:00
Juri Linkov
655302cc21 Fix 'shr-outline-search' (bug#81073)
* lisp/net/shr.el (shr-outline-search):
Don't check for the beginning of the line.
Suggested by Omar Antolín Camarena <omar@im.unam.mx>.
Confirmed by Rahguzar <rahguzar@mailbox.org>.
2026-05-20 18:41:59 +03:00
Pip Cet
3131d56606 Avoid crash in doprnt
* src/doprnt.c (doprnt): Don't access string[-1].
2026-05-20 14:05:25 +00:00
Pip Cet
0b5ead9923 Detect some API violations in combine-change-calls (bug#80877)
Quickly verify that the number of unchanged characters before and
after the region that changes are supposed to be limited to doesn't
change.

Suggested by Stefan Monnier.

* lisp/subr.el (combine-change-calls-1): Copy BEG into a marker, and
count the characters after the changed region.  After the changes,
ensure the character counts still match.
* test/lisp/subr-tests.el (subr-test-combine-change-calls-error): New.
2026-05-20 11:27:40 +00:00
Michael Albinus
1754015c60 Improve auth-source-backend-parse
* lisp/auth-source.el (auth-source-backend-parse): Use `run-hook-wrapped'.
Suggested by Augusto Stoffel <arstoffel@gmail.com>.
Transform a warning into a debug message.
2026-05-20 10:10:30 +02:00
João Távora
8f31ccbf82 Eglot: announce markdown support for completion docs
No reason not to.  Tested with gfm-view-mode and markdown-ts-mode

* lisp/progmodes/eglot.el (eglot-client-capabilities): Annouce
markdown support for completion docs.
2026-05-20 00:51:57 +01:00
Rahul Martim Juliato
aad170d1ed markdown-ts-mode: hide fence lines in view-mode (bug#81081)
* lisp/textmodes/markdown-ts-mode.el
(markdown-ts--fontify-delimiter): When `markdown-ts-hide-markup'
is enabled in `markdown-ts-view-mode', also hide the whole line
containing a `fenced_code_block_delimiter' (including its
terminating newline) so Eldoc/LSP markdown snippets render
without stray blank lines around the code block.  Scoped to
view-mode and to fenced delimiters on purpose: the same handler
is shared by inline delimiters (emphasis, code span, link
brackets) where munching surrounding whitespace would collapse
word separators, and tuning rendering for
hide-markup-while-editing is not a goal.
2026-05-20 00:35:49 +01:00
João Távora
133d1d591c markdown-ts-mode: align default face definitions with markdown-mode
Match the out-of-the-box appearance of markdown-ts-mode to the
non-tree-sitter markdown-mode package, making switching between modes
less jarring.

* lisp/textmodes/markdown-ts-mode.el (markdown-ts-delimiter)
(markdown-ts-heading-1, markdown-ts-heading-2, markdown-ts-heading-3)
(markdown-ts-heading-4, markdown-ts-heading-5, markdown-ts-heading-6)
(markdown-ts-block-quote, markdown-ts-code-block, markdown-ts-code-span)
(markdown-ts-indented-code-block, markdown-ts-html-tag)
(markdown-ts-html-block, markdown-ts-thematic-break)
(markdown-ts-entity-reference, markdown-ts-numeric-character-reference)
(markdown-ts-table, markdown-ts-table-header, markdown-ts-table-cell)
(markdown-ts-table-delimiter-cell, markdown-ts-language-keyword)
(markdown-ts-list-marker, markdown-ts-hard-line-break-backslash)
(markdown-ts-hard-line-break-backslash-hidden)
(markdown-ts-hard-line-break-space-hidden)
(markdown-ts-task-unchecked, markdown-ts-task-checked): Tweak.
2026-05-20 00:35:39 +01:00
Stéphane Marks
e0aeee2dc5 Fix markdown-ts-mode atx_heading face computation (bug#81042)
The grammar reports leading spaces as part of the atx_heading "marker"
and we cannot use the length of the marker as a result.  Instead, count
the number of consecutive # after any blanks to determine its "level."

* lisp/textmodes/markdown-ts-mode.el
(markdown-ts--fontify-atx-heading): Count the octothorpes rather
than using the length of the marker node's text.
2026-05-20 00:35:16 +01:00
Stéphane Marks
997fc2cef7 Allow markdown-ts--run-command-in-code-block to ignore output (bug#81041)
Do not assume every command run in
'markdown-ts--run-command-in-code-block' produces output that needs to
be merged from the temp/work buffer into the source buffer.  One example
is 'xref-find-definitions', the temp buffer of which is unrelated to the
source buffer.

* lisp/textmodes/markdown-ts-mode.el
(markdown-ts-code-block-commands): Add 'complete-symbol'.
(markdown-ts-code-block-ignore-output-commands): New defvar.
(markdown-ts--run-command-in-code-block): Ignore command output
when necessary.
2026-05-20 00:34:39 +01:00
Paul Eggert
a8b9fad897 Make X_ERROR_MESSAGE_SIZE dependency more explicit
This avoids an alloca in x_set_mouse_color.
* src/xfns.c (x_set_mouse_color): Use local array rather than
alloca, since the string is small.
* src/xterm.c (X_ERROR_MESSAGE_SIZE): Move defn from here ...
* src/xterm.h: ... to here, and make it an enum not a macro.
2026-05-19 11:54:26 -07:00
Paul Eggert
2dbfed0532 display_tty_menu_item eassert for absurdly long item texts
* src/xdisp.c (display_tty_menu_item): Add an eassert.
2026-05-19 11:54:26 -07:00
Paul Eggert
fe33900747 Simplify serial_open
* src/sysdep.c (serial_open): On failure, simply return -1
and set errno; do not call report_file_error, as the
caller is supposed to do that if needed.
2026-05-19 11:54:25 -07:00
Paul Eggert
b3b3e203cc Fix unlikely dump_off overflow in pdumper
* src/pdumper.c (dump_grow_buffer): Remove.
(dump_write): Use xpalloc instead.  Avoid undefined behavior
if (ctx->offset + nbyte) exceeds DUMP_OFF_MAX.
2026-05-19 11:54:25 -07:00
Paul Eggert
c80d22dcfc Remove stray inrange_pipe comment 2026-05-19 11:54:25 -07:00