Я разрабатываю плагин eclipse с настраиваемым текстовым редактором, для которого я хочу предоставить подсветку синтаксиса. Поэтому я внедрил свой собственный RuleBasedPartitionScanner
и соответствующий SourceViewerConfiguration
.
Все работает нормально, когда я не вмешиваюсь в defaultReturnToken PartitionScanner, но когда я пытаюсь установить значение по умолчанию, значение по умолчаниюReturnToken подсветка синтаксиса исчезает.setDefaultReturnToken messes up подсветка синтаксиса
Мой 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
?
EDIT:
Когда я раскомментировать строки
// 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
Так что мои предположения были неправильными (опять же) , Вы убедились, что вы изменили 'getConfiguredContentTypes()' в 'SourceViewerConfiguration' на типы, которые вы добавили? –
@Raven, я отредактировал свой ответ с новым предложением. –