Commit graph

10 commits

Author SHA1 Message Date
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
syl20bnr
419eb51836 core: new variable spacemacs-insecure
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.
2016-06-09 23:09:59 -04:00
syl20bnr
b21c7177ec core: new command line params --no-layer and --distribution
--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
2016-04-21 23:29:23 -04:00
syl20bnr
7b6588d017 Fix typo in spacemacs-force-resume-layouts 2016-02-15 00:05:38 -05:00
Fabien Dubosson
24f0e8cc4b Restart Spacemacs restoring layouts
Fix #5058
2016-02-14 20:59:05 -05:00
syl20bnr
046d86800c Clean copyrights and update for year 2016 2016-01-11 21:42:17 -05:00
syl20bnr
609b79fd6c core: move handling of --insecure to core-command-line.el 2016-01-06 23:27:09 -05:00
syl20bnr
19f9a4da6f core: remove unnecessary spacemacs//hide-home-buffer 2016-01-06 23:19:55 -05:00
syl20bnr
15c7ae5bdf core: hide home buffer if a file is passed on the command line
Note that any non Emacsy command line parameter and non processed
command line parameter (that is unknown from Spacemacs) will hide the
home buffer. This should be good enough.

Fixes #4057
2016-01-06 23:03:23 -05:00
syl20bnr
76d8ff8621 core: allow debug arguments without --debug-init
Add a new core file for processing command line arguments
2016-01-06 22:50:13 -05:00