malli 0.20.0 released https://clojars.org/metosin/malli/versions/0.20.0
See https://github.com/metosin/malli/releases/tag/0.20.0 for changelog
New lib! Parmezan fixes unbalanced or unexpected parens or other delimiters in Clojure files. It's a light-weight script/lib that only relies on edamame for Clojure parsing and it's #babashka-compatible. Repo at: https://github.com/borkdude/parmezan Feel free to post issues.
@cfleming To answer your question more. It doesn't do the parinfer behavior, indenting has no meaning for parmezan (so far). It removes trailing parens. It inserts closing parens where they need to be. That's pretty much it
Ambiguity arises when you have an opening paren without a closing paren. You could either delete the opening paren or add a closing paren. Momentarily parmezan does the latter
but at least you can then use paredit to continue fixing the file the way you want it
Emacs integration for parmezan: https://github.com/borkdude/parmezan?tab=readme-ov-file#emacs-integration
Neat! How did the name come to be?
it is cheesy 🧀
like most of my libs, the name is complete nonsense! :)
nice for LLM outputs!
Note: this isn't as good as parinfer probably, but a lot simpler ;)
This goes straight into both Calva and Calva Backseat Driver (I checked, #edamame works in ClojureScript). Thanks for providing!
Is there any description anywhere of how this works? Does it just add a closing paren when it notices that one is missing? How does it handle e.g. unexpected openers? Some description in the readme and some examples would be good, I think, to help people evaluate this over e.g. parinfer.
Can you open an issue with some examples? I’ll add it tomorrow
It was easy to do but I didn't do it initially: Parmezan now also supports CLJS
OMG this is awesome! Thanks you, sir! Just added it to my workflow, which I sometimes need.
🙏
Also thanks for making it so easy to install with bbin, which I just learned exists.
You're welcome :)
https://cljdoc.org/d/io.github.noahtheduke/splint/1.22.0/doc/home: a linter focused on style and code shape splint
v1.22.0
After a long slumber, a much needed release with new rules and many bug fixes.
• lint/update-with-swap: Prefer (swap! (:counter state) + 5) over (update state :counter swap! + 5).
• lint/no-target-for-method: Avoid (.length) and (String/.length) style method calls that lack a target instance.
• Exported comprehensive clj-kondo hook for defrule.
• New special patterns ?*?, ?+?, and ???, lazy/non-greedy versions of ?*, ?+, and ??.
Instead of listing all bug fixes, I'll say in short that the pattern parser is tightened up a bit and added a number of configuration options to many existing rules, making them easier to use.