UPDATE
I've decided to go with Clojure for now.
LispDev isn't ready, and Eclipse/cusp wasn't stable enough for me to feel comfortable.
As for Clojure, after a long, very frustrating, very annoying process trying to get Eclipse/CCW, Netbeans/Enclojure and IntelliJ/La Clojure working, I finally got Eclipse/CCW working. The rest are still in mostly-broken states.
(If I get around to it, I'll document what it took for me to get Eclipse/CCW working.)
So for now, I'm going to use that. I may dip back into CL, and check out LispWorks and AllegroLisp's free versions, but Clojure feels like a more natural step for me from working within the Microsoft CLR environment.
Thanks everyone for the help.
Original Question
I'm a C# developer very familiar with Visual Studio (with Resharper).
I'm new to Lisps. I've taken an interest in both Common Lisp and Clojure recently, and found plenty of good material on both of them.
I've tried Emacs + Slime, but it feels like a very backwards, dated solution. I have no doubts about its power, but it's usability is nothing like what I'm used to. I don't want to struggle with an IDE in addition to the language.
There are Eclipse plugins for both Clojure and CL. There's also a couple more options I've seen for Clojure. Since I'm not a Java dev, I know nothing about these IDEs.
Is Eclipse a good place to start? Are there other good options?
EDIT:
Here's the features I'm used to:
- Syntax highlighting and autoindentation (everyone has this, so it's a moot point)
- Autocomplete of functions and variable names
- Realtime displays of all function overloads and parameters and the ability to arrow up/down through the list while typing in parameters
- Syntax suggestions for code improvement, with the ability to do them for you ("use a const", "convert to LINQ expression (FP)", "variable will never be assigned to", "variable will never be used", "variable could be null", "function will never be used", etc.)
- Extract Method/Function refactoring: select a block of text, and it can be extracted into a new function
- Create Variable Refactoring: select a block of text and create a variable (e.g., a let)
- Rename Refactoring: rename a function or variable declaration and all other functions using it will be updated (automated search/replace)
- Go to Definition of a method/function, variable
- Find Usages/References to a particular method/function, variable
- Integrated folder-based project management tools and build tools
- "Move class to new file" which creates a new file based on the class name, and containing all of its methods
- "Rename file based on class type" which renames the file if you change the class name
- F9/Click to the left of the line to add/remove breakpoints
- F10/F11 to step into or over code when debugging, along with an arrow and highlighting to show which code is currently executing (step into a func execution, or just execute it here)
Most everything is available in a right-click context menu, or as a hovering combobox or textbox as you're typing.
I'm not saying emacs/slime can't do that, but if it does, it doesn't use anything similar in terms of usability techniques.
defclass
every (order of magnitude) 1000 lines, while in C# I seeclass
every 100 lines. – Urena