With this new variable, user can load spacemacs anywhere, e.g.
"~/.emacs.d/spacemacs/". Only user's cache directory is still hard-coded
as "~/.emacs.d/.cache/". If user want to use spacemacs this way, drop
one line as the below in "~/.emacs.d/init.el":
(setq spacemacs-start-directory "~/.emacs.d/spacemacs/")
(load-file (concat spacemacs-start-directory "init.el"))
Old implementation excluded package that were not selected, this
implementation does not excluded them, it simply ignore it in the
layer where they are not selected. This reimplementation comes from
a refactor of the way packages.el files are loaded, instead of loading
these files at the moment of resolving the list of used packages, they
are now loaded when making the layer objects. A neat consequence is that
side effects is better confined and the configuration-layer/get-packages
is now pure (at least a lot more pure than before).
In the `cfgl-layer` class the slot `:user-packages` has been renamed
to `:selected-packages` which defaults to `'all` meaning that all
the packages in `:packages` are selected. `:selected-packages` value
is given by the new function `configuration-layer//select-packages`.
Effectively selected packages are given by a new method for `cfgl-layer`
class called `cfgl-layer-get-packages`.
Tests have been updated to reflect the changes.
Also documentation on configuration layer declaration in the dotfile
section of DOCUMENTATION.org has been greatly improved (I hope) and
reflect the last feature added to the
`dotspacemacs-configuration-layers` list.
I had a duplicated layer, but the message that's printed broke spacemacs starting up because it was a format string but wasn't in a `format` form. Simple fix. Spacemacs works again! Yay!
This issue was introduced in c0851ddcb3, according to a quick `git bisect`. :)
The car of :owners is the real owner.
Now we can easily gather the list of all owners of a package.
Also fix unit tests about missing spacemacs-insecure variable.
Revert "Parse CLI args after dotspacemacs/init"
This reverts commit 0a35502de4.
We cannot delay the parsing of CLI params since we need their values
early during the loading process (i.e. debug info).
Replace the previous commit with a new variable `spacemacs-insecure`
which takes the value of --insecure boolean parameter.
- Use completing-read when called interactively
- Check for string locations in addition to built-in etc.
- Don’t double-princ on/off for toggles
- Bind to SPC hdP
This new variable replace dotspacemacs-delete-orphan-packages
It defines the behaviour of Spacemacs when downloading packages.
Possible values are `used', `used-but-keep-unused' and `all'.
- `used' will download only explicitly used packages and remove any
unused packages as well as their dependencies.
- `used-but-keep-unused' will download only the used packages but won't
delete them if they become unused.
- `all' will download all the packages regardless if they are used or
not and packages won't be deleted by Spacemacs.
Default value is `used`.
The new layer file `layers.el` is used to declared additional layers.
It is like the sibling of packages.el except that for now it does not
take a list (can do this in a futur commit).
The new order for file loading is the following:
layers.el > packages.el > funcs.el > config.el > keybindings.el
Since packages.el relies on some undefined stuff encapsulated
in init functions, it is not meant to be byte compiled. OTOH funcs.el
(where lies most of the computation added by a package config) should
be compilable.
Since we load packages.el very early it is not possible to use
`configuration-layer/package-usedp` in funcs.el.
This commit also fixes the tests.
Change the semantic of the files for a better control over the
configuration (like being able to use package-usedp function to
guard package configuration and function definition).
This is a big change!
The list of packages of the layer must now be placed in config.el
packages.el only contains pre-init, init and post-init functions
Now both packages.el and funcs.el can use
configuration-layer/package-usedp which is much more powerful than
just configuration-layer/layer-usedp.
Also merging into one file the layer variable and the list of packages
make sense (in this case config.el).
It also means that we can quickly load all the packages declared in
all layer for helm and ivy sources by just loading the config.el file.
Expect some regressions introduced by this change, like the helm
and ivy sources, they will be fixed in other commits.
--no-layer: desactive all the layers except the distribution layer
--distribution: allow the change temporarily the distribution
example
Start emacs with spacemacs-base and no layers:
emacs --no-layer --distribution spacemacs-base
New package :step 'bootstrap', this step happens before 'pre' packages.
A new layer names 'spacemacs-bootstrap' gather all the ':step bootstrap'
packages. This layer is special and is always the first element of
the variable 'configuration-layer--layers' which assure that all
bootstrap packages are configured first.
This new layer leverages the configuration layer system, removes the
clutter of package installations in the function 'spacemacs/init' and
isolate the bootstrap packages in one place.
Several things have been fixed:
- correctly set the :lazy-install flag on all packages of a lazy
installed layer
- correctly unset the :lazy-install flag when installing the packages
- sort the packages before installation and configuration
Fixes#5610
Make cfgl-layer-owned-packages return a list of package objects instead
of just package names.
Use this function to correctly excluded non owned package when flagging
package for lazy installation.
Fixes#5608
- only consider distant packages (i.e. requiring an installation)
- remove lazy install flag of a layer if at least one owned package is
already installed