Skip to content
Laurent Petit edited this page Mar 20, 2015 · 1 revision

Counterclockwise roadmap

Planned features and functionality for Counterclockwise fall into several areas.

Editing

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 (), {}, .md
      • Goto 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

Launchers

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?

Builders

Several scenarios which need to be addressed.

Basic Execution

Set up a classpath on a Clojure project in Eclipse, add some jars, add some Clojure files and run.

Basic (Standalone) Deployment

Export a working Clojure project to a directory or JAR that can run standlone.

OSGi

(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.

Self-hosting

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.