TextEditor原理分析笔记

Editor的语法着色原理:Eclipse使用damage ,repair和reconcile模型来实现语法着色功能,当用户每次修改了document,Reconciler就会去计算文档中哪些可视区域是无效的以及如何去repair之:这里的damage表示需要重新加以显示的文本,repair则表示重新进行显示的方式,而reconcile则是这个重新显示的过程.为了定制damage和repair,需要给TextEditor配置自定义的SourceViewerConfigration,TextEditor中的主要组成部分叫SourceViewer,默认情况下SourceViewer不支持语法着色功能,而通过扩展SourceViewerConfiguration就可以对SourceViewer进行定制,通过复写SourceViewerConfiguration的getPresentationReconciler()方法就可以定制我们自己的Reconciler,定制Reconciler主要是给其配置相关的Damager和Repairer,而这两个东东又会跟RuleScanner关联:

java 代码
  1. PresentationReconciler reconciler = new PresentationReconciler();   
  2. DefaultDamagerRepairer dr = new DefaultDamagerRepairer (getTagScanner());   
  3. reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);   
  4. reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);  


RuleScanner定义了各种用于区分各种Token的规则以及相关的TextAttribute(颜色属性就定义在里面)

内容辅助功能的实现:需要改写SourceViewerConfiguration.getContentAssistance()方法,而自动完成行为的设置通过定义不同的CompletionProcessor来实现, CompletionProcessor需要复写getCompletionProposalAutoActivationCharacters()来告诉编辑器在输入何种内容时给出自动提示的内容,同时还需要实现computeCompletionProposals()方法来告诉要显示的提示内容(completion proposal)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值