I have gotten a more recent version of CCW up and running in Eclipse and can now compare some aspects of their behavior, particularly regarding the REPL.
On the plus side for CCW: * No timeout bug starting REPLs. The timeout period seems much longer than Enclojure's. (The Enclojure Google Group seems to have a recent thread about this issue, with a link to a patch to lengthen the timeout recently having been posted by the maintainer, but the instructions for applying it seem both awkward and somewhat vague -- where is the manual override for the update site URL supposed to be set, and how do you undo this later? Not mentioned in the post. The awkward bit being the need to override something like that at all.) * Correct behavior of *print-length*, e.g. => (set! *print-length* 20) 20 => (iterate inc 0) (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...) => 42 ; Look, ma! It didn't hang! 42 * None of several NetBeans REPL bugs, such as user=> (defn foo [x] (let [bar (frobulate x) user=> #<CompilerException java.lang.Exception: unmatched delimeter '['> user=> #<CompilerException java.lang.Exception: unmatched delimeter '('> #<CompilerException java.lang.Exception: unmatched delimeter '('> user=> and the ability to sometimes hang or otherwise b0rk up the Enclojure REPL by terminating a line inside a string or character constant or by having an unescaped backslash in a string literal. * Eclipse tools such as built-in diffs/history can easily be applied to Clojure source files. * Rainbow parens. * Whole thing seems snappier, in particular not freezing for extended periods after being left idle for a while. Memory consumption by Eclipse seems lower than by NetBeans. On the minus side for CCW: * There's no easy way to restart a REPL or close one; one must close the REPL tab and also find and kill a java process using ps/kill or Windows Task Manager or whatever tool, depending on OS. * There seems to be no right click menu option to (re)load a source file (either from the open file in the editor, or from the file's listing in the package explorer) in an open REPL. Run... will start a new REPL for each file/reload; to (re)load in an existing REPL seems to require select all, copy, paste, enter, which will clutter up the REPL history with (possibly very long) blocks of code. Drag and drop from editor to either pane of REPL does not accomplish anything either. * No separate option to start a project-classpath'd REPL without loading any files initially. * Namespace Browser is nifty, appearing to introspect on the open REPL to maintain a set of defined symbols; similarly, autocomplete "sees" your REPL-defined functions and vars. However, it won't update if a var is redef'd with changed metadata; e.g. if you define a function without a docstring, then redefine it with a docstring, the docstring won't get added to the tooltip for its symbol in the Namespace Browser. In fact, under some circumstances (I'm not sure what), it won't update promptly to reflect a new function definition at all. Oddly, it will update eventually but I'm not sure what triggers it. On the other hand, it has a handy incremental search box at the top. * Editor doesn't seem to have an option to reindent a block of code; going line by line and hitting tab seems to be the only method provided, short of fully-manual reindentation. * REPL editor turns a dark gray if there's an unmatched close delimiter, which on my monitor/system, at least, makes it difficult to see the insertion point and paren-matching marker box, and thus to find and remove the mismatched delimiter (or add its missing mate). The main editor also turns dark gray under similar circumstances, except, crucially, for the line containing the insertion point. Also, unmatched delimiters aren't always detected, e.g. (defn foo [x (] bar) does not flag the unmatched ( inside the arglist. * There seems to be no easy way to get the REPL to use the -server vm. Eclipse seems to only look for JRE runtimes, not JDK runtimes, and if manually pointed to a JDK directory, it says it can't recognize the runtime library, whereas if pointed to the JDK /bin subdirectory, it says it can't recognize the java executable. So it doesn't seem to provide a way to use the JDK's java runtime instead of the JRE's, and the JRE's does not recognize the -server flag, at least not on Windows, for whatever reason. The only apparent workaround is to manually launch the JDK's java.exe with a manually-set classpath and appropriate arguments to run the REPL server in it, and then manually connect to that server to get a REPL pane in Eclipse. All in all, the bugs/awkwardness factor seems similar for both options at this point. There is an odd pattern though. Most of the Enclojure bugs make it easier to crash the REPL and harder to restart it when it goes, and/or make using the thing slow in general. There's a few missing features that might be desired, such as rainbow parens. On the CCW side, there are few outright bugs, aside from the install procedure being less simple than just "browse Marketplace, click install, restart IDE" and this fact simultaneously not being obvious if you approach CCW along certain trajectories. Instead, there are what seem to be mainly missing features: separate start-repl and load-file-in-repl commands; kill/restart repl process; one-keystroke command to reindent all lines intersecting a multi-line selection. All I foresee as being likely to be substantial sources of day to day editing/testing awkwardness, however. Please do not take this the wrong way. No "bashing" of either IDE is intended here. Rather, I would like to see both IDEs improve, and believe that providing constructive feedback after using both of them is one way of assisting in that process; and that the maturation of these tools is crucial while Clojure is still young, lest it get perceived as having "perpetually" poor tool support or something (by the non-emacs user contingent, anyway). At this point, it's to be expected that the IDEs and other tools are still maturing; the language is what, four years old? If that. But Clojure adoption may be getting close to hitting the knee of the curve, and if the tools aren't just a *bit* more polished by then, it may begin to significantly hinder adoption. Furthermore, I acknowledge the possibility that one or more of the CCW "missing" features (e.g. restart REPL) is actually present, but if so, it is not easily discovered within the interface by menu-browsing, examining toolbar buttons, and similar methods. It may be documented somewhere else and, say, accessible only via shortcut key; IMO that is not enough. As has already been discussed once, it is a fact, if an unfortunate one, that installing the plugin via the Marketplace does not cause the user to be presented with documentation or links to same; and it is a general industry standard these days for commands that exist in a GUI application to be in *some* menu *somewhere*, usually in a right-click menu on the appropriate target in particular, and any shortcut key documented there, as in the common example of an Edit menu including the item "Copy Ctrl+C". If such is the case for one or more of the features I noted as "missing" from CCW that Enclojure has, consider the lack of a menu option/toolbar button for that feature to be the missing feature instead; it is still a problem, and not much less serious -- but a lot easier to fix! Thank you for your consideration of these observations. -- 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