Add ClojureScript REPL #77

Closed
speige opened this Issue Dec 8, 2013 · 7 comments

Comments

Projects
None yet
2 participants
Contributor

speige commented Dec 8, 2013

No description provided.

@ghost ghost assigned frankhale Dec 10, 2013

Contributor

frankhale commented Dec 11, 2013

This one looks tough and by that I mean we'll need Leiningen + JDK in order to make this easy to get running. But these dependencies may be confusing to normal Visual Studio users who want to give vsClojure a try. I could be a little off base not knowing vsClojure very well but I think ClojureScript support starts to illustrate some shortcomings of how vsClojure is currently working. I've got some more thoughts on this and Leiningen, ClojureScript, etc.. I'm going to mull it over and comment again later.

Contributor

speige commented Dec 13, 2013

Agreed. Right now the jvm version of clojurescript is included in vsclojure. When you save a .cljs file it creates a code behind that contains the compiled javascript. My original hope was that clojurescript support would bring a larger user base to vsclojure & hopefully contributors.

Contributor

frankhale commented Dec 19, 2013

Adding a ClojureScript REPL does not appear to have a sane implementation path in vsClojure that I can think of. The dependencies seems like a bridge too far. Starting a ClojureScript REPL can be done in a variety of ways and none of them are very simple or straightforward like starting a ClojureCLR or Clojure JVM REPL. I think the best way to support this may be to implement a shell tool window and have the user instantiate his own REPL in the normal way by picking any of the methods listed on the following page.

https://github.com/clojure/clojurescript/wiki/Quick-Start

Honestly, what I'd really want is nREPL support and then provide a mechanism for vsClojure to connect to an already running REPL rather than do what we are doing now with the ClojureCLR REPL. I'd prefer something like what Eclipse + Counterclockwise does.

And even when I think about that I still want Leiningen support which makes working with ClojureScript blazingly easy and then I get frustrated because all of these tools are for Clojure JVM.

Contributor

frankhale commented Mar 3, 2014

I guess the question is, is this worth the effort?

Contributor

speige commented Mar 4, 2014

The current ClojureCLR REPL simply loads up the REPL .exe & puts it in a visual studio window. This allows sending text back & forth with visual studio. The REPL itself is not coded in vsClojure, just the communication between the two separate applications.

We technically already have a JDK dependency in order to compile ClojureScript at all. I don't see anything wrong with adding a dependency to leiningen if that's necessary in this case.

Based on the link you sent, it seems like starting a ClojureScript REPL requires installing a few things and running a few scripts. Why can't we include all those installs inside the .VSIX? Is it possible to just include the .dll/.exe files in the .vsix without doing a full install? Why can't we take the script that loads a REPL & compile it to a .exe & run that .exe the same as we do the current ClojureCLR REPL?

I don't think we need to deal with how the REPL will communicate with the JavaScript [or Google Closure] Compiler/browser/etc, I assume that would automatically be handled by ClojureScript REPL without any involvement on our side.

I'm probably misunderstanding something here. I think it's worth the effort, but I intentionally put it as version 3, instead of 2.2, because I felt like it was complicated enough to deal with further into the future.

I've done very little ClojureScript development personally, so I'm honestly uninformed. Am I oversimplifying this feature?

Would you prefer to scrap this feature altogether?

Contributor

frankhale commented Mar 4, 2014

I don't have time to properly read through your reply just yet. A Clojurescript REPL can be ran via NodeJS or in Java land you can start a REPL via Leiningen and then if your project is all set up you can then run a Clojurescript REPL inside of it and then manipulate stuff on the DOM context. This also needs a connection on your page via Socket.IO if I am not mistaken. There are a lot of moving parts and ideally I'd like to keep those in their native land as much as possible because all that stuff is way complex.

I'll try to find some decent tutorials and or blogs that talk about it from the Java/Clojure/WebDev perspective so as to provide some insight here.

Contributor

frankhale commented Aug 22, 2014

Will reopen once this becomes a priority

@frankhale frankhale closed this Aug 22, 2014

@frankhale frankhale removed this from the Version 3 milestone Aug 22, 2014

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment