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

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

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

Post by John Doe » Tue 05 Feb, 2013 23:18

Реализован запуск макросов по событиям (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: 11394
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Tue 05 Feb, 2013 23:23

1. Предлагаю завести для этих целей отдельное поле event.
2. Предлагаю обсудить какие ещё события могут понадобиться, для каждой макрообласти отдельно.

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Tue 05 Feb, 2013 23:28

John Doe wrote:1. Предлагаю завести для этих целей отдельное поле event.
2. Предлагаю обсудить какие ещё события могут понадобиться.
1. "event" вроде точнее, но поля размножаются, как мухи, не хотелось бы этого, поэтому использовано существующее поле "key".
2. Это-то как раз более-менее ясно, но "не всё сразу", будем добавлять потихоньку.

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

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

Post by John Doe » Tue 05 Feb, 2013 23:34

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

2. Реализовывать - по возможности конечно.
Но хочется увидеть всю картину.
Не могли бы вы привести список намеченного?

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Tue 05 Feb, 2013 23:39

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

2. Реализовывать - по возможности конечно.
Но хочется увидеть всю картину.
Не могли бы вы привести список намеченного?
1. Вы, 2useven10 и я своё мнение озвучили, послушаем других. Кстати, "key" имеет ту же природу, это - событие.
2. Вся картина - это события, доступные плагинам через Plugins API.

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

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

Post by John Doe » Tue 05 Feb, 2013 23:52

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








Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Tue 05 Feb, 2013 23:59

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

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

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

Post by John Doe » Wed 06 Feb, 2013 00:05

Не уверен, что необходимы все эти события.
Особенно богаты событиями диалоги - я даже затруднился перечислить.

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Wed 06 Feb, 2013 00:08

John Doe wrote:Не уверен, что необходимы все эти события.
Особенно богаты событиями диалоги - я даже затруднился перечислить.
Так ведь если не надо, то и пользоваться никто не заставляет.
Но вы не беспокойтесь, обычно реализация всегда отстаёт от запросов. :)

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

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

Post by John Doe » Wed 06 Feb, 2013 00:11

При сохранении файла под другим именем (ShiftF2) событие Read не происходит, правильно?
Read - только при открытии существующего или создании нового.

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Wed 06 Feb, 2013 00:13

Правильно.

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

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

Post by John Doe » Wed 06 Feb, 2013 00:17

Shmuel wrote:Но вы не беспокойтесь, обычно реализация всегда отстаёт от запросов. :)
В общем-то хотелось сформировать некий минимум необходимых событий.

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

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

Post by zg » Wed 06 Feb, 2013 03:34

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: 5872
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

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

Post by NightRoman » Wed 06 Feb, 2013 07:03

А нужно ли поле condition событиям? Ну и description.

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

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

Post by John Doe » Wed 06 Feb, 2013 09:30

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

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

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

Post by zg » Wed 06 Feb, 2013 09:38

John Doe wrote:
zg wrote:4. непонятно, почему в событиях не используется поле priority?
Для автономности. Несколько абсолютно не связанных макросов можно повесить на одно событие, и все они выполнятся, не выдавая никаких запросов.
и чем в данном случае мешает priority? оно наоборот позволяет задать очерёдность, с которой будут выполнятся события.

Post Reply

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