Page 1 of 1

'Text' API и ANSI escape sequences

Posted: Mon 07 Sep, 2015 10:34
by awson
Интересуюсь следующим: нет ли в экосистеме Far'а какого-нибудь готового кода, интерпретирующего консольные ANSI escape последовательности и формирующие соответствующие FarColor структуры для использования с Text API?

Предыстория: пользуюсь сильно модифицированным плагином makeit -- выкинул всё что относится к regexp'ам, все парсеры вывода интересующих компиляторов написал руками на С++. В какой-то момент один из них начал раскрашивать вывод с помощью ANSI-последовательностей. Плагин тупо рисует его с помощью API Text, и, соответственно, ничего не раскрашивает, а просто выдает сами последовательности на экран.

Насколько я понимаю, нужно фильтровать эти последовательности, интерпретировать их и выставлять соответствующие цвета используя параметр Color функции Text.

Вопросы:
- нет ли уже готового кода (в каком-нибудь другом плагине, например), который так или иначе это делает?
- если нет, то верно ли то что я написал выше (использование параметра Color функции Text)?
- если неверно, то как лучше поступать?
- если верно, то почему параметр Color -- указатель на *массив* структур? Его размер равен длине строки и каждый его элемент соответствует цвету соответствующего символа, или что?

Спасибо за внимание.

'Text' API и ANSI escape sequences

Posted: Mon 07 Sep, 2015 11:53
by John Doe
Ansicon может помочь

'Text' API и ANSI escape sequences

Posted: Mon 07 Sep, 2015 12:38
by awson
Я видел ansicon и преполагал заимствовать интерпретатор оттуда если буду делать сам.

А нащет использования Text API, правильно я понимаю что элемент вектора Color -- это цвет соответствующего элемента строки?

'Text' API и ANSI escape sequences

Posted: Mon 07 Sep, 2015 12:40
by HaRT
awson wrote: преполагал заимствовать интерпретатор оттуда
Я так понял, что предлагалось попробовать загрузить ansicon в консоль Фара, чтобы отпала необходимость в обработке ESC-последовательностей Вашим кодом.

'Text' API и ANSI escape sequences

Posted: Mon 07 Sep, 2015 12:54
by John Doe
Гугл много чего знает.
Например https://github.com/mattn/ansicolor-w32.c

И кстати конему умеет выводить.

'Text' API и ANSI escape sequences

Posted: Mon 07 Sep, 2015 15:27
by awson
Если я правильно понимаю намеки, Text при выводе на экран сам использует виндовый консольный API?

P.S. Использование конему не помогает.

'Text' API и ANSI escape sequences

Posted: Mon 07 Sep, 2015 15:41
by John Doe
awson wrote: Использование конему не помогает.
Да ладно
https://conemu.github.io/ru/AnsiEscapeCodes.html

'Text' API и ANSI escape sequences

Posted: Mon 07 Sep, 2015 16:22
by awson
Я пробовал. Не работает.

По ссылке я вижу только, что конему умеет раскрашивать текст который показывает в *своей* консоли. Если дергать Text из plugins API фара, получается ровно то же что и безо всякого конему. Это -- реальность, данная мне в ощущениях.

'Text' API и ANSI escape sequences

Posted: Mon 07 Sep, 2015 16:46
by awson
Кстати, еще вопрос. А может засада быть в том, что плагин юзает ASCII а не UNICODE API?

'Text' API и ANSI escape sequences

Posted: Mon 07 Sep, 2015 19:01
by awson
Посмотрел исходники. Указатель на FarColor это указатель ни на какой не массив структур, а указатель на единственную структуру. То есть весь текст выводится тем цветом, который описан в этой структуре.

В энциклопедии лажа написана. Нужно поправить.

'Text' API и ANSI escape sequences

Posted: Tue 08 Sep, 2015 13:03
by awson
Портировал плагин на последнюю версию UNICODE API -- без толку. Не работат.