arcadia-unity / Arcadia

Clojure in Unity
http://arcadia-unity.github.io/
Apache License 2.0
1.68k stars 108 forks source link

Is there a possiblity to connect via nREPL? #147

Closed jumski closed 8 years ago

jumski commented 8 years ago

I am a VIM user, using vim-fireplace, which connects to nREPL for seamless integration.

I am still a clojure beginner, and I'm confused - is there a way to connect to the Arcadia's REPL in same manner as connecting to nREPL? Can I connect vim-fireplace to it?

Really eager to code some games with it Thanks Wojtek

nasser commented 8 years ago

I am afraid nREPL is not supported at all in Arcadia. This is mostly due to the fact that it does not run correctly in the version of Clojure Arcadia uses (ClojureCLR, not the standard ClojureJVM).

I am not familiar with vim-fireplace in particular, but if it assumes nREPL then you may be out of luck. We run our own socket REPL and the wiki explains how to use it from a variety of editors including vim.

jumski commented 8 years ago

Really interested in working with Arcadia, but using something other than VIM is a dealbreaker for me. Same for copy-pasting forms to terminal repl. Any idea if this (incomplete) port would be easy/hard to integrate https://github.com/clojure/clr.tools.nrepl ? Maybe i could invest some time into this, given a directions :)

The vimshell/vimproc solution is really just opening a shell in vim, not even close to what full integration would give (hotkeys for evaluating forms under cursor, this kind of stuff).

Cheers

mpereira commented 8 years ago

@jumski fwiw you can use vim-slime to evaluate forms from vim buffers. That's what I do.

nasser commented 8 years ago

nrepl is a long way off as far as we can tell and no one is working on it. You're more than welcome to give it a shot if you want, but like @mpereira said we tend to use good integration with the shell processes instead. The sublime text and emacs integrations are solid, and people seem to get by on vim as well (not my jam, so I can't comment on it). No one copy-pastes forms :wink:.

jumski commented 8 years ago

@mpereira this is kinda middleground that could work, especially that i run vim from tmux, thank you for that suggestion!

@nasser yeah i think you scared me enough :) ill look into the nrepl only if vim-slime will not be enough for me

thank you guys!

timsgardner commented 8 years ago

We thought nrepl was important to have for a while, but mostly because otherwise we'd have to write our own networked repl, which turned out to be way easier than porting nrepl. nrepl's implementation seems to involve some fairly heavy hosty stuff, and anyway some of its more notable features, such as interruptible eval, are categorically unavailable to us (everything that touches the scene graph in Unity, and some things that don't, has to run on the main thread). My guess is that Ramsey will finally snap and write a better general-purpose Clojure repl for Sublime Text than Sublime Repl provides, in the meantime he and many other folk are doing fine work with it despite its warts. I use the very nice inf-clojure package for Emacs, which provides a lot of the client-side repl functionality of Cider etc, plus real Clojure Paredit in the REPL itself, and redirect it to the Arcadia repl. I gather there's some way of doing this in VIM, too. The main thing is that an editor implements the equivalent of Emacs' Inferior Lisp, that is, a wrapper around a repl shell process of some sort.

One of the lessons we've learned from Arcadia is that writing a bare-bones, slightly janky read-eval-print-loop networked repl from scratch really isn't that hard (whereas reimplementing nrepl is apparently extremely hard), and once it's in place you get wide editor support basically for free. Ramsey's quietly implemented one for Hy https://github.com/nasser/blenderhyrepl, a Clojure-like language targeting Python, that connects to Blender, and exposes itself as a shell process, thereby making Emacs integration a one-liner.

On Sun, Dec 13, 2015 at 7:57 PM, Ramsey Nasser notifications@github.com wrote:

nrepl is a long way off as far as we can tell and no one is working on it. You're more than welcome to give it a shot if you want, but like @mpereira https://github.com/mpereira said we tend to use good integration with the shell processes instead. The sublime text and emacs integrations are solid, and people seem to get by on vim as well (not my jam, so I can't comment on it). No one copy-pastes forms [image: :wink:].

— Reply to this email directly or view it on GitHub https://github.com/arcadia-unity/Arcadia/issues/147#issuecomment-164316467 .

jumski commented 8 years ago

I really appreciate your thorough explanation @timsgardner . Now I understand the reasoning for doing things how they are done. I was mainly concerned about barbarish copy pasting to repl (forgot about slime).

I totally can do with using slime. Eager to test it soon :) Cheers

nasser commented 8 years ago

Rock and roll, @jumski. Welcome to the family.

Morantron commented 7 years ago

Check this out to get vim-fireplace working with arcadia https://github.com/spacepluk/arcadia.nrepl

jumski commented 7 years ago

Wow this is cool @Morantron I haven't got enough time lately but this hopefully will inspire me to test :)

raoofha commented 6 years ago

maybe you find this useful. I wrote a simple program and a vim plugin (replwrap). you can press space to send current form or selection to the wrapped arcadia repl.