summaryrefslogtreecommitdiff
path: root/doc/installation.md
blob: 6972933f53842e7da9a0dcb66ff2553072a9bf2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
## CIDER's nREPL Middleware

Much of CIDER's functionality depends on its own [nREPL
middleware](https://github.com/clojure-emacs/cider-nrepl). Starting
with version 0.11, `cider-jack-in` (<kbd>C-c C-x (C-)j (C-)j</kbd>)
automatically injects this middle and other dependencies as required.

!!! Note
    In the past, if you were setting up CIDER, you might have had to
    modify `profiles.clj` or `profile.boot`. CIDER now handles
    everything automatically and you don't need to add anything
    special to these files.

!!! Tip

    If you don't want `cider-jack-in` to inject dependencies automatically, set
    `cider-inject-dependencies-at-jack-in` to `nil`. Note that you'll have to setup
    the dependencies yourself (see the section below), just as in CIDER 0.10 and older.

CIDER can also inject a Clojure dependency into your project, which is useful,
for example, if your project defaults to an older version of Clojure than that
supported by the CIDER middleware. Set `cider-jack-in-auto-inject-clojure`
appropriately to enable this.

If you prefer a standalone REPL, you will need to invoke
`cider-connect` instead of `cider-jack-in` and manually add the
dependencies to your Clojure project (explained in the following
section).

### Setting Up a Standalone REPL

#### Using Leiningen

!!! Note

    It's highly recommended to use Leiningen 2.8.3 or newer, as 2.8.3 is the first
    release to ship with nREPL 0.5.

Use the convenient plugin for defaults, either in your project's
`project.clj` file or in the :repl profile in `~/.lein/profiles.clj`.

```clojure
:plugins [[cider/cider-nrepl "x.y.z"]]
```

A minimal `profiles.clj` for CIDER would be:

```clojure
{:repl {:plugins [[cider/cider-nrepl "0.19.0"]]}}
```

!!! warning

    Be careful not to place this in the `:user` profile, as this way CIDER's
    middleware will always get loaded, causing `lein` to start slower.  You really
    need it just for `lein repl` and this is what the `:repl` profile is for.

#### Using Boot

!!! Note

    It's highly recommended to use Boot 2.8.2 or newer, as 2.8.2 is the first
    release to ship with nREPL 0.4.

Boot users can configure the tool to include the middleware automatically in
all of their projects using a `~/.boot/profile.boot` file like so:

```clojure
(require 'boot.repl)

(swap! boot.repl/*default-dependencies*
       concat '[[cider/cider-nrepl "0.19.0"]])

(swap! boot.repl/*default-middleware*
       conj 'cider.nrepl/cider-middleware)
```

For more information visit [boot-clj wiki](https://github.com/boot-clj/boot/wiki/Cider-REPL).

### Using Embedded nREPL Server

If you're embedding nREPL in your application, you'll have to start the
server with CIDER's own nREPL handler.

```clojure
(ns my-app
  (:require [nrepl.server :as nrepl-server]
            [cider.nrepl :refer (cider-nrepl-handler)]))

(defn -main
  []
  (nrepl-server/start-server :port 7888 :handler cider-nrepl-handler))
```

It goes without saying that your project should depend on `cider-nrepl`.

!!! note

    Prior to CIDER 0.18, CIDER and cider-nrepl were always released together
    and their versions had to match for things to work. But as the prominence
    of cider-nrepl grew and many other tools started using it, the two
    projects evolved separately and are no longer in tight
    lock-step. Any recent version of cider-nrepl should be compatible
    with a recent version of CIDER. You can check the required version
    of cider-nrepl for your version of CIDER by looking at
    `cider-required-middleware-version`.