LightTable / Clojure

Light Table Clojure language plugin
MIT License
99 stars 51 forks source link

multiple REPL connections on new lighttable version #73

Closed carocad closed 8 years ago

carocad commented 8 years ago

Hey guys, Since the update to lighttable v0.8.1 binary 0.34.5 lighttable has begun to open a new connection for every file that I evaluate inside the same project. This behavior is new since when I had the v0.8.0-alpha it never happened. Neither with the older versions. Previously lighttable would use the same repl connection to evaluate all files inside a project.

My system is Ubuntu 14.04. Let me know if you need more information or to perform some tests ;)

carocad commented 8 years ago

I just found something that might be related to the issue. Whenever I open Lighttable, after it starts the console already reports two errors that seem to be related to the evaluation part. Here is a copy of the text:

Error loading JS file: /home/camilo/.config/LightTable/plugins/Recall/index.js : Error: Cannot find module 'lib/recall'
Error: Cannot find module 'lib/recall'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:286:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.requireLocal [as require] (/home/camilo/.config/LightTable/plugins/Recall/node_modules/ltrap/index.js:70:7)
    at nodePluginBootstrap (/home/camilo/.config/LightTable/plugins/Recall/index.js:23:22)
    at eval (/home/camilo/.config/LightTable/plugins/Recall/index.js:25:3)
    at eval (native)
    at c (file:///home/camilo/software/lighttable-0.8.1-linux/resources/app/core/node_modules/lighttable/bootstrap.js:19310:41)
    at a (file:///home/camilo/software/lighttable-0.8.1-linux/resources/app/core/node_modules/lighttable/bootstrap.js:19318:18)
rundis commented 8 years ago

Hi ! I don't think the second error is related. I think that's a problem with the recall plugin. (https://github.com/joshuafcole/recall)

I managed to reproduce the problem on my ubuntu. Which is rather embarrassing as I should have detected this when doing the release build qa (: It's weird though. In addition it seems that none of the commands that the connection should support are listed in the connect bar once connected.

If it's any consolation we are looking into it and hopefully will be able to come up with a fix soonish.

rundis commented 8 years ago

Only managed to reproduce on Ubuntu, not OS/X or Windows.

rundis commented 8 years ago

@cldwalker Could it be that there is some platform issues with the removal of the custom js->clj This behaviour gets different data on my mac and on linux https://github.com/LightTable/Clojure/blob/29cea377ce34bbfb066271b97d1c0bd80629cbff/src/lt/plugins/clojure/nrepl.cljs#L123

on mac:

{:type lein-light-nrepl, 
 :client-id 185, 
 :commands [:editor.eval.clj :editor.clj.doc :editor.cljs.doc :editor.clj.hints :editor.cljs.hints :docs.clj.search :docs.cljs.search :editor.eval.clj.sonar :editor.eval.clj.cancel :editor.eval.cljs :cljs.compile], 
 :name "acme-auth 0.1.0-SNAPSHOT", 
 :dir "/Users/mrundberget/projects/rundis/acme-buddy/acme-auth"}

on linux(/ubuntu) - different project, but note the absence of commands :

{:type lein-light-nrepl, 
 :client-id 274, 
 :name "hello-compojure 0.1.0-SNAPSHOT", 
 :dir "/home/parallels/projects/hello-compojure"}
rundis commented 8 years ago

Ok. Wild goose chase with the platform thing. I managed to reproduce on os/x once I tried a project which uses clojure 1.7. So something must be iffy with lein-light-0.3.0 I suppose.

rundis commented 8 years ago

@cldwalker I think I found it. https://github.com/LightTable/Clojure/commit/65ebb33f3940940b120e98754a2c8a5570d120c2#diff-bdb02b68e645267e77c7b861386d3a2cL22

Those need to be there. If not returned from here, you need to set them on the client object manually on the cljs side somehow. The commands are used for selecting applicable client connection for things like eval etc.

carocad commented 8 years ago

Hey @rundis After you mentioned the clojure 1.7 thing I found out that in fact it is related to that since this behavior only happens if my project uses v1.7. With v1.6 the REPL connection is as expected.

Hope it helps

cldwalker commented 8 years ago

@carocad Thanks for the report. We've released 0.3.2 of the Clojure plugin which has fixed this. Closing but can reopen if it's still an issue

kenny-evitt commented 8 years ago

I ran into this too yesterday. I upgraded to version 0.3.2 of the Clojure plugin earlier today but I'm still seeing this issue. But restarting Light Table seemed to fix it.

@cldwalker @rundis Maybe we've got problems upgrading? Or should upgrading the Clojure plugin (particularly if it's 'in use') require restarting Light Table?