Страница 1 из 1
Копаем подсветку синтаксиса
Добавлено: 23.04.20 02:55
БудДен
В ней не работает "Тест" - от буквы Т становится её плохо. Так где же найти тварь и полечить её?
Пока что ясно, что раскраска называется "Oberon", а где этот оберон? Нашёл, что WMTextView ссылается на SyntaxHighlighter, а в нём слово "Oberon" упоминается. Ура! Класс, к-рый за это отвечает, вроде называется SyntaxHighlighter.Highlighter . Теперь должно быть легко.
Re: Копаем подсветку синтаксиса
Добавлено: 23.04.20 03:00
БудДен
Ого! Но потомков у класса нет. Я в шоке.
GetHighlighter(higlighterName)...
Парсится файл SyntaxHighlighter.XML... огого... И в нём-то есть Oberon и даже oberon.
Вот мы и нашли где оно описано... Не предвещает хорошего.
Re: Копаем подсветку синтаксиса
Добавлено: 23.04.20 03:02
БудДен
Они даже его периодически поддерживают.
Re: Копаем подсветку синтаксиса
Добавлено: 23.04.20 03:03
БудДен
И классно, что у мя в голове было запомнено, что особые строковые литералы были добавлены в 2013 году - так я и найду, где они менялись. Ура.
Re: Копаем подсветку синтаксиса
Добавлено: 23.04.20 03:09
БудДен
Код: Выделить всё
<Region
style="String" styleOpen="Bold" styleClose="Bold"
open='\"' close='"\' nesting="FALSE" multiline="TRUE"
/>
Избирательно для поиска слово multiline и так мы приходим к
Код: Выделить всё
highlighter.AddRegion(open, close, nesting, multiline, styleOpen, styleClose, styleContent);
Но это только парсер. А дальше что? Какой-то RegionDescriptor. Блин, парсер-то где?
Re: Копаем подсветку синтаксиса
Добавлено: 23.04.20 03:11
БудДен
О, случайно попался
MatchToken - и сразу же
Интересное кино
Re: Копаем подсветку синтаксиса
Добавлено: 23.04.20 03:28
БудДен
Но ведь ORD(CHR(1050)) = 26!
Ай, как не стыдно. Завожу багу о том, чтобы при таких вещах происходило исключение.
В общем, дошёл до операции сравнения, когда один аргумент - это строка из CHAR-ов, а другой - массив из UCS32.Char - это, конечно, надо делать уже не ночью.
Re: Копаем подсветку синтаксиса
Добавлено: 25.04.20 17:45
БудДен
Re: Копаем подсветку синтаксиса
Добавлено: 25.05.20 18:16
БудДен
Есть команда SyntaxHighlighter.Highlight. Я подправил её, чтобы она могла преобразовывать файл в файл и так раскрасчик слегка отвязывается от IDE. Перегрузить конфигурацию можно с помощью SyntaxHighlighter.Open.