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.
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.
Both the http-tar and http-zip methods are modified to manually
verify the checksum before handling the archive. This is a
security precaution and also prevents unexpected consequences from
attempting to work with a corrupted archive file.
The checksum verification code is factored out of el-get-post-install
so that the tar and zip methods can verify using the same code as
other methods.
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.
* el-get-recipes.el (el-get-recipe-pprint): New function.
* el-get.el (el-get-write-recipe): Use it.
* el-get-list-packages.el (el-get-describe-1): Use it instead of princ.
(el-get-describe): Call el-get-describe-1 inside with-current-buffer
invocation, since el-get-recipe-pprint causes output to go straight to
the current buffer rather than standard-output.
If `:library` and `:feature` are not specified, `eval-after-load` will
use `:pkgname` as its first argument. For a github based recipe, the
`:pkgname` has two parts: "username/reponame". We need to remove the
"username" part before passing `:pkgname` to `eval-after-load`.
package.el uses <pkg-name>-autoloads.el as the destination for autoloads
generated from cookies. Meaning that during a MELPA bootstrap install
these get appended to el-get-autoloads.el. Although it's currently
harmless during bootstrap, better to avoid any possible future problems.
instead of package. This way we can work with non el-get packages
too (provided we can find their direectory).
* el-get-core.el (el-get-package-files, el-get-package-features): Take
a directory instead of el-get package symbol.
* el-get.el (el-get-reload): Pass package directory instead of package
symbol.
Previously we would only tell elpa about :type elpa packages, but this
doesn't work if some of the dependencies of an elpa package are not
themselves elpa packages. Since we already require all package names to
be unique, there should be no risk in telling elpa about all el-get
packages.
Also, checking for el-get installed :type elpa packages is not needed,
since any :type elpa package implicitly depends on package, so we can
just check the feature.
* el-get.el (el-get-do-init): always add package symbol to
package-activated-list when (featurep 'package).
* el-get.el (el-get-make-recipes): use el-get-read-all-recipes-names
which uses the file names instead of actually reading the recipe files
themselves.
* el-get.el (el-get-write-recipe): print a newline after each :prop val
recipe pair, and then pretty indent the whole thing. Note that
standard Emacs pretty-printing doesn't put any newlines in lists
except around sublists.
This function is used to create completion candidates, so its slowness
is quite noticable. The main cause of slowness was the reading of all
the recipe files which can be avoided because the file name gives the
recipe name.
* el-get-recipes.el (el-get-all-recipe-file-names): new function.
* el-get.el (el-get-read-all-recipe-names): use new function
el-get-all-recipe-file-names instead of el-get-read-all-recipes to
avoid having to read every recipe file.
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.
Move variables from el-get.el to el-get-custom.el; this lets the byte
compiler find them when looking at el-get-recipes.el, which is triggered
by (require 'el-get-recipes) from el-get.el. We can't (require 'el-get)
in el-get-recipes.el because that would cause circular requires which
the byte compiler rejects.
If a package to be init'd has new dependencies, simply install them
rather than throwing an error about missing packages. A warning about
changing non-whitelisted properties is still issued.
New definition is more canonical elisp, and uses two new el-get-core
functions "el-get-plist-keys" and "el-get-keyword-name".
Intended to improve #1412.
Combined with the byte-compile fix in f47d14b, changing el-get-remove
to set the pacakge status to "removed" before updating the autoloads
and removing the package results in correct autoload behavior when
removing packages.
Fixes#446.