This reverts commit 29c78ce841 and all other fixes
that have been made afterwards.
The motivation is that use-package is seen by many as a replacement for
`require`. Is use-package always defer the loading of packages then is breaks
this use case, this does not respect POLA so even if it was making Spacemacs
loading faster (up to 3s faster on some startup on my machine) we just cannot
use it, it would be irresponsible. Spacemacs should be easy to use, loading
performance will come with time but it is not a priority.
Problem
---
For basic toggling a checkbox (and adding / removing one with `SPC u`) for list
item at point one can use `,,`. However, there is no spacemacs key binding for
more advanced checkbox editing command `org-toggle-checkbox`.
Compare `C-c C-c` to `C-c C-x C-b` at https://orgmode.org/manual/Checkboxes.html
Solution
---
Add `SPC m T c` key binding for `org-toggle-checkbox`.
Bind org-clock-goto to `SPC aokg`
Useful for jumping to recent clocks (via SPC u SPC aokg), otherwise it jumps to
the current or last clocked in clock
Signed-off-by: William Casarin <jb55@jb55.com>
Before some time the additional evil-org bindings were available
in all three evil modes. However due to a bug in evil-org this
seems to have been changed. The bug is fixed now and
I have restored the old insert mode bindings by setting
evil-org-use-additional-insert to true during package
initialization
Had to create dummy init functions at some places since the owner of a package
is the last layer that defines the init function of a package. And a package
can be installed only if it has an owner.
When ivy is used, the default org-set-tags will only complete for the
first tag, and any additional tags must be typed manually. counsel
provides a replacement function to fix this.
Unfortunately, we can't just alias org-set-tags because it is used in
other places, so we must change C-c C-c using a hook.
See https://github.com/syl20bnr/spacemacs/issues/6918
Resolves https://github.com/syl20bnr/spacemacs/issues/9663
Tested to work on a created-from-scratch spacemacs-base config created with
Emacs-style, ivy preferences.
I just added below to dotspacemacs-configuration-layers
(org :variables
org-enable-hugo-support t)
After this PR, C-c C-e in an Org file shows the Hugo export options.
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.
- bind spacemacs-layouts/non-restricted-buffer-list to SPC b B instead
of SPC B b
- rename buffer listing functions in which-key to be more explicit
PR title:
bindings: non-restricted-buffer-list-* to SPC B b instead of SPC B b
PR message:
I don't know what was the thought behind this, but `spacemacs-layouts/non-restricted-buffers-list-*` was alone in its `SPC B` prefix and `SPC b B` was almost free, only used in one layer that I would be surprised if it was widely used (`ibuffer`).
I also renamed buffers listing functions in `which-key` to be clearer for the user. Indeed, I find that names like `helm-mini` are pretty obscure and kind of defeat the purpose of `which-key` and `spacemacs-layouts-non-restricted-buffer-list-blah` was so long that it couldn't even be displayed.
Now the user can choose between `list-buffers` or `global-list-buffers` for listing buffers.
org-mu4e was already handled in the mu4e layer which is the correct place for
this.
Added notmuch to mu4e layer, maybe not the right place for this but for now
it is OK.
Why?
- 'r' is free binding - not used anywhere for org related modes
- refiling is quite common activity if you use org heavily, so moving it for
easy access makes sense
Before, `org-mu4e` would be loaded when mu4e was. However, as an extension to
org mode, not mu4e, it should be loaded when org mode is.
This commit also adds similar support for notmuch.
problem: SPC C c was defined in the org layers :config section, which
runs when a .org file is loaded
solution: move the definition to the :init section, so that it loads on
startup, like SPC a o c and C-c c
Provide a way to toggle space-doc-mode in any org file with a keybinding.
Useful for reading documents in the same mode as Spacemacs documentation is
opened in.
Enabling a company backend for a specific mode was a tedious tasks with code
scattered at different locations, one for local variable definitions, one for
company hook function definitions and another where the backends were pushed to
the local variables (which was problematic, since we ended up pushing the same
backends over and over again with `SPC f e R`, pushes have been replaced by
add-to-list calls in the new macro).
All these steps are now put together at one place with the new macro
spacemacs|add-company-backends, check its docstring for more info on its
arguments.
This macro also allows to define arbitrary buffer local variables to tune
company for specific modes (similar to layer variables via a keyword :variables)
The code related to company backends management has been moved to the
auto-completion layer in the funcs.el file. A nice side effect of this move is
that it enforces correct encapsulation of company backends related code. We can
now easily detect if there is some configuration leakage when the
auto-completion layer is not used. But we loose macro expansion at file loading
time (not sue it is a big concern though).
The function spacemacs|enable-auto-complete was never used so it has been
deleted which led to the deletion of the now empty file core-auto-completion.el.
The example in LAYERS.org regarding auto-completion is now out of date and has
been deleted. An example to setup auto-completion is provided in the README.org
file of the auto-completion layer.
Add org-expiry package to be loaded lazily and autoload interactive
functions.
Provides no default configuration, but make it more convenient for users
to use the org-expiry package in their personal configuration.
Fixes#6630
In org-agenda-mode, make the org-agenda-refile and
org-agenda-clock-cancel bindings consistent with org-refile and
org-clock-cancel.
In org-agenda-transient-state, make the refile, set tags, clock in,
clock out, and clock cancel bindings consistent with their org-mode
and org-agenda-mode equivalents.
In org-capture-mode, make the org-capture-refile binding the same as
the org-agenda-refile and org-refile.
SPC p o was for projectile-multi-occur which is not really useful given
the alternative provided by Spacemacs
If this binding is really important we can consider adding it back
on SPC p O or find another way to integrate multi-occur in Spacemacs.
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`
Add "smart move end of line" behaviour and add two layer variables
allow for tweaking C-a and C-e behaviours:
- better-defaults-move-to-beginning-of-code-first and
- better-defaults-move-to-end-of-code-first
Helm-flx, which is included as a core package, requires a minimum Emacs
version of 24.4. As it stands attempting to install Spacemacs on Emacs
24.3 or below will break on helm-flx.
org-reveal is an extension to org mode that allows exporting of org files as
reveal.js presentations. Since not everyone needs this functionality, the
loading of the package is controlled via the `org-enable-reveal-js` switch,
which, if set to `t` would load the package.
- move evil-org to org layer
- move org-plus-contrib to spacemacs-org layer
- remove toc-org from the list of package for org layer
- give ownership of the org package to org layer
- invent a package named default-org in spacemacs-org layer in order
to let the ownership of org package to org layer
- remove unnecessary :mode keyword in use-package from for org