Adds support for setting the following gruvbox theme variants
as dotspacemacs-theme:
- gruvbox-dark-soft
- gruvbox-dark-medium
- gruvbox-dark-hard
- gruvbox-light-soft
- gruvbox-light-medium
- gruvbox-light-hard
The default value is now at the distribution level. The user must put the ivy
layer explicitly in the dotfile.
This to be consistent with filetree package which is neotree by default in
the standard spacemacs distribution.
I'm afraid that we add too much wizard questions as the helm/ivy case will
happen more and more in the future. Neotree and Treemacs are the first layers
to follow the Helm and Ivy pattern. I don't want to add a fourth question to
the wizard which makes it heavy and is not as useful for new users.
Shadowing is now control by layer property ':can-shadow' only.
can-shadow is a commutative relation, if layer1 can shadow layer2 then layer2
can shadow layer1.
the shadow operator is a binary operator accepting two layer names, it is not
commutative and the order of the operands is determined by the order of the
layers in the dotfile (like the ownership stealing mechanism).
If ':can-shadow' is set explicity to nil in the dotfile then the layer won't
shadow any layer.
For instance to install both ivy and helm layer:
(setq dotspacemacs-configuration-layers
'(
ivy
(helm :can-shadow nil)
)
note that due to the commutative relation the above example can also be
written (in this case, ':can-shadow' should be read ':can-be-shawdowed'):
(setq dotspacemacs-configuration-layers
'(
(ivy :can-shadow nil)
helm
)
Layers can now declare in their layers.el file that they shadow one or more
layers using the following functions:
- configuration-layer/shadow-layers
- configuration-layer/shadow-layer
Those function are commutative so:
(configuration-layer/shadow-layer 'layer1 'layer2)
is the same as
(configuration-layer/shadow-layer 'layer2 'layer1)
and means that
layer1 shadows layer2
and
layer2 shadows layer1
The typical use-case is helm and ivy layers. Helm shadows the ivy layer and
Ivy shadows the helm layer.
Shadowing is sensitive to the order of declaration of layers in the dotfile,
for instance:
(setq dotspacemacs-configuration-layers '(
helm
ivy
))
means that ivy shadows helm so helm layer is effectively ignored,
whereas
(setq dotspacemacs-configuration-layers '(
ivy
helm
))
means that helm shadows ivy so ivy layer is effectively ignored.
This mechanism can be turned off using the :can-shadow keyword:
(setq dotspacemacs-configuration-layers '(
ivy
(helm :can-shadow nil)
))
means that both ivy and helm layers will be installed (not recommended in this
case)
Note that the `:can-shadow` mechanism will be fully implemented in a next
commit.
- remove variable configuration-layer--used-distant-packages
- rename function configuration-layer//get-distant-packages to
configuration-layer//filter-distant-packages to better reflect what it does
- Add argument PREDICATE to configuration-layer//filter-distant-packages
- New cfgl-package methods: cfgl-package-used-p and cfgl-package-distant-p
- Add unit tests
Add `(default X)` comment to almost all dotspacemacs variables in
dotspacemacs/init function in the template. Exempted are variables with long
default values. (e.g. dotspacemacs-themes)
Remove `(default X)` from doctsring of dotspacemacs variables. It isn't
necessary, the built-in help system already displays the default value
automatically.
Fix some minor grammar and spelling mistakes.
"micro-state" was the previous name for "transient-state".
Reword the sentence and quote the kill-ring variable.
Duplicate the docstring to the dotspacemacs-enable-paste-transient-state
variables docstring in core-dotspacemacs.el.
Replace the optional argument `no-install` by a global variable named
`spacemacs-sync-packages`.
Rename the hooks to reflect the renaming of the function.
Rename the flag `--no-sync` to the more explicit `--no-package-sync`
This adds a new startup flag `--skip-sync`. It will force spacemacs to skip
package synchonization. This can be useful in cases when you're working under
poor or restrictive network.
Thanks, @zaript, for this idea!
This replaces the older pattern
:toggle (configuration-layer/package-usedp ..)
This implementation ensures that :disabled-for honors dependent packages, i.e.
if package a depends on package b, which is owned by layer c, and layer c is
disabled for layer d, then neither package a nor b will be configured for layer
d. Previously, this was only true for package a, but not b.
This commit also fixes:
- configuration-layer/describe-package now shows which post-init and pre-init
functions are disabled, if any
- Does not recreate all layer objects unconditionally when calling
configuration-layer/discover-layers. Previously, this led to all layers being
recreated after e.g. `SPC h SPC`, without any of the dotfile information.
Since this information is now necessary for
configuration-layer/describe-package, it’s important that we don’t clear the
indexed layers when invoking this function.
Problem:
Two which-key functions doc-strings, state that they are obsolete:
(which-key-declare-prefixes KEY-SEQUENCE REPLACEMENT &rest MORE)
This function is obsolete since 2016-10-05;
use ‘which-key-add-key-based-replacements’ instead.
(which-key-declare-prefixes-for-mode MODE KEY-SEQUENCE REPLACEMENT &rest MORE)
This function is obsolete since 2016-10-05;
use ‘which-key-add-major-mode-key-based-replacements’ instead.
Solution:
Replace the obsolete functions.
Searching with `SPC /` through the .emacs.d folder, didn't find any other
occurrences of these functions.
A recent change in the `.spacemacs.template` made it so that the
`dotspacemacs-configuration-layers` variable name can be found inside a
comment right before the expression that sets it's value. This makes the
lazy insertion fail to detect the proper place to add lazy loaded
layers.
This fix solves the immediate problem but maybe a better solution can
be found.
This is an attempt to tighten up the language of the docstrings for
initialization and configuration functions. I realize that's pretty
subjective, so please only use what makes sense. Below is a break-
down to avoid seeming _too_ arbitrary.
Rationale
---------
Headings: We know they're functions, so we don't need to say
'X function'. 'Layer configuration' is called that in the other
functions.
Instructions: Say what I should do.
Other: `dotspacemacs/init' -- 'very beginning' is the more common
English idiom.
If I sound strident, it's just 'cause I'm trying to be terse.
This is all opinion so YMMV. I hope it helps.
If dotspacemacs-auto-generate-layout-names is non-nil, and the user
tries to open a layout in a position that doesn't yet have a layout,
then create a new layout with an automatically generated name.
This allows the user to, for instance, include the spacemacs tree as a
git submodule of their configuration repository without seeing
superfluous warnings.
Add two new functions: `spacemacs/transient-state-register-add-bindings`
and `spacemacs/transient-state-register-remove-bindings` to prevent layer
authors and end users from dealing with the underlying variables' subtleties.
At the moment a Quelpa recipe like `(recipe :fetcher local)` is being translated
to something like
`(recipe :fetcher file :path "my-layer/local/my-pkg/my-pkg.el")`. So we can
build simple single-file local packages.
This commit changes it to translate to the package directory instead of exact lisp
file, so we can build multi-file local packages. Thus, the above example will be
translated to `(recipe :fetcher file :path "my-layer/local/my-pkg")`.
Also, add the relevant info to LAYERS.org.
Some of the layers do not supply a README.org file which caused
invalid links in the layer list. To avoid this I have changed
spacemacs//generate-layers-from-path to only add links to layers
with a valid README.org file.
I have also removed an invalid check to exclude the non existing directory
"distribution" from the layers list. I think that originally the folder
"distributions" should have been excluded but this is not longer
a feasible action as there is at least one layer with a valid README.org
file in there today. So now we add links to all layers providing a
README.org file independent of their category.
In 2015 a file CONTRIBUTE.org was existing in the /doc folder.
In addition a CONTRIBUTING.md file was existing in the project root folder.
This was merged into a CONTRIBUTING.org file, which is still located in the project root.
However the documentation publishing system was still looking only in the doc folder.
In addition the external documentation is still referring to the old CONTRIBUTE.html which is not longer existing.
I have now included a new function called prior to publishing
which is copying the documents from the projects root into the doc folder.
As a side effect it renames the CONTRIBUTING.org to the old CONTRIBUTE.org
to support the external documentation.