1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-03 04:21:28 -08:00
emacs/test/lisp
Stefan Monnier 1d1b664fbb (function-history): New symbol property (bug#53632)
Rework the code we have in Fdefalias that tries to keep track
of definitions so as to be able to undo them later.

We used to store in `load-history` when an autoload is redefined as
a non-autoload and in the `autoload` symbol property we used to store
the autoload data that used to be used before it got overriden.

Instead, store the history of the function definition of
a symbol in its `function-history` symbol property.
To make this list cheap in the default case, the latest value is not stored
in the list (since it's in the `symbol-function`) and neither is the first
file.  So if there's only been a single definition (the most common case),
the list is empty and the property is just not present at all.

The patch also gets rid of the `autoload` vs `defun` distinction in
`load-history` which seems unnecessary (a significant part of the
motivation for this patch was to get rid of the special handling of
autoloads in this part of the code).

* src/data.c (add_to_function_history): New function.
(defalias): Use it.  Don't add the `t` entries for autoloads and always
use `defun` regardless of the kind of definition.
Change `Vautoload_queue` to only hold the function
symbols since the rest is now available from `function-history`.
* src/eval.c (un_autoload): Adjust accordingly.

* src/lread.c (load-history): Udate docstring.

* lisp/loadhist.el (loadhist-unload-filename): New var.
(unload-feature): Bind it.
(loadhist-unload-element): Document its availability.
(loadhist--restore-autoload): Delete var.
(loadhist--unload-function): Delete function.
(loadhist-unload-element): Delete the `t` and `autoload` methods.
Rewrite the `defun` method using `function-history`.

* lisp/help-fns.el: Require `seq`.
(help-fns--autoloaded-p): Rewrite.
(help-fns-function-description-header): Adjust call accordingly.

* doc/lispref/loading.texi (Where Defined): Remove `autoload` and `t`
entries from `load-history` since we don't generate them any more.
Document the `function-history` which replaces the `autoload` property.
(Unloading): Adjust symbol property name accordingly.

* test/lisp/loadhist-resources/loadhist--bar.el:
* test/lisp/loadhist-resources/loadhist--foo.el: New files.
* test/lisp/loadhist-tests.el (loadhist-tests-unload-feature-nested)
(loadhist-tests-unload-feature-notnested): New tests.
2022-01-31 11:07:26 -05:00
..
align-resources Add some tests for align.el 2020-12-29 08:38:25 +01:00
bookmark-resources
calc Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
calendar Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
cedet Factor out function to check for clang in tests 2022-01-31 07:42:50 +01:00
custom-resources Avoid saving session customizations in the custom-file 2021-05-10 13:33:32 +02:00
dired-resources/insert-directory Change how Dired displays available space 2021-12-01 23:27:19 +01:00
emacs-lisp Reduce code duplication in parts of (auto)load&defalias 2022-01-28 13:19:11 -05:00
emulation Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
epg-resources
erc Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
eshell Fix input of sharp-quoted symbols in Eshell with em-extpipe 2022-01-26 14:16:40 +01:00
faces-resources ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
files-resources Change how Dired displays available space 2021-12-01 23:27:19 +01:00
gnus Tag an mml-sec test 2022-01-25 09:38:50 -08:00
hfy-cmap-resources * test/lisp/hfy-cmap-resources/rgb.txt: Add comment line. 2020-11-12 03:20:39 +01:00
image Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
international Improve detection of suspicious uses of bidi controls 2022-01-22 11:58:05 +02:00
loadhist-resources (function-history): New symbol property (bug#53632) 2022-01-31 11:07:26 -05:00
mail Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
mh-e ; Add 2022 to copyright years. 2022-01-01 07:07:15 -05:00
minibuffer-resources
net Adapt tramp-tests 2022-01-26 14:05:30 +01:00
nxml ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
obsolete Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
org ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
pcmpl-linux-resources
play ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
progmodes Factor out function to check for clang in tests 2022-01-31 07:42:50 +01:00
saveplace-resources
so-long-tests spelling-tests.el: use ert-with-temp-directory 2022-01-14 10:06:21 +01:00
term ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
textmodes Merge from origin/emacs-28 2022-01-27 09:45:49 +01:00
time-resources
url ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
vc VC: Fix tests for SCCS and Mtn 2022-01-18 16:42:19 -05:00
xdg-resources
abbrev-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
align-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
allout-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
allout-widgets-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
ansi-color-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
apropos-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
arc-mode-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
auth-source-pass-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
auth-source-tests.el Use 'auth-info-password' in tests 2022-01-10 20:52:20 -05:00
autoinsert-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
autorevert-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
battery-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
bookmark-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
buff-menu-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
button-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
calculator-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
char-fold-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
color-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
comint-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
completion-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
cus-edit-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
custom-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
dabbrev-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
delim-col-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
descr-text-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
dired-aux-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
dired-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
dired-x-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
dom-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
edmacro-tests.el ; Add 2022 to copyright years. 2022-01-01 07:07:15 -05:00
electric-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
elide-head-tests.el New minor mode elide-head-mode 2022-01-09 11:12:06 +01:00
epg-config-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
epg-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
faces-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
ffap-tests.el Skip ffap test on some systems 2022-01-14 12:10:46 +01:00
filenotify-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
files-tests.el (files-tests--with-buffer-offer-save): Turn it into a function 2022-01-10 22:40:55 -05:00
files-x-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
find-cmd-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
font-lock-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
format-spec-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
help-fns-tests.el Avoid infloops in help-fns--analyze-function with aliases 2022-01-13 09:49:19 +01:00
help-mode-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
help-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
hfy-cmap-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
hi-lock-tests.el Fix thinko in previous hi-lock-read-face-name change 2022-01-20 14:53:12 +01:00
htmlfontify-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
ibuffer-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
ido-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
image-dired-tests.el ; Add 2022 to copyright years. 2022-01-01 07:07:15 -05:00
image-file-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
image-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
imenu-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
info-tests.el ; Add 2022 to copyright years. 2022-01-01 07:07:15 -05:00
info-xref-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
isearch-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
jit-lock-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
json-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
jsonrpc-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
kmacro-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
loadhist-tests.el (function-history): New symbol property (bug#53632) 2022-01-31 11:07:26 -05:00
lpr-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
ls-lisp-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
makesum-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
man-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
md4-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
minibuffer-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
misc-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
mouse-tests.el Prevent further cases of duplicated separators in context menus 2022-01-04 10:18:15 +02:00
mwheel-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
newcomment-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
obarray-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
paren-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
password-cache-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
pcmpl-linux-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
ps-print-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
register-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
repeat-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
replace-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
rot13-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
saveplace-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
scroll-lock-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
ses-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
shadowfile-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
shell-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
simple-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
sort-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
soundex-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
startup-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
subr-tests.el Add new function 'readablep' 2022-01-22 15:13:27 +01:00
tab-bar-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
tabify-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
tar-mode-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
tempo-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
term-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
thingatpt-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
thread-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
thumbs-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
time-stamp-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
time-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
timezone-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
version-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
wdired-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
whitespace-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
wid-edit-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
xdg-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
xml-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
xt-mouse-tests.el ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00