Обработчики событий: запуск макросов по событиям

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Обработчики событий: запуск макросов по событиям

Post by John Doe »

Реализован запуск макросов по событиям (build 3157+), документация тут:

Данная статья в MacroAPI manual весьма лаконична, т.к. ссылается на LuaFAR manual, который в свою очередь ссылается на Far PluginAPI.
Скакать между различными файлами документации по меньшей мере неудобно (edit: уже появились гиперссылки, стало намного лучше).
Чтобы облегчить усвоение и без того непростого и фрагментированного материала я скомпоновал для себя информацию в одном месте.
  • result = export.ProcessViewerEvent (ViewerID, Event)
  • result = export.ProcessEditorEvent (EditorID, Event, Param)

    result = editor.SubscribeChangeEvent (EditorId, Subscribe)
  • result = export.ProcessEditorInput (Rec)
    Rec: table InputRecord
  • ret = export.ProcessDialogEvent (Event, Param)
Важно: Ограничения в использовании некоторых функций

Примеры обработчиков событий в готовых макросах:

Основная тема: LuaMacro — Lua как язык макросов
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Запуск макросов по событиям (build 3157+)

Post by John Doe »

1. Предлагаю завести для этих целей отдельное поле event.
2. Предлагаю обсудить какие ещё события могут понадобиться, для каждой макрообласти отдельно.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Запуск макросов по событиям (build 3157+)

Post by Shmuel »

John Doe wrote:1. Предлагаю завести для этих целей отдельное поле event.
2. Предлагаю обсудить какие ещё события могут понадобиться.
1. "event" вроде точнее, но поля размножаются, как мухи, не хотелось бы этого, поэтому использовано существующее поле "key".
2. Это-то как раз более-менее ясно, но "не всё сразу", будем добавлять потихоньку.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Запуск макросов по событиям (build 3157+)

Post by John Doe »

1. Я понимаю вашу логику - key в данном случае свободно.
Но природа Event всё-таки отличается, и почему бы не называть вещи своими именами?

2. Реализовывать - по возможности конечно.
Но хочется увидеть всю картину.
Не могли бы вы привести список намеченного?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Запуск макросов по событиям (build 3157+)

Post by Shmuel »

John Doe wrote:1. Я понимаю вашу логику - key в данном случае свободно.
Но природа Event всё-таки отличается, и почему бы не называть вещи своими именами?

2. Реализовывать - по возможности конечно.
Но хочется увидеть всю картину.
Не могли бы вы привести список намеченного?
1. Вы, 2useven10 и я своё мнение озвучили, послушаем других. Кстати, "key" имеет ту же природу, это - событие.
2. Вся картина - это события, доступные плагинам через Plugins API.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Запуск макросов по событиям (build 3157+)

Post by John Doe »

Действительно ли в перспективе все эти события станут доступны макросам?







Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Запуск макросов по событиям (build 3157+)

Post by Shmuel »

John Doe wrote:Действительно ли в перспективе все эти события станут доступны макросам?
Что касается панельных событий, то они предназначены для плагинов, создающих панели. А остальное по идее можно реализовать.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Запуск макросов по событиям (build 3157+)

Post by John Doe »

Не уверен, что необходимы все эти события.
Особенно богаты событиями диалоги - я даже затруднился перечислить.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Запуск макросов по событиям (build 3157+)

Post by Shmuel »

John Doe wrote:Не уверен, что необходимы все эти события.
Особенно богаты событиями диалоги - я даже затруднился перечислить.
Так ведь если не надо, то и пользоваться никто не заставляет.
Но вы не беспокойтесь, обычно реализация всегда отстаёт от запросов. :)
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Запуск макросов по событиям (build 3157+)

Post by John Doe »

При сохранении файла под другим именем (ShiftF2) событие Read не происходит, правильно?
Read - только при открытии существующего или создании нового.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Запуск макросов по событиям (build 3157+)

Post by Shmuel »

Правильно.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Запуск макросов по событиям (build 3157+)

Post by John Doe »

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

Re: Запуск макросов по событиям (build 3157+)

Post by zg »

1. Macro {area="Editor";key="Read"} это конечно мощно и красиво в плане реализации, но мне кажется читабельность страдает. скажем Event {type="EditorRead"} или Event {area="Editor";type="Read"} гораздо очевидней и читабельней. из минусов вижу единственный, что в моём варианте нельзя писать Macro {area="Editor";key="Read CtrlQ"}.

2. так же в коде присутствует вот такое:

Code: Select all

MacroCallFar(MCODE_F_POSTNEWMACRO, m.id, m.code, m.flags)
--if m.action then m.action(EditorID) end
в чём преимущество первого варианта перед вторым? ну кроме зелёной буквы P в левом верхнем углу.

3. мы тут с варпом месяц назад обсуждали GetCustomDataW и FreeCustomDataW. как вариант рассматривали идею, что по умолчанию оставляем всё как есть (а оставить всё как есть — это же очень заманчиво :crazy:), а при наличии специальных луа-ивентов скармливаем всё, что вернули плагины им и выводим то что они вернули. очень примитивно в текущей имплементации это могло бы выглядеть так:

Code: Select all

Macro {area="Shell";key="Columns",action=function(a,b,c) return a.Text..' — '..c.Text end}
не факт что так будет, но помнить о том, что в будущем события могут стать вариантом продвинутой настройки наверное стоит.

4. непонятно, почему в событиях не используется поле priority?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Запуск макросов по событиям (build 3157+)

Post by NightRoman »

А нужно ли поле condition событиям? Ну и description.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Запуск макросов по событиям (build 3157+)

Post by John Doe »

zg wrote:4. непонятно, почему в событиях не используется поле priority?
Для автономности. Несколько абсолютно не связанных макросов можно повесить на одно событие, и все они выполнятся, не выдавая никаких запросов.
Но priority наверно можно и тут использовать, выполняя макросы с одинаковым высшим приоритетом.
NightRoman wrote:А нужно ли поле condition событиям? Ну и description.
Конечно нужно.
Post Reply

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