Fork me on GitHub
#vim
<
2018-07-18
>
Aleksander11:07:30

whats considered a good set of plugins for clojure development these days? at the moment I’m only using ‘guns/vim-clojure-static’ and ‘tpope/vim-fireplace’

dominicm11:07:49

Those cover most of what you need, I can recommend https://github.com/SevereOverfl0w/vim-replant as a good way to further integrate IDE features. https://github.com/eraserhd/parinfer-rust to get parinfer in vim (web demo here: https://shaunlebron.github.io/parinfer/demo.html) and https://github.com/clojure-vim/async-clj-omni/ for automatic omnicompletions via deoplete and ncm

dominicm11:07:01

disclaimer, I wrote replant and async-clj-omni

nate14:07:37

I just posted this a few days ago: http://endot.org/2018/07/14/vim-clojure-dev-2018/

👍 12
nate14:07:58

Structural editing (vim-sexp) is wonderful.

Aleksander14:07:24

ahh, thats the third plugin that I’m using vim-paredit at the time I was looking at vim-sexp it didn’t support enforced balancing of the parenthesis

eraserhd15:07:38

Has anybody implemented the cider-nrepl debugger on top of fireplace yet?

dominicm15:07:12

Nope, I looked but the api is not very clear, I think it uses a side-channel.

dominicm15:07:30

I was kinda thinking I might cheap out and go for scope-capture instead.

eraserhd15:07:49

I'm trying that out, too.

dominicm15:07:33

@eraserhd let me know how that goes, I'm interested in adding "native" support to replant in some way (however that looks)

eraserhd15:07:25

The thing I thing would be really cool, honestly, would be if it would write and set up a deftest... But yeah. Using it feels a bit awkward at the moment, but I have the theory that it might get better if I stick with it.

nate15:07:40

Scope capture is magic. I’ve used it twice, to great effect each time.

eraserhd15:07:44

The problem I have is mostly how to target the right invocation when I drill down.

dominicm15:07:56

Doesn't look like there's much in scope-capture to integrate. I wish there was a "list invocations" op

dominicm15:07:13

Then I could generate a buffer or something to auto-switch.

eraserhd15:07:13

That would be cool.

dominicm15:07:03

it would be good to update scope-capture-nrepl to use the new nrepl at the same time

dominicm15:07:12

Having the line/column info is super cool

eraserhd16:07:32

Is it standard here to have functions manipulating global state used by the middleware in nREPL?

dominicm16:07:44

you should use dynamic vars

eraserhd16:07:21

hmm. I'll have to figure out nREPL a bit better one of these days.

dominicm16:07:22

then you have sessions which manage the state for you

eraserhd16:07:03

queued for studying, thanks

dominicm16:07:53

I think I would have approached the nrepl integration differently than Val did :thinking_face: he's literally trying to turn (+ 1 1) into (letsc (+ 1 1)) when doing :Eval or cp

dominicm16:07:29

Having said that, I'm not entirely sure how I would do it.

dominicm16:07:45

Oh, the way he's done it makes it work better with fireplace, ironically.

dominicm16:07:15

Oh, I see why it's that way... hmm, yes.

dominicm16:07:54

It's a bit concerning that he does (pr-str) on the code, I'm not sure that's lossless.

eraserhd16:07:12

I think sc.nrepl.repl/in-ep needs to change the REPL prompt.

eraserhd16:07:42

I'm not even sure that's doable in nREPL.

dominicm16:07:57

what do you mean, "change the REPL prompt"?

dominicm16:07:08

why does it need to?

eraserhd16:07:56

maybe something like

dev=> (sc.nrepl.repl/in-ep 42)
dev+42=> _

eraserhd16:07:44

in-ep also confuses fireplace.

dominicm16:07:11

I've seen stuff that confuses fireplace before too

dominicm17:07:32

it's a bit, meh.

dominicm17:07:45

I don't think the REPL prompt has to change.

eraserhd17:07:03

I keep wanting, instead of like datawalk, just an nREPL middleware that replaces large subexpressions with, like ..1 and ..2 etc, and defines those.

dominicm17:07:20

like unrepl, but for nrepl? 😄

eraserhd17:07:51

hmm, maybe that's where I got it