'Text' API и ANSI escape sequences

Место, где разработчики плагинов могут поделиться своим опытом.
awson
Posts: 24
Joined: Fri 11 Sep, 2009 13:22

'Text' API и ANSI escape sequences

Postby awson » Mon 07 Sep, 2015 10:34

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

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

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

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

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

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

'Text' API и ANSI escape sequences

Postby John Doe » Mon 07 Sep, 2015 11:53

Ansicon может помочь

awson
Posts: 24
Joined: Fri 11 Sep, 2009 13:22

'Text' API и ANSI escape sequences

Postby awson » Mon 07 Sep, 2015 12:38

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

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

User avatar
HaRT
Moderator
Posts: 7917
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 64 times
Been thanked: 94 times

'Text' API и ANSI escape sequences

Postby HaRT » Mon 07 Sep, 2015 12:40

awson wrote:Source of the post преполагал заимствовать интерпретатор оттуда
Я так понял, что предлагалось попробовать загрузить ansicon в консоль Фара, чтобы отпала необходимость в обработке ESC-последовательностей Вашим кодом.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

'Text' API и ANSI escape sequences

Postby John Doe » Mon 07 Sep, 2015 12:54

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

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

awson
Posts: 24
Joined: Fri 11 Sep, 2009 13:22

'Text' API и ANSI escape sequences

Postby awson » Mon 07 Sep, 2015 15:27

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

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

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

'Text' API и ANSI escape sequences

Postby John Doe » Mon 07 Sep, 2015 15:41

awson wrote:Source of the post Использование конему не помогает.
Да ладно
https://conemu.github.io/ru/AnsiEscapeCodes.html

awson
Posts: 24
Joined: Fri 11 Sep, 2009 13:22

'Text' API и ANSI escape sequences

Postby awson » Mon 07 Sep, 2015 16:22

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

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

awson
Posts: 24
Joined: Fri 11 Sep, 2009 13:22

'Text' API и ANSI escape sequences

Postby awson » Mon 07 Sep, 2015 16:46

Кстати, еще вопрос. А может засада быть в том, что плагин юзает ASCII а не UNICODE API?

awson
Posts: 24
Joined: Fri 11 Sep, 2009 13:22

'Text' API и ANSI escape sequences

Postby awson » Mon 07 Sep, 2015 19:01

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

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

awson
Posts: 24
Joined: Fri 11 Sep, 2009 13:22

'Text' API и ANSI escape sequences

Postby awson » Tue 08 Sep, 2015 13:03

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


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

Who is online

Users browsing this forum: No registered users and 3 guests