On Fri, Mar 18, 2011 at 4:05 AM, Laurent PETIT <laurent.pe...@gmail.com> wrote: > Sure, this is the target solution. More complex than what I've done, though. > And the gathering of the metadata is not easy, also.
Any Clojure IDE that can open a REPL should be able to get at the metadata. Just eagerly spawn a runtime with the project classpaths and everything, able to spawn REPL servers on command via a kind of meta-REPL-server. Use a hidden one to send metadata requests and for other purposes, and if the user opens a REPL, spawn another. The only real issue then arises if the user causes a System/exit (or a VM crash) or monkeys with threads in a manner that kills stuff. If the indent (and anything else that queries the hidden REPL under the hood) loses the connection just generate a tray alert and respawn the entire subordinate JVM. The user will find that doing those things reboots their REPL. (You may want to detect the case of deliberate System/exit and not automatically restart the user REPL in that case, only the under-the-hood one. That should be easy, as the child process will have actually exited and probably with errorlevel 0 in that case.) > If we go the static analysis road, then some deps may not be distributed as > source code and we may not be able to get the info. True. > If we go the dynamic road, then the smart identation may behave differently > depending on whether a REPL for the project is loaded or not, and if it is > loaded, which parts of the application are in memory. Ah, you're worried about resolve? Just use (ns-resolve the-namespace symbol), then, with the-namespace derived from the file's path and name, e.g. if it's com/my_domain/my_project/core.clj the namespace is com.my-domain.my-project.core. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en