Currently, there are no builds for Emacs 28.
Emacs 28 seems have introduced warnings about the line length in code
documentation. These warnings have been fixed as well.
Since Emacs 27 the package cl is deprecated, the replacement is
cl-lib, which is available since Emacs 24.3.
This patch replaces cl by cl-lib and drops support for Emacs versions
less than 24.3. Dropping older Emacsen is required, because cl-lib is
a builtin starting from version 24.3 and doesn't need an extra package
from ELPA.
Testcases for past issues still contain cl. Most of them seem to be
broken and need further investigation.
This patch is tested with test/run-ert.sh, which outputs:
Ran 10 tests, 10 results as expected, 0 unexpected (2021-01-30 13:24:54+0100, 0.672122 sec)
1 expected failures
and manually by daily usage for a month now.
Make it say exactly which operation(s) are required to update the
recipe.
* el-get-status.el (el-get-classify-new-properties): Return a partition
of updates for each operation instead of (dis)allowed lists for a
given operation.
(el-get-diagnosis-properties): Return the required operation(s) instead
of update-p.
(el-get-merge-properties-into-status): Make the warning only suggest to
update if that would actually succeed given the properties needing
updating.
Previously, the recipe in .status.el was only updated on init, since
only some properties are safe for change on init the unsafe ones were
never updated. Therefore, we classify addtional properties as safe fo
change on update, and update .status.el after el-get-update too.
* el-get-core.el (el-get-as-string): Handle number argument.
* el-get-status.el (el-get-status-init-whitelist): Rename from
el-get-status-recipe-update-whitelist.
(el-get-status-update-whitelist): New constant.
(el-get-classify-new-properties): Add OPERATION argument to choose white
whitelist to use. The :builtin property is safe to change if it doesn't
change the :type.
(el-get-diagnosis-properties, el-get-merge-properties-into-status): Add
OPERATION argument.
* el-get.el (el-get-do-init): Call el-get-merge-properties-into-status
with OPERATION 'init.
(el-get-post-update-build): Call el-get-merge-properties-into-status
with OPERATION 'update.
Use defun instead of defun* to interpret keyword args. This let's us be
a bit more forgiving about accepting badly formatted keyword arg
lists (e.g. calls using the signature from before package-status-alist
was removed).
In el-get-do-init and el-get-reload but mark it obsolete. This avoids
an error while updating el-get, since the code doing the updating still
uses the old calling convention.
For the el-get-with-status-sources macro, just keep the argument but
always pass nil when calling it (because the obsolete arg is followed
by &rest args, the calling convention can't be changed in a
distinguishable way).
It seems many functions have an &optional package-status-alist argument
that is never used anywhere.
* el-get-status.el (el-get-package-status-alist,
el-get-package-status-recipes, el-get-read-package-status,
el-get-read-package-status-recipe, el-get-with-status-sources,
el-get-read-cached-recipe, el-get-merge-properties-into-status):
* el-get.el (el-get-init, el-get-do-init, el-get-reload, el-get-remove,
el-get-checksum): Remove &optional package-status-alist argument.
Move more variables to el-get-custom.el, add requires or
declare-functions as needed.
There were a few places that appeared to be actual bugs: wrong or
missing variable names.
Since installation can be asynchronous, refreshing the menu at the end
of el-get-package-menu-execute doesn't help, therefore we update from
el-get-save-package-status instead.
Previously, if a package is listed as installed but it doesn't have a
recipe available, then status file migration would fail with an error
because it requires a recipe to save into the new status format. Now,
when this occurs, it just saves a "dummy" recipe that does nothing
instead. This does not result in any loss of functionality, since
without an available recipe the package in question is unusable
anyway.