'Text' API и ANSI escape sequences
'Text' API и ANSI escape sequences
Интересуюсь следующим: нет ли в экосистеме Far'а какого-нибудь готового кода, интерпретирующего консольные ANSI escape последовательности и формирующие соответствующие FarColor структуры для использования с Text API?
Предыстория: пользуюсь сильно модифицированным плагином makeit -- выкинул всё что относится к regexp'ам, все парсеры вывода интересующих компиляторов написал руками на С++. В какой-то момент один из них начал раскрашивать вывод с помощью ANSI-последовательностей. Плагин тупо рисует его с помощью API Text, и, соответственно, ничего не раскрашивает, а просто выдает сами последовательности на экран.
Насколько я понимаю, нужно фильтровать эти последовательности, интерпретировать их и выставлять соответствующие цвета используя параметр Color функции Text.
Вопросы:
- нет ли уже готового кода (в каком-нибудь другом плагине, например), который так или иначе это делает?
- если нет, то верно ли то что я написал выше (использование параметра Color функции Text)?
- если неверно, то как лучше поступать?
- если верно, то почему параметр Color -- указатель на *массив* структур? Его размер равен длине строки и каждый его элемент соответствует цвету соответствующего символа, или что?
Спасибо за внимание.
Предыстория: пользуюсь сильно модифицированным плагином makeit -- выкинул всё что относится к regexp'ам, все парсеры вывода интересующих компиляторов написал руками на С++. В какой-то момент один из них начал раскрашивать вывод с помощью ANSI-последовательностей. Плагин тупо рисует его с помощью API Text, и, соответственно, ничего не раскрашивает, а просто выдает сами последовательности на экран.
Насколько я понимаю, нужно фильтровать эти последовательности, интерпретировать их и выставлять соответствующие цвета используя параметр Color функции Text.
Вопросы:
- нет ли уже готового кода (в каком-нибудь другом плагине, например), который так или иначе это делает?
- если нет, то верно ли то что я написал выше (использование параметра Color функции Text)?
- если неверно, то как лучше поступать?
- если верно, то почему параметр Color -- указатель на *массив* структур? Его размер равен длине строки и каждый его элемент соответствует цвету соответствующего символа, или что?
Спасибо за внимание.
'Text' API и ANSI escape sequences
Я видел ansicon и преполагал заимствовать интерпретатор оттуда если буду делать сам.
А нащет использования Text API, правильно я понимаю что элемент вектора Color -- это цвет соответствующего элемента строки?
А нащет использования Text API, правильно я понимаю что элемент вектора Color -- это цвет соответствующего элемента строки?
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
'Text' API и ANSI escape sequences
Я так понял, что предлагалось попробовать загрузить ansicon в консоль Фара, чтобы отпала необходимость в обработке ESC-последовательностей Вашим кодом.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- John Doe
- Бюрократ
- Posts: 13861
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
'Text' API и ANSI escape sequences
Гугл много чего знает.
Например https://github.com/mattn/ansicolor-w32.c
И кстати конему умеет выводить.
Например https://github.com/mattn/ansicolor-w32.c
И кстати конему умеет выводить.
'Text' API и ANSI escape sequences
Я пробовал. Не работает.
По ссылке я вижу только, что конему умеет раскрашивать текст который показывает в *своей* консоли. Если дергать Text из plugins API фара, получается ровно то же что и безо всякого конему. Это -- реальность, данная мне в ощущениях.
По ссылке я вижу только, что конему умеет раскрашивать текст который показывает в *своей* консоли. Если дергать Text из plugins API фара, получается ровно то же что и безо всякого конему. Это -- реальность, данная мне в ощущениях.
'Text' API и ANSI escape sequences
Посмотрел исходники. Указатель на FarColor это указатель ни на какой не массив структур, а указатель на единственную структуру. То есть весь текст выводится тем цветом, который описан в этой структуре.
В энциклопедии лажа написана. Нужно поправить.
В энциклопедии лажа написана. Нужно поправить.