views:

70

answers:

3

Let's say I have a super-wonderful new programming language, and I want there to be an IDE for it. What IDE platform/framework could I use to get this done efficiently? I mean things like:

  • Collection of files in a project, searching them, tabbed/split editors etc. — the basics.
  • Syntax highlighting and auto-indent/reformatting.
  • Providing the user interface for code completion — hit tab, get a list (I'll have to implement the necessary partial evaluation myself (it's a dynamic language)). This is the feature I'm most wishing for.
    • Built-in parser framework which is good at recovering from the sort of syntax errors occurring in code that is in the middle of being edited would be helpful.
  • In-editor annotation of syntax/runtime error locations fed back from the language runtime.
  • REPL (interactive evaluator) interaction with the same completion as in the editor.

This system should be Linux/Mac/Windows cross-platform (in that priority order). Being implemented in Java (or rather, accepting language plugins written in Java) is possibly useful, but anything else is worth a try too.

Please include some information about what it's like to add language support for your suggestion: what the APIs are like, how much code needs to be written to add support for the features I've mentioned above, what generic facilities (e.g. parser) it provides, and so on. I already know vaguely that Eclipse, IntelliJ, Emacs, etc. exist; tell me how good they are for this purpose!

+1  A: 

Emacs

For examples look at SLIME

Yann Ramin
SLIME pretty much implements all the IDE-functionality itself. I'm looking for something that has more generic support. That said, Emacs is popular enough that adding support for Emacs is worthwhile. I don't care for it myself, though — the conventions of Emacs aren't to my taste, though I do use it for things which it is uniquely good at (such as SLIME).
Kevin Reid
+1  A: 

I really like IntelliJ IDEA and the its plataform is now open covered by Apache License 2.0, take a look at the page about IntelliJ Plataform.

Basically the most important feature of IDEA is it's fully usable only by keyboard, and all the shortcuts are very smart. I don't how much of it is already in the plataform, but I believe the basics are there.

More Resources

Since the plataform is the base for IDEA I'll put here resources for IDEA, but I believe it works with no problem if you which to build a new IDE using IntelliJ Plataform and it indeed works for IDEA Community Edition.

Felipe Cypriano
Could you add some information about what it's like to write a language plugin for IntelliJ?
Kevin Reid
I haven't developed a plugin myself so I can't say exactly how do you do it. But, I've added more resources to look at. And as an IDEA user I can tell you that develop for a language that is supported by a plugin in IDEA is as good as for Java which is built-int.
Felipe Cypriano
+1  A: 

Eclipse is the dominant platform for building custom IDE. Some vendors provide an entire customized eclipse distribution, but I greatly prefer when they provide plugins that can be installed in any eclipse distribution.

Eclipse isn't the only game in town, Netbeans has been picking up a lot of momentum and already has several plugins for dynamic languages.

mikerobi
Could you add some information about what it's like to write a language plugin for Eclipse?
Kevin Reid