Страница 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 - и сразу же

Код: Выделить всё

token.value[lookaheadIdx] := CHR(char32);
Интересное кино

Re: Копаем подсветку синтаксиса

Добавлено: 23.04.20 03:28
БудДен
Но ведь ORD(CHR(1050)) = 26!

Ай, как не стыдно. Завожу багу о том, чтобы при таких вещах происходило исключение.

В общем, дошёл до операции сравнения, когда один аргумент - это строка из CHAR-ов, а другой - массив из UCS32.Char - это, конечно, надо делать уже не ночью.

Re: Копаем подсветку синтаксиса

Добавлено: 25.04.20 17:45
БудДен
Исправил где-то тут https://gitlab.com/budden/jaos/-/commit ... 11af086e0c

Re: Копаем подсветку синтаксиса

Добавлено: 25.05.20 18:16
БудДен
Есть команда SyntaxHighlighter.Highlight. Я подправил её, чтобы она могла преобразовывать файл в файл и так раскрасчик слегка отвязывается от IDE. Перегрузить конфигурацию можно с помощью SyntaxHighlighter.Open.