Commit graph

99814 commits

Author SHA1 Message Date
Helmut Eller
91c9e98834 Merge branch 'master' into feature/igc 2026-02-13 09:10:16 +01:00
Philip Kaludercic
1e6d4f827c
Merge branch 'feature/package-autosuggest' 2026-02-12 23:08:42 +01:00
Basil L. Contovounesios
8e71dc6bac Use new 'sort' calling convention in json.el
* lisp/json.el (json--print-alist): Use new 'sort' calling
convention for simplicity and potential performance gains.
2026-02-12 19:51:32 +01:00
Michael Albinus
5ba4446e25 Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs 2026-02-12 19:24:44 +01:00
Michael Albinus
e0e0e95f5b Tramp signals 'remote-file-error' consequently
* doc/misc/tramp.texi (External packages): Mention also special events.
Emphasise, that Tramp raises remote-file-error.

* etc/NEWS: Tramp signals 'remote-file-error' consequently.
Presentational fixes and improvements.

* lisp/net/tramp.el (tramp-skeleton-process-file)
(tramp-handle-make-symbolic-link, tramp-process-actions)
(tramp-wait-for-regexp, tramp-send-string):
* lisp/net/tramp-adb.el (tramp-adb-get-device)
(tramp-adb-send-command-and-check, tramp-adb-barf-unless-okay)
(tramp-adb-wait-for-output, tramp-adb-maybe-open-connection):
* lisp/net/tramp-archive.el (tramp-archive-handle-not-implemented):
* lisp/net/tramp-crypt.el (tramp-crypt-do-encrypt-or-decrypt-file-name)
(tramp-crypt-do-encrypt-or-decrypt-file):
* lisp/net/tramp-gvfs.el (tramp-gvfs-dbus-event-error)
(tramp-gvfs-maybe-open-connection):
* lisp/net/tramp-sh.el
(tramp-do-directory-files-and-attributes-with-perl)
(tramp-do-copy-or-rename-file-directly)
(tramp-do-copy-or-rename-file-out-of-band)
(tramp-sh-handle-file-local-copy, tramp-sh-handle-write-region)
(tramp-bundle-read-file-names, tramp-maybe-send-script)
(tramp-find-file-exists-command, tramp-barf-if-no-shell-prompt)
(tramp-maybe-open-connection, tramp-wait-for-output)
(tramp-send-command-and-check, tramp-barf-unless-okay)
(tramp-send-command-and-read, tramp-get-ls-command):
* lisp/net/tramp-smb.el (tramp-smb-handle-file-attributes)
(tramp-smb-handle-make-symbolic-link)
(tramp-smb-maybe-open-connection, tramp-smb-call-winexe):
* lisp/net/tramp-sshfs.el (tramp-sshfs-maybe-open-connection):
* lisp/net/tramp-sudoedit.el (tramp-sudoedit-send-command-and-read):
Raise a `remote-file-error' in case of connection problems.

* lisp/net/tramp-rclone.el (tramp-rclone-maybe-open-connection): Improve
check for host.

* lisp/net/tramp-smb.el (tramp-smb-get-localname): Improve error message.

* lisp/net/tramp-sudoedit.el (tramp-default-host-alist):
Set a default for "sudoedit" method.
(tramp-sudoedit-maybe-open-connection): Check for proper host name.
(tramp-sudoedit-send-command): Do not expand ?h.

* lisp/net/tramp.el (tramp-compute-multi-hops): Check for cycle
proxy definition.

* test/lisp/net/tramp-archive-tests.el (tramp-archive-test20-file-modes)
(tramp-archive-test21-file-links): Check for `rmote-file-error'.

* test/lisp/net/tramp-tests.el (tramp-file-name-with-sudo): Declare.
(tramp--test-ignore-make-symbolic-link-error): Check for
`rmote-file-error'.
(tramp-test03-file-name-method-rules): Delete.
(tramp-test03-file-error): New test.
(tramp--test-supports-processes-p): Make it more rebust.
2026-02-12 19:24:10 +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
Philip Kaludercic
1b02bf1214
Ensure package contents for package suggestions
* lisp/emacs-lisp/package.el (package--autosugest-prompt): Query
archives if the package being described is not listed in
package-archive-contents'.
2026-02-12 18:24:47 +01:00
Philip Kaludercic
02af0e93a0
; Reset :initialize for 'package-autosuggest-mode'
* lisp/emacs-lisp/package-activate.el (package-autosuggest-mode):
We don't need a special initializer for the minor mode, if we
are not enabling the option OOTB.
2026-02-12 18:20:15 +01:00
Philip Kaludercic
92f1d0b5d5
Simplify mode-line prompt for package suggestions
* lisp/emacs-lisp/package-activate.el (package--autosugest-line-format):
Just indicate that packages can be installed, don't mention which.
2026-02-12 18:19:32 +01: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
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
Philip Kaludercic
5bc7185afa
Disable 'package-autosuggest-mode' by default
* lisp/emacs-lisp/package-activate.el (package-autosuggest-mode):
Do not set the :init-value when declaring the minor mode.
2026-02-11 20:44:20 +01: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
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
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
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
Philip Kaludercic
ae5ee77f48
Enable fewer minor modes in package suggestion buffers
* lisp/emacs-lisp/package.el (package--autosugest-prompt): Do
not enable 'enriched-mode' and 'variable-pitch-mode'.
2026-02-09 21:22:37 +01:00
Michael Albinus
9fd2fd5225 Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs 2026-02-09 18:32:06 +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
Manuel Giraud
ed158fb8fc Add missing symbolic prefix keybinding
* lisp/gnus/gnus-group.el (:keymap): Add symbolic prefix to
group keymap.
* etc/NEWS: Announce the change.
2026-02-09 18:27:36 +01:00
Stefan Monnier
1e7dae37b8 lisp/calendar: Style changes
Fix some misuses of `defconst` and `%s`, avoid uses of the old
dynbound dialect of `eval`, delete redundant `:group` arguments,
and prefer #' to quote function names.
And stop creating alists for completion tables since lists of
strings work just as well.

* lisp/calendar/appt.el: Delete redundant `:group` arguments.
Prefer #' to quote function names.

* lisp/calendar/cal-hebrew.el (solar-time-string): Declare function.
(calendar-hebrew-read-date, calendar-hebrew-list-yahrzeits):
* lisp/calendar/cal-persia.el (calendar-persian-read-date):
* lisp/calendar/cal-mayan.el (calendar-mayan-read-haab-date)
(calendar-mayan-read-tzolkin-date):
* lisp/calendar/cal-julian.el (calendar-julian-goto-date):
* lisp/calendar/cal-islam.el (calendar-islamic-read-date):
* lisp/calendar/cal-coptic.el (calendar-coptic-read-date):
* lisp/calendar/cal-bahai.el (calendar-bahai-read-date):
Completion tables can be lists of strings for decades.

* lisp/calendar/cal-china.el: Delete redundant `:group` arguments.
(calendar-chinese-zodiac-sign-on-or-after)
(calendar-chinese-new-moon-on-or-after): Use lexical dialect also
for `eval`.

* lisp/calendar/cal-dst.el: Delete redundant `:group` arguments.
Use lexical dialect also for `eval`.

* lisp/calendar/cal-html.el: Delete redundant `:group` arguments.

* lisp/calendar/cal-menu.el: Prefer #' to quote function names.

* lisp/calendar/cal-tex.el: Delete redundant `:group` arguments.
(cal-tex-weekly-common): Use lexical dialect also for `eval`.

* lisp/calendar/calendar.el (calendar-mode-map):
Prefer #' to quote function names.

* lisp/calendar/diary-icalendar.el (di:rrule-sexp-to-recurrence)
(di:other-sexp-to-recurrence): Use lexical dialect also for `eval`.

* lisp/calendar/diary-lib.el: Delete redundant `:group` arguments.
Prefer #' to quote function names.
(diary-sexp-entry, diary-offset, diary-remind): Use lexical dialect
also for `eval`.

* lisp/calendar/icalendar-macs.el (ical:define-param): Fix misuse of
`%s` in `format`.

* lisp/calendar/icalendar-parser.el (ical:value-types)
(ical:param-types, ical:property-types, ical:component-types):
Don't use `defconst` on variables we mutate.

* lisp/calendar/icalendar-recur.el (icr:current-tz-to-vtimezone)
(icr:current-tz-to-vtimezone): Use lexical dialect also for `eval`.

* lisp/calendar/icalendar.el: Delete redundant `:group` arguments.

* lisp/calendar/lunar.el: Prefer #' to quote function names.

* lisp/calendar/solar.el (solar-sunrise-sunset-string)
(calendar-sunrise-sunset-month): Use lexical dialect also for `eval`.

* lisp/calendar/timeclock.el: Prefer #' to quote function names.
2026-02-08 23:39:13 -05:00
Dmitry Gutov
8ddf2d2925 project--delete-zombie-projects: Handle "Tramp failed to connect"
* lisp/progmodes/project.el (project--delete-zombie-projects):
Handle file-error when DIR is remote and unreachable (bug#80340).
2026-02-09 00:56:08 +02:00
Stefan Monnier
f39eaad491 Merge branch 'main' into icalendar 2026-02-08 16:05:31 -05:00
Daniel Mendler
c86094057b completing-read-multiple: Implement on top of completing-read
Avoid code duplication during minibuffer setup.

* lisp/emacs-lisp/crm.el (completing-read-multiple): Call
`completing-read' instead of duplicating the setup code of
`completing-read-default'.
2026-02-08 16:02:41 -05:00
Sean Whitton
7fd6fa4a8b Revert "Extend emacs server protocol for empty arguments"
This reverts this change:

  Author:     Andreas Schwab <schwab@linux-m68k.org>
  AuthorDate: Sun Feb 8 12:34:02 2026 +0100

    Extend emacs server protocol for empty arguments

    An empty argument is represented by &0.  On the receiving side, &0 is
    replaced by nothing.

    * lisp/server.el (server-unquote-arg): Replace "&0" by nothing.
    (server-quote-arg): Produce "&0" for an empty string.
    * lib-src/emacsclient.c (quote_argument): Produce "&0" for an
    empty string.
    (unquote_argument): Replace "&0" by nothing.   (Bug#80356)

The bug in question was already fixed by this change:

  Author:     Sean Whitton <spwhitton@spwhitton.name>
  AuthorDate: Fri Nov 7 12:33:21 2025 +0000

    Don't discard empty string arguments from emacsclient

    * lisp/server.el (server--process-filter-1): Don't discard empty
    string arguments from emacsclient.
    (server-eval-args-left):
    * doc/emacs/misc.texi (emacsclient Options):
    * etc/NEWS: Document the change.
2026-02-08 16:52:12 +00:00
Sean Whitton
01d8abea04 cond*: Fix handling of :non-exit keywords
* lisp/emacs-lisp/cond-star.el (cond*-non-exit-clause-p): Don't
return nil for clauses ending with ':non-exit'.
(cond*-non-exit-clause-substance): Don't accept just any
keyword, require ':non-exit'.
2026-02-08 15:28:37 +00:00
Sean Whitton
ec8d82f53b cond*: Fix handling bind-and* in two places
* lisp/emacs-lisp/cond-star.el (cond*-non-exit-clause-p)
(cond*-non-exit-clause-substance): Handle bind-and* the same as
bind*.
2026-02-08 15:20:49 +00:00
Sean Whitton
2437a45144 ; Further fixes to core documentation for cond*. 2026-02-08 15:11:08 +00:00
Sean Whitton
51b883719b ; Fix some issues in core documentation for cond*. 2026-02-08 15:06:00 +00:00
Andreas Schwab
7586a5474c Extend emacs server protocol for empty arguments
An empty argument is represented by &0.  On the receiving side, &0 is
replaced by nothing.

* lisp/server.el (server-unquote-arg): Replace "&0" by nothing.
(server-quote-arg): Produce "&0" for an empty string.
* lib-src/emacsclient.c (quote_argument): Produce "&0" for an
empty string.
(unquote_argument): Replace "&0" by nothing.   (Bug#80356)
2026-02-08 13:21:28 +01:00
Matthew Bauer
78fc5e2833 Eglot: Add "static-ls" to Haskell LSP list
This is an alternative language server for Haskell.  Intended to be
faster and not use as much memory as haskell-language-server.
Making it a backup with lower precedence if both exist.
* lisp/progmodes/eglot.el (eglot-server-programs): Add "static-ls".
(Bug#80351)
2026-02-08 08:38:08 +02:00
Stéphane Marks
e0ce881be9 ; Minor changes to 'truncate-string-pixelwise' (bug#80244)
Fix two bugs and add tests for them.
2026-02-07 14:49:15 +02:00