* lisp/system-taskbar.el (system-taskbar): Defgroup keyword now
system-interface in sympathy with system-sleep.
(dbus-list-activatable-names, dbus-send-signal, dbus-ping):
Pacify byte compiler.
(system-taskbar--set-back-end): Load dbus only when needed.
Users can revert to the old 'delete-frame' behavior of selecting
the oldest frame in 'frame-list' rather than the most-recently
used frame.
* src/frame.c (delete_frame): Consult
'after-delete-frame-select-mru-frame'.
(syms_of_frame): New defvar
'after-delete-frame-select-mru-frame'.
* etc/NEWS: Reflect the new user option.
* lisp/textmodes/markdown-ts-mode.el
(markdown-ts-hide-markup): New defcustom controlling
visibility of markup delimiters.
(markdown-ts--fontify-delimiter): Fontify delimiter nodes and
conditionally apply invisibility.
(markdown-ts--set-hide-markup): Internal helper to update
invisibility state.
(markdown-ts-toggle-hide-markup): Interactive command to toggle
delimiter visibility.
(markdown-ts-setup): Initialize delimiter hiding according to
'markdown-ts-hide-markup' and register managed properties.
(markdown-ts--treesit-settings): Use
'markdown-ts--fontify-delimiter' for delimiter nodes.
(require 'outline): Ensure outline faces are available so
headings are fontified correctly on first load.
* src/lisp.h (ENUM_BF): Modernize ENUM_BF doc for latest compilers
that still have a beef with enum bitfields. Simplify by dropping
support for ‘gcc -std=c89 -pedantic’, as it’s been many years
since Emacs worked with C89, for other reasons.
ISO C does not require C compilers to support enum bitfields.
Problem found with IBM XL C for AIX 16.1 (2018), which IBM
supports through 2029.
* src/lisp.h (struct Lisp_Fwd): Use ENUM_BF instead of declaring
enum bitfields directly.
* lisp/eshell/em-alias.el (eshell-read-aliases-list): Reverse the alias
list back to its original order at the end of loading.
* test/lisp/eshell/em-alias-tests.el
(em-alias-test/alias-load-preserves-order)
(em-alias-test/alias-save-sorted): New tests.
The main point is to make the content of 'eshell-aliases-file' stable so
that storing it in git becomes feasible.
This also makes the output of the alias command come out in alphabetical
order (bug#80401).
* lisp/eshell/em-alias.el (eshell/alias): Sort when updating
'eshell-command-aliases-list'.
* test/lisp/eshell/em-alias-tests.el
(em-alias-test/alias-list-is-sorted): New test.
* etc/NEWS: Announce this change.
In nsfns.m, `x-display-mm-height' and `x-display-mm-weight' computes the
display size by dividing its (logical) pixel dimensions by 92 dpi.
This would often give wrong results: by default, logical pixels on in
macOS are computed to 72 dpi, but that can be changed by the user.
As macOS multi-screen geometry is all computed based on the main
screen's cooridnate system, use its dpi to compute the physical size of
the bounding box containing all the screens.
* src/nsfns.m (Fx_display_mm_height):
(Fx_display_mm_width): Calculate the total physical display size
using the main-screen's geometry.
Copyright-paperwork-exempt: yes
* lisp/mail/rmailsum.el (rmail-summary-sender-function)
(rmail-summary-recipient-function, rmail-summary-address-width):
New user options.
(rmail-summary--address-display, rmail-summary-name-or-address)
(rmail-summary-recipient-strip-quoted-names)
(rmail-summary-recipient-names): New functions.
(rmail-header-summary): Use them when formatting sender and
recipient fields (bug#80406).
* doc/emacs/rmail.texi (Rmail Make Summary): Document them.
* test/lisp/mail/rmailsum-tests.el: New file.
(rmailsum-tests-name-or-address-prefers-name)
(rmailsum-tests-name-or-address-fallback-to-address)
(rmailsum-tests-recipient-strip-quoted-names-first-line)
(rmailsum-tests-recipient-names-folded)
(rmailsum-tests-recipient-names-fallback-to-address): New tests.
This reverts commit 9f5d17cd72, but
includes the fix for adding user CSS after the generated CSS.
* src/image.c (svg_load_image): Set the CSS stylesheet using the librsvg
functions, instead of inserting it into the wrapper.
The custom Pdb class enables native completion in pdb by
wrapping the pdb's native completer. It also makes necessary
function definitions like __PYTHON_EL_* available between pdb
frames, and enables non-native completion/ffap/eldoc
functionalities when debugging inside python modules.
* lisp/progmodes/python.el (python-shell-send-setup-code): Fix
the separator between python-shell-setup-codes.
(python-shell-completion-native-setup): Move common completion
setup code ...
(python-shell-completion-setup-code): ... here.
(python-shell-completion-at-point): Enable native completion for
pdb and respect the delimiter of pdb completer.
(python-shell-pdb-setup-code): New variable.
(python-shell-comint-watch-for-first-prompt-output-filter): Send
setup codes only once.
(python-ffap-module-path, python-eldoc--get-doc-at-point): Stop
sending setup code in every function call.
* test/lisp/progmodes/python-tests.el (python-tests--pdb-1)
(python-shell-pdb-1): New test.
* etc/NEWS: Mention the change. (bug#80182)
The keys of this plist are strings and should thus be compared
with `equal`. `eq` works surprisingly often (because we often
happen to use exactly the same string) but not always.
* lisp/loadhist.el (loadhist-unload-element):
* src/data.c (add_to_function_history): Pass `equal` to `plist-member`.
* doc/emacs/custom.texi (Custom Themes): Mention command in a
general context.
(Newcomers Theme): Mention command in the context of the
'newcomers-preset' theme
* etc/NEWS: Mention new command.
* lisp/custom.el (copy-theme-options): New command.
* doc/emacs/custom.texi (Beginners Theme): Document new theme.
* etc/NEWS: Mention new theme.
* etc/themes/newcomers-presets-theme.el: New file including
new theme.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Remove two rules: the first could sometimes skip a varref in a loop;
this was useful before lexical binding but now just makes some code
slightly bigger. The second rule attempted to move a conditional branch
from the top to the bottom of a loop but depended on the first to work.
Both were quite slow, easily measurable when compiling big files, and
arguably O(n³) which isn't very good for a peephole optimisation.
* lisp/vc/vc-dir.el (vc-dir-fileinfo): New 'display-state'
field.
(vc-dir-update): Use it.
(vc-default-dir-printer):
* lisp/vc/vc-git.el (vc-git-dir-printer): Use it. Fontify a
display state of "committing" as vc-dir-status-warning.
* lisp/vc/vc-hooks.el (vc--file-getinheprop): New function.
* lisp/vc/vc.el (vc-checkin): Set "committing" display state on
items we are checking in asynchronously.
* lisp/progmodes/project.el (vc-git-project-list-files): Prefer
git ls-files --deduplicate, available since Git 2.31 (2021), over
delete-consecutive-dups. Prefer string-prefix-p and string-suffix-p
over slower and more error-prone regexp matching. Prefer
string-match-p over string-match when either will do.
* lisp/progmodes/python.el: Since they are included in emacs 29.1,
remove the Package-Requires for seq, project, and flymake.
(require 'project): Remove 'noerror argument.
(python-shell-get-process-name): Remove (featurep 'project).
Use 'project-name'.
(run-python)
(python--import-sources): Remove (featurep 'project). (Bug#80405)
* lisp/vc/vc.el (vc-revert-file, vc-revert-files): If the
vc-state of the file is 'added', set it to 'unregistered' after
the operation, not 'up-to-date'.
(vc-revert-files): Fix updating vc-checkout-time to affect files
within directories within FILES.
* lisp/emacs-lisp/cond-star.el (cond*-non-exit-clause-p)
(cond*-non-exit-clause-substance): Treat only one element
clauses beginning with match*/pcase* pseudoforms as non-exit.
(cond*-convert-condition): Handle exiting clauses with only one
element, that is a regular Lisp expression.
(cond*):
* doc/lispref/control.texi (cond* Macro): Document the change.
* lisp/vc/vc.el (with-vc-properties): Un-gensym
'vc-touched-properties'; this is a dynamic variable. Document
the longstanding behavior to capture 'file' while evaluating
SETTINGS, and to evaluate SETTINGS for each file to be updated.
Declare '(indent 0)'.