构建基于 CDT 的编辑器,第 2 部分: 在 CDT 中显示文本
2006-12-04 16:41
501 查看
本文是 “构建基于 CDT 的编辑器” 系列中的第 2 部分,介绍了 Eclipse C/C++ 开发工具(CDT)中的文本显示功能。文本显示是 CDT 的一个重要优势。清晰明了且颜色多样的显示使得阅读及在代码间导航变得简单。理解其运行机制不论对于您理解 CDT 代码还是构建自己的功能完整的源码编辑器都是至关重要的。另外,实现 CDT 文本显示的机制同样适用于另一个更为重要的功能:自动解析。
CDT 文本显示简介
对于键入的每一个字符,CDT 编辑器都会执行繁多的任务。它查找对文档分区的改变并激活进一步分割文本的规则。如果该字符完成了一个函数,编辑器允许函数折叠以最小化文本空间。如果该字符完成了一个单词,编辑器决定是否将该词添加到索引中。另外,编辑器还确定该字符是否适合于可接受的 C/C++ 文档结构。如果适合,编辑器更新其内部文档对象模型(Document Object Model, DOM)。如果不适合,编辑器通过注释来提供错误报告。
涵盖 CDT 事件处理的所有方面已超出了本文的范围,所以我们将只关注于语法样式化。我们将解释该编辑器如何基于源代码的结构对文本颜色及字体样式进行改变。这不仅包含了该编辑器如何对键入做出反应,还包含了在第 3 部分讨论 CDT 解析中也要用到的对象和过程。
为了在这里提供相同的文本显示,我已经更新了 第 1 部分 中的 Bare Bones C/C++ 开发工具(BBCDT)。新类包含在 org.bbcdt.dworks.internal.ui.text 和 org.bbcdt.dworks.core.parser 包中。如果在 BBCDT 源文件中键入有效的代码,将看到在完整的 CDT 中常见的语法样式(见图 1)。参见 下载,以重新检索该代码。
。。。。。。
点击此处查看全文
CDT 文本显示简介
对于键入的每一个字符,CDT 编辑器都会执行繁多的任务。它查找对文档分区的改变并激活进一步分割文本的规则。如果该字符完成了一个函数,编辑器允许函数折叠以最小化文本空间。如果该字符完成了一个单词,编辑器决定是否将该词添加到索引中。另外,编辑器还确定该字符是否适合于可接受的 C/C++ 文档结构。如果适合,编辑器更新其内部文档对象模型(Document Object Model, DOM)。如果不适合,编辑器通过注释来提供错误报告。
涵盖 CDT 事件处理的所有方面已超出了本文的范围,所以我们将只关注于语法样式化。我们将解释该编辑器如何基于源代码的结构对文本颜色及字体样式进行改变。这不仅包含了该编辑器如何对键入做出反应,还包含了在第 3 部分讨论 CDT 解析中也要用到的对象和过程。
为了在这里提供相同的文本显示,我已经更新了 第 1 部分 中的 Bare Bones C/C++ 开发工具(BBCDT)。新类包含在 org.bbcdt.dworks.internal.ui.text 和 org.bbcdt.dworks.core.parser 包中。如果在 BBCDT 源文件中键入有效的代码,将看到在完整的 CDT 中常见的语法样式(见图 1)。参见 下载,以重新检索该代码。
。。。。。。
点击此处查看全文
相关文章推荐
- 构建基于 CDT 的编辑器系列
- [转]Android 和 iPhone 浏览器之战,第 2 部分: 为 iPhone 和 Android 构建基于浏览器的应用程序
- 《构建基于 CDT 的编辑器》系列链接
- 基于 JFace Text Framework 构建全功能代码编辑器: 第 9 部分:Template
- 面向 Java 开发人员的 Scala 指南:构建计算器,第 2 部分
- ESB 案例解析和项目实施经验分享,第 2 部分: 刚柔相济,构建企业联邦 ESB
- 基于MapWinGis的开发探索(三)--改善缩放、渲染、显示文本
- 构建基于通用导航器架构(CNF)的视图 第四部分:基于对象的操作(Object Contributions)
- 应用 Rational 工具简化基于 J2EE 的项目第 7 部分 :构建与演示
- CSS让文本只显示一行,超出部分隐藏或以三个点结束
- Spark 实战, 第 2 部分:使用 Kafka 和 Spark Streaming 构建实时数据处理系统
- java文章显示内容部分(将html转成纯文本)
- 使用 JSONP 实现跨域通信,第 2 部分: 使用 JSONP、jQuery 和 Yahoo! 查询语言构建 mashup
- UITextField的文本框部分文本以*的方式来显示
- PHP 框架,第 2 部分: 构建样例应用程序
- 如何实现:GridView 控件中显示的文本不自动换行,隐藏超出宽度部分wj-wangjun
- C++ 部分文件不在编辑器中显示
- 使用脚本编写 Vim 编辑器,第 2 部分: 用户定义函数
- 构建简单的 C++ 服务组件,第 2 部分: 通过服务组件体系结构使用 Python、Ruby 和 Web 服务
- 基于 JFace Text Framework 构建全功能代码编辑器