Commit graph

125 commits

Author SHA1 Message Date
romain.gautier@nimamoh.net
ba982822c6
Replace deprecated clojure-cheatsheet with helm-cider 2020-08-09 23:59:34 +02:00
John Practicalli Stevenson
5f7e56fecc [clojure] refactor namespace key bindings
Add key bindings to refactor namespace forms for existing functions in CIDER.

"ran" 'clojure-insert-ns-form
"raN" 'clojure-insert-ns-form-at-point
"run" 'clojure-update-ns
2020-07-12 21:01:57 +02:00
Shunya Ishii
c54de3caa4 [clojure] Change leader key to fix warning
Fix this warning when reloading spacemacs configuration:

```
Error (use-package): cider/:init: Key sequence e p ; starts with non-prefix key e p
```
2020-05-11 09:39:15 +02:00
Didier A
b5eea24926 Modified Clojure layer's major leader binding sl to be smarter and find the associated repl when in a non cider repl buffer and clear it, instead of throwing an exception, which is what it currently did. 2020-04-16 23:06:37 +02:00
John Practicalli Stevenson
587ae8ebac
[clojure] Pretty print evaluation keybindings
Show results of evaluating Clojure code in the same format they would be written
in the source code.  This is especially useful for results that are
collections and nested collections.

Pretty print results as a comment.
2020-03-27 21:02:06 +01:00
jr0cket
af2d7e320e
[clojure] keybindings for browsing clojure specs
Browse a specific clojure spec or browse all specs in a project.
2020-03-12 20:54:09 +01:00
jr0cket
2a17228ef8
[clojure] Add goto end of line eval sexp
Clojure (CIDER) is missing the incredibly useful function that jumps to the end
of the line and evaluates the last s-expression.

This function is in Emacs Lisp major mode under `SPC m e $` and `SPC m e l`

The function `spacemacs/cider-eval-sexp-end-of-line` is a copy of
`lisp-state-eval-end-of-line` with the last line replaced to call the equivalent
cider function, `cider-eval-last-sexp`.

The same keybindings are added to the Clojure layer as used for elisp.

The keybindings follow the Spacemacs convention for evaluation, as defined in
https://github.com/syl20bnr/spacemacs/blob/master/doc/CONVENTIONS.org#evaluation

Resolves #4124
2020-03-01 00:14:32 +01:00
jr0cket
79842c89cf [Clojure] Sesman and missing eval / format keybindings
Added keybindings for the Sesman REPL session management commands to the Clojure
layer, following the Spacemacs keybinding conventions.
https://docs.cider.mx/cider/0.23/usage/managing_connections.html

Sesman has been a part of CIDER for many versions now and provides session
management for nREPL connections (in fact any connections).

Sesman keybinds are placed in the `SPC m c` menu, providing a cleaner separation
between sending code to the repl and session management.

See issue #12593 and PR #13140 which covers the background for the design of
these additional keybindings.

Formatting the region and defun keybinds have been added, along with formatting
for edn files.  Moved to `=` menu to match Spacemacs convention.

Evaluation up to point keybinding has also been added.

Documentation in the README has been updated to complete the description of the
existing Clojure layer, as well as including details specific to the new
keybindings.
2020-02-01 15:33:04 -05:00
syl20bnr
52d1b0f323 Revert "[clojure] Add sesman keybindings"
This breaks Spacemacs convention:
https://github.com/syl20bnr/spacemacs/blob/develop/doc/CONVENTIONS.org#repls

Need to add session management under an unused prefix, I suggest SPC m S

This reverts commit e47494229b.
2020-01-25 10:17:08 -05:00
jr0cket
e47494229b [clojure] Add sesman keybindings
Add Spacemacs keybindings to the Clojure layer for all the sesman functions.

Sesman has been a part of CIDER for many versions now and provides session
management for nREPL connections (in fact any connections).

Several keybindings relating to the use of a specific repl been migrated the
`e` evaluation menu and `es` sent-to-repl-buffer sub-menu, providing a cleaner
separation between repl connection and session management and interacting with a
specific repl.

Updated layer documentation and keybindings in README.org file.
Added changes to CHANGELOG.develop

Resolves #12593
2020-01-23 11:43:38 +01:00
Didier A
58dcd6320b [clojure] Added support for joker linter and having mutliple active linters
The variable clojure-enable-linters can now be set to a list of linters:

'(clj-kondo joker)
  or
'(joker squiggly)
  or any other combination of the available linters.

In which case, all linters in the list will be active if they are
available to be. In that flycheck is configured so that each linter
in the list has as next-checker the next linter in the list.

The variable can also now be set to:

'joker

If only the newly added joker linter should be used.

This will pull down flycheck-joker and add Joker as a checker for
Clojure modes.

--

Implementation Details

The way it works is that for each Clojure linting mode, clj, cljc,
cljs and edn, a primary linter is chosen based on the order the
user specifies in clojure-enable-linters which support that mode.
It is made the primary linter for flycheck to use by being promoted
to the front of the flycheck-checkers list. All other linters specified
by the user which the mode also supports get added to it as a
next-checker.

Tested with clj-kondo, joker and squiggly. The only issue I saw was that
the way flycheck-clojure works, and the way I currently have setup the
logic for multiple checkers mean that we can't add to a mode multiple
checkers for the same linter. flycheck-clojure has eastwood, kibit and
core.typed. If you have it configured to use eastwood linter, then it
will all work, as eastwood gets added as the next-checker. But if you
have it disabled in flycheck-clojure, there won't be any
flycheck-clojure linters to activate. I'm not sure as of now how to best
support that. Ideally, we would not clubber linters into a single packge
like that, and so the layer would have instead of squiggly: eastwood,
kibit, core.typed. But that's not how flycheck-clojure works. Future
commit might be able to do something smarter about this.
2019-10-20 00:23:58 +02:00
Gia Thanh Vuong
18715b872b bind c-ret to cider-repl-newline-and-indent in repl
For evil insert mode
2019-10-19 00:32:51 +02:00
Thanh Vuong
d71b0a4b87 [clojure] add c-k c-j bindings company dropdown menu in repl
Make c-j and c-k bind to down and up in company dropdown menu when it shows up
in clojure repl.
2019-09-17 13:22:09 +02:00
Dieter Komendera
578689c497 [clojure] Fix jumping backwards after cider-find-var
`cider-jump-to-var` was renamed to `cider-find-var` here:
ceb2d7df75 (diff-e39c33031dc8d3e78b32ebee83293cd6L809-R846)

In https://github.com/syl20bnr/spacemacs/pull/9792/ `spacemacs/clj-find-var`
was added to be used as the jump handler for clojure modes. It uses
`cider-find-var` which doesn't push jump positions onto the evil jump stack so
the no longer current defadvice was more apparent.
2019-09-01 01:10:29 +02:00
Luo Tianj
b71c78655f add flycheck-clj-kondo as an optional package 2019-08-31 20:58:30 +02:00
Sam Hedin
62ea30b479 Add cider clojuredocs keybind, remove grimoire 2019-08-27 21:31:59 +02:00
Russell Mull
b110ac09f9 Restore standard "si" binding for cider-jack-in-clj
It appears that this is still the common binding across all +lang layers.
2019-07-31 15:55:35 +02:00
John Stevenson
cc43d5c898 [Clojure] keybinding spacemacs/clj-find-var
Update the existing `SPC m g g` keybinding to use the command
`spacemacs/clj-find-var`.  This makes finding a function definition a much
better experience as you dont have to have the REPL running to find a
definition, but when it is you can use a CIDER specific function.

`spacemacs/clj-find-var` is a wrapper that calls `cider-find-var` if the REPL is
running, otherwise it uses `dump-jump-go`.

Wrapper added in #9792
2019-07-13 15:12:55 +02:00
John Stevenson
8fd218f1e8 [Clojure] keybinding for updated repl jack-in commands
Latest CIDER release uses the following commands for starting the REPL from
within Emacs

`cider-jack-in-clj` to start a Clojure REPL
`cider-jack-in-clj&cljs` to start a Clojure and ClojureScript REPL
`cider-jack-in-cljs` to start a ClojureScript repl

The older aliases are deprecated and are being removed in the latest beta
release of CIDER

`cider-jack-in`
`cider-jack-in-clojurescript`

Keybindings for these jack-in commands have been updated and as there are three
options they have been moved under the repl > jack-in

The top level of the Clojure mode menu has the existing keybindings updated to
use the new commands.  A third top-level keybinding `&` has been added for
`cider-jack-in-clj&cljs`
2019-07-13 14:41:06 +02:00
duianto
e12278a323 Revert "[Clojure] Keybinding require Clojure repl utils in current namespace"
This reverts commit 034ee0c311.

It was rebased with the previous commits message.
2019-07-13 14:40:44 +02:00
John Stevenson
034ee0c311 [Clojure] Keybinding require Clojure repl utils in current namespace
Although the Clojure repl utils (clojure.repl) are including in the user
namespace in Clojure projects, they are not available in your application
namespace.

The existing CIDER function cider-repl-require-repl-utils adds the Clojure
repl utils into the current namespace, so you can use functions such as doc
and source.

This is often a source of confusion for those new to Clojure / CIDER.
2019-07-13 12:50:11 +02:00
John Stevenson
cd95789170 [Clojure] Keybinding require Clojure repl utils in current namespace
Although the Clojure repl utils (clojure.repl) are including in the user
namespace in Clojure projects, they are not available in your application
namespace.

The existing CIDER function cider-repl-require-repl-utils adds the Clojure
repl utils into the current namespace, so you can use functions such as doc
and source.

This is often a source of confusion for those new to Clojure / CIDER.
2019-07-13 11:52:32 +02:00
Jonathan Chen
28adf374fe feat(clojure-lang): add cider-eval-sexp-at-point
Adds a useful CIDER command that doesn't have an idiomatic Spacemacs command.

Ref:
https://cider.readthedocs.io/en/latest/interactive_programming/#using-cider-mode
2019-07-06 00:17:03 +02:00
John Stevenson
bb34374818 Add keybinding for cider-interupt
Interrupt longer running evaluations without having to kill or reset the REPL
connection.

Placed in the evaluate section, as it is specific to the currently running
evaluation.
2019-06-13 15:27:02 +02:00
JAremko
5cc823cc0f add flycheck-clojure 2019-05-18 02:17:43 +03:00
John Stevenson
831107f478 [clojure] keybinding - cider-undef - remove symbol from current ns
Adds `SPC m e u` to the Clojure layer to call `cider-undef`, removing an
existing definition from the current namespace.

This provides a Spacemacs style keybinding for the existing Emacs style
keybinding `C-c C-u`
2019-04-20 15:26:55 +02:00
Martin Račák
f85acca55d Fix post-init of parinfer in the clojure layer
Reverted clojure/post-init-parinfer back to a state before the refactor, which
introduced spacemacs|forall-clojure-modes. That macro deals with modes, not
hooks, therefore we can't use it for add-hook.
2019-04-08 18:17:22 +02:00
Ag Ibragimov
1dadfcd0e1 [clojure] Improves spacemacs-jump-handlers
jump handlers in clojure modes now correctly work
for: `, g g` `, g G` `gd` and `gD`
2019-04-07 18:22:51 +02:00
JAremko
9509cf6bcf Clojure cheatsheet is now a part of CIDER 2019-01-20 16:59:48 +02:00
duianto
ee811f7b13 Unify packages list parentheses style
problem:
some layer packages lists have the open and closing parentheses on the same line
as the first and last listed package, but most seem to have them on a separate
lines.

solution:
put the open and close parentheses on separate lines, except for lists with only
a single package, they are written on the same line as the variable name and
parentheses.

fix the lists indentation
2018-11-21 21:35:38 +00:00
yuhan0
f13f99d967 Enable clojure-mode refactorings without clj-refactor
- Add clojure-mode refactorings and which-key prefixes in default layer
configuration.

- Improve discoverability of the refactoring features which are not enabled
by default. When clj-refactor is installed, "SPC mr?" runs
cljr-describe-refactoring

- Refactor out repeated dolist clauses into `forall-clojure-modes` macro
which executes body forms for all clojure derived modes, and adds missing
functionality of parinfer, fancify-symbols and evil-cleverparens to
cider-repl-mode and cider-clojure-interaction-mode.
2018-11-16 19:51:21 +00:00
Dieter Komendera
8f30ba8390
Allow to send input to the repl via RET in normal mode 2018-10-23 07:27:31 +03:00
Arne Brasseur
80baa130cf Make clj-refactor off by default, update Clojure README
Document how to use the newly introduced variables to enable sayid and
clj-refactor.

Also update the documentation on adding CIDER-related dependencies. CIDER 0.10
is three years old now, so I think the case where cider middleware isn't
injected automatically is getting rare. However there is still a good use case
for running your Clojure process outside of Emacs/CIDER, meaning you don't get
to benefit from `cider-jack-in`'s magic insjections, so I have focused more on
that case, adding information for clj-refactor's and sayid's middleware, as well
as CIDER's.
2018-10-09 22:18:51 +01:00
Arne Brasseur
77cf6a2a36 Clojure layer: make sayid optional 2018-08-21 22:42:17 +03:00
André Peric Tavares
52b2b4b83d Update obsolete cider-refresh alias to cider-ns-refresh
`cider-refresh` is an obsolete alias:

8b8309d970/cider-ns.el (L204)
2018-07-24 00:21:29 +03:00
Alex Argunov
c1bde286e4 clojure: move browse to help submenu, add cider-find-ns under gn 2018-07-11 00:26:33 +03:00
Miciah Masters
e0b751bee3 Avoid non-idempotent use of push in init code
Replace push with add-to-list in layer init functions and related code.

Modify spacemacs|add-toggle to check for and update an existing toggle in
spacemacs-toggles and only create a new toggle if none already existed.

Replace a conditional push onto erc-packages with use of :toggle.

When initializing which-key, set which-key-replacement-alist to its default
or customized setting before adding all the Spacemacs replacements.  We
want to keep the stock replacements but avoid adding duplicates of the
Spacemacs replacements.

Replace the emacs-lisp-mode-hook lambda with a named function to avoid
adding duplicate hooks (which can add duplicate definitions of the
evil-surround pair).
2018-06-05 22:17:13 -04:00
Codruț Constantin Gușoi
18c7241e2d Removes unwanted whitespaces 2018-05-23 23:27:20 +03:00
Wojciech Wojtyniak
df4c3b96f1 Enable command history navigation in the cider REPL in an insert mode
This is the same navigation that is used in normal mode. This behavior matches
one from the elisp REPL.
2018-05-23 23:26:32 +03:00
syl20bnr
ebe4c60264 Revert "Defer packages by default using use-package-always-defer"
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.
2018-03-03 23:40:10 -05:00
syl20bnr
29c78ce841 Defer packages by default using use-package-always-defer
Warning now `:defer t` is implied, to force a package to load `:demand t` is
now necessary.
2018-02-27 23:32:52 -05:00
syl20bnr
a40b79a781 clojure: sort key bindings alphabetically 2018-02-24 19:49:39 -05:00
Luo Tianj
280c7b4cef add key bindings for profiling and spec browsing 2018-02-24 19:49:38 -05:00
nijohando
d4ae5a3c2b fix: Rename deprecated cider function
"cider-jump-to-resource" has been renamed "cider-find-resource" in
CIDER 0.9.0
2018-02-17 16:09:06 -05:00
Dieter Komendera
5f6f9d2333 clojure: Enable safe structural editing for cljs, cljx and cljc
clojurescript-mode, clojurec-mode and clojurex-mode are used for .cljs, .cljc
and cljx files respectively, which should always be balanced and thus have safe
structural editing enabled.
2018-01-29 00:15:32 -05:00
syl20bnr
3cb9fea0ff Reset useful and useless buffers to empty lists
I feel like we should start from scratch on this one and carefully choose the
defaults.

Also this settings is a very personal setting so if we make some buffers
useless we must have a consensus on it. Marking all special buffers starting
with `*` as useless is too aggressive and make Spacemacs less POLA since two
consecutive press on SPC TAB may not revert to the original buffer.
2018-01-10 10:59:15 -05:00
syl20bnr
326965d4ce Happy New Year 2018! 2018-01-04 02:00:25 -05:00
syl20bnr
2cb98447af Move evil-cleverparens to spacemacs-evil with major mode toggle
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.
2018-01-04 01:40:52 -05:00
Robbert van der Helm
c61ae1a1c1 Add ivy support to the gtags layer
It would be much better to have a single function for each layer that
initializes ggtags, helm-gtags and counsel-gtags for a mode.
2017-12-17 22:03:01 -05:00
bfay
5bb9dc1320 fix cider-inspector-prev-page binding, also add 'p' as another key binding 2017-12-17 21:54:50 -05:00