When contributing to packages it is often handy to replace a package, already
installed and configured by some layer with a local version of the package (i.e.
a git repo). This commit adds instructions for how to achieve that.
Currently, when `lsp` backend is used for `rust` layer, `SPC m s s` is bound to
`lsp-rust-switch-server`, which temporarily changes the preferred LSP server
for `rust-mode`, but it DOES NOT switch the running LSP server. Users need to
call `lsp-workspace-restart` to finish the switching.
This PR introduced a new function `spacemacs//lsp-rust-switch-server`, which is
a wrapper for the two aforementioned functions
Problem:
With the helm layer, `SPC h SPC` shows:
and: Symbol’s value as variable is void: smartparens-mode
Cause:
The `SPC h SPC` helm buffer generates a section called: Toggles
It checks the status of every toggle mode.
But smartparens-mode has the define-minor-mode :init-value nil
Solution:
Check that the two non-global smartparens modes are bound and true:
smartparens-mode
smartparens-strict-mode
Note:
The smartparens global (strict) mode toggles don't need to be checked,
because they enable smartparens-(strict-)mode.
auto-completion did not respect the smartparens-mode
defined in the dotfile when disabling/restoring it.
In addition when starting a yasnippet expansion
smartparens-mode was not properly restored resulting
in having smartparens always disabled.
This PR tries to fix both issues. Though judging from
the comments this could kill `hippie-expand` expansion.
However as yasnippet is more common I think this is
to be preferred.
emacs-lisp and common-lisp-layer had both their own
logic to work with smartparens including manually
requiring it.
This PR makes them use the standard functions. In
addition it replaces the manual require with proper
autoloading of smartparens.
The standard toggles were not respecting the smartparens
mode defined in the dotfile. Also the global mode toggle
was only for the non-strict version.
This PR makes sure that they toggle the correct
smartparens version.
Before layers were sometimes only activating the non strict
version of smartparens. Also some were only disabling
the non-strict version leaving some of the smartparens
advices intact.
With this PR, all layers set the right version of smartparens.
Also if the layer is trying to disable it a standard function
will now take care to disable all versions of smartparens.
Smartparens seems to cause performance issues for
a lot of users. This PR allows to disable the package
completely.
There are some functions in elisp and common-lisp mode
which dependt on this package and will manually require
it when executed though. But this should only affect
lispers which mostly will want to have some kind of
smartparent functionality anyway.
For the discussion see here #12533.
In evilified visual state.
- Add the inner: `i` and outer `a` text objects.
- Add `o` to exchange the point and mark
(jump between the start and end of the region)
IMHO this should be global binding, the alternative was `SPC e e` because it can
be used everywhere, e. g. from compilation buffer to find the error causing the
build breakage.
evilified normal state is missing some useful keys:
y (evil-yank) and the common navigation keys:
f, F, t, T, w, W, b, B, $, ^
They are available in evilified visual state,
but it's useful to be able to copy text
without having to enter visual state first.
Adding `y` (`evil-yank`), makes the inner (`i`) and outer (`a`),
text objects available in evilified normal state.
This also adds the text objects to evilified visual state.
Just like: https://github.com/emacsfodder/move-texthttps://github.com/rejeep/drag-stuff.el
also drags one or more (region) lines up or down.
But it also allows for dragging left and right (across end of lines):
- a word: changing place with the next or previous word.
- a region: moving it one character at a time to the left or right.
Added a new key binding: `SPC x .`
that opens the:
```
Drag Stuff Transient State
[k/K] up [h/H] left [q] quit
[j/J] down [l/L] right
```
The `move-text` package isn't removed, even though it isn't used anymore in
Spacemacs.
Because the `evil-unimpaired` elpa directory is generated from the local
Spacemacs `evil-unimpaired.el` file.
https://github.com/syl20bnr/spacemacs/blob/develop/layers/%2Bspacemacs/spacemacs-evil/local/evil-unimpaired/evil-unimpaired.el
Therefore the `evil-unimpaired` key bindings `[e` and `]e` still call the
`move-text` commands.
Until the `evil-unimpaired` elpa directory has been removed and regenerated by
restarting Spacemacs.
Then they will call the new `drag-stuff` commands.
I don't know if/when the `move-text` package can be removed in the future.
Enable `evil-surround-mode` when exiting evilified state.
If `evil-surround-mode` was enabled.
Currently it only disables `evil-surround-mode`.
This was discovered while exiting `edebug-mode`.
This also removes the unused variable:
`evilified-state--evil-surround`
It might have been intended for this purpose.
Otherwise it can be added back when
a use case for it is introduced.
problem:
Pressing a number key on the Spacemacs home buffer,
doesn't reliably open the expected recent file.
cause:
The number keys are bound to open the files in the
order they are listed in the `recentf-list`.
The `recentf-list` is updated when a file is saved.
The home buffers recent files list is only updated
when the home buffer is created/refreshed/resized.
solution:
Open the recent files in the order they were listed
when the home buffer was last updated.
Fixes: incorrect order number in recent files on home buffer #14471
problem:
The toggle editing style prefix: SPC t E
always shows the same names:
e -> emacs (holy-mode)
h -> hybrid (hybrid-mode)
This causes some confusion about how to
switch to the vim (evil-mode) editing style,
from emacs or hybrid state.
solution:
Show which editing styles one will switch to:
In evil-mode:
e -> emacs (holy-mode)
h -> hybrid (hybrid-mode)
In holy-mode:
e -> vim (evil-mode)
h -> hybrid (hybrid-mode)
In hybrid-mode:
e -> emacs (holy-mode)
h -> vim (evil-mode)
This names the SPC F which-key entry.
before: +prefix
after: Frames
And adds "..." to the end of the descriptions,
for the keys that require additional user interactions.
cause:
The spacemacs|add-toggle expression,
ended up in the combined setq above.
additional changes:
Separated the combined setqs, to make it
easier see where each assignment starts.
Wrapped the lines at 80 chars to reduce
the need to scroll horizontally.