Раскраска CSV в редакторе (наподобие Rainbow CSV)

Здесь обсуждается всё, что касается макросов.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Раскраска CSV в редакторе (наподобие Rainbow CSV)

Post by zg »

John Doe wrote: Fri 16 Nov, 2018 11:56Как такую раскраску для csv через Colorer настроить?
можно без колорера, макросом (очень наколенный вариант, потом может нормально сделаю)


P.S.
zg wrote: Sat 17 Nov, 2018 17:05 я тут добавил нормальную реализацию, отдельный скрипт развивать не буду.
P.P.S. «Наколенный» вариант с поддержкой 3 разделителей и простым автоопределением
Last edited by HaRT on Thu 06 Aug, 2020 00:31, edited 2 times in total.
Reason: Добавлены цитата про нормальную реализацию и ссылка на вариант с поддержкой 3 разделителей
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by John Doe »

Работает если поля закавычены, на другие случаи видимо не рассчитано.
(В статье кстати приводится рабочий регексп).
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by zg »

John Doe wrote: Fri 16 Nov, 2018 16:17Работает если поля закавычены, на другие случаи видимо не рассчитано.
поправил.
John Doe wrote: Fri 16 Nov, 2018 16:17(В статье кстати приводится рабочий регексп).
я читал и видел, но в макросе регэкспы не используются.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Раскраска CSV в редакторе

Post by zg »

я тут добавил нормальную реализацию, отдельный скрипт развивать не буду.
stefanenko
Posts: 142
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 49 times
Been thanked: 7 times

Раскраска CSV в редакторе

Post by stefanenko »

zg wrote: Sat 17 Nov, 2018 17:05нормальную реализацию
А можно как то разделитель из региональных настроек взять?
Kirill
Posts: 263
Joined: Thu 04 Aug, 2005 10:27
Location: Kaliningrad
Has thanked: 3 times
Contact:

Раскраска CSV в редакторе

Post by Kirill »

Или списком - ";",",","Tab"
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Раскраска CSV в редакторе

Post by John Doe »

Kirill wrote: Mon 19 Nov, 2018 06:41 Или списком - ";",",","Tab"
Они не могут одновременно быть разделителями (хотя в принципе возможно реализовать автодетект).
Kirill
Posts: 263
Joined: Thu 04 Aug, 2005 10:27
Location: Kaliningrad
Has thanked: 3 times
Contact:

Раскраска CSV в редакторе

Post by Kirill »

John Doe wrote: Mon 19 Nov, 2018 08:10 Они не могут одновременно быть разделителями
Не, естественно один из них.. Я просто проверял на разных файлах и там, где запятые все прекрасно работало, а вот с ";" только до запятой.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Раскраска CSV в редакторе

Post by HaRT »

John Doe wrote: Mon 19 Nov, 2018 08:10
Kirill wrote: Mon 19 Nov, 2018 06:41 Или списком - ";",",","Tab"
Они не могут одновременно быть разделителями (хотя в принципе возможно реализовать автодетект).
Last edited by HaRT on Thu 06 Aug, 2020 04:30, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Раскраска CSV в редакторе

Post by John Doe »

Я правильно понимаю, что "автодетект" разделителя у вас сейчас реализован по одной строке, и вычисляется заново при каждой перерисовке?

И ещё зачем-то if Event==F.EE_REDRAW проверяется дважды.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Раскраска CSV в редакторе

Post by HaRT »

John Doe wrote: Thu 06 Aug, 2020 10:06 "автодетект" разделителя у вас сейчас реализован по одной строке, и вычисляется заново при каждой перерисовке?
Да, именно поэтому я и назвал его простым в ссылке, добавленной в шапку.
Несмотря на то, что при очень длинных строках это может сказаться на производительности, у перепроверки на каждую перерисовку есть то небольшое достоинство, что если файл почему-то составлен из секций с разными разделителями, они будут раскрашиваться правильно, когда текущая секция начинается от верхней строки окна (или выше).
John Doe wrote: Thu 06 Aug, 2020 10:06 И ещё зачем-то if Event==F.EE_REDRAW проверяется дважды.
А вот это я не заметил в коде исходного скрипта. Если соберусь позаимствовать цвета из «нормальной» реализации, то и это поправлю.
Last edited by HaRT on Thu 06 Aug, 2020 11:18, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Раскраска CSV в редакторе

Post by John Doe »

HaRT wrote: Thu 06 Aug, 2020 11:10 у перепроверки на каждую перерисовку есть то небольшое достоинство, что если файл почему-то составлен из секций с разными разделителями, они будут раскрашиваться правильно, когда текущая секция начинается от верхней строки окна.
Верхняя строка и пустой может оказаться.
Вообще эта фича не кажется полезной, поскольку для стандартных файлов она вредна, а если вдруг у вас реально попадаются нестандартные (ни разу не видел), то она недостаточна.
Поэтому я бы предложил просто детектировать однократно.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Раскраска CSV в редакторе (наподобие Rainbow CSV)

Post by HaRT »

John Doe wrote: Thu 06 Aug, 2020 11:38 я бы предложил просто детектировать однократно
Не возражаю. :)
С моей стороны подход к лицензии такой же, как там; подозреваю, что и у автора исходного кода тоже.
На самом деле я об этом думал, но забил. Если возьмётесь это доделать, мне кажется, выбранный разделитель можно записывать в editors[id] вместо true.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Раскраска CSV в редакторе (наподобие Rainbow CSV)

Post by John Doe »

HaRT wrote: Thu 06 Aug, 2020 11:50 выбранный разделитель можно записывать в editors[id] вместо true
Например так, да.
Плюс можно доукомплектовать макросом для "принудительного" циклического переключения, на случай если автоопределение даст сбой.

Сейчас это очень даже вероятная возможность, ведь из подсчёта не исключаются закавыченные разделители.
Я бы рекомендовал задействовать уже имеющуюся функцию csv, которая всё это учитывает.
HaRT wrote: Thu 06 Aug, 2020 11:50 Если возьмётесь это доделать
Сам пока что не планирую.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Раскраска CSV в редакторе (наподобие Rainbow CSV)

Post by HaRT »

John Doe wrote: Thu 06 Aug, 2020 14:56 Сейчас это очень даже вероятная возможность, ведь из подсчёта не исключаются закавыченные разделители.
Я бы рекомендовал задействовать уже имеющуюся функцию csv, которая всё это учитывает.
А вот это очень здравая идея. Попробовал — работает (выбирает тот разделитель, с которым получается наибольшее число (корректных) полей).
Получается такой фрагмент:

Code: Select all

        s={',',';','\t'}
        i,_=maxKeyVal s,(c)->#(csv(c)line) --max num fields
        sv=csv s[i]
, а ф-я countChar больше не нужна.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

Return to “Обсуждение макросов”