我正在開發一個帶有自定義文本編輯器的eclipse插件,爲此我想提供語法高亮顯示。因此我實施了我自己的RuleBasedPartitionScanner
和各自的SourceViewerConfiguration
。
一切工作正常,當我不亂用PartitionScanner的defaultReturnToken,但是當我嘗試設置默認defaultReturnToken語法突出顯示消失。setDefaultReturnToken使語法突出顯示
我PartitionScanner:
public class SQFPartitionScanner extends RuleBasedPartitionScanner {
public static final String SQF_COMMENT = "__sqf_Comment";
public static final String SQF_CODE = "__sqf_Code";
public SQFPartitionScanner() {
IToken comment = new Token(SQF_COMMENT);
IToken code = new Token(SQF_CODE);
IPredicateRule[] rules = {
//rule for multiLine comments
new MultiLineRule("/*", "*/", comment),
//rule for singleLine comments
new EndOfLineRule("//", comment)
};
this.setPredicateRules(rules);
this.setDefaultReturnToken(code);
}
}
本作的製作令牌不再類型IDocument.DEFAULT_CONTENT_TYPE
但不是SQFPartitioScanner.CODE
型我改變了我的SourceViewerConfiguration
爲其次(我只是改變了getPresentationReconciler()
- 方法):
public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) {
PresentationReconciler reconciler = new PresentationReconciler();
DefaultDamagerRepairer dr = new DefaultDamagerRepairer(this.getKeywordScanner());
// reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
// reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
reconciler.setDamager(dr, SQFPartitionScanner.SQF_CODE);
reconciler.setRepairer(dr, SQFPartitionScanner.SQF_CODE);
return reconciler;
}
還有什麼我不得不改變語法突出顯示使用defaultReturnToken設置爲SQFPartitionScanner.SQF_CODE
?
編輯:
當我取消註釋行
// reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
// reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
和評論
reconciler.setDamager(dr, SQFPartitionScanner.SQF_CODE);
reconciler.setRepairer(dr, SQFPartitionScanner.SQF_CODE);
我仍然沒有得到語法高亮。
正因爲如此,我懷疑的是,默認的令牌不正確創建,因爲很明顯它是IDocument.DEFAULT_CONTENT_TYPE
類型不再,但它不是SQFPartitionScanner.SQF_CODE
類型既不
當我取消註釋這些行時,仍然沒有語法突出顯示再次出現......即使當我評論兩條線時,我將損傷器和修理器設置爲'SQFPartitionScanner.SQF_CODE'類型 – Raven
所以我的假設是錯誤的(再次) 。您是否確定使用已添加的類型修改了'SourceViewerConfiguration'中的'getConfiguredContentTypes()'? –
@Raven,我用一個新建議編輯了我的答案。 –