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

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

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

Postby 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: 4998
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

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

Postby Shmuel » Sun 30 Nov, 2014 16:38

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

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

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

Postby zg » Sun 30 Nov, 2014 21:30

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

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

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

Postby Shmuel » Sun 30 Nov, 2014 22:39

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

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

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

Postby Maximus5 » Mon 01 Dec, 2014 09:46

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

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

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

Postby 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: 4998
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

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

Postby Shmuel » Mon 01 Dec, 2014 11:58

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

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

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

Postby HaRT » Mon 01 Dec, 2014 12:51

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

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

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

Postby John Doe » Mon 01 Dec, 2014 18:43

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

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

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

Postby zg » Mon 01 Dec, 2014 22:24

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

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

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

Postby Shmuel » Mon 01 Dec, 2014 22:35

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

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

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

Postby 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.

Postby Maximus5 » Mon 01 Dec, 2014 23:26

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

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

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

Postby 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.

Postby Maximus5 » Tue 02 Dec, 2014 11:05

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

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

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

Postby John Doe » Tue 02 Dec, 2014 11:20

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

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


Return to “Development”

Who is online

Users browsing this forum: No registered users and 1 guest