* etc/NEWS: Document speed-2 local call optimization.
* etc/TODO: Remove completed item.
* lisp/emacs-lisp/comp.el
(comp--cu-local-func-c-name-v): New function.
(comp--call-optim-form-call): Enable named local direct calls
at speed 2.
(comp--function-trampoline-form): New helper.
(comp-trampoline-compile, comp-local-function-trampoline-compile):
Share trampoline generation.
* lisp/emacs-lisp/comp-run.el
(comp-local-function-trampoline--install-now): New function.
(comp-local-function-trampoline-install): Install local trampolines.
Defer trampoline compilation until after load.
* src/comp.c (emit_call, emit_ctxt_code, compile_function)
(load_comp_unit, unload_comp_unit): Add local function relocation
support.
(native_comp_local_function_p): New function.
(comp--install-local-function-trampoline): New subr.
(syms_of_comp): Register it and update trampoline docs.
* src/comp.h (Lisp_Native_Comp_Unit): Add local relocation slot.
(native_comp_local_function_p): Declare.
* src/data.c (Ffset): Install local trampolines for redefined
named local native functions. Keep skipping anonymous lambdas.
* src/pdumper.c: Clear local relocation state.
* test/src/comp-tests.el
(comp-tests--run-in-sub-emacs): New helper.
(comp-tests--direct-call-redefinition-form): New helper.
(comp-tests-direct-call-redefinition-speed-split): New test.
(comp-tests-anonymous-lambda-recompile): New test.
(comp-tests-direct-call-with-lambdas): Use an explicit output file.
* lisp/emacs-lisp/comp.el (comp--intern-func-in-ctxt):
Recover declared function types from `function-type' properties.
(comp--declared-arg-type-gen): New function.
(comp--emit-declared-arg-type-assumption): New function.
(comp--emit-narg-prologue, comp--limplify-function):
Propagate declared parameter types at speed 2 and above.
* test/src/comp-tests.el (comp-tests-check-ret-type-spec):
Preserve `function-type' properties across tests and accept an
optional speed.
(comp-tests-speed-1-declared-param-type): New test.
(comp-tests-type-spec-tests): Add declared parameter type tests.
* etc/NEWS: Document it.
* etc/TODO: Remove declared function parameter entry.
* lisp/emacs-lisp/comp.el (comp--func-unique-in-cu-p): Check
only the callee name instead of requiring global uniqueness.
* test/src/comp-resources/comp-test-direct-call.el: New file.
* test/src/comp-resources/comp-test-direct-call-dup.el: New file.
* test/src/comp-tests.el (comp-tests-has-direct-call-p)
(comp-tests-direct-call-with-lambdas)
(comp-tests-direct-call-with-duplicate-names): New tests.
* doc/emacs/maintaining.texi (Looking Up Identifiers): Document
it.
* etc/NEWS (bindings): Mention it.
* etc/themes/newcomers-presets-theme.el (newcomers-presets): Add
it.
* lisp/progmodes/xref.el (xref-mouse-mode-map, xref-mouse-mode)
(global-xref-mouse-mode): Implement it.
* lisp/emacs-lisp/package.el (package-maintainers): Detect if
:maintainers contains on a single cons-cell, denoting a single
maintainer, in which case we wrap it in a singleton list.
With bug#59527 we ensured that the open paren line string was fontified
which was broken again with bug#63089 because there, the opening paren
was fontified with a new face.
With this change, the returned string is fontified again. Only if
`blink-matching-paren-highlight-offscreen' is non-nil, the opening paren
is unfontified and then fontified again with the
`blink-matching-paren-offscreen' face.
* lisp/simple.el (blink-paren-open-paren-line-string): Keep returned
line string fontified with slight exception if
`blink-matching-paren-highlight-offscreen' is non-nil.
* lisp/emacs-lisp/package-activate.el (package--add-info-node):
Use 'Info-default-directory-list' if Info has not been
initialized, otherwise fall back to 'Info-directory-list'
without calling 'info-initialize' beforehand, since the function
initializes 'Info-directory-list'. (Bug#80495)
* etc/themes/newcomers-presets-theme.el
(newcomers-presets-mode-enabled-local-modes): Interpret the
variable as a proper alist without duplicate keys.
(newcomers-presets-mode): Handle new structure.
* lisp/progmodes/elisp-mode.el (elisp--read-symbol-shorthands):
New function, extracted from `elisp--completion-local-symbols`.
Remember the longhand symbol in `elisp--longhand` property.
(elisp--completion-local-symbols): Use it.
(elisp--shorthand-aware-fboundp, elisp--shorthand-aware-boundp):
Use the new `elisp--longhand` property.
This change is partially necessary due to the changes to
'package-maintainers' in 4b253c39b1.
* test/lisp/emacs-lisp/package-vc-tests.el (prepare-patch): Do
not match exact order of headers, and do not match exact syntax
of email address.
* lisp/vc/smerge-mode.el (smerge--refine-chopup-region):
Replace `beg..end` arg with an overlay.
(smerge-refine-regions): Replace `beg` arg with an overlay.
(smerge--refine-prepare-regions, smerge--refine-apply-diff-1):
New functions, extracted from `smerge-refine-regions`.
(smerge--refine-apply-diff): New function.
(smerge-refine-regions): Use them. Also delete temp files right after
running `diff` rather than after applying diff's output.
* lisp/simple.el (next-line, previous-line): Remove useless
`condition-case` handler, and hence the whole `condition-case`, and
then simplify.
* lisp/emacs-lisp/comp.el (comp--error-add-context): New function.
(comp--native-compile): Use it.
* lisp/gnus/nnrss.el (nnrss-insert): Use `with-demoted-errors`.
* lisp/textmodes/emacs-news-mode.el (emacs-news-find-heading):
HEADING must be a complete line, otherwise we have false positives
and false negatives. (Bug#80569)
* lisp/progmodes/flymake.el (flymake-goto-next-error): Use
cl-member-if not member-if and cl-plusp not plusp because this
is a `:core' ELPA package (bug#79930).
* lisp/progmodes/flymake.el (flymake-diagnostics-buffer-mode-map):
Only bind 'n' and 'p' when 'next-error-this-buffer-no-select' is
defined. For releasing on ELPA (bug#79930).
Bump the package version to 1.4.4.
* lisp/startup.el (startup-insert-newcomers-theme): Factor out
new function from 'normal-no-mouse-startup-screen'.
(normal-mouse-startup-screen, normal-no-mouse-startup-screen):
Call new function.