views:

864

answers:

8

I'm looking for design\architectual guidance for modern text editors.

Modern text editor means that:

  • It has support for syntax highlighting
  • It has auto-completion (something like IntelliSense)
  • It has advanced navigation capabilities (incremental search, etc.)

Following properties will be a plus:

  • Implemented in managed language (Java, any .NET language)
  • Modular architecutre
  • Add-in support

I'm very interested in text editor related design\architecure documents\articles, links to open source projects.

I'm not interested in general recommendations, OOP/design patterns books advertisement.

Currently I'm analyzing SharpDevelop code editor source code. Links to similar projects will be appreciated.

+3  A: 

The editor of SharpDevelop is good and it's open source too.

John
Actually I'm looking at SharpDevelop, for some reason I ofter call it iTextSharp :-) Thanks for comment, anyway.
aku
+2  A: 

You could also look at the source code for Scintilla.

Galwegian
A: 

It's probably not what you're looking for, it's based on Mozilla, but for completeness sake:

Open Komodo is an initiative by ActiveState to create an open source platform for building developer environments.

Sam Hasler
A: 

This is an in-depth text of how to implement a text editor:

http://www.catch22.net/tuts/neatpad

Thanks for the link, but you missed the point. I'm interested in *modern* *sophisticated* features not a guidance how to handle win32 events and move cursor :)
aku
A: 

Have you looked at vim? It supports autocompletion, syntax highlighting, incremental search, integrated building, etc, etc. It is modular and many of its more advanced features are implemented as plugins that either ship with it or can be found separately (e.g., svn integration, code indexing with cscope/ctags, transparent reading/writing over ssh).

It has apis for writing plugins in several langauges (e.g., python, ruby, perl) as well as its own extension language ('vimscript').

I don't know what they have in terms of high-level architecture documentation, but there is an active community and a developer mailing list that should be able to answer specific questions about how it works if you start digging through the source.

indentation
+3  A: 

The Java-based editor "jEdit", is a good example of text editor architecture, complete with plugin support, a strong user community, and good abstractions.

mrjbq7
+3  A: 

The ultimate text editor is, of course, emacs. I found The Craft of Text Editing, or, Emacs for the Modern World to be an excellent self-study guide for the basics of writing an editor. The examples are all in plain old C, and the text might look a bit dated (it is from 1991), but the basic ideas are still valid, and you thoroughly understand why the editor works the way it does.

mfx
A: 

You can check out xacc.ide

ligaz