- Move rtags key bindings under `SPC m g` prefix
- Document rtags support and key bindings in README.org
- attempt to implement gtags fallback using
https://github.com/Andersbakken/rtags#fall-back-to-other-taggers
- make c-c++ layer dependend on gtags layer (gtags layer is automatically
installed when the c-c++ layer is used)
- sort packages config in packages.el
- use a dolist instead of a function to define rtags key bindings
Resolve#10041
The spacemacs/clang-format-buffer function doesn't exist. It should be replaced
with clang-format-buffer. This error was introduced in 01ddc98cef.
Problem
-------
If the symbol is not resolved due to a missing import there is no automatic way
in the Python layer to import it.
Solution
--------
Use 'importmagic' package.
Pressing `SPC m r f` at point that requires an import will suggest a list of
possible options.
Delete layer evil-cleverparens and move the package to spacemacs-evil layer.
The feature is called "Safe structurral editing" for lisp dialects. Support for
it is added via pre-init functions in each of the concerned layer and proper
documentation is added to their README.org files.
This also removes the recently added package evil-smartparens. The goal is
to choose the best package for evil safe structural editing. For now we use
evil-cleverparens as we supported it first, if evil-smartparens is shown to be
a better package we will be able to switch to it.
Convention for major mode specific toggles is to put them under SPC m T prefix.
Used `n` instead of `>` because there is no unicode squared symbol with `>`.
Also use the new generated function to register the hooks.
This change makes the c-c++ layer configure company-c-headers to search for and
list completion alternatives according to the priority list found in 'man gcc'.
If supported, the default system include paths are also fetched from gcc's
configuration instead of being hard coded to "/usr/include" and
"/usr/local/include". This also remedies the problem where the C++ standard
library headers does not show up as completion alternatives without manual
addition of include paths (see #4493, #8655).
Solve part of #7628. Additionally, #7629 is no longer needed.
Add support for formatting lines, functions, and buffers with clang-format. Each
function produces a clear message on success.
The README was updated to reflect the usage of the new key bindings. References
to binding clang-format to the tab key were removed.
- Change nameless prefix to > instead of default :
- Change toggle to SPC m >
- Set nameless separator to nil in order to make it work with any type or separator
- Add diminish unicode ⧁
- Define some default global aliases for Spacemacs source code
- Rename layer variable emacs-lisp-nameless-mode to emacs-lisp-hide-namespace-prefix
- Make variable nameless-current-name safe as a local variable for string values
- Set nameless prefix for core-configuration-layer.el
Add new packages `mvn` and `maven-test-mode`.
Move `gradle-mode` configuration from groovy layer to java layer
New prefix commands `SPC m m` for maven and `SPC m l` for gradle.
Make maven and gradle commands available in java-mode.
Update documentation.
As described in issue #9464, this package was removed from melpa for
not having a GPL compatible license and is causing an error every time
spacemacs starts.
Continuation of commit 8c3cf7c3ae
As described in issue #9464, this package was removed from melpa for
not having a GPL compatible license and is causing an error every time
spacemacs starts.
Solve #9115.
The company-minimum-prefix-length variable shouldn't be set to 1000. Doing so
prevents the company completion popup from showing. Instead, let the
company-minimum-prefix-length stay at its default value.
From <https://golang.org/doc/install> "Installing to a custom location"
> The Go binary distributions assume they will be installed in /usr/local/go
> (or c:\Go under Windows), but it is possible to install the Go tools to a
> different location. In this case you must set the GOROOT environment variable
> to point to the directory in which it was installed.
The function `clojure-toggle-keyword-string` will convert a string to a keyword,
or keyword to a string.
The keybinding is added under the Clojure refactor menu, in the
"cycle/clean/convert" section.
`SPC m r c :`
As this is a `clojure-mode` function, it is defined in the clojure-mode
refactoring keybinding section of packages.el.
Currently, when a tsx file is edited, the typescript layer puts it into web
mode so we can properly edit/format the html that's inside. However, with this
you lose the awesome ", g g" keybinding which takes you to a definition of
the current function/variable. You also lose the ", g u" keybinding which
gives you all references of current function/variable. This PR adds
all the tide bindings that are in typescript mode into web mode while using the typescript layer.
NOTE:
I must add ("gg" tide-jump-to-definition) to the webList because spacemacs-jump-handlers-web-mode does not exist.
`SPC m h h` is conventional key binding to show documentation for thing under
point. It is called by `spacemacs/evil-smart-doc-lookup`, so this change makes
`K` in normal state work as expected.
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:
The insert link key binding `, i l` shows:
Wrong type argument: commandp, markdown-insert-link
Cause:
The markdown-mode package has renamed the `markdown-insert-link` function to:
`markdown-insert-inline-link-dwim`.
Solution:
Rename the key bindings function name.
Rename documentation to match the function name.
- Move find-hy-executable to funcs.el and rename
- Don’t set hy-executable (not needed by anything)
- Setup hy only once at startup (allow user to override settings, see #5988)
- Use setup-hy in advice instead of post-activate-hook (works with many more
commands)
- Setup checkers pyenv change, too
- Guard checker setup function for possibly missing flycheck
- Combine all setup functions into one
Hy is typically installed on a python virtual environment, not globally. When
that is the case, init-hy-mode doesn't set any leader keys for hy since it
can't find the hy executable on the path. When a virtual environment is
activated, init-hy-mode is run again to see if it can find a hy executable
and setup the leader keys for hy.
The `swift-mode` REPL bindings have been updated to use a different
naming convention (e.g. a prefix of `swift-mode:` in the CL style).
Typing `, s s` would trigger this error:
```
command-execute: Wrong type argument: commandp, swift-mode-run-repl
```
This change fixes up the command names so that they are usable again
from the leader key.
Commands and key bindings found via `alchemist-refcard` command.
I've tried to adhere to Spacemacs conventions but where I couldn't find relevant
conventions, I followed Alchemist's key bindings.
Also, delete alchemist-refcard - approved by @syl20bnr at
https://github.com/syl20bnr/spacemacs/pull/8746#issuecomment-301326850
* layers/+lang/python/funcs.el (spacemacs/anaconda-view-forward-and-push):
Added helper function to go forward and hit RET
* layers/+lang/python/packages.el (python/init-anaconda-mode):
- use new evilification macro
- use helper function to go ahead and push button when hitting `RET`
- Add `C-j`, `C-k` for easy navigation in anaconda-view-mode when multiple
references are displayed. Doesn't conflict with normal `hjkl` navigation in
other views of `anaconda-view-mode`
Fix#7538Fix#5737
Currently the ocaml layer requires opam in order to work. However
opam is only really required for an easy installation of the
required ocaml binaries. The only place where opam is used
instead is to add the merlin files of the merlin installed
via opam instead of the merlin files from melp.
This commit introduces a fallback if opam is not installed but
ocamlmerlin is installed, since the melpa package of merlin
is already installed through packages.
SQL, by convention, uses upper-case keywords, although lower-case works just as
well. As humans, the separation between upper-case and lower-case helps scan and
parse the code much more quickly.
Clojure layer attempted to provide `C-j` and `C-k` keybindings
to the cider-repl-mode but there was a bug.
This fixes the bug and adds those keybindings to the documentation.
Mark up code that is mentioned in the documentation of some readmes.
In the case of “long options”, like for example `--with-emacs`, this is not just
cosmetic. On GitHub, Org files are apparently rendered in such a way that
strings like `--` in non-verbatim text (i.e. not verbatim-quoted nor
code-quoted) is transformed to `–` (EN DASH U+2013). So the string:
… --with-emacs option:
Will show up like this:
… –with-emacs option:
Also mark up nearby not-marked-up code mentions. But this pattern was what was
searched for, so this mostly changes the abovementioned kind of thing.
By convention, code markup (`~`) is reserved for keybindings in Org-based
documentation in Spacemacs. Verbatim markup (`=`) is reserved for code and
other code-like things. So change several readmes to reflect this convention.
Use verbatim markup for things like (non-exhaustive list):
- Emacs Lisp functions, modes, buffers, etc.
- Environment variables
- Directory paths
- Code in general
ADD:
- layers/+lang/go/config.el Added new variable `go-use-test-args` to allow
specifying additional arguments being passed to `go test.
CHANGE:
- layers/+lang/go/packages.el Updated `go-run-tests` to automatically concat
the new variable `go-use-test-args` to args passed to `go test`.
Move check into function, and add to local-vars hook instead of the mode hook.
This makes the variable changeable at runtime and also as part of local vars.
Addresses #8297 for the tsfmt backend. However, does not fix tide issue, and
automatic major mode formatting (`SPC m =`) does not work in TSX files as they
are opened in web mode.
js-doc provides an alternative function for generating function doc comments
that makes use of Yasnippet to easily jump between the comment sections/tags.
This commit enables use of that function, if Yasnippet package is active.
The login is required for most jupyter installs these days.
change ipython command keybinding for open from 'n' to 'o'
Unless I'm violating some Spacemacs convention using 'o' for 'open'
seems to the right choice instead of 'n'. Better mnemonics, IMO.
Madoko is a fast markdown processor with a special .mdk extension
from microsoft research. emacs should use markdown-mode to render
a .mdk file as markdown file.
"Sayid (siy EED) is a tool for debugging and profiling clojure code."
(https://bpiel.github.io/sayid/) it allows viewing the results of each line of
code in a clojure function, without editing the code at all.
This commit evilifies the plugin and adds its commands to the "debug" submenu
of the main clojure mode menu.
If you install your node bins in places outside of the system path, you
need to add those locations to the exec path before packages are loaded
or else spacemacs won't recognize them as existing when it initializes
the layers.
For now realug is used only to C and C++ so it makes more sense to add it to
the c-c++ layer for now.
Later if we can generalize the support of realgud for other languages and we
can start a debugger layer.
The `scala-enable-eldoc` variable should be used to determine whether or not
ENSIME should print types at point. This makes sure that the hook is only set if
the variable is non-nil.
Dolists for `spacemacs/set-leader-keys-for-major-mode' were using
'emacs-lisp-mode instead of the loop variable 'mode'. Hopefully using the loop
variable was the intention.
I also updated the redundant bindings for `edebug-mode-map' and
`edebug-eval-mode-map' to use `dolist'. It probably makes more sense to put the
whole thing after :bindings rather than around it, but I wasn't sure if that
might break something.
used `:pre-config` instead `:post-init`, otherwise `slime-company` won't be
initialized because `common-lisp/init-slime-company` is called after
`common-lisp/init-slime`, and `:post-init` probably won't make effect.
Fixes#8796
Added a Spacemacs style keybinding for the function cider-eval-defun-to-comment
This function evaluates and expression and displays the result as a comment
on the following line.
The CIDER keybinding is `C-C M-;` so the Spacemacs binding uses the `;`
convention, which is also the general character for comments in Emacs.
As this is an evaluation function, the keybinding is placed under the evaluation
part of the major mode menu.
Included documentation in the README.org file
According to official elm-format documentation there is elm-format-on-save option. I've added it to layer documentation and introduced "On save usage" section which now contains info about elm format on save and imports sort on save.
- Use compilation-start to get highlighting of compilation or runtime errors.
- Configure output window in popwin and window-purpose (so that it can be closed
with C-g for example).
- Configurable buffer name.
Indentation in the elm layer was confusing to me at first so I thought it would be a good idea to add a note. I stole the section from elm-modes docs: https://github.com/jcollard/elm-mode#indentation
Some slime commands such as `,load-system` do not work without `slime-asdf`
being loaded. Since ASDF is the main system definition facility used by lisp
programs, I think this functionality should be available by default.
This change updates the `packages.el` file to support automatically enabling
flycheck when opening a protobuf file. This is accomplished by adding `flycheck`
to the list of packages, as well as defining a `post-init-flycheck()` function.
I've tested that this works with spacemacs `0.200.7@25.1.1`.
SPC m g C is only used in Clojure whereas SPC m g c is used in various layers.
This is simpler to just move create tags to SPC m g C and move the clojure
bindings to SPC m g c (since it is not used in the clojure layer).
1. Make it possible to exclude the package (fix the go and rust layers).
2. Import variables all at once (avoid spawning multiple login shells).
3. Import variables early (during the "pre" package loading stage).
4. Centralize the platform check by using a package toggle in the
`spacemacs-base`.
5. Avoid importing already defined variables (except `PATH`/`MANPATH`).
Relates to #8537.
TODO: We can probably trim the platform list to macos only.
spacemacs/add-flycheck-hook was not really hooking anything, change the name
to better reflect what it does.
Also changed the push for a add-to-list to avoid duplicates.
Define multiple dispatch functions for each service:
- spacemacs//java-setup-backend
- spacemacs//java-setup-auto-completion
- spacemacs//java-setup-syntax-checking
- spacemacs//java-setup-spell-checking
- spacemacs//java-setup-eldoc
java: replace ensime-configure-keybindings function by a variable
It's not convenient to have key bindings in funcs.el file, instead of relying
on a function we define a private layer variable java--ensime-modes which
can be updated by other layers using a :pre-config use-package hook.
java: refactor key bindings
- define key bindings for meghanada back-end
- move ensime key bindings documentation from scala layer to java layer
- change SPC m d for daemon to SPC m D (since SPC m d is reserved for debugging)
New variable `java-backend' controls whether to use eclim, by default,
or ensime.
The setup is identical to scala and as such there's some functionality
included that still isn't supported in java.
- delete some diminish expressions which are not related to PG and user
spacemacs|hide-lighter instead of spacemacs|diminish
- move company related configuration to the correct place
- move setq expressions to :init blocks to allow users to easily change them
As it make evil to error when the delq form is written the customize file,
instead we call the set method manually and it works fine.
Would be better and more future proof to curry the set function into a named
function of 0 arity for evil-intercept-maps custom setting.
README:
- add `SPC m` prefixes to follow the style of the other READMEs
- Sort key bindings alphabetically
Key bindings changes made to be more mnemocnic and/or to better fit the other
key bindings of other layers:
- SPC m p b --> SPC m p p (show prover process buffer)
- SPC m p c --> SPC m p i (interrupt prover process)
- SPC m p x --> SPC m p q (quit prover process, maybe SPC m p k for kill would
be better ?)
- SPC m a p --> SPC m a a to print query
- SPC m a n p --> SPC m a A to print query showing all
- SPC m a i p --> SPC m a i i to print query showing implicits
- Ask showing all bindings use the same keys as regular Ask but the last key
is capitalized, example: SPC m a b (ask about) and SPC m a B (ask about
showing all)
- Ask showing implicits are still on SPC m a i (we could also use Control key,
for instance SPC m a b (ask about) and SPC m a C-b (ask about show implicit),
it depends on how frequent showing implicits are used).
- SPC m g . --> SPC m g l (go to end of Locked command)
- SPC m g d --> SPC m g g (using the jump handlers facility of Spacemacs)
- SPC m g a --> SPC m g s (to go to start of command)
There was no flycheck-credo package in the layer.
Although it was described in documentation, how to install credo.
This commit fixes documentation and adds flycheck-credo package.
Cycle collection type was recently removed from `clj-refactor` as the
feature was migrated and rewritten in `clojure-mode`. The new feature
lets the user convert a collection into a specific collection type
instead of cycling through them.
To added shortcuts correspond to the shortcuts of this feature in
`clojure-mode` and placed in the refactor submenu.
https://github.com/syl20bnr/spacemacs/issues/8043
"Go to definition" should go to the definition - meaning, where the function is defined in the source code.
I am for changing the default keybinding to `slime-edit-definition` because it fulfills this - allows the user to see the source code for a given function.
`slime-inspect-definition` does not open the source code - it opens the SLIME inspector with the function **object** open in the inspector. While the function **object** contains some valuable data, it does not contain the *definition* itself - which is what the user wants in this case.
This fixes an issue where default jump handler, like dump-jump-go runs
in sync and omnisharp-go-to-definition is not able to actually go to
definition until it completes thus slowing down the completion process.
A similar issue (for C++) was fixed in syl20bnr/spacemacs#6904
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.
Move add-company-hook calls to correct init functions (only css backend is from
company package, the others are from company-web).
Correctly add company backends for jade and slim. Jade has been renamed to
Pug , there is no guarantee at all that jade references still work. To check.
The `pyvenv-mode` doesn't provide a list of available virtual
environments. So it's not currently possible to check if the
provided virtualenv name is available
Important evil advices for eval-last-sexp were removed for smartparens users,
it made eval-last-sexp not working correctly in normal state by evaluating the
sexp before the evil cursor and it was impossible to evaluate an sexp when the
cursor was on the last character of a line.
Also add SPC m e C which will execute the first defun or setq sexp encountered
before point.
- spacemacs/racer-describe to respect help-window-select
- replace evilified-state-evilify{,-map} and move to :config
- change funcs.el from dos format to unix format (newlines)
- modify spacemacs-jump-handlers-rust-mode only once