This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
spacemacs/contrib/!lang/clojure
2015-07-26 01:22:13 -04:00
..
img Prefix categories with ! 2015-05-25 00:50:38 -04:00
config.el Prefix categories with ! 2015-05-25 00:50:38 -04:00
funcs.el Prefix categories with ! 2015-05-25 00:50:38 -04:00
packages.el clojure layer: move popwin config in its own init function... again 2015-07-26 01:22:13 -04:00
README.org Evilify CIDER Inspector 2015-06-22 23:01:25 -04:00

Clojure contribution layer for Spacemacs

/TakeV/spacemacs/media/commit/b2ea9f22e05ced2e44d26e648ec9f0681dee7fcc/contrib/!lang/clojure/img/clojure.png /TakeV/spacemacs/media/commit/b2ea9f22e05ced2e44d26e648ec9f0681dee7fcc/contrib/!lang/clojure/img/cider.png

Description

This layer adds support for Clojure language using Cider.

Features

Install

Layer

To use this contribution add it to your ~/.spacemacs

  (setq-default dotspacemacs-configuration-layers '(clojure))

Pretty Symbols

Pretty symbols for anonymous functions, set literals and partial, like (λ [a] (+ a 5)), ƒ(+ % 5), ∈{2 4 6} and Ƥ.

To enable this feature, add the following snippet to the dotspacemacs/config section of your ~/.spacemacs file:

  (setq clojure-enable-fancify-symbols t)

Or set this variable when loading the configuration layer:

  (setq-default dotspacemacs-configuration-layers
  '((clojure :variables clojure-enable-fancify-symbols t)))

Cider and clj-refactor

Quick Start with lein

  • Install lein via your OS package manager.
  • Create a file ~/.lein/profiles.clj with the following content:
  {:user {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]
                    [refactor-nrepl "0.3.0-SNAPSHOT"]]
          :dependencies [[alembic "0.3.2"]
                         [org.clojure/tools.nrepl "0.2.7"]]}}

More details

More info regarding installation of nREPL middleware can be found here:

Key Bindings

Documentation

Key Binding Description
SPC m h h cider doc
SPC m h g cider grimoire
SPC m h j cider javadoc

Evaluation

Key Binding Description
SPC m e b eval buffer
SPC m e e eval last sexp
SPC m e f eval function at point
SPC m e r eval region
SPC m e w eval last sexp and replace with result

Goto

Key Binding Description
SPC m g g goto var
SPC m g e goto error
SPC m g r goto resource
SPC m g b go back

REPL

Key Binding Description
SPC m s b send and eval buffer in REPL
SPC m s B send and eval buffer and switch to REPL in insert state
SPC m s c connect to REPL (cider-connect)
SPC m s e send and eval last sexp in REPL
SPC m s E send and eval last sexp and switch to REPL in insert state
SPC m s f send and eval function in REPL
SPC m s F send and eval function and switch to REPL in insert state
SPC m s i start REPL (cider-jack-in)
SPC m s n send and eval ns form in REPL
SPC m s N send and eval ns form and switch to REPL in insert state
SPC m s q kill REPL (cider-quit)
SPC m s r send and eval region in REPL
SPC m s R send and eval region and switch to REPL in insert state
SPC m s s switch to REPL

Tests

Key Binding Description
SPC m t a run all tests in namespace
SPC m t r re-run test failures for namespace
SPC m t t run test at point

Debugging

Key Binding Description
SPC m d b instrument expression at point
SPC m d i inspect expression at point

Refactoring

Key Binding Description
SPC m r a d add declaration
SPC m r a i add import to ns
SPC m r a m add missing libspec
SPC m r a p add project dependency
SPC m r a r add require to ns
SPC m r a u add use to ns
SPC m r c c cycle coll
SPC m r c i cycle if
SPC m r c n clean ns
SPC m r c p cycle privacy
SPC m r d k destructure keys
SPC m r e f extract function
SPC m r e l expand let
SPC m r f u find usages
SPC m r h d hotload dependency
SPC m r i l introduce let
SPC m r m f move form
SPC m r m l move to let
SPC m r p c project clean
SPC m r p f promote function
SPC m r r d remove debug fns
SPC m r r f rename file
SPC m r r l remove let
SPC m r r r remove unused requires
SPC m r r s rename symbol
SPC m r r u replace use
SPC m r s n sort ns
SPC m r s p sort project dependencies
SPC m r s r stop referring
SPC m r t f thread first all
SPC m r t h thread
SPC m r t l thread last all
SPC m r u a unwind all
SPC m r u w unwind

Reformatting

  • Forms currently handled:

    • let
    • when-let
    • if-let
    • binding
    • loop
    • with-open
    • literal hashes {}
    • defroute
    • cond
    • condp (except :>> subforms)

More info at align-cljlet.

Key Binding Description
SPC m f l reformat current form