Управление custom-колонками с помощью lua-скрипта

Разработка Far.
User avatar
zg
zero-gravity
Posts: 5239
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Управление custom-колонками с помощью lua-скрипта

Post by zg » Sun 30 Nov, 2014 11:34

4203. экспериментально, чтобы понять стоит ли вообще двигаться в этом направлении и насколько тема актуальна.
для каждого файла собираются все колонки и передаются luamacro.
в скриптах доступна функция Panel.AddCustomDataCallback с помощью которой можно зарегистрировать обработчики данных колонок.
данные приходят в виде {{Id=GUID1,Text="text1"},{Id=GUID2,Text="text2"},FileName="filename"}. их можно менять по своему усмотрению. если обработчик вернул true, то обработка продолжается. при исчерпании обработчиков все строки склеиваются в одну и возвращаются фару.
если какой-то обработчик вернул false, обработка прекращается, для вывода используется старое поведение. абстрактный пример обработчика:
  1. local one,two=win.Uuid("20C6FAE1-7E67-4264-985C-41E55421276B"),win.Uuid("8F75B38A-C483-4852-969D-D668E83CE250")
  2. Panel.AddCustomDataCallback(
  3.   function(data)
  4.     for key,item in ipairs(data) do
  5.       if item.Id==one then item.Text="{"..item.Text.."}"
  6.       elseif item.Id==two then data[key]=nil
  7.       end
  8.     end
  9.     return true
  10.   end
  11. )
вопросы:
1. надо ли это вообще?
2. нужна ли поддержка нескольких обработчиков?
3. нужна ли поддержка более одной колонки (C1-C9)? если да, как это всё разруливать?
4. возможно какие-то другие конструктивные пожелания.

Примечание модератора: тема отделена от обсуждения GetCustomDataW и FreeCustomDataW.

Shmuel
Posts: 5094
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Shmuel » Sun 30 Nov, 2014 16:38

zg wrote: 1. надо ли это вообще?
В текущем состоянии - не уверен. Сейчас можно только модифицировать (или удалять) текст кастомной колонки, поступивший от какого-либо плагина. Вот создавать "с нуля" текст кастомной колонки (сделать несложно, прямо в LuaMacro, без модификации Фара), это другое дело.
zg wrote: 2. нужна ли поддержка нескольких обработчиков?
Скорее всего - не нужна, но она не мешает.
zg wrote: 3. нужна ли поддержка более одной колонки (C1-C9)? если да, как это всё разруливать?
Дополнительным параметром в функции callback'а ?

User avatar
zg
zero-gravity
Posts: 5239
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by zg » Sun 30 Nov, 2014 21:30

Shmuel wrote:
zg wrote: 1. надо ли это вообще?
В текущем состоянии - не уверен. Сейчас можно только модифицировать (или удалять) текст кастомной колонки, поступивший от какого-либо плагина. Вот создавать "с нуля" текст кастомной колонки (сделать несложно, прямо в LuaMacro, без модификации Фара), это другое дело.
речь именно про модификацию. так как конфигуратор типа тэцэшного вряд ли кто напишет, то как вариант.

Shmuel
Posts: 5094
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Shmuel » Sun 30 Nov, 2014 22:39

zg wrote: речь именно про модификацию
За других говорить не буду, но мне эта фича, в таком виде, как сейчас, навряд ли понадобится.

Maximus5
Posts: 3291
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Maximus5 » Mon 01 Dec, 2014 09:46

Не понятно, что значит "модификация"?
Допустим, я хочу показать для файловых панелей в C1 статус svn, а в C2 статус git. Это возможно?

User avatar
zg
zero-gravity
Posts: 5239
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by zg » Mon 01 Dec, 2014 10:47

Maximus5 wrote:Не понятно, что значит "модификация"?
от колонковых плагинов приходят строки, для конкретного файла. в обработчике с ними можно делать всё что угодно, результат возвращается фару.
Maximus5 wrote:Допустим, я хочу показать для файловых панелей в C1 статус svn, а в C2 статус git. Это возможно?
сейчас нет. сейчас только с0. для поддержки c1-c9 нужно выяснить:
1. нужно ли это вообще.
2. если нужно, то нужно ли много обработчиков или достаточно одного. потому как если нужно много, то непонятно, как разруливать ситуации типа, первый обработчик сказал статус svn класть в c1, второй в c9.

Shmuel
Posts: 5094
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Shmuel » Mon 01 Dec, 2014 11:58

zg wrote: для поддержки c1-c9 нужно выяснить:
1. нужно ли это вообще.
Поддержка c1-c9 нужна, обработчики не очень нужны.

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

обсуждение GetCustomDataW и FreeCustomDataW.

Post by HaRT » Mon 01 Dec, 2014 12:51

Shmuel wrote: Поддержка c1-c9 нужна, обработчики не очень нужны.
Присоединяюсь.
Идеально было бы иметь один плагин/скрипт–диспетчер и контент-провайдеры в виде под-плагинов/скриптов.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

обсуждение GetCustomDataW и FreeCustomDataW.

Post by John Doe » Mon 01 Dec, 2014 18:43

zg wrote: нужно ли много обработчиков или достаточно одного.
Лучше предусмотреть много.
Они ведь могут выполнять и разные функции.

User avatar
zg
zero-gravity
Posts: 5239
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by zg » Mon 01 Dec, 2014 22:24

т.е. опрос всех плагинов для показа любой колонки никого не смущает?

Shmuel
Posts: 5094
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Shmuel » Mon 01 Dec, 2014 22:35

zg wrote: т.е. опрос всех плагинов для показа любой колонки никого не смущает?
Не всех плагинов, а только экспортирующих GetCustomDataW (или что там будет вместо неё).
Не любой колонки, а только типа C0...C9.

User avatar
zg
zero-gravity
Posts: 5239
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by zg » Mon 01 Dec, 2014 23:17

Shmuel wrote:Не всех плагинов, а только экспортирующих GetCustomDataW (или что там будет вместо неё).
Не любой колонки, а только типа C0...C9.
да, конечно. мне казалось, что это очевидно из контекста, сорри.

Maximus5
Posts: 3291
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Maximus5 » Mon 01 Dec, 2014 23:26

Вообще не понятно зачем нужны "С0" плагины если можно все на lua написать?

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

обсуждение GetCustomDataW и FreeCustomDataW.

Post by John Doe » Tue 02 Dec, 2014 09:42

zg wrote:т.е. опрос всех плагинов для показа любой колонки никого не смущает?
А что именно тут должно смущать?
В некоторых плагинах предусмотрено ограничение по маске.

Maximus5
Posts: 3291
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Maximus5 » Tue 02 Dec, 2014 11:05

Подумалось... Ок, пусть будет (несколько) плагинов с GetCustomDataW, на луа может быть не удобно например версии из exe/dll дергать.
Плагины и сейчас есть. И плагины возвращают строки для C0.
А вот "конфигуратор" пусть будет в луа. Но он должен уметь задать любую из колонок C0..C9. На основе (но не только) данных плагинов.
То есть я ге вижу смысла делать более одного луа-обработчика. Иначе возникнет каша. А при желании - можно из скрипта конфигуратора любые другие луа-модули звать.

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

обсуждение GetCustomDataW и FreeCustomDataW.

Post by John Doe » Tue 02 Dec, 2014 11:20

Maximus5 wrote: То есть я не вижу смысла делать более одного луа-обработчика. Иначе возникнет каша.
Это смотря как сделать.

Кстати подскажите на чём потестировать имеющуюся сейчас функциональность.
Какие из актуальных плагинов предоставляют данные для C0?

Post Reply

Return to “Development”