Skip to content

Commit 5454a8b

Browse files
committed
added eval_shared
1 parent 1071b3d commit 5454a8b

File tree

4 files changed

+28
-3
lines changed

4 files changed

+28
-3
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
### 2.7.0 - Sep 27, 2022
2+
3+
- Added `eval_shared`
4+
15
### 2.6.0 - Sep 27, 2022
26

37
- Added `format_on_save` option #76 thx @sainadh-d

Clojure Sublimed.sublime-settings

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@
4141
// False by default (enables parallel evals).
4242
"eval_in_session": false,
4343

44+
// A form to be evaluated in shared session and inherited by all evals
45+
// E.g. (set! *warn-on-reflection* true)
46+
"eval_shared": "",
47+
4448
// reformat file on save, false by default
4549
"format_on_save": false
4650
}

README.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ This package provides Clojure support for Sublime Text and includes:
66

77
- Clojure and EDN syntax grammars (Sublime Text 3+)
88
- Clojure code formatter/indenter (Sublime Text 4075+)
9-
- Clojure nREPL client (Sublime Text 4075+, nREPL 0.8+)
9+
- Clojure nREPL client (Sublime Text 4075+, nREPL 0.9+)
1010

1111
## Clojure syntax
1212

@@ -186,6 +186,16 @@ Finally, to clear evaluation results run `Clojure Sublimed: Clear Evaluation Res
186186

187187
To edit settings, run `Preferences: Clojure Sublimed Settings` command.
188188

189+
### Session-wide settings
190+
191+
It is sometimes desirable to set dynamic Clojure vars for the whole session. To do that, edit `"eval_shared"` setting. For example:
192+
193+
```
194+
"eval_shared": "(do (set! *warn-on-reflection* true) (set! *print-namespace-maps* false))"
195+
```
196+
197+
This will be applied to every evaluation.
198+
189199
## Default Key Bindings
190200

191201
Clojure Sublimed comes with no keybindings enabled by default to guarantee they won’t conflict with any other extension.
@@ -209,7 +219,7 @@ To set it up, run `Preferences: Clojure Sublimed Key Bindings` command and copy
209219

210220
Q: REPL/eval doesn’t work
211221

212-
A: Make sure you are using nREPL 0.8 or later.
222+
A: Make sure you are using nREPL 0.9 or later.
213223
A: Make sure you have assigned `Clojure (Sublimed)` syntax to the file.
214224

215225
## Credits

package.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -659,18 +659,25 @@ def handle_connect(msg):
659659
return True
660660

661661
elif 2 == msg.get("id") and msg.get("status") == ["done"]:
662+
id = 3 if settings().get("eval_shared") else 4
662663
conn.send({"op": "add-middleware",
663664
"middleware": [f"{ns}.middleware/clone-and-eval",
664665
f"{ns}.middleware/time-eval",
665666
f"{ns}.middleware/wrap-errors",
666667
f"{ns}.middleware/wrap-output"],
667668
"extra-namespaces": [f"{ns}.middleware"],
668669
"session": conn.session,
669-
"id": 3})
670+
"id": id})
670671
conn.set_status("🌔 Adding middlewares")
671672
return True
672673

673674
elif 3 == msg.get("id") and msg.get("status") == ["done"]:
675+
conn.send({"op": "eval",
676+
"code": settings().get("eval_shared"),
677+
"session": conn.session,
678+
"id": 4})
679+
680+
elif 4 == msg.get("id") and msg.get("status") == ["done"]:
674681
conn.set_status(f"🌕 {conn.host}:{conn.port}")
675682
return True
676683

0 commit comments

Comments
 (0)