spacemacs/layers/+tools
syl20bnr 1c4f685b13 core: refactor layer system
TL;DR Should get 20~25% speed improvement on startup, should get a big
improvement when using ivy or helm SPC h SPC. Users with layers.el files
in their layers must use `configuration-layer/declare-used-layer`
instead of `configuration-layer/declare-layer`

The implementation of the layer system made heavy use of `object-assoc`
and `object-assoc-list` functions which are not efficient. This PR
mainly replaces those object lists with hash maps in order to index the
objects by their name and achieve an O(1) access time.

The old object lists `configuration-layer--layers` and
`configuration-layer--packages` have been each by two variables each:
- `configuration-layer--indexed-layers` which is a hash-map of all the
layer objects and `configuration-layer--used-layers` which is a list of
all _used_ layers symbols,
- symmetrically `configuration-layer--indexed-packages` which is a
hash-map of all the package objects and
`configuration-layer--used-packages` which is a list of all _used_
packages symbols.

The hash map `configuration-layer--layer-paths` is gone, now we create
directly layer objects when discovering the layers and set the :dir
property. Note that previously the layer paths were the parent directory
of the layer, now :dir is the layer path.

The function `configuration-layer//make-layer` is now similar to its
counterpart `configuration-layer//make-package` in the sense that it
takes an optional `obj` to be able to override its properties.

The functions `configuration-layer/declare-layer` and
`configuration-layer/declare-layers` now takes an optional parameter
`usedp` in order to declare used or not used layers. For convenience
new functions have been added: `configuration-layer/declare-used-layer`
and `configuration-layer/declare-used-layers`, users _must_ update all
occurrences of `configuration-layer/declare-layer` by
`configuration-layer/declare-used-layers` in their `layers.el` files.

`helm-spacemacs-help` and `ivy-spacemacs-help` are updated to match the
changes in `core-configuration-layer.el`.

Rename some variables to make them more explicit:
`configuration-layer-no-layer` -> `configuration-layer-exclude-all-layers`
`configuration-layer-distribution` -> `configuration-layer-force-distribution`
2016-07-28 23:26:54 -04:00
..
ansible core: refactor layer system 2016-07-28 23:26:54 -04:00
cfengine Replace +config-files category by +tools category 2016-06-09 23:56:09 -04:00
chrome Format documenation files with doc-fmt tool 2016-04-12 23:31:38 -04:00
command-log Convert org doc files with doc-fmt 2016-03-30 22:59:55 -04:00
dash add counsel-dash 2016-07-05 00:23:16 -04:00
deft deft: move setq to :init 2016-05-17 00:19:38 -04:00
docker docker: fix evilification 2016-07-05 00:23:16 -04:00
fasd Format documenation files with doc-fmt tool 2016-04-12 23:31:38 -04:00
finance Use :toggle keyword instead of when forms 2016-05-29 22:39:21 -04:00
geolocation Format documenation files with doc-fmt tool 2016-04-12 23:31:38 -04:00
imenu-list imenu-list: exclude IList buffer from golden-ratio 2016-04-08 18:20:50 -04:00
nginx Replace +config-files category by +tools category 2016-06-09 23:56:09 -04:00
pandoc Convert org doc files with doc-fmt 2016-03-30 22:59:55 -04:00
pdf-tools Add shortcuts for full left and right scroll 2016-07-25 12:22:20 +09:00
prodigy Convert org doc files with doc-fmt 2016-03-30 22:59:55 -04:00
puppet core: refactor layer system 2016-07-28 23:26:54 -04:00
ranger ranger: fix error about void variable 2016-04-17 00:37:47 -04:00
restclient Remove packages without any init functions 2016-06-10 20:53:24 -04:00
salt Fix spelling in saltstack layer 2016-07-22 12:51:24 +03:00
shell shell: auto-jump to end also in hybrid 2016-07-05 00:23:16 -04:00
speed-reading Convert org doc files with doc-fmt 2016-03-30 22:59:55 -04:00
systemd Replace +config-files category by +tools category 2016-06-09 23:56:09 -04:00
terraform Replace +config-files category by +tools category 2016-06-09 23:56:09 -04:00
tmux tmux: bind named functions instead of lambdas 2016-07-26 14:33:45 +09:00
vagrant Convert org doc files with doc-fmt 2016-03-30 22:59:55 -04:00
ycmd core: refactor layer system 2016-07-28 23:26:54 -04:00