Commit graph

181153 commits

Author SHA1 Message Date
Basil L. Contovounesios
80a52e118d ; List my areas of interest in maintaining. 2026-02-12 19:15:39 +01:00
Basil L. Contovounesios
aa9acfacf0 Check that a UPower battery device IsPresent
The composite DisplayDevice is meant to be presented to the user
only if it IsPresent.  It is not entirely clear whether PowerSupply
implies IsPresent, so check both (bug#80229).

* lisp/battery.el (battery-upower): Skip hot-removable batteries
that are missing from the bay.
2026-02-12 19:15:39 +01:00
Basil L. Contovounesios
0a02ab6db8 Allow disabling battery-update-timer
Now that battery--upower-subscribe registers to signals from
DisplayDevice (bug#80229), it is possible to react to more than just
State changes, including Percentage and IsPresent (although the
latter may already be covered by the DeviceAdded and DeviceRemoved
signals).

That means that it should be possible to disable polling via
battery-update-timer and still get timely mode line updates.

* etc/NEWS
(Changes in Specialized Modes and Packages in Emacs 31.1):
Announce new battery-update-interval :type.

* lisp/battery.el (battery-update-interval): Allow setting to nil.
(display-battery-mode): Do not create battery-update-timer then.
(battery-upower-display-device-path): New constant.
(battery--upower-subscribe): Use it.
(battery-upower-subscribe-properties): New variable.
(battery--upower-props-changed): Use it for more flexibility over
which DisplayDevice properties to react to.
(battery--upower-signal-handler): Call battery-update-handler
directly when there is no battery-update-timer.
2026-02-12 19:15:39 +01:00
Morgan Smith
0a1238ad28 battery.el: Update on "DisplayDevice" state change
* lisp/battery.el (battery--upower-props-changed): Check if the
"State" has changed.
(battery--upower-subscribe): Subscribe to state changes of the
"DisplayDevice" (bug#80229).
2026-02-12 19:15:39 +01:00
Helmut Eller
eece2377dd * src/lisp.h (struct Lisp_Fwd): Add comments. 2026-02-12 18:51:51 +01:00
Helmut Eller
737ad9080b Add tests for per-buffer variables with predicates
* test/src/data-tests.el (data-tests-per-buffer-var-predicates): New.
2026-02-12 18:51:51 +01:00
Helmut Eller
40f696757c Move the Lisp_Fwd.bufoffset field back to the union
* src/lisp.h (struct Lisp_Fwd): With the predicate enum, we can now pack
the offset and the predicate into a one-word struct.
(XBUFFER_OFFSET): Use the new field name.
* src/buffer.c (DEFVAR_PER_BUFFER): Create the one-word struct.
* src/data.c (store_symval_forwarding): Use the new field name.
2026-02-12 18:51:51 +01:00
Helmut Eller
9008e6a9d7 Introduce an enum Lisp_Fwd_Predicate
Using an enum instead of a symbol makes it obvious that this field is
of no concern to the GC.

* src/lisp.h (enum Lisp_Fwd_Predicate): New.
(struct Lisp_Fwd): Use it instead of a symbol.
* src/buffer.c (DEFVAR_PER_BUFFER): Create the necessary enum constant
instead of a symbol.
* src/data.c (check_fwd_predicate, check_choice): New helpers.
(store_symval_forwarding): Use it.
2026-02-12 18:51:51 +01:00
Helmut Eller
3442fdd2a2 Remove struct Lisp_Buffer_Objfwd
* src/lisp.h (struct Lisp_Buffer_Objfwd): Deleted.
(struct Lisp_Fwd): Add the fields bufoffset and bufpredicate.
Make the type a 1-byte bitfield so that the entire struct still
fits in two words.
(XBUFFER_OFFSET): Renamed from XBUFFER_OBJFWD.
* src/buffer.c (DEFVAR_PER_BUFFER, defvar_per_buffer)
(buffer_local_value): Update accordingly.
* src/data.c (do_symval_forwarding, store_symval_forwarding)
(set_internal, default_value, set_default_internal)
(Fmake_local_variable, Fkill_local_variable, Flocal_variable_): Use
XBUFFER_OFFSET.
2026-02-12 18:51:51 +01:00
Helmut Eller
163dd21e73 Remove struct Lisp_Kboard_Objfwd
* src/lisp.h (struct Lisp_Kboard_Objfwd): Deleted ...
(struct Lisp_Fwd): ... replaced with field kbdoffset.
(DEFVAR_KBOARD): Use new field.
* src/data.c (XKBOARD_OFFSET): Renamed from XKBOARD_OBJFWD.
(do_symval_forwarding, store_symval_forwarding
(set_default_internal): Use it .
2026-02-12 18:51:51 +01:00
Helmut Eller
d109bcf86e Remove struct Lisp_Objfwd
* src/lisp.h (struct Lisp_Objfwd): Deleted.
(struct Lisp_Fwd): Replace it with objvar field.
(DEFVAR_LISP, DEFVAR_LISP_NOPRO, DEFVAR_LISP_NOPROX): Use the field.
* src/lread.c (defvar_lisp): Updated as needed.
* src/pdumper.c (dump_field_fwd): Use the field.
* src/data.c (XOBJVAR): Renamed and updated from XOBJFWD.
(do_symval_forwarding, store_symval_forwarding): Use it.
2026-02-12 18:51:51 +01:00
Helmut Eller
9d9189f74c Remove struct Lisp_Boolfwd
* src/lisp.h (struct Lisp Boolfwd): Deleted
(struct Lisp_Fwd): Replaced it with a boolvar field.
(DEFVAR_BOOL): Update.
* src/data.c (XBOOLVAR): Renamed from XBOOLFWD.
(do_symval_forwarding, store_symval_forwarding): Use it.
* src/pdumper.c (dump_field_fwd): Use boolvar field.
2026-02-12 18:51:51 +01:00
Helmut Eller
6d9ba8e7bf Remove struct Lisp_Intfwd
It was a struct with a single field.

* src/lisp.h (struct Lisp_Intfwd): Deleted.
(struct Lisp_Fwd): Add an intvar field instead.
(DEFVAR_INT): Update accordingly.
* src/data.c (XINTVAR): Updated and renamed from XFIXNUMFWD.
(do_symval_forwarding, store_symval_forwarding): Use it.
2026-02-12 18:51:51 +01:00
Helmut Eller
10befec978 Introduce a struct Lisp_Fwd
This contains the type and an union of Lisp_Objfwd, Lisp_Intfwd etc.
lispfwd is now a pointer to a struct Lisp_Fwd; the void *fwdptr field is
gone.

* src/lisp.h (struct Lisp_Fwd): New.
(Lisp_Intfwd, Lisp_Boolfwd, Lisp_Objfwd, Lisp_Buffer_Objfwd)
(Lisp_Kboard_Objfwd): The type is in in Lisp_Fwd.
(lispwfd): Is now a pointer to struct Lisp_Fwd.
(SYMBOL_BLV, SET_SYMBOL_FWD, XFWDTYPE, BUFFER_OBJFWDP): Update
accordingly.
(defvar_lisp, defvar_lisp_nopro, defvar_bool, defvar_int)
(defvar_kboard): These all take now a Lisp_Fwd.
(DEFVAR_LISP, DEFVAR_LISP_NOPRO, DEFVAR_BOOL, DEFVAR_INT)
(DEFVAR_KBOARD): Update for new types.
* src/lread.c (defvar_int, defvar_bool, defvar_lisp_nopro)
(defvar_lisp, defvar_kboard): Update for new types.
* src/pdumper.c (dump_field_fwd, dump_blv): Update accordingly.
(dump_fwd_int, dump_fwd_bool, dump_fwd_obj, dump_fwd_buffer_obj)
(dump_fwd): Deleted.
* src/buffer.c (DEFVAR_PER_BUFFER, defvar_per_buffer, buffer_local_value)
(set_buffer_internal_1): Update accordingly for new types.
* src/data.c (XBOOLFWD, XKBOARD_OBJFWD, XFIXNUMFWD, XOBJFWD, boundp)
(store_symval_forwarding, swap_in_global_binding)
(swap_in_symval_forwarding, find_symbol_value, set_internal)
(default_value, set_default_internal, make_blv, Fmake_local_variable):
Update accordingly.
2026-02-12 18:51:50 +01:00
Helmut Eller
ba9a765081 Make Lisp_Buffer_Objfwd objects const
The predicate field is always a builtin symbol.  That means we know the
bit pattern at compile-time and they don't change at runtime.

* src/buffer.c (DEFVAR_PER_BUFFER): Create a const struct.
(defvar_per_buffer): Remove predicate and address arguments.
(syms_of_buffer): Instead of &BVAR (current_buffer, foo) use a plain foo
as argument to DEFVAR_PER_BUFFER.

* src/pdumper.c (dump_field_fwd): No more relocs needed for
Lisp_Fwd_Buffer_Obj and we can't apply them in the .rodata section.
2026-02-12 18:51:50 +01:00
Helmut Eller
df48f7efc6 Don't dump lispfwd objects
The forwarding structs already exist in the data or bss section.
They are all created with DEFVAR_INT and similar macros.  Instead
of creating new structs in the dump, create relocs to the data section.

* src/pdumper.c (dump_field_fwd): New.
(dump_blv, dump_symbol): Use it.
(dump_pre_dump_symbol): Don't dump fwd objects.
2026-02-12 18:51:50 +01:00
Stephen Berman
f8a25d00ae Make 'overlays_in' use only real EOB (bug#80242)
This restores the original behavior of 'overlays_in'.  Changes in
this behavior had been made for cases of narrowing, but this
resulted in a regression with uses of 'remove-overlays'.

* src/buffer.c (overlays_in): Change all occurrences of ZV to Z.

* test/src/buffer-tests.el (test-overlays-in-2)
(test-remove-overlays): Adjust expected results to accommodate
changes in 'overlays_in'.
2026-02-12 18:48:20 +01:00
Stéphane Marks
adf6c7bcbe Move ns_init_colors from ns_term_init to emacs.c (bug#80377)
Accommodate NS Emacs on a headless system.

Add error checking for failed calls to NSColorList writeToURL
and writeToFile.

* src/nsterm.m (ns_term_init): Move color initialization to
nsfns.m.
* src/nsfns.m (ns_init_colors): New function.
(Fns_list_colors): Call ns_init_colors.
2026-02-12 16:55:27 +00:00
Stefan Monnier
c091ff00ec lisp/calendar/diary-icalendar.el (di:summary-regexp): Fix :type 2026-02-12 08:47:09 -05:00
Eli Zaretskii
4b12fb42fc Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs 2026-02-12 13:54:47 +02:00
Arto Jantunen
773c74ad7c Avoid errors in shr.el due to fractional colspan attribute
Apparently some people believe that a colspan can be fractional, and
produce HTML with such.  Make it possible for SHR to render such HTML
by truncating colspan.
* lisp/net/shr.el (shr-make-table-1): Ensure 'colspan' is a fixnum.
(Bug#80354)
2026-02-12 13:50:06 +02:00
Mattias Engdegård
beb9c26d4c ; Simplify 'prog1' optimiser
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
Drop unnecessary condition.  Noticed by Pip Cet.
2026-02-12 12:29:05 +01:00
Eli Zaretskii
b12a068352 Add a character to IPA input method
* lisp/leim/quail/ipa.el ("ipa"): Add ɜ.  Suggested by Coque Couto
<coque.couto@gmail.com>.  (Bug#80364)
2026-02-12 13:23:24 +02:00
Rahul Martim Juliato
396299b3c9 Fix parsing of Title field in Newsticker List buffer
* lisp/net/newst-backend.el (newsticker--parse-text-container):
Only "xhtml" type contains inline XML nodes that need to be run
through 'newsticker--unxml' to serialize back to a string.
(Bug#80317)
2026-02-12 13:15:10 +02:00
समीर सिंह Sameer Singh
970bef602e Improve composition rules for Devanagari script
* lisp/language/indian.el (devanagari-composable-pattern): Account
for contextual positioning of punctuation signs when preceded by
a character.  (Bug#80368)

Improve the Devanagari composition rules to account for contextual
positioning of punctuation signs when preceded by a character.
2026-02-12 12:45:26 +02:00
Martin Rudalics
0ff45e9ca6 Scale position values in xg_frame_set_size_and_position
* src/gtkutil.c (xg_frame_set_size_and_position): Scale
position values.
2026-02-12 09:43:04 +01:00
Dmitry Gutov
cf83dad395 Revise the paragraph about project-vc's caching
* doc/emacs/maintaining.texi (VC-Aware Project Backend):
Rephrase and mention a way to force invalitation (bug#78545).
2026-02-12 05:15:48 +02:00
Richard Lawrence
0f0a632028 * doc/emacs/calendar.texi (Diary iCalendar Import): Doc fix. 2026-02-11 16:04:32 -05:00
Stefan Monnier
451d5c6f05 (describe-mode): Fix bug#80170
* lisp/help-fns.el (describe-mode--minor-modes): Add argument `buffer`.
(describe-mode): Use it to fix call to `documentation` so the
docstrings are computed in the right buffer and thus show
correctly when bindings are shadowed by minor modes.
2026-02-11 15:53:09 -05:00
Morgan Willcock
a1e32130de Fix typo in smie-rules-function documentation
Fix a typo in the documentation for the expected arguments when
calling smie-rules-function to set the indentation offset of
function arguments.

* doc/lispref/modes.texi (SMIE Indentation):
* lisp/emacs-lisp/smie.el (smie-rules-function): Fix typo in
documentation for smie-rules-function arguments.
2026-02-11 15:35:29 -05:00
Stefan Monnier
bc9a53616a make-mode.el: Avoid obsolete font-lock-*-face` variables
* lisp/progmodes/make-mode.el (makefile-make-font-lock-keywords)
(makefile-makepp-font-lock-keywords): Use `font-lock-*-face`
faces rather than variables.
2026-02-11 15:35:03 -05:00
Mattias Engdegård
badef58d0a Better 'prog1' optimisation
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
Always evaporate 'prog1' when the tail is effect-free, even
when the value expression isn't.
2026-02-11 18:47:20 +01:00
Sean Whitton
2e7a066d56 icomplete-ret: Ignore icomplete-show-matches-on-no-input
* lisp/icomplete.el (icomplete-ret): No longer conditionalize on
icomplete-show-matches-on-no-input.
Suggested by Juri Linkov <juri@linkov.net> in bug#62108.
(icomplete-show-matches-on-no-input, icomplete-ret):
* etc/NEWS: Improve documentation.
2026-02-11 15:04:18 +00:00
Sean Whitton
90fbadb3b1 cond*: bind-and* is not always a non-exit clause!
* lisp/emacs-lisp/cond-star.el (cond*-non-exit-clause-p)
(cond*-non-exit-clause-substance): Don't consider a bind-and*
clause without ':non-exit' to be a non-exit clause (bug#80376).
(cond*):
* doc/lispref/control.texi (cond* Macro): Fix docs accordingly.
2026-02-11 14:23:38 +00:00
Stéphane Marks
6967a8ac54 ; system-sleep texi markup fix (bug#80348)
* doc/lispref/os.texi (System Sleep): Minor markup fixes.
2026-02-11 14:32:02 +01:00
Michael Albinus
17fb8a45f7 ; * test/lisp/net/dbus-tests.el: Remove obsolete function declarations. 2026-02-11 14:17:30 +01:00
Eli Zaretskii
e464052a28 ; Fix recently installed changes
* src/w32fns.c (w32_register_for_sleep_notifications)
(sleep_notification_callback): Fix signatures.
* src/w32term.h (w32_register_for_sleep_notifications): Fix
prototype.  These changes avoid compilation warnings.

* lisp/system-sleep.el: Remove stray non-ASCII character.

* doc/lispref/os.texi (System Sleep): Remove non-ASCII character,
and fix wording and markup.

* etc/NEWS: Fix wording of recently-added entry.
2026-02-11 14:44:09 +02:00
Mattias Engdegård
37891d1a1e ; * test/lisp/net/dbus-tests.el: no warnings for non-dbus configs 2026-02-11 11:06:54 +01:00
Stéphane Marks
0bee754a72 system-sleep sleep blocker and sleep/wake event package (bug#80348)
This package provides platform-neutral interfaces to block your
system from entering idle sleep and a hook to process pre-sleep
and post-wake events.

Implementations are for D-Bus on GNU/Linux, macOS/GNUstep, and
MS-Windows.

* lisp/system-sleep.el: New package.
* src/fns.c: Qpre_sleep, Qpost_wake: New DEFSYM.
* src/nsfns.m (Fns_block_system_sleep, Fns_unblock_system_sleep)
(syms_of_nsfns): New functions.
* src/nsterm.m (applicationDidFinishLaunching): Subscribe to
pre-sleep and post-wake notifications.
(systemWillSleep, systemDidWake): New function.
* src/w32fns.c (Fw32_block_system_sleep)
(Fw32_unblock_system_sleep, Fw32_system_sleep_block_count)
(sleep_notification_callback)
(w32_register_for_sleep_notifications): New function.
(syms_of_w32fns): Sw32_unblock_system_sleep
Sw32_block_system_sleep Sw32_system_sleep_block_count: New
defsubr.
* src/w32term.h (Fw32_block_system_sleep): New extern.
* src/w32term.c (w32_initialize): Call
w32_register_for_sleep_notifications.
* doc/lispref/os.texi: Document the system-sleep package.
* doc/lispref/commands.texi: Update sleep-event special
documentation.
* etc/NEWS: Announce the new package.
2026-02-11 09:52:38 +01:00
Juri Linkov
f13ab20f04 Don't remap RET to 'icomplete-ret' in 'icomplete-mode' (bug#62108)
* lisp/icomplete.el (icomplete-show-matches-on-no-input): Fix docstring.
(icomplete-minibuffer-map): Don't remap 'minibuffer-complete-and-exit' (RET)
to 'icomplete-ret'.
(icomplete-ret): Improve docstring.
2026-02-11 09:50:34 +02:00
Juri Linkov
79fda66327 Revert "New key 'M-j' for 'icomplete-mode' (bug#62108)"
This reverts commit 3584a762b8.
Another fix follows shortly after this commit.
2026-02-11 09:19:52 +02:00
Dmitry Gutov
d62370a0ec Improve project-vc-*cache-timeout docstrings
* lisp/progmodes/project.el: (project-vc-cache-timeout)
(project-vc-non-essential-cache-timeout): Improve docstrings (bug#78545).
2026-02-10 18:56:49 +02:00
Eli Zaretskii
d91d8c98f8 * src/process.c (server_accept_connection): Fix assertion (bug#80237). 2026-02-10 17:09:56 +02:00
Sean Whitton
f2b81c38c2 vc-git--deduce-files-for-stash: Use file-relative-name (bug#80278)
* lisp/vc/vc-git.el (vc-git--deduce-files-for-stash): Use
file-relative-name (bug#80278).
2026-02-10 11:46:25 +00:00
Dmitry Gutov
583a112169 Do cache and timed invalidation in "VC-aware" project backend
* lisp/progmodes/project.el: Describe the new cache in Commentary,
the "VC-aware project" section.
(project-vc-cache-timeout)
(project-vc-non-essential-cache-timeout): New variables.
(project--get-cached, project--set-cached):
New functions.
(project-try-vc, project--value-in-dir): Use them.
(project--read-dir-locals): New function, extracted from the
above.  Return the full alist, to be saved to cache at once.
(project--clear-cache): New function.
(project-remember-projects-under)
(project-forget-zombie-projects, project-forget-projects-under):
Use it.
(project-uniquify-dirname-transform, project-mode-line-format):
Bind 'non-essential' to choose the longer caching strategy.
(project-name-cache-timeout, project-name-cached): Remove.
(project-mode-line-format): Switch to calling 'project-name'
directly, with the new caching in use.

Co-authored-by: Juri Linkov <juri@linkov.net>
2026-02-10 02:54:14 +02:00
Dmitry Gutov
8cb9aaec0f Amend previous to avoid remote call in project--remove-from-project-list
* lisp/progmodes/project.el (project--remove-from-project-list):
Don't call 'abbreviate-file-name', expect it to be abbreviated
already.  The file might be on an inaccessible filesystem.
(project-current): Call abbreviate-file-name here (bug#80340).
2026-02-10 02:54:14 +02:00
Michael Albinus
9fd2fd5225 Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs 2026-02-09 18:32:06 +01:00
Michael Albinus
c65a4e6a43 ; * doc/lispref/os.texi (Timers): Fix typo. 2026-02-09 18:31:04 +01:00
Stefan Monnier
3c2351f2dc (loaddefs-generate--print-form): Fix bug#80222
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--print-form):
Remove the "\\\n" hack we used to use together with
`src/lread.c` code to avoid allocating heap space for docstrings
that were going to be replaced by `Snarf-documentation`.
We don't keep ELisp docstrings in DOC any more anyway.
2026-02-09 12:30:35 -05:00
Manuel Giraud
8325809896 Fix selected group sort with topics (bug#80341)
* lisp/gnus/gnus-topic.el (gnus-group-sort-selected-topic): New
function to sort selected groups into topic.
(gnus-topic-mode): Use it as sort selected function in topic
mode.
* etc/NEWS: Announce the change.
2026-02-09 18:28:08 +01:00