A related question: What IDE are people on Windows using? I've struggled for a long time to find an acceptable environment on Windows and would love to have more detailed pointers.
My experience: Clojure Box - Easiest way to get started. Runs without much hassle. Dependency management is difficult, in part because it doesn't integrate with the community-standard tools such as lein and clojars. It is possible to set up a classpath and install libs for the whole environment, but I've never figured out how to do it on a per project basis, launching a "project-oriented REPL" that has exactly the dependencies needed for a given project. Only runs the latest stable version, so there's no way to play around with alphas or go back and forth between projects that use 1.1 and 1.2. I've also never figured out how to do any debugging/profiling in Clojure Box. Also, don't know how to build any kind of standalone jar in Clojure Box. Some libraries don't seem to work with Clojure Box (e.g., Clojuratica), and messages printed in multi-threaded apps don't always show up. lein/emacs - Getting lein to run under Windows has been an ongoing struggle. It sort of works, but there are a lot of little problems. I've made lots of edits to my batch file to try to address the problems, but then it becomes difficult to update to new versions of lein. Some of the problems I've encountered: REPL doesn't use version of Clojure specified in the project file; doesn't use specified jvm flags; tests don't work. Whereas Clojure Box starts you right up in a REPL, with lein/emacs it is a multi-step process in which you first have to start a swank server from the command line, and then slime-connect to it from emacs (usually generating a bunch of warnings about mismatched versions). The good part is that the REPL is then customized specifically for your project with all the right dependencies. Also, compiling uberjars is easy. The bad part is that killing threads and restarting the session from within emacs doesn't seem to work, so it's quite a hassle to stop and restart everything when you get caught in an infinite loop. As with Clojure Box, I've never figured out how to debug or profile code in lein/emacs. My favorite part about emacs: Emacs is incredibly stable, and I run it for days without closing it, and have no trouble. General complaints about emacs: My #1 issue with emacs is that I don't know how save my "workspace" so that I can return to emacs and automatically open the last set of files I was working on, and my places within them. It's always a big hassle when I sit down to work to open up all the files manually and find my places. I don't like the way so many of the keystrokes conflict with the normal keystrokes used in other programs, so when I get in the habit of typing, say Ctrl-X Ctrl-S to save a file, and then do it in another file, I discover I've accidentally "cut" a huge block of text and then saved it. It's so out-of-step with other apps, it's very frustrating to use. I've learned how to adjust some of the keystrokes in the config file, but inevitably, these modifications end up clashing with other packages. I've experimented with paredit and org-mode, and if you use things like CUA or other customizations, they just don't work that well. Lots of little things don't work quite right in emacs (at least on Windows), for example, dragging a file onto emacs to edit it, and copying and pasting between apps. Netbeans/Enclojure: Lots of nice stuff here. The REPL works very well, and is easy to restart. I found Netbeans' source control integration to be easy to use. You can build a standalone app which places the dependencies in a folder, but I don't know of a way to build an uberjar using Netbeans/Enclojure. If you know what jars you want, it's easy enough to add them to the project and get a custom REPL that sees those jars. Unfortunately, many Clojure libraries assume you are using lein to automatically download chains of dependencies; it can be hard to find all the relevant jars and add them manually to the project. For me, the #1 showstopper is that Enclojure becomes unreliable after about an hour of use, and any customized settings are repeatedly lost. I tried to update to the latest versions of Netbeans/Enclojure to see if things had gotten better, but just experienced a whole lot of breakage. IntelliJ/La Clojure: I tried this briefly when it first came out. I liked the look and feel of IntelliJ and found it to be the most intuitive of the IDEs I tried. I couldn't figure out how to run the REPL with customized java flags (such as -server), and I encountered several formatting errors and bugs that were frustrating. I reported the problems and checked back several months later, and as far as I could tell, nothing had changed. So I gave up, assuming the plug-in wasn't being actively developed. I never got far enough with it to determine how it fares on other criteria, such as ease of creating a customized project REPL with the right combination of dependencies, the ease of compiling some sort of standalone app, ease of debugging/profiling, etc. Eclipse/Counterclockwise: Never tried. From the project page, it sounded like many features were not yet implemented (e.g., formatting of code) and that it therefore wasn't ready for prime-time. Furthermore, in my previous exposures to Eclipse (unrelated to Clojure), the environment seemed bloated and confusing. Maybe I need to give this IDE more of a chance? VimClojure: I've never liked vi, so I didn't try this one. Overall, there are a bunch of "almosts". If only Clojure Box had better dependency management... If only lein and emacs weren't so quirky on Windows... If only Enclojure didn't hang and erase settings after an hour of use.... If only La Clojure had progressed beyond being a "proof of concept"... But as things stand, each IDE drives me up a wall, making Clojure programming far less pleasurable and productive than it should be. Looking back over the above comments, it looks like my major checklist points for an IDE are: 1. Reasonable set of editing features (indenting, formatting, paren matching) 2. An easy way to load all the relevant code and dependencies into a REPL. 3. An easy way to make the REPL obey the -server flag, and use the proper version of Clojure for a given project. 4. A way to come back to where I left off with a given project. 5. A way to compile projects for standalone use. 6. A way to debug and profile code. Anyone have anything working on Windows that fits this list? -- 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