Cider provides the possibility to search the REPL history, for which it opens
the history in a read-only buffer (which as usual, is best initialized in
evilified state).
This commit evilifies the cider-repl-history-mode buffer and defines some common
sense cider-repl-history-mode keybindings.
* [major-modes] add evil-matchit support for matlab
If `evil-matchit` is available, configure it for us in `matlab-mode`.
Note: This commit by itself doesn't actually do anything, because currently,
`evil-matchit` supports `octave-mode`, but not `matlab-mode`, although it's a
very simple matter of just turning on its `octave-mode` configuration for
`matlab-mode`. I'm submitting a PR against `evil-matchit` in order to support
`matlab-mode` out of the box.
Currently when using any python-send-shell command, the output of the evaluation
is not shown in the comint shell (see Emacs bug#49822).
This commit adds a simple function to send input and get the output printed in
the comint process buffer.
problem
With the cursor on a parenthesis in js code in a .html document,
pressing:
```
% ;; evilmi-jump-items
```
jumps to the buffers last line.
solution from upstream issue
Jump to end when current line has a "if" keyword in web-mode and html-mode
https://github.com/redguardtoo/evil-matchit/issues/119
for it has a lot of side effects by globally replacing
-+- in the entire markdown buffer. Up to now markdown
has its own table insert function available via
`SPC i T` which is to be prefered.
In addition there seems to be no active
binding for `orgtbl-mode` in markdown making it very
unlikely that someone is still using it within markdown-mode.
In the scheme REPL, RET is bound to `geiser-repl--maybe-send` which most times
sends the input instead of inserting a newline. Therefore this separate
keybinding for that will always insert the newline is required.
Also the geiser-doc-mode is a read-only mode which should get evilified to
unshadow the convenient evil-like default Emacs keybindings.
`xref-find-definitions` is an interactive function that requires one argument `identifier`. You either need to `call-interactively`, or better yet, call it by forwarding the `sym-name` as the `identifier`.
Emacs mode is clearly better than vim mode, because j and k keys are already
bound to down/up motion. In addition as the tree mode is traversed, the
matching code pops up on the left in emacs mode but not in vim mode.
- Labelled `elixir-backend` as safe local variable.
- Added local variable hooks of elixir mode:
- `spacemacs//elixir-setup-backend`
All other setup functions are already added to local variable hook.
See: https://github.com/syl20bnr/spacemacs/issues/14653
Racket describe mode comes with its own keybinding (i.e. `q` for quit).
Additionally it contains links, so this PR binds `o` to `link-hint-open-link`
(`ace-link` does not support this mode)
* core-customization: improved SAFE variable handling
- SAFE can either be a function or t.
- When it's t, use a default validation function
`(lambda (val) (validate-value val TYPE t))`
- When it's a function, use the supplied function.
* Fixed bugs in go and groovy layer
In almost any cases, it's better to supply `t` instead of a function, to
`SAFE` argument of `spacemacs|defc`.
For example,
```elisp
(spacemacs|defc go-use-gocheck-for-testing nil
"If using gocheck for testing when running the tests -check.f will be used instead of -run to specify the test that will be ran. Gocheck is mandatory for testing suites."
'boolean nil #'booleanp)
```
If its value is nil, it evaluate to `nil`, which means that `nil` is not
a safe value for `go-use-gocheck-for-testing` local variable.
But clearly it is.
* core-customization: improved SAFE variable handling
- Added a function `spacemacs-customization//get-variable-validator`.
This function is designed to be used with `safe-local-variable`
property of spacemacs custom variables.
See details in the docstring.
```elisp
(put 'FOO 'safe-local-variable
(apply-partially 'spacemacs-customization//get-variable-validator
'FOO))
```
- This is better than a lambda since `apply-partially` returns a compiled
function. (Though the performace gain may be tiny.)
- This is better than simply calling `validate-value`, because it returns
nil when value is nil. But sometimes nil is a valid value.
Co-authored-by: Lucius Hu <lebensterben@users.noreply.github.com>
With this fix it is now possible to select different backends in
different project using the directory variables mechanism of Emacs
(the file .dir-local.el)
- Labelled `go-backend` and `go-format-on-save` as safe local variable.
- Added local variable hooks of go mode:
- `spacemacs//go-setup-backend`
- `spacemacs//go-setup-eldoc`
- `spacemacs//go-setup-format`
See: https://github.com/syl20bnr/spacemacs/issues/14653
The configuration for various scheme implementations has been split out of the
geiser package, breaking the current layer support for the implementations.
This commit adds a simple fix for the scheme implementations support.
Anybody is free to improve the code, but at least the layer will be fixed.
currently toggle `:if` for meghanada with `use-package` only tells `use-package`
not to load `meghanada` but spacemacs still downloads `meghanada`.
also we shouldn't care about emacs 25 anymore.
- Replaced `dos.el` with `bat-mode`
- `dos.el` is superseded by `bat-mode`
- `dos.el` is localised package
- `bat-mode` is a built-in mode
- Added `bmx-mode`
- `bmx-mode` provided syntax highlighting, code-navigation and refactoring
capabilities on top of `bat-mode`
- Introduced a new command cargo-process-outdated
- Certain commands are known to change Cargo.toml and needs to reload workspace,
wrapper functions that automatically reload workspace are added.
- spacemacs/cargo-process-add
- spacemacs/cargo-process-rm
- spacemacs/cargo-process-outdated
- Added a layer variable for rust layer, cargo-process-reload-on-modify,
which toggle the aforementioned behaviour.
- Added a new utility function in LSP layer, which returns server ID associated
with current project.
- spacemacs//lsp-client-server-id
- Rearranged keybindings for rust layers (see table below for details)
Commands wrapped with auto-reload functionality:
|Command |Binding |
|-------------------------|-------------|
|`cargo-process-repeat` |`SPC m c .` |
|`cargo-process-add` |`SPC m c a` |
|`cargo-process-rm` |`SPC m c r` |
|`cargo-process-upgrade` |`SPC m c U` |
Commands with new bindings:
|Command |Old Binding |New Binding |
|-----------------------------------|------------|------------|
|`cargo-process-search` |`SPC m c s` |`SPC m c /` |
|`cargo-process-fmt` |`SPC m c f` |`SPC m c =` |
|`cargo-process-current-file-tests` |`SPC m c o` |`SPC m t b` |
|`cargo-process-current-test` |`SPC m c t` |`SPC m t t` |
|`cargo-process-test` |`SPC m t` |`SPC m t a` |
* [Python layer] Document Nix + Microsoft LSP
* Document how to make Nix + Microsoft LSP work
* Add links to Microsoft LSP and Pyright repos
* Remove nix part
- Moved backend determination to `config.el`
- Replaced unnecessary backquote construct with simple quotation
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Replaced `(when (not foo) bar)` with `(unless foo bar)`
- Replaccd `(cond ((eq foo) bar))` form with `(pcase (foo bar))`
- Replaced `(set (make-local-variable 'foo) bar)` with `(setq-local foo bar)`
- Replaced `(if foo bar nil)` with `(when foo bar)`
- Moved backend determination to `config.el`
- Replaced unnecessary backquote construct with simple quotation
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Moved backend determination to `config.el`
- Replaced unnecessary backquote construct with simple quotation
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Moved backend determination to `config.el`
- Replaced unnecessary backquote construct with simple quotation
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Replaccd `(cond ((eq foo) bar))` form with `(pcase (foo bar))`
- Moved backend determination to `config.el`
- Refactored function
- Replaced unnecessary backquote construct with simple quotation
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Moved backend determination to `config.el`
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Refactored function
- Replaccd `(cond ((eq foo) bar))` form with `(pcase (foo bar))`
- Moved backend determination to `config.el`
- Replaced unnecessary backquote construct with simple quotation
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Refactored function
- Moved backend determination to `config.el`
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Replaced `(when (not foo) bar)` with `(unless foo bar)`
- Refactored function
- Moved backend determination to `config.el`
- Replaced unnecessary backquote construct with simple quotation
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Replaced `(when (not foo) bar)` with `(unless foo bar)`
- Replaced `(set (make-local-variable 'foo) bar)` with `(setq-local foo bar)`
- Replaccd `(cond ((eq foo) bar))` form with `(pcase (foo bar))`
- Moved backend determination to `config.el`
- Replaced unnecessary backquote construct with simple quotation
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Moved backend determination to `config.el`
- Replaced unnecessary backquote construct with simple quotation
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Moved backend determination to `config.el`
- Replaced unnecessary backquote construct with simple quotation
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Moved backend determination to `config.el`
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Replaced unnecessary backquote construct with simple quotation
- Moved backend determination to `config.el`
- Replaced unnecessary backquote construct with simple quotation
- Moved function from `packages.el` to `func.el`
- Moved backend determination to `config.el`
- Replaced unnecessary backquote construct with simple quotation
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Removed unnecessary `progn`
- Moved backend determination to `config.el`
- Replaced unnecessary backquote construct with simple quotation
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Moved backend determination to `config.el`
- Replaced `(when (not foo) bar)` with `(unless foo bar)`
- Replaced unnecessary backquote construct with simple quotation
- Replaced `pcase` form with only one-arm with `when` or `unless` form
- Replaced `(set (make-local-variable 'foo) bar)` with `(setq-local foo bar)`
- Removed unnecessary `progn`
- Add `dumb-jump-xref-activate` hook to `xref-backend-functions`, which
add a fallback option, i.e. `dumb-jump`, when no better alternatives
is availabe
- Removed the obsolte interface `dumb-jump-go` from the following layers:
- clojure
- latex
- vue
- The global binding `SPC j q` requires the obsolte function
`dumb-jump-quick-look` and is therfore removed
This reverts commit 6e0f650101.
The reason for this is not that the dynamically build pylookup.py
is not found by emacs, this I have already solved locally by checking
the quelpa build directory.
However the issue is that the library is not compatible with python 3
the local version however is.
So this is effectively a fork and must be kept till python 3
compatibility for pylookup has been achieved.
Should fix#14544
When working long hours with Metals and saving and moving between buffers. This feature of automatically showing and writing in buffers breaks HELM, and buffer management stops, rendering Emacs useless. Furthermore, this feature is not that useful. In VIM LSP is off by default. The purpose of this is to make the experience of Scala Developers with Metals a nice one, rather than having Emacs breaking all the time, as has been happening to me. This has saved me hours.
PR-comments
Without this, fuel mode is reloaded needlessly on every Factor REPL restart.
Now we only do that if the Factor about to be invoked is a different one than
before.
Allows you to pick up new Cargo dependencies without a (slooow)
full server restart.
See https://github.com/emacs-lsp/lsp-mode/pull/2728
Add diagnostic messages when trying to reload RA workspace
No point restarting when trying to reload RLS
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
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.
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.