This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-09-27
Channels
- # arachne (1)
- # beginners (31)
- # boot (84)
- # cider (9)
- # clara (2)
- # cljs-dev (102)
- # cljsrn (20)
- # clojure (254)
- # clojure-belgium (1)
- # clojure-dusseldorf (17)
- # clojure-greece (7)
- # clojure-italy (6)
- # clojure-russia (2)
- # clojure-spec (8)
- # clojure-uk (9)
- # clojurescript (93)
- # component (4)
- # copenhagen-clojurians (1)
- # cursive (24)
- # datomic (22)
- # editors (1)
- # emacs (8)
- # garden (2)
- # hoplon (357)
- # lein-figwheel (1)
- # leiningen (4)
- # luminus (27)
- # mount (13)
- # off-topic (7)
- # om (71)
- # onyx (35)
- # planck (3)
- # re-frame (53)
- # reagent (35)
- # ring-swagger (24)
- # specter (10)
- # sql (6)
- # untangled (47)
- # vim (157)
neovim vs vim?
to me there doesn’t seem to be much of a functional difference, other than code being better maintained, and a better plugin api
I really like the term in neovim, it gives me a much better interaction than using tmux
@biscuitpants: I've been asking myself the same question. Using vim at the moment, I'm a bit worried about fragmentation between the two, for instance, some Clojure related plugins are appearing for neovim only. Right now I'd go with neovim but I'm having to use vim for some compatibility issues with other plugins so swapping between them for now.
oh, wow, if there are plugins specific for Clojure then i will have to go for neovim
i want to setup a vim environment for clojure development, that works as well as my emacs one
currently in emacs i have clj-refactor, cider (ofc), paredit, and rainbow parenthesis
are there plugins that mimic this?
i know there is fireplace, and paredit
https://github.com/SevereOverfl0w/.files/blob/layers/nvim/layer/clojure/package.vim Plugins I use for clojure
oh sweet! clj refactor
thank you @dominicm taking a look now
That rainbow package is by far the best. The others break syntax folding with clojure.
@dominicm: I really like the layout of your nvim dotfiles. Is that something you came up with? Or a convention documented somewhere?
@markwoodhall I use an overly complex init.vim 😁 I think gh user Jayes came up with it.
It's pretty cool though. I do miss the ease of editing a single file, but I love that when I run EditLayer clojure
I can really focus on what I'm fixing.
I need to figure out dependencies a little bit though I think. Like, how to have my clojure layer insert autocompletion for itself. I think I'm going to have to come up with a pseudo dependency system.
It does look pretty cool, I've struggled with an unmanageable .vimrc and wanted to take advantage of moving to nvim and clean it up a little, something like this looks like it might be nice though!
thank you @dominicm, i’m definitely going to use your nvim as a base to start on. seems really nicely organized
@dominicm: will do! Thanks!
I saw you guys mention your worries about neovim vs vim. I'd be interested to hear more.
@markwoodhall what plugins do you need to switch back to vim for? That's very interesting. Everything works for me. :s
I guess I could get by without it but I'm using a plugin for C# and .net stuff, last time I tried I had issues with it. One of which was python version related. I am using it alongside neocomplete and I also couldn't get it to work with deoplete.
Ah, might be okay now. Depending on when you used it, neovim's python support is better than it was. Things like if_python
work again.
Cool. I'll give it a try again. I'd rather ditch the C# stuff altogether if I'm honest!
man i’m stoked to setup a vim environment now
i also want to setup archlinux, just never have time to get to it
yeah. i’ve played with it a lot, but never had time to fully set it up to my liking
its a wonderful distro, though
how do you find it for Clojure dev?
i guess not that different from say OSX?
@biscuitpants you can see my setup here https://github.com/zamaterian/dotfiles/blob/master/.vimrc as inspiration (its only for neovim)
ah amazing! thank you 😄
Nice to see some activity in here 🙂
it will probably become more active as i hit my head on vim 😛
Thanks for sharing @zamaterian
@biscuitpants I've used Arch since I was ~14, never used OSX. So not much of a comparison I can make.
@zamaterian That plug_doc is pretty neat.
Grabed that from vim-plug FAQ
Hadn't seen the grimoire plugin before either. Someone should put together a big index at some point.
I didnot get it to work, mainly because of outdated dependencies
I could fork to vim-clojure and fix it up if you think it would be useful to others.
@zamaterian I'm stealing your SendToREPL, SendToTerm stuff. That's the bomb.
@zamaterian https://github.com/zamaterian/dotfiles/blob/master/.vimrc#L495-L502 I don't understand how this is different from cpaF
in vim-fireplace with vim-sexp though. Am I missing something?
@dominicm its an old left over.. 🙂
@dominicm regarding grimoire its kind of usefull since it contains user commited examples. It popped up when clojuredocs was not maintained.
@zamaterian Ah. That's okay then. I didn't see a mapping to (reset)
anywhere? Do you not use component, or does it not work?
No dont really use component.
Makes sense then. I've done a lot of fiddling, and had to settle on using thinca/vim-localrc so I can have a per-project namespace which (reset)
runs in, it's been a bit of a pain.
reloaded.repl
makes this somewhat easier, but not everything uses that (yet 😈)
I didn't realise until joining this channel that there are so many vim loving clojurists. I'd kind of felt an internal pressure to start moving to emacs (spacemacs) but I've been resisting.
@markwoodhall Me too. We should stick together! 😛
https://static1.squarespace.com/static/5372821be4b0aefc6719057e/t/56a7dc8d3b0be343e82ef921/1453841550679/?format=500w I suppose this should give us a clue though. We're not too minor: 13% or so.
Yeah. That would be cool. Didn't expect vim to be so high on that graph.
Are you using tmux or the neovim term like @zamaterian ?
@zamaterian I use neovim terminal sometimes. Most of the time I just open a new terminal and start my repl there.
I do all evaluation through :Eval
, cqp
and cpp
from there.
But I'll probably have a go at stealing some of @zamaterian's stuff to see if it changes my workflow much
Maybe that should be renamed to just Clojure with Vim
, I think it's a bigger picture now.
I really uses this a lot https://github.com/zamaterian/dotfiles/blob/master/.vimrc#L514
@zamaterian Do you use that in place of :Eval
and cqp
?
No, for sync'in the repl ns to the namespace in the active buffer..
Sorry, I mean - do you use the REPL in the terminal, in place of :Eval
and cqp
, or do they serve different purposes?
I prototype a lot in the repl, testing things out - mainly I just eval the entire ns (buffer) Eval% or using nmap <Leader>e <Plug>FireplacePrint<Plug>(sexp_outer_top_list)
for eval a function
I use cqp
for testing things out. And <localleader>rs
to reset via t.n.s. Interesting how people come to such different solutions to same/similar problems. This is why I love vim though 😄
I really like that I can navigate to a function in a zip file (a dependency) and then change the definition and using <Leader>e to hotload it into the jvm. Its a great way of debugging.
I do that all the time, it's so much fun. Except I've noticed that if I don't change it back, it seems like the jar gets cached or something, and it includes my println in other projects.
It because you can inplace modify a zipfile
the only 'shared state' between different projects is your ~/.m2/repository
Do you both not use :Require
and :Require!
very much?
@zamaterian I'll have to pay more attention in future!
@markwoodhall I don't, because the (require 'blah :reload)
is a little dated in wake of clojure.tools.namespace.
Ah, ok. More reading up to do!
I mainly uses this function `function! RefreshNS() call SendToREPL("(require '[clojure.tools.namespace.repl :refer [refresh]])(refresh)") endfunction`
@zamaterian Hmm, my call is very direct. Do you use (refresh)
directly in the repl?
I'm always using it in a context of a buffer (eg. when renaming vars, changing multimethods stuff like that)
@zamaterian You can skip the require then 🙂
🙂 Are you going to euro clojure ?
yes 🙂 then we could probably drinks some 🍻
Absolutely! I'm really looking forward to meeting people I've met online over the last year.
I use cpR
to run reloaded.repl reload/ctn refresh!
cpr
reload ns, cpR
reload project
i use vim-slime (https://github.com/jpalardy/vim-slime) to send a clojure form to a neovim terminal
It should be possible to use async with fireplace, I just need to spend some time figuring it out
Worst case scenario is a partial implementation of fireplace built on nrepl-python-client
I tried doing the eval to a terminal window but I found that with very large forms (like evaling a whole file) the pasting would cut off.
basically node-host allows async commands/functions etc that return immediately. however calling fireplace from those async things will still lock up the editor
Oh, is most of the heavy lifting in the clojurescript then, and the evaluation is quick?
well, parinfer is all cljs. refactor tries to keep the heavy lifting in cljs like you say
I think i'm the only one who gets bug reports when it breaks, and my time has been super curtailed lately
there is also https://github.com/jebberjeb/neovim-client
@snoe oops, yeah. Refactor. I didn't realise it would lock up the editor if it's slow.
@snoe Yeah, I've been meaning to report an RPC breakage in neovim 1.6. I'm kinda hoping it'll fix itself.
I'm about one evening of development from being able to use it in my daily development
y thats what @jebberjeb is doing
But, I am focusing on it with all of my after hours time, and 20% time at my day job.
It would be nice to have a replacement. @jebberjeb is there much of a startup hit?
@dominicm it's horrendous now, but that's only because it's a proof of concept built on lein. The end product will be cljs + node, so startup time should be negligible.
At least, that's my current thinking. Even just removing lein should bring the startup cost down to about a second.
I think I speak on behalf of us all, that I'd love to see a cljs client to replace fireplace, supporting async and such
That's definitely the goal. Creating the neovim clojure host is really only a means to that end, but it is a nice side effect.
I'd at least like to create some gravity around an alternative, even if it's not feature rich at first. Then, see where it goes.
Maybe a bit more controversial question would be whether to use the built in socket server / repl, or to use nRepl.
Plug or vundle?
after reading the differences, i can’t really decide why i’d chose one over the other
I like Plug, have not used vundle
yeah plug seems simple, and straightforward
pathogen is less lines 🙂
@jebberjeb nrepl. No doubt. Simply because of op codes and sessions.
It it declarative, but it is declared on Git level instead of Vim config.
And when dealing with git submodules, you have to specify the commit to use, maybe even more declarative?
Or maybe even on file system level, but I agree :). I like it being a line in my config, preference thing.
yeah pathogen seems super nice, but i like the thought of having my vimrc with my plugins, instead of submodules
The biggest benefit for me is that I am certain to run the same version both on desktop and laptop. Other reason is that I anyway use lots og submodules on my dotfiles repo.
But yeah, plug or such is probably better choice for many.
Plug can pin version to a commit, I usually just want to run master and update regularly.
okay tonight i’m gonna start on my init.vim
😄 i’m super stoked
thank you everyone for the help / repos / gists
@biscuitpants feel free to ask questions 😁
@biscuitpants I’m jealous. That was my plan for tonight also, it’s been derailed by a production issue. Booo!