我正在寻找现代文本编辑器的设计\架构指导。
现代文本编辑器意味着:
- 它支持语法高亮
- 它具有自动完成功能(类似于 IntelliSense)
- 它具有高级导航功能(增量搜索等)
以下属性将是一个加号:
- 以托管语言(Java、任何 .NET 语言)实现
- 模块化架构
- 插件支持
我对文本编辑器相关的设计\架构文档\文章、开源项目的链接非常感兴趣。
我对一般建议、OOP/设计模式书籍广告不感兴趣。
目前我正在分析SharpDevelop 代码编辑器源代码。类似项目的链接将不胜感激。
我正在寻找现代文本编辑器的设计\架构指导。
现代文本编辑器意味着:
以下属性将是一个加号:
我对文本编辑器相关的设计\架构文档\文章、开源项目的链接非常感兴趣。
我对一般建议、OOP/设计模式书籍广告不感兴趣。
目前我正在分析SharpDevelop 代码编辑器源代码。类似项目的链接将不胜感激。
最终的文本编辑器当然是 emacs。我发现The Craft of Text Editing 或 Emacs for the Modern World是编写编辑器基础知识的优秀自学指南。这些示例都是用普通的旧 C 语言编写的,文本可能看起来有些过时(它是 1991 年的),但基本思想仍然有效,并且您完全理解编辑器为什么会这样工作。
SharpDevelop的编辑器不错,也是开源的。
基于 Java 的编辑器“jEdit”是文本编辑器体系结构的一个很好的例子,具有插件支持、强大的用户社区和良好的抽象。
您可以查看xacc.ide
您还可以查看Scintilla的源代码。
它可能不是您想要的,它基于 Mozilla,但为了完整起见:
Open Komodo是 ActiveState 的一项倡议,旨在创建一个用于构建开发人员环境的开源平台。
你看过vim吗?它支持自动补全、语法高亮、增量搜索、集成构建等。它是模块化的,并且它的许多更高级的功能都是作为插件实现的,这些插件可以随它一起提供,也可以单独找到(例如,svn 集成、代码索引) cscope/ctags,通过 ssh 进行透明读/写)。
它有用于用多种语言(例如,python、ruby、perl)编写插件的 api,以及它自己的扩展语言('vimscript')。
我不知道他们在高级架构文档方面有什么,但是有一个活跃的社区和一个开发人员邮件列表,如果您开始挖掘源代码,应该能够回答有关它如何工作的具体问题。