1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-26 07:00:35 -08:00
Commit graph

50117 commits

Author SHA1 Message Date
Paul Eggert
d3a2ec5210 Simplify alloc by assuming MALLOC_IS_LISP_ALIGNED
Problem reported by Hong Xu <https://bugs.gnu.org/75551#14>.
* src/alloc.c (MALLOC_IS_LISP_ALIGNED): static_assert it,
since it is true on all current Emacs platforms.
All uses simplified to assume it is true.
(xmalloc, xzalloc, xrealloc, lisp_malloc): Just use
malloc/calloc/realloc.  Since we are using the malloc-gnu
and realloc-posix modules, we need not worry about whether
these functions return a null pointer for zero-size requests.
(xrealloc): Stop worrying about no-longer-existing platforms
where realloc (nullptr, ...) did not work.
(laligned, lmalloc, lrealloc): Remove.  All uses removed.
2025-01-17 15:56:30 -08:00
Pip Cet
2a00bedeae Fix build on Solaris 10 (bug#75451)
* autogen.sh: Avoid bashism.
* configure.ac (AC_PROG_AWK): Use.
* src/Makefile.in (AWK): Set.
(dmpstruct.h): Use "$(AWK)", not "awk".
* src/dired.c (DT_UNKNOWN, DT_DIR, DT_LNK): Define all three constants
or none of them.
2025-01-17 17:22:45 +00:00
Stefan Kangas
91b2b3654f Turn macros into enums in keyboard.h
* src/keyboard.h (item_property_idx, menu_item_pane_idx): Turn macros
into enums.
(ITEM_PROPERTY_MAX): New constant.
* src/keyboard.c (parse_menu_item): Use above new constant.
2025-01-17 18:17:35 +01:00
Pip Cet
7fdec438ef ; * src/font.c (syms_of_font): Fix typo. 2025-01-16 15:55:30 +00:00
Eli Zaretskii
8d471adece Fix subtle problem with updating 'font_style_table'
* src/font.c (font_style_to_value): Update the Vfont_* variables
to keep them in sync with their slots in 'font_style_table'.
(Bug#75521)
(syms_of_font): Comment on usage of DEFVAR_LISP_NOPRO.
2025-01-16 17:51:47 +02:00
Stefan Kangas
4f946a6522 Fix clear-string crash with text properties
* src/fns.c (Fclear_string): Fix crash by clearing all text
properties.  (Bug#75581)
* doc/lispref/strings.texi (Modifying Strings): Document the above
behavior change.
Fix proposed by Andreas Schwab <schwab@linux-m68k.org>.
2025-01-15 23:16:19 +01:00
Stefan Kangas
e092aabf71 Prefer 'ARRAYELTS (x)' to 'sizeof x / sizeof *x'
* src/comp.c (emit_limple_insn):
* src/msdos.c (dos_set_keyboard, dos_rawgetc):
* src/sysdep.c (convert_speed, list_system_processes):
* src/w32fns.c (deliver_wm_chars, Fx_file_dialog):
* src/w32term.c (record_event, w32_read_socket):
Prefer 'ARRAYELTS (x)' to 'sizeof x / sizeof *x'.

* admin/coccinelle/arrayelts.cocci: New file.
2025-01-15 20:19:39 +01:00
Stefan Kangas
16c89c5ae5 Use calln instead of calling Ffuncall directly
* src/bytecode.c (bcall0):
* src/comp.c (bcall0):
* src/eval.c (apply1):
* src/lisp.h (call0):
* src/thread.c (invoke_thread_function): Use calln instead of calling
Ffuncall directly.

* admin/coccinelle/calln.cocci: New semantic patch.
2025-01-14 21:37:04 +01:00
Eli Zaretskii
e633bbfec0 ; Fix wording and coding style of a recent commit
* src/treesit.c (treesit_traverse_match_predicate): Fix style.

* doc/lispref/parsing.texi (User-defined Things): Fix wording.
2025-01-14 14:49:27 +02:00
Martin Rudalics
d4aeb6bd23 Handle removal of selected tty child frame
* src/dispextern.h (root_frame):
* src/frame.h (root_frame): Move declaration from dispextern.h
to frame.h.
(SET_FRAME_VISIBLE): Whend making the selected tty child frame
invisible, use mru_rooted_frame to find a frame to switch to.
* src/dispnew.c (root_frame): Move root_frame to frame.c.
* src/frame.c (do_switch_frame): On ttys don't change the
top frame when switching from a child frame to another frame
with the same root.
(root_frame): Move here from dispnew.c.
(Fframe_root_frame): New Lisp function.
(delete_frame): Whend deleting the selected tty child frame use,
mru_rooted_frame to find a frame to switch to.
* src/window.c (mru_rooted_frame): New function.
* src/window.h (mru_rooted_frame): Declare it.
* doc/lispref/frames.texi (Child Frames): Describe new function
'frame-root-frame'.
2025-01-14 09:51:17 +01:00
Stefan Kangas
e6ad99e36c src/comp.c: New macro CALLNI
* src/comp.c (CALL0I, CALL1I, CALL2I, CALL4I): Delete macros.
(CALLNI): New macro, replacing the above.  All callers updated.
2025-01-14 00:48:07 +01:00
Stefan Kangas
383de5c3f6 Prefer calln to CALLN where applicable
* src/callint.c (read_file_name):
* src/comp.c (CALL0I, CALL1I, CALL2I, CALL4I, declare_imported_func):
* src/data.c (Ffset, notify_variable_watchers):
* src/eval.c (Ffuncall_with_delayed_message):
* src/keymap.c (Fdescribe_buffer_bindings):
* src/minibuf.c (Fread_buffer, Fcompleting_read):
* src/pdumper.c (Fdump_emacs_portable):
* src/print.c (print_vectorlike_unreadable):
* src/treesit.c (treesit_traverse_match_predicate)
(treesit_build_sparse_tree): Prefer calln to CALLN.
2025-01-14 00:16:40 +01:00
Yuan Fu
f0e63558bd
Add 'and', 'named', and 'anonymous' predicate for tree-sitter
* doc/lispref/parsing.texi (User-defined Things): Mention the
new predicate.
* src/treesit.c (treesit_traverse_validate_predicate): Recognize
named, anonymous, and and predicates.
(treesit_traverse_match_predicate): Handle named, anonymous, and
and predicates.
2025-01-12 23:41:47 -08:00
Stefan Kangas
ccd927d741 Use eabs in Fcurrent_time_zone
* src/timefns.c (Fcurrent_time_zone): Use eabs.
* test/src/timefns-tests.el
(timefns-tests-current-time-zone): New test.
2025-01-13 01:05:42 +01:00
Gerd Möllmann
d00de6f166 ; Add some niceties to .lldbinit
* src/.lldbinit: Handle some signals for tty Emacs.
New commands xreload and xattach. Common breakpoints.
2025-01-12 08:46:28 +01:00
Eli Zaretskii
412c1a4f0e ; * src/keymap.c: Fix last change (bug#75219). 2025-01-12 08:24:39 +02:00
Eli Zaretskii
c41ea047a4 Fix mouse-2 clicks on mode line and header line
* src/keymap.c (Fcurrent_active_maps): For clicks on mode-line and
header-line, always override the keymaps at buffer position.
(Bug#75219)
2025-01-12 08:22:24 +02:00
Juri Linkov
3d375ced1f ; * src/term.c (term_mouse_position): Fix 'fp' pointer. 2025-01-11 20:40:11 +02:00
Martin Rudalics
b7dc4ba213 Fix handling of 'minibuffer' frame parameter for tty frames
* src/frame.c (make_terminal_frame): Fix handling of
'minibuffer' frame parameter for tty child frames.  Support
'minibuffer-only' child frames.
2025-01-11 18:07:21 +01:00
Eli Zaretskii
9123102858 ; * src/term.c (tty_frame_at, term_mouse_position): Fix last change. 2025-01-11 18:39:19 +02:00
Eli Zaretskii
3d960c16c6 Merge from origin/emacs-30
d66b8d4bec Fix checkbox's child creation
26c5fadf47 Document that 'package-vc' doesn't support built-in packages
ee61b9a050 ; Fix documentation of completion commands
ce43d13593 ; Simplify admin/run-codespell
fa1470d069 ; Remove duplicated word in files.el Commentary
dabaea9746 Improve checkdoc-common-verbs-wrong-voice docstring
6de2ee5663 Document string-as-{unibyte,multibyte} as obsolete in manual
7f76f872eb Fix go-ts-mode var spec indentation (Bug#75362)
01464fc882 Add "text" as a thing in tsx-ts-mode
59c5733792 Improve doc string of 'package-delete'
313a191d04 ; * admin/MAINTAINERS: Remove Kelvin White.
002960ceab Clarify that 'mac' line ending convention is not used on ...
4210e06564 Add language server for Odin
ee1034422b ; Improve documentation of function-type display
1c49edc408 Modernize "Commentary" section of files.el
505c1123e1 * INSTALL: Add advice how to invoke 'make install'.  (Bug...
82e16cae9c Improve the documentation of 'key-valid-p'

# Conflicts:
#	etc/NEWS
#	lisp/progmodes/typescript-ts-mode.el
2025-01-11 07:44:23 -05:00
Jared Finder
d018a26f9c Support TTY child frames with GPM mouse
* lisp/frame.el (x-list-fonts): Delete `frame-at', to move to
C implementation.
* lisp/xt-mouse.el (xterm-mouse-event): Call new `tty-frame-at'.
* src/term.c (tty_frame_at, Ftty_frame_at): New C function,
replacing `frame-at' only for TTYs.
(term_mouse_position): Use last_mouse_frame when it is set.
(handle_one_term_event): Call tty_frame_at to get frame under
mouse, store it in last_mouse_frame.  Alter event coordinates
based on mouse frame.
(syms_of_term): Add tty-frame-at, last_mouse_frame.
* src/termhooks.h: Make Gpm_Event parameter const.
2025-01-11 12:47:46 +02:00
Eli Zaretskii
ee61b9a050 ; Fix documentation of completion commands
* src/minibuf.c (Fcompleting_read): Move part of doc string of
'read-from-minibuffer' to doc string of this function.  Suggested
by Eshel Yaron <me@eshelyaron.com>.
2025-01-11 12:40:59 +02:00
Robert Pluim
8e9ad92a14 Protect Vframe_list updating from interruptions
* src/frame.c (delete_frame): When deleting the frame from
Vframe_list, block input, since input can arrive whilst we're
running lisp  (Bug#74902).
2025-01-10 16:09:34 +01:00
Martin Rudalics
7f286e7d83 Have 'split-window' optionally resurrect deleted windows
* src/window.c (Fwindow_old_buffer): Handle deleted window as
argument.
(make_parent_window): Remove function.
(Fsplit_window_internal): New argument REFER for resurrecting
deleted windows.  Incorporate functionality of defunct
make_parent_window.
(Fdelete_window_internal, delete_all_child_windows): Store any
deleted window's buffer in the window's old_buffer slot.
(window_dead_windows_table): Make it a 'value' type hash table
so the sequence number cannot affect its weakness.
* lisp/window.el (split-window): New argument REFER.
* doc/lispref/windows.texi (Resurrecting Windows): New section.
(Splitting Windows): Explain new argument REFER.
(Window Hooks): Rewrite description of 'window-old-buffer'.
* etc/NEWS: Mention new REFER argument for 'split-window'.
2025-01-10 09:24:20 +01:00
Juri Linkov
42a5ac3b51 Use the treesit thing 'list' with symbol property 'treesit-thing-symbol'
* doc/lispref/parsing.texi (User-defined Things): Mention new
functions 'treesit-forward-list', 'treesit-down-list',
'treesit-up-list', 'treesit-show-paren-data' that use the thing
'list' with the symbol property 'treesit-thing-symbol' (bug#73404).

* lisp/treesit.el: Put the property 'treesit-thing-symbol'
on the symbol 'list'.
(treesit--forward-list-with-default, treesit-down-list)
(treesit-up-list, treesit-navigate-thing)
(treesit-show-paren-data--categorize, treesit-major-mode-setup):
Replace 'sexp-list' with 'list'.

* lisp/progmodes/c-ts-mode.el (c-ts-mode--thing-settings):
* lisp/progmodes/js.el (js-ts-mode):
* lisp/progmodes/ruby-ts-mode.el (ruby-ts-mode):
* lisp/progmodes/typescript-ts-mode.el (typescript-ts-base-mode)
(tsx-ts-mode):
* lisp/textmodes/html-ts-mode.el (html-ts-mode):
Replace 'sexp-list' with 'list'.

* src/treesit.c (treesit_traverse_validate_predicate)
(treesit_traverse_match_predicate): Check if the 'pred'
symbol has the property 'Qtreesit_thing_symbol'.
(syms_of_treesit): New symbol 'Qtreesit_thing_symbol'.
2025-01-10 09:33:49 +02:00
Martin Rudalics
0edafe0fb6 In xt_action_hook don't act on deleted window's scroll bar (Bug#75120)
* src/xterm.c (xt_action_hook): Make sure window_being_scrolled
is live (Bug#75120).
* src/pdumper.c (dump_subr): Update pertinent hash of
HASH_Lisp_Subr.
2025-01-09 09:37:13 +01:00
Stefan Kangas
b6bec47c4a ; Fix indentation in itree.c 2025-01-09 05:13:28 +01:00
Stefan Kangas
40fbed939a Improve 'gethash' docstring
* src/fns.c (Fgethash): Improve docstring.  Avoid exposing the C
identifier 'dflt' to Lisp by providing a "usage:" string.
2025-01-09 02:56:11 +01:00
Eli Zaretskii
5eca08bb23 ; * src/lisp.h (struct Lisp_Subr): Fix comment (again). 2025-01-08 16:06:19 +02:00
Eli Zaretskii
a427927123 ; * src/lisp.h (struct Lisp_Subr): Fix comment. 2025-01-08 15:43:40 +02:00
Pip Cet
ac52993b99 Fix store_function_docstring for native subrs (Bug#74966)
Since native subrs can have either etc/DOC indexes or vector indexes,
we use the sign bit of the 'doc' field to distinguish the two cases.

* src/comp.c (native_function_doc, make_subr): Use one's complement of
doc index for native subrs.
* src/doc.c (store_function_docstring): Add assertion.
* src/lisp.h (struct Lisp_Subr): Document 'doc' sign bit.
2025-01-08 12:41:56 +00:00
Stefan Kangas
631f43d2bb ; Fix indentation in src/nsterm.h
Reduce the diff between master and scratch/igc.
2025-01-08 07:29:33 +01:00
Stefan Kangas
2ec7396d5d Move define_error declaration and docstring
* src/lisp.h (define_error): Move declaration to its proper place, make
external, and move its docstring...
* src/eval.c (define_error): ...to its function definition.
2025-01-08 06:51:20 +01:00
Stefan Kangas
9811f80d25 ; Fix indentation 2025-01-08 06:51:08 +01:00
Eli Zaretskii
dc41ddb4d6 Allow to remap 'header-line' face
* src/xfaces.c (realize_basic_faces): Bind 'face-remapping-alist'
to nil while realizing basic faces.
(lookup_basic_face): Force realizing a face whose 'inherit'
attribute is non-nil.  (Bug#73862)
2025-01-05 12:40:39 +02:00
Eli Zaretskii
cc5cd4de93 Fix setup of coding-systems on MS-Windows
* src/emacs.c (main) [HAVE_PDUMPER] [WINDOWSNT]: Call
'w32_init_file_name_codepage' again after loading the pdumper
file.
* src/w32.c (w32_init_file_name_codepage) [HAVE_PDUMPER]:
Reinitialize additional variables.  (Bug#75207)
2025-01-05 07:56:27 +02:00
Eli Zaretskii
6814ab06f2 Merge from origin/emacs-30
6468c3f7a7 Update doc string of 'insert'
6d8c3c0cbe Use `keymap*-set' over `global-set-key'/`define-key' in e...
4b2bb63b7a Fix documentation and prompt in 'package-isolate'
55f43f5b22 ; Fix typo in treesit-explore-mode
921f454f50 Update fontification for attribute values in heex-ts-mode
ae2589ea7a Add expression handling to heex-ts-mode
0cacf80639 ; * etc/NEWS: Document change of 'make-cursor-line-fully-...
f47a29da5c * lisp/man.el (Man-mode): Improve docstring.

# Conflicts:
#	etc/NEWS
2025-01-04 09:59:55 -05:00
Ulrich Müller
6468c3f7a7 Update doc string of 'insert'
* src/editfns.c (Finsert): Mention 'decode-coding-string' instead
of the obsolete 'string-as-multibyte' in doc string.  (Bug#75345)
2025-01-04 15:31:24 +02:00
Daniel Colascione
b828d36ded Automatically redraw frames for filtered faces
Automatically redraw frames when we detect that a window
parameter used in a face filter is changed.  (Bug#75291)

* src/window.c (Fset_window_parameter): redraw window, actually
whole frame in this implementation, on face-relevant parameter
change
(syms_of_window): add window_auto_redraw_on_parameter_change
* src/xfaces.c (evaluate_face_filter): record properties
2025-01-03 23:48:41 -05:00
Stefan Kangas
7fa975adbc Update copyright year to 2025
Run "TZ=UTC0 admin/update-copyright".
2025-01-02 18:39:42 +01:00
Paul Eggert
4da38c6321 Update copyright year to 2025
Run "TZ=UTC0 admin/update-copyright".
2025-01-01 07:39:17 +00:00
Pip Cet
2f1052d9b0 ; * src/doc.c (store_function_docstring): Fix typo. 2024-12-30 21:55:38 +00:00
Daniel Colascione
72eb5f8bed Make browser windows pop up when browsing URLs on Wayland
When a user invokes browse-url, the browser window viewing the URL
should be raised in the user's desktop environment.  On X11, running
xdg-open as a subprocess does the job.  However, on Wayland, this
approach doesn't work: xdg-open makes the web browser browse a URL all
right, but doesn't raise the browser window in the GUI.  Therefore, if
the browser window is behind Emacs, browse-url appears to do nothing.
Repeated invocations of browse-url cause the browser to load multiple
tabs in the background, surprising the user when he gives up in
frustration and manually switches to the browser window.

There's no subprocess we can run to make the right thing happen.
Wayland requires that we pass along event activation information to the
browser using the xdg_activation_v1 protocol.

This change adds x-gtk-launch-uri to invoke GTK-native URL-dispatch
machinery.  This machinery DTRT on both X11 and Wayland.  We fall back
to the default browser machinery if we're not on a GTK frame.

The logic is more complicated than it has to be because the GTK URI
launch mechanism requires that we launch with respect to a specific GTK
window, and in some environments (e.g., running emacs -nw in a PGTK
Emacs) we don't have a GTK window.  We also want to preserve the effect
of customizing browse-url-browser-function, so adding an entry to
browse-url-default-handlers that preempts URI open when we happen to be
on a GTK frame is the wrong thing to do.

* lisp/net/browse-url.el (browse-url--browser-defcustom-type):
(browse-url--inhibit-pgtk): avoid infinite recursion
(browse-url-default-browser): use pgtk launch
(x-gtk-launch-uri): new function
(browse-url-default-gtk-browser): ues it

* src/pgtkfns.c (unwind_gerror_ptr): new function
(Fx_gtk_launch_uri): new function
(syms_of_pgtkfns): register it

* etc/NEWS: mention the new feature
2024-12-28 13:28:40 -05:00
Eli Zaretskii
af3bbc8360 Merge from origin/emacs-30
2ba6387d1d ; Fix inaccuracy in ELisp Reference manual
8ac6a17880 ; * etc/PROBLEMS: Mention problems with XPM support in GD...
624322d5f6 Add missing fontification matches for elixir-ts-mode
5bafb11b40 ; Fix copyright year
186ea40732 Don't start docstrings with "This function" or similar
cb8ce2e68b Enable indent-tabs-mode in obj-c-mode
54f3513709 Fix comment indent in 'lua-ts-mode' and old grammar
8b95549e90 * admin/nt/dist-build/build-dep-zips.py: (deps src) handl...
8064b2a679 Document undocumented completion commands
c29b798537 ; etc/w32-feature.el (harfbuzz): improve test
0e43e35f96 * admin/nt/dist-build/emacs.nsi: (Uninstall) delete only ...
b83cd8a8fb ; * etc/tutorials/TUTORIAL.ko: Fix the beginning.
41caccc488 ; * etc/publicsuffix.txt: Update from upstream.
e6fb18406e ; Fix refcards
14e791f9ba ; Update acknowledgments for Emacs 30
861b7864fc ; Fix node name in emacs-lisp-intro.texi
77243ba5be ; Update version tags of defcustoms
fe2ac33bae ;* doc/misc/efaq.texi (New in Emacs 30): Mention 'trusted...
8fb884f0dc ; * etc/NEWS: Fix wording.
e281355a5e Improve D-Bus and Tramp manual

# Conflicts:
#	doc/emacs/emacs.texi
#	etc/NEWS
#	lisp/erc/erc-log.el
#	lisp/eshell/esh-mode.el
#	lisp/which-key.el
2024-12-28 08:30:31 -05:00
Alan Third
691c161a81 Make image cache aware of image-scaling-factor (bug#74725)
* src/dispextern.h (struct image): Add scale so it can be compared in
search_image_cache.
* src/image.c (search_image_cache): Calculate the scale factor and
compare with the cached value.
(image_compute_scale): Compute the image's scale factor and optionally
store it in the image struct.
(compute_image_size): Move scale calculation code into
image_compute_scale and use it.
2024-12-28 12:36:58 +00:00
Paul Eggert
577714e3fe Don’t include stdlib.h from conf_post.h
This is brittle, as evinced by the recent problem with lib/stdlib.c.
* src/conf_post.h: Move potential inclusion of stdlib.h and
redefinitions of malloc, free, realloc, aligned_alloc, and calloc
from here ...
* src/lisp.h: ... to here.  Do not redefine the symbols
if UNEXMACOS_C is defined.
* src/unexmacosx.c: Do not undef malloc, realloc, free.
(UNEXMACOS_C): New symbol, to prevent lisp.h from defining them.
2024-12-26 16:29:02 -08:00
Paul Eggert
a51642ba5f Let Gnulib deal with MB_CUR_MAX
Recent Gnulib should work around the Android NDK 16
MB_CUR_MAX bug, so Emacs no longer needs to worry about it.
* configure.ac (gl_STDLIB_H):
Remove, to stop overriding Gnulib.
* configure.ac (__ctype_get_mb_cur_max)
(emacs_cv_broken_mb_cur_max, REPLACEMENT_MB_CUR_MAX):
* src/conf_post.h (MB_CUR_MAX):
Remove, as Gnulib does this now.
2024-12-26 16:29:02 -08:00
Charalampos Mitrodimas
ab38885156 Fix format specifier warnings in nsterm.m
Resolve warnings caused by mismatched format specifiers in `NSLog` and
`fprintf` calls.

This was observed when compiled with Clang version
19.1.6 (arm64-apple-darwin).

Warnings fixed:
- "format specifies type 'unsigned int' but the argument has type
  'IOReturn' (aka 'int')"

* src/nsterm.m: Cast `IOReturn` (aka `int`) to `unsigned int` for `%x`
format specifiers in `NSLog`.  (Bug#74971)
2024-12-26 16:12:16 +01:00
Eli Zaretskii
8064b2a679 Document undocumented completion commands
* src/minibuf.c (Fread_from_minibuffer):
* lisp/minibuffer.el (minibuffer-complete-history)
(minibuffer-complete-defaults): Doc fixes.

* doc/emacs/mini.texi (Completion Commands): Fix markup, style of
describing commands, and indexing.  Document 'C-x UP' and 'C-x
DOWN'.
2024-12-24 21:25:02 +02:00