* lisp/progmodes/project.el (project--read-file-name): Signal a
user-error and don't call project-read-file-name-function if the
file name collection is empty, since the default options for
project-read-file-name-function expect a cons (bug#80509).
(project-find-file-in): Avoid redundant consing for
vc-directory-exclusion-list in default case of include-all=nil.
We look for properties on the aliased functions as well so there is no
need for them on the aliases themselves (unless we want the alias to
have different semantics but that's not the case for these).
* lisp/emacs-lisp/byte-opt.el: Don't set compilation-related properties
on 'string=', 'string>', 'not' or 'wholenump'.
(byte-optimize-null): Rename from 'byte-optimize-not'.
Calls to some functions, such as 'cdr' and '%', would generate two
slightly different complaints if given the wrong number of arguments.
* lisp/emacs-lisp/bytecomp.el (byte-compile-subr-wrong-args): Remove.
Calls are replaced with 'byte-compile-normal-call'.
* src/keyboard.c (kbd_buffer_get_event): Pass the event's frame
up to the caller by means of a new 'struct frame **' argument.
(read_event_from_main_queue): Show a message in locked frames in
single-kboard mode (bug#79892).
* src/xdisp.c (log_message): Factor out of message3.
(message3): Call it.
(message3_nolog): Rename to ...
(message3_frame_nolog): ... this. New 'struct frame *' argument
which causes temporarily switching to another frame when
displaying the message.
(message3_frame, message3_nolog): New functions.
* src/lisp.h: Declare message3_frame and message3_frame_nolog.
* admin/notes/multi-tty: Remove notes on showing a message.
* lisp/subr.el (command-line-max-length): Move from here ...
* src/callproc.c (syms_of_callproc): <Vcommand_line_max_length>:
... to here. Initialize by calling sysconf(3) if possible.
* lisp/emacs-lisp/package.el (package--query-desc): Load
'package-alist' if this hasn't already occurred.
(package-report-bug): Drop unnecessary ALIST argument when
invoking 'package--query-desc'.
* lisp/emacs-lisp/package.el (package-maintainers): Add
fallbacks if a package doesn't list a single maintainer.
(package-report-bug): Check if "emacs-devel@gnu.org" is listed
as a maintainer, in which case the message is redirected to
bug-gnu-emacs@gnu.org and the X-Debbugs-CC header is set.
(Bug#80478)
* lisp/emacs-lisp/package.el (package-upgrade-keep-previous):
Rename user option to 'package-retention-policy'.
(package--policy-type): New constant for policy types.
(package-retention-policy): New option.
(package-review-policy): Use new type constant.
(package--review-p): Rename and generalise to
'package-matches-selector-p'.
(package-matches-selector-p): New function.
(package-upgrade, package-menu--mark-upgrades-1): Respect
'package-retention-policy'.
* doc/emacs/package.texi (Package Installation): Document new option.
* etc/NEWS: Update NEWS entry. (Bug#79957)
* lisp/emacs-lisp/package.el (package-isolate): Change
formatting to indicate dependencies to include a note if the
package was downloaded in a temporary directory.
* lisp/emacs-lisp/package.el (package-isolate): Do not use
destructive 'mapcan' to create a list of dependencies, as
'package-desc-reqs' doesn't return a fresh list.
This change adds a conditional to keep old package versions on upgrade.
This allows users to keep running multiple Emacsen without a package
upgrade in one Emacs breaking another running Emacs.
* lisp/emacs-lisp/package.el (package-upgrade-keep-previous):
New boolean user option.
(package-upgrade): Use it.
(package-menu--mark-upgrades-1): Use it.
(package-menu--find-upgrades): Make consistent with new option.
* etc/NEWS: Announce it.
(Bug#79957)
macOS 26 introduced new event processing behavior that causes scrolling
lag and input handling problems in Emacs. This patch disables two
features via NSUserDefaults when built against the macOS 26 SDK:
- NSEventConcurrentProcessingEnabled
- NSApplicationUpdateCycleEnabled
This fix is based on the equivalent patch in emacs-mac by Mitsuharu
Yamamoto. See: https://bitbucket.org/mituharu/emacs-mac/commits/e52ebfd
* src/nsterm.m (ns_term_init): Disable problematic event processing
when built for macOS 26+.
* doc/lispintro/emacs-lisp-intro.texi (print-postscript-figures):
Set it only if we're outputting TeX.
(Lists diagrammed, Lists diagrammed, Lists diagrammed)
(Lists diagrammed, Lists diagrammed, Symbols as Chest)
(kill-ring-yank-pointer, lambda): Presume that
`print-postscript-figures` is set only for TeX output and remove
the `@tex...@end tex` around `@image` which do not seem relevant any more.
This fixes vc-hg-print-log's choice of -r arguments to 'hg log'.
* lisp/vc/vc.el (vc-log-view-type): New 'log-outstanding' value.
(vc-log-outstanding): Pass it.
* lisp/vc/vc-git.el (vc-git-log-view-mode):
* lisp/vc/vc-hg.el (vc-hg-print-log, vc-hg-log-view-mode): Treat
'log-outstanding' the same as 'log-outgoing'.
* lisp/dired-aux.el (dired-rename-file): When determining
whether to call vc-rename-file, use vc-responsible-backend
instead of vc-backend when FILE is a directory.
* lisp/vc/vc.el (vc-rename-file): Support renaming directories.
Thanks to TAKAHASHI Yoshio for reporting and for fixing one of
the typos. In addition to the reported bug involving
:include/:exclude, testing revealed that the provided RRULE
COUNT clause was also not being handled correctly; this change
also fixes that.
* lisp/calendar/diary-icalendar.el (diary-rrule): Handle
recurrence rules with a COUNT clause.
* lisp/calendar/icalendar-recur.el
(icalendar-recur-recurrences-in-interval): Fix a couple of
typos that caused RDATE/EXDATE calculations to fail.
* test/lisp/calendar/diary-icalendar-tests.el
(diary-icalendar-test-rrule-bug-80460): New test for this bug.
* lisp/emacs-lisp/byte-opt.el (side-effect-free-fns)
(side-effect-and-error-free-fns): 'equal' and
'equal-including-properties' no longer signal 'circular-list'; while
they do error on very deep structures, that is more of a resource limit
so let's overlook that.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Remove some obsolete dynamic variable optimisations that no longer
improve any code. Fix broken logging (thanks Pip).
* lisp/progmodes/c-ts-common.el:
(c-ts-common-comment-start-skip): Change to public.
(c-ts-common-comment-2nd-line-anchor):
(c-ts-common-comment-setup): Use it.
This patch makes it easier to use the existing C and C++
language support in other languages. Without this patch, if the
outer mode sets some specific and more accurate
comment-start-skip value, or perhaps leaves it unset,
indentation will break.
* lisp/progmodes/c-ts-common.el (c-ts-common--comment-start-skip):
Declare to the value c-ts-common-comment-setup used to set as
comment-start-skip.
(c-ts-common-comment-setup): Use it, rather than hardcoding.
(c-ts-common-comment-2nd-line-anchor): Use it, rather than
comment-start-skip. This makes it easier to reuse C/++
indentation rules in other TS modes for embedding C/++ segments
in other languages.
Copyright-paperwork-exempt: yes
OTOH a thickness of 1 pixel is a bit too thin on my HiDPI
displays, but 2 is too thick on non-HiDPI displays, at least with
my default smallish font.
I originally favored the HiDPI displays and large fonts,
thinking it's a more common situation nowadays, but I changed my
mind because the "too thick" problem seems actually more severe
because it's occasionally bad enough that it's unclear which
cursor is the real one.