vim 2026-07-03

Show of hands, how likely are you to use a fully vibecoded nrepl client plugin? I burned some tokens out of curiosity, and it's annoyingly good. But I'm hesitating to release it for obvious reasons.

🖐️ 1

Could one use the testing features with e.g. lazytest?

It should work with any clojure.test compatible system. I'm not familiar with lazytest

Ha, ok. It's explicitly not compatible. We could shim support in like we do for some flavors of Clojure.

conjure has extensible testing support so you can add arbitrary test runners and choose between them as you wish. maybe that could work here?

I've tied pretty deeply to getting structure out of the tests. As long as lazy provides some hooks to get structured data out, we should be able to load it into the quickfix. I'm not sure if conjure does structure?

i don't know, i only know about wiring it up lol

What wiring did you have to do?

I mean ideally, you'd get support into cider-nrepl and then it would just start working by itself.

Looks like a convenience over just running a function, and then that appends to the output log. So it'll be more involved adding this to campfire, but as long as the reporter can have an override it should be possible.

Custom reporter looks adaptable. So I would be able to make this work.

👍 1

Lazy test support added. Let me know how it is. See the help file for usage.

🎉 2

Tried it, will try out the lazytest feature tomorrow. Love it—everyone has their preferences for the repl driver but for me this is 100% the way to go. Thoughtful ground-up approach to the different runtimes is great. Questions if you please: 1. Were you uninterested personally in the quasi-repl, was it hard to implement, something else? 2. How about :Require and :Require! 3. You mentioned exception stacks on the quickfix list when running tests—Fireplace has :Stacktracefor any eval. Can haz? Thanks for publishing. I know it’s a ridiculous dream but I’d love to stop shaving this particular yak some day.

1. I just wasn't interested, I have no problem with adding it in principle. I've just never really used the feature and I wasn't sure it got much use. 2. Any benefit to :Require over just doing the equivalent :Eval yourself? That's why I didn't implement it. I never use it. I do use :%Eval though. Not opposed to the feature, but I wanted to see if it was really necessary. 3. Yes, that's a feature that makes sense. I described how I wanted that to work at some point infact. Can haz.

3. I remember it because I'd already built it. Pushing docs now.

Documented, along with the virtual text bindings.

Enjoying it so far feels like a much lighter experience to Conjure. Would love to a way via config to disable the completion sources as it replaces my native autocomplete lsp source which I have nicely configured. But overall very interested to follow and see where it goes! Thanks for making/sharing the plugin

That's great. I wonder if there's a way for completion sources to deduplicate. What's the setup that you're using for autocomplete?

Campfire completions doesn’t dupe it overrides for some reason I haven’t looked into. My setup uses native autocomplete with fuzzy search, kind symbols, and the docs hover for selected item. https://github.com/thomasmcinnis/dotfiles/blob/ec3922d81235589e2de8c6cf6354ad18094970cf/config/nvim/init.lua#L154

That's odd. I don't understand why none ls would override Clojure lsp.

How did you notice it replaced clojurelsp?

Is it because completion.enable runs for each lspattach and replaces the last? So you need to skip that step for none ls?

Its not none-ls since I don’t have that installed. I’ll look into the plugin a bit more but probably you are also registering completion in there and yeah last-in wins I guess

regarding “quasi-repl” (fireplace cqp, cqq, cqc): From my perspective these are the primary answer to “why not just use conjure!” Conjure’s great and I’m glad it exists especially when I have to do something in python etc, but I used fireplace first and I just missed these maps no matter what I did.

@hey981 the omnifunc is set to campfire omnifunc, could that be your problem? Otherwise a cmp source is registered too.

👍 1

My best guess is the omnifunc. Try unsetting it from lspattach.

complete=o means to use omnifunc 🙂 try unsetting omnifunc before enabling completion.

If it supports gui (GTK/macOS) Vim then I would try it out.

It's mostly lua, so nvim only sorry. But gui should just work otherwise with one of the nvim guis

i'm already satisfied by conjure. what would this one offer above that?

➕ 2

It's largely a fireplace clone, but with many of the rough edges fixed. I find fireplace feels more "vim native" than conjure.

👍 1

Example, based on not knowing Conjure well, Test results go into Conjure's streaming buffer. In Campfire & Fireplace they go into the quickfix and can be used with vim-qf and similar plugins to rapidly jump around failures. I'm not sure how many other conjure features would be repeated with things that integrate with vim built ins like that, as I don't know Conjure well.

I’m in the camp (lol) of generally going more vim native so appealing to use qf etc. Could you explain the usage pattern for someone who never used fireplace? Will give it a spin soon…

i for one am very happy to see this, will try as soon as I start developing again

As a good starting point, you'll want to start an nrepl with cider-nrepl in it, and then the tools I use most are: • cp operator (combined with vim-sexp) to evaluate code and see the result • cpp ^ ditto • :.RunTests while on a deftest or ns to run tests and load the result into the quickfix That will probably get you cooking for the most basic flow on a Clojure backend. :help campfire has some more hoodies and details then

👍 1

I've had a play with it, and it seemed to work. But I'm not a frequent user so the subtle behaviors and expectations are unknown to me.

doing great with campfire this week!

That's great to hear! 😅 I'm glad others are finding it useful