* 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.
Currently :build/:info properties are executed even if a package is
builtin. This however is due to fail because the normal method is
being replaced.
Therefore if :type is 'builtin *and* the recipe has a :builtin
property neither :build nor :info are executed.
Signed-off-by: Rüdiger Sonderfeld <ruediger@c-plusplus.de>
Split the package removal logic into a dangerous internal function
which removes everything, and a user-friendly external
function (el-get-cleanup) which ensures that el-get doesn't get nuked.
el-get-update-all overrode package-refresh-contents using flet to
avoid triggering a full refresh of all elpa packages when updating
each elpa package. The use of flet was incorrect, and the overridden
function was specified with different arguments, causing an error.