4 ms·
vim-fireplace is much improved. I had been using a heavily hacked version matched to my own preferences for years but recently upgraded. What you really want i
by WildUtah 10y ago
vim-fireplace is much improved. I had been using a heavily hacked version matched to my own preferences for years but recently upgraded.
What you really want is just to run
lein repl
in your repository and then fire up another terminal and edit code with Vim. Then you should send whole top-level forms to the repl with :Eval from Vim and it should just work. You can then test them in the repl. (I alias C-c C-c to :Eval (:no <C-c><C-c> :Eval<cr>) because I'm used to the old vim-slime)
And it should all work automatically. With the new versions of vim-fireplace it does just work automatically.
I'll write a 'process-data function in Vim, send it with :Eval, and then test it in the repl with (process-data {:some "data", :more "other data"}) and it all just works. There's a little reading up on namespaces necessary once your projects get complicated, but it works on a bare repl right out of the box, too.
- Jach 10y agoWith slimv I don't even have to run lein repl, it'll run it for me (well, 'lein swank') if it hasn't already so long as I'm somewhere with a project.clj. What I don't like about having my repl and editor separate is that it's harder to get or search values from the repl back into the editor. With slimv the repl is literally just another vim window/tile so it's easy to swap over, grab a value or search history, swap back, or enter interactive mode and type stuff. Does vim-fireplace easily let you replace forms with values (or macroexpands) or evaluate a form and have its value put somewhere? By default slimv lets you save the expression you're evaluating (which is useful for testing things) but I think I'd have to set something custom up if I wanted it to store the value somewhere or replace the just-evaluated expression. If vim-fireplace did that out of the box I'd probably consider it again. I know emacs can do it, watching people perform/livecode with Overtone et al. is instructive. Other things I appreciate about slimv are when I type "(defn " I see a nice helper below saying "(defn [name doc-string? attr-map... prepost-map? body) + attr-map?])", this applies to everything. If I type ",s" on any symbol it'll show me the (doc) for that symbol, ",h" takes me to the online clojure docs. When I type tab it auto-suggests core functions, presumably through standard omnicomplete features though. (Edit: another useful thing, I can simply trace/untrace function calls with ",t".) Does vim-fireplace support all/any of that out of the box? It sounds like it supports my "screen" flow just fine these days but what else does it give me?