'Text' API и ANSI escape sequences

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
awson
Posts: 61
Joined: Fri 11 Sep, 2009 13:22
Has thanked: 1 time
Been thanked: 1 time

'Text' API и ANSI escape sequences

Post by awson »

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

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

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

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

Спасибо за внимание.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

'Text' API и ANSI escape sequences

Post by John Doe »

Ansicon может помочь
awson
Posts: 61
Joined: Fri 11 Sep, 2009 13:22
Has thanked: 1 time
Been thanked: 1 time

'Text' API и ANSI escape sequences

Post by awson »

Я видел ansicon и преполагал заимствовать интерпретатор оттуда если буду делать сам.

А нащет использования Text API, правильно я понимаю что элемент вектора Color -- это цвет соответствующего элемента строки?
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

'Text' API и ANSI escape sequences

Post by HaRT »

awson wrote: преполагал заимствовать интерпретатор оттуда
Я так понял, что предлагалось попробовать загрузить ansicon в консоль Фара, чтобы отпала необходимость в обработке ESC-последовательностей Вашим кодом.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

'Text' API и ANSI escape sequences

Post by John Doe »

Гугл много чего знает.
Например https://github.com/mattn/ansicolor-w32.c

И кстати конему умеет выводить.
awson
Posts: 61
Joined: Fri 11 Sep, 2009 13:22
Has thanked: 1 time
Been thanked: 1 time

'Text' API и ANSI escape sequences

Post by awson »

Если я правильно понимаю намеки, Text при выводе на экран сам использует виндовый консольный API?

P.S. Использование конему не помогает.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

'Text' API и ANSI escape sequences

Post by John Doe »

awson wrote: Использование конему не помогает.
Да ладно
https://conemu.github.io/ru/AnsiEscapeCodes.html
awson
Posts: 61
Joined: Fri 11 Sep, 2009 13:22
Has thanked: 1 time
Been thanked: 1 time

'Text' API и ANSI escape sequences

Post by awson »

Я пробовал. Не работает.

По ссылке я вижу только, что конему умеет раскрашивать текст который показывает в *своей* консоли. Если дергать Text из plugins API фара, получается ровно то же что и безо всякого конему. Это -- реальность, данная мне в ощущениях.
awson
Posts: 61
Joined: Fri 11 Sep, 2009 13:22
Has thanked: 1 time
Been thanked: 1 time

'Text' API и ANSI escape sequences

Post by awson »

Кстати, еще вопрос. А может засада быть в том, что плагин юзает ASCII а не UNICODE API?
awson
Posts: 61
Joined: Fri 11 Sep, 2009 13:22
Has thanked: 1 time
Been thanked: 1 time

'Text' API и ANSI escape sequences

Post by awson »

Посмотрел исходники. Указатель на FarColor это указатель ни на какой не массив структур, а указатель на единственную структуру. То есть весь текст выводится тем цветом, который описан в этой структуре.

В энциклопедии лажа написана. Нужно поправить.
awson
Posts: 61
Joined: Fri 11 Sep, 2009 13:22
Has thanked: 1 time
Been thanked: 1 time

'Text' API и ANSI escape sequences

Post by awson »

Портировал плагин на последнюю версию UNICODE API -- без толку. Не работат.
Post Reply

Return to “Разработка плагинов”