Skip to content

Commit d6d103c

Browse files
committed
Set with-bindings vars from user config
1 parent f5a30c5 commit d6d103c

2 files changed

Lines changed: 31 additions & 2 deletions

File tree

‎README.md‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,14 @@ Use aliases `:clj-line/client` or `:clj-line/server` for more precise targeting.
6262
| `:middleware` | server | vector of qualified symbols | nREPL middleware. |
6363
| `:eval-hook` | server | qualified symbol | Wraps eval: `(f eval)` returns the eval fn. |
6464
| `:port` | server | int | nREPL port (OS-assigned). |
65+
| `:print-length` | server | int | `*print-length*` (`nil`). |
66+
| `:print-level` | server | int | `*print-level*` (`nil`). |
67+
| `:print-meta` | server | boolean | `*print-meta*` (`false`). |
68+
| `:print-namespace-maps` | server | boolean | `*print-namespace-maps*` (`true`). |
69+
| `:warn-on-reflection` | server | boolean | `*warn-on-reflection*` (`false`). |
70+
| `:unchecked-math` | server | boolean or `:warn-on-boxed` | `*unchecked-math*` (`false`). |
71+
| `:assert` | server | boolean | `*assert*` (`true`). |
72+
| `:compile-path` | server | string | `*compile-path*` (`"classes"`). |
6573

6674
## Features
6775

@@ -73,7 +81,7 @@ Use aliases `:clj-line/client` or `:clj-line/server` for more precise targeting.
7381
- [x] Emacs/Vim editing key commands
7482
- [x] Custom keybindings
7583
- [x] Auto require
76-
- [ ] Print var defaults (`*print-level*`, `*print-length*`, `*print-namespace-maps*`, etc)
84+
- [x] Print var defaults (`*print-level*`, `*print-length*`, `*print-namespace-maps*`, etc)
7785
- [ ] Customized exception printer function
7886
- [ ] Read, Eval, Print, Caught hooks
7987
- [ ] Bracket pairs & structural-editing

‎server/src/clj_line/server.clj‎

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,33 @@
11
(ns clj-line.server
22
(:require
33
[clojure.java.io :as io]
4+
[nrepl.config :as nrepl-config]
45
[nrepl.server :as server]
56
[clj-line.server.eval-hook :as hook]))
67

78
(set! *warn-on-reflection* true)
89

9-
(defn start [{:keys [eval-hook middleware port]}]
10+
(def dynamic-vars
11+
'{:warn-on-reflection clojure.core/*warn-on-reflection*
12+
:print-meta clojure.core/*print-meta*
13+
:print-length clojure.core/*print-length*
14+
:print-level clojure.core/*print-level*
15+
:print-namespace-maps clojure.core/*print-namespace-maps*
16+
:unchecked-math clojure.core/*unchecked-math*
17+
:assert clojure.core/*assert*
18+
:compile-path clojure.core/*compile-path*})
19+
20+
(defn configured-dynamic-vars [config]
21+
(reduce-kv (fn [m k sym]
22+
(if (contains? config k)
23+
(assoc m sym (config k))
24+
m))
25+
{}
26+
dynamic-vars))
27+
28+
(defn start [{:keys [eval-hook middleware port] :as config}]
29+
(when-let [vars (not-empty (configured-dynamic-vars config))]
30+
(alter-var-root #'nrepl-config/config assoc :dynamic-vars vars))
1031
(when eval-hook
1132
(hook/install (requiring-resolve eval-hook)))
1233
(let [extra (mapv requiring-resolve middleware)

0 commit comments

Comments
 (0)