-
Notifications
You must be signed in to change notification settings - Fork 50
Roadmap
Planned features and functionality for Counterclockwise fall into several areas.
A good editor is often nice to have. I believe with LISP variants, its a must-have. The parenthesis have to all but disappear to the developer. Since Clojure lives in the world of Java and IncredibilyRidiculousLongClassAndMethodNames, JDT features are also must-haves. In short, I've got to make an editor with the power of Emacs that hooks into the JDT! Easy, right? Top priority features:
Basic syntax highlighting- Basic "problems" (syntax error) highlighting
- Paren-awareness
Auto-balancing- Navigation, selection, evaluation shortcuts
Goto Matching Bracket (M1+M2+P aka Ctrl+Shift+P in win32). Works with (), {}, .mdGoto Start of current or Previous toplevel list (M1+M2+E aka Ctrl+Shift+E)Goto End of current or Next toplevel list (M1+M2+A aka Ctrl+Shift+A)- keys for emacs 'mode' (e.g. replace Shift with Alt(Meta)
- Formatting
- Java-awareness
- Auto-complete (Shift-space) context awareness of java members.
- Jump to declaration (F3)
- Outline (Ctrl-O) and type hierarchy (Ctrl-T)
- Fix import action (Ctrl-Shift-O)
- Bonus points
- Refactoring?
- Check java names against classpath
Right now, the launcher only runs a single clojure file into the same JVM that is running the Eclipse IDE. This needs more work, we really need several launchers:
- Add a launch shortcut to run in standalone REPL.
- Run configuration for Clojure w/configurable main entry point, uses JDT
.classpath
and some of the launch configuration tab sets. - What would it take to integrate Eclipse debug support?
Several scenarios which need to be addressed.
Set up a classpath on a Clojure project in Eclipse, add some jars, add some Clojure files and run.
Export a working Clojure project to a directory or JAR that can run standlone.
(Absolutely required for self-hosting Counterclockwise). Export a Clojure project to a JAR, with the following rules:
- Use PDE manifest/plugin editor, or reuse as much as possible.
- Classes defined with
gen-class
could be compiled into class files and added to the bundle's classpath. - All clj code gets bundled as resources.
- A bundle activator could evaluate bundled clj code on startup. Perhaps it could even dynamically add generated classes to the classpath?
I need to learn more about how compiled Clojure works before this becomes clear.
I would like Clojure to be self-hosting at some point -- write the plugin itself in Clojure. I am not going to attempt this until I have a decent (though maybe not complete) editing environment and rock-solid Clojure builder support. My reasons for this are several:
- Right now, I believe development of an Eclipse plugin for Clojure will be faster in Java because I need to integrate heavily with the Eclipse platform. Of course, by developing this plugin, I hope to tip the balance in favor of Clojure.
- I've never done JDT integration before or added a new language to Eclipse, and I'm thinking it'll be easier to get help on Eclipse newsgroups when I post Java code.
- Once an initial Java version is working well enough, opportunities to leverage Clojure will present themselves. Looking at the Scala plugin, I see a similar pattern of development.