我正在为 Eclipse 制作自己的 powershell 编辑器插件。目前编辑器有一个很好的代码高亮。但是为了能够制作一个好的大纲视图和格式,我需要一个好的文档分区。所以我创建了分区扫描器(扩展 RuleBasedPartitionScanner),目前只有两条规则:
IToken psComment = new Token(PS_COMMENT);
IToken psFunction = new Token(PS_FUNCTION);
IPredicateRule[] rules = new IPredicateRule[2];
rules[0] = new EndOfLineRule("#", psComment);
rules[1] = new SingleLineRule("function", "{", psFunction);
setPredicateRules(rules);
我已经使用 FastPartitioner 使用我的文档创建了它,其中包含所需的所有内容类型(IDocument.DEFAULT_CONTENT_TYPE、PowershellPartitionScanner.PS_FUNCTION、PowershellPartitionScanner.PS_COMMENT)
为了突出显示,我创建了一个扫描仪(扩展了 RuleBasedScanner)。
在配置类中,我重写了 getPresentrationReconciler:
DefaultDamagerRepairer dr = new DefaultDamagerRepairer(
new PowershellScanner());
reconciler.setDamager(dr, PowershellPartitionScanner.PS_FUNCTION);
reconciler.setRepairer(dr, PowershellPartitionScanner.PS_FUNCTION);
dr = new DefaultDamagerRepairer(new PowershellScanner());
reconciler.setDamager(dr, PowershellPartitionScanner.PS_COMMENT);
reconciler.setRepairer(dr, PowershellPartitionScanner.PS_COMMENT);
dr = new DefaultDamagerRepairer(new PowershellScanner());
reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
return reconciler;
我已经覆盖:
@Override
public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) {
return new String[] { IDocument.DEFAULT_CONTENT_TYPE,
PowershellPartitionScanner.PS_COMMENT,
PowershellPartitionScanner.PS_FUNCTION };
}
我目前对我的文档进行了很好的分区。但是没有代码突出显示。一切都是黑色的。
如果我没有对文档进行分区,则突出显示有效。
我错过了什么吗?
谢谢