I get paredit; I get lispy. I don't get what parinfer does.
It seems like a complete paradigm shift.
So there's two modes? One where it trusts the () and indents my code, and another where it trusts the indents and infers the ()'s ?
So there's no longer an attempt to balance the ()'s ?
@dominicm : ^^
@qqq As I recall. Pretty much, yeah. One mode will indent all relevant code when you start smacking the space bar. (e.g. it will shift along the contained maps of a list). The other is for moving parens.
I personally didn't find myself in indent mode very much
but you do use parinfer?
I watched the gifs, tried it in emacs, and found it very unsettling
I'm used to ()'s always being balanced
@qqq I used to, but my co-workers get annoyed by https://github.com/shaunlebron/parinfer/issues/92 this a lot š
Now I use vim-sexp primarily. But I do miss the ease of parinfer.
@qqq: most people use indent mode, which is pretty aggressive about keeping parens balanced
@qqq: indent mode is a realization that all those ))))]]})
at the end of a line could be inferred from the indentation of the next line.
thatās the core idea, but a lot of details had to be worked out. I document them here: https://github.com/shaunlebron/parinfer/blob/master/lib/doc/design.md
@shaunlebron : lol, I just realized you're the author of parinfer
reading design.md in detail now
@shaunlebron : so all of indent mode is: (1) kill trailing parens (2) infer trailing parens based on indenting ?
in a nutshell yes
I must be missing something. Paredit has a bunch of barf / slurp / convolute / replace / ... functions. Lispy also has those. ParInfer has two modes.
when first playing with the idea of indent mode, I realized that sometimes adding or removing parens would auto-result in things like pareditās barf/slurp/splice/wrap
it turned out that these kinds of things are blocked when done inside nested single-line expressions
(i.e. close-parens present in the middle of a line, not at the end)
if youāre wondering why parinfer does not have hotkeys for these advanced transform ops, you may not be the target audience
target audience is newcomers who would never use Lisp if paredit was the only way to manage parens
oh, parinfer assumes people don't want to memorize 10 different vim-like hot keys? š
ha, those are great, and thatās how I started
but not everyone is like us in that regard
yeah, my progression has been: paredit: wow, this is cool lispy: wtf ... an implicit mdoe in vim? I can't believe this works then I someone pointed me at parinfer, and I couldn't figure itout
i spent a year without using any tool, then I discovered vim paredit and used that for a year, a year later the parinfer idea happened
what did you find lacking in paredit?
i worked at a company that was actively fighting cljs adoption because it was a lisp
and itās the reactions you can guage from people learning that you have to learn all this stuff to use it
paredit isnāt lacking in anything, but the time to learn is a barrierāa barrier not very difficult to cross, but a lot of people simply won't
@shaunlebron : got it, alright, 'm going to stick with lispy
but I apprecaite this helpful discussion š
I'm the exact opposite of "easy learning curve" ; I want to memorize key combos so it looks like Im playing the piano
right on! š
i want there to be tools for both people!