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.
Add argument `action` as first positional argument, the second
positonal argument is for tests.
Add actions `doc` and `config`, doc works on org files and config works
on configuration file like packages.el.
The special action `all` performs all actions.
Move test files to `test` sub-folder.
Choose between `md5sum` and `md5` (on OS X) executables.
Add a new formatting function `move-packages-to-config` to move
package lists to config.el file.
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.
This commit introduces two new options to add-toggle:
:prefix, a symbol that is bound to the raw prefix argument (as
in `(interactive "P") forms).
:on-message, an expression overriding the default 'on' toggle
message (useful to document a toggle's argument).
These new options are applied to long-lines' toggle, so we can choose
how many lines to toggle it on via a raw prefix argument.
Visiting the dump file before writing to it is slow, because it triggers
all the regular actions that happen when a user opens a file, e.g.
enable major mode and minor modes. We don't need all that,
with-temp-file is what we really want.
spacemacs/report-issue opens a buffer prepopulated with a template and some
system information. The buffer is markdown-mode augmented with a keybinding to
send the contents to github.
Or if that doesn't work, the text remains in the buffer to be manually copied
and pasted. This makes the error reporting more robust: right after the user has
experienced one bug is the worst time to manifest another one.
This commit also rewrites spacemacs//describe-last-keys-string because I
couldn't figure out how else to prevent view-lossage from burying the new
REPORT_SPACEMACS_ISSUE buffer. Suggestions welcome.
--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
Add test mode: {repo-root}/core/tools/doc-fmt/run.bash test
applies formatting only to {repo-root}/core/tools/doc-fmt/test.org
Use "gsed" if present.
Add new filters, refactor code.
test.org now represents most of the .org file formatting errors.
If emacs is launched with -q option and spacemacs files are loaded via
--eval option, then spacemacs fails due to depending `after-init-time'
variable being set properly which is done only when emacs is launched
without -q. This patch is to remove this dependence so that spacemacs
launched with -q can still work. This is done by introducing
`spacemacs-initialized' variable which is set properly regardless of
which command line options are present or absent.
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.
The https link-type opens the local copies of the Spacemacs documentation files with
the spacemacs/view-org-file function. It supports GitHub style heading links
For example, the link:
https://github.com/syl20bnr/spacemacs/blob/develop/layers/org/README.org#links
Will be handled similary to as if it was:
file:~/.emacs.d/layers/org/README.org::*links
Also the `space-doc' mode will be applied.
Refactored GH style anchor search.
`space-doc-mode` - Buffer local minor mode for Spacemacs documentation files. The mode hides org meta tags.
Enabled when viewing documentation via `SPC` `h` `SPC`
Add new html preprocessors to the org-html-publish-to-html pipeline:
- `spacemacs//toc-org-unhrefify-toc`
- remove the `toc-org` modifications for the TOC
- `spacemacs//org-heading-annotate-custom-id`
- annotate org headings with the indexes that GitHub uses for linking.
`org-html-publish-to-html` will use them instead of the default
`#orgheadline{N}`. This way the GitHub links and the
http://spacemacs.org/ links will be compatible."
- `spacemacs//reroot-links`
- find the links that start with
https://github.com/syl20bnr/spacemacs/blob/ and end with
.org{#an-optional-heading-link} (i.e the links between the local org
files). Change their root to http://spacemacs.org/ so the links will
point at files located on the site.
*For the "file to file" links to work properly the expor
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
Now Spacemacs will ask for layer installation when opening a file with
a known file type.
The auto-mode-alist entries are added by the file auto-layer.el in
the layers directory.
Easy insert of forms for lazy initialization can be done with the
interactive function configuration-layer//insert-lazy-install-form.
Change default value of dotspacemacs-enable-lazy-installation to t.
Motivation
While disabling Evil in holy-mode makes its implementation shorter and
sounds elegant on the paper, in practice it puts a big burden on the
configuration parts which need to know if Evil is enable or not. This is
a bad separation of concerns and the bunch of fixes that we were forced
to do in the past weeks shows this issue. Those fixes were about
removing the knowledge of the activation of Evil by implementing new
dispatching functions to be used by layers, this is cumbersome and makes
Spacemacs layer configuration more subtle which is not good. There was
additional bad consequences of the removal of Evil state like the
impossibility to use Evil lisp state or iedit states, or we would have
been forced to implement a temporary activation of Evil which is
awkward.
Instead I reintroduce Evil as the central piece of Spacemacs design thus
Evil is now re-enabled in holy-mode. It provides the abstraction we need
to isolate editing styles and be able to grow the Spacemacs
configuration coverage sanely. Layers don't need to check whether the
holy mode is active or not and they don't need to know if Evil is
available (it is always available). We also don't need to write
additional dispatching functions, this is the job of Evil, and I think
it provides everything for this. Ideally configuration layer should be
implemented with only Evil in mind and the holy-mode (and hybrid-mode)
should magically make it work for Emacs style users, for instance we can
freely use `evil-insert-state` anywhere in the code without any guard.
Evil is now even more part of Spacemacs, we can really say that
Spacemacs is Emacs+Evil which is now an indivisible pair. Spacemacs
needed this stable API to continue on the right track.
While these changes should be rather transparent to the user, I'm sorry
for this experimental period, I failed to see all the implications of
such a change, I was just excited about the possibility to make Evil
optional. The reality is that Spacemacs has to embrace it and keep its
strong position on being Emacs+Evil at the core.
Implementation
- insert, motion and normal states are forced to emacs state using an
advice on `evil-insert-state`, `evil-motion-state` and
`evil-normal-state` respectively. These functions can be used freely in
the layer configuration.
- A new general hook `spacemacs-editing-style-hook` allow to hook any
code that need to be configured based on the editing style. Functions
hooked to this hook takes the current style as parameter, this
basically generalize the hook used to setup hjkl navigation bindings.
- ESC has been removed from the emacs state map.
- Revert unneeded changes
- Revert "evil: enter insert-state only from normal-state"
commit bdd702dfbe.
- Revert "avoid being evil in deft with emacs editing style"
commit f3a16f49ed.
Additional changes
All editing style packages have been moved to a layer called
`spacemacs-editing-styles`
Notes
I did not have time to attack hybrid mode, I should be able to do it
later.