构建基于 CDT 的编辑器,第 5 部分: 将 PDOM 用于代码完成
2009-12-19 00:00:00 来源:WEB开发网代码完成概述
图 1 恰恰展示了我喜爱 CDT 的主要原因之一。使用 C++ 类时,我不需要记住每一个成员方法和成员变量。只需键入类名和一个点,CDT 就会给出一个列表以供选择。单击 Enter,它就会输入我的选择。如果键入了名称或关键字的一部分,按下 Ctrl+Space 键会帮我补全。您可以说代码完成弱化了编码过程,但我更愿意认为它为我节省了宝贵的脑细胞,让我可以做更重要的事,如 Sudoku。
图 1. 代码完成的效果
确切地说,代码完成是内容辅助 这一大标题下的两项功能之一。第二项功能叫作上下文信息,它就如同编辑过程中出现的提示。这两项功能执行相似的任务:当用户输入特定的字符序列时提供文本信息。CDT 不用上下文信息,因而在本文中我将集中介绍代码完成。
代码完成为用户节省了时间和精力,但添加这项功能却需在开发上做出相当的努力。不仅需要创建建议列表,还需要搜索解析器的抽象语法树(AST)来确定要列出哪个建议。本文详细描述了这两点,并介绍了如何用自己的建议定制 CDT 代码完成。这样做将 CEditor 和 PDOM 解析器绑定到了一起,所以很好地总结了本系列。
代码完成过程包含四个主要步骤:
激活代码完成
查找 ASTCompletionNode
生成代码完成建议
显示代码完成建议
像往常一样,我把代码完成添加到了精简版 C/C++ 开发工具(BBCDT)中。
激活代码完成
首先,介绍编辑器如何得知何时需执行代码完成。CViewer 类执行 CDT 编辑器的事件处理,由于其功能众多,因而其配置绑定在一个单独的对象 CSourceViewerConfiguration 中。在 第 2 部分 中,我解释了这种做法如何实现文本显示和一致。它也创建了编辑器的 ContentAssistant,其主要负责管理代码完成。
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››构建Android平台Google Map应用
- ››基于Windows Azure的云计算应用设计
- ››构建WinForm 通用速选(全选、反选、清空)组件
- ››基于AES算法实现对数据的加密
- ››基于SoPC目标板Flash编程设计的创建及应用
- ››基于SolidWarks齿轮机构的运动分析与仿真
- ››基于Windwos Server 2008故障转移群
- ››基于JavaScript的REST客户端框架
- ››基于JavaScript和CSS的Web图表框架横向对比
- ››基于JQuery地区三级联动列表
更多精彩
赞助商链接