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

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 11258
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 83 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
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

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

Post by t-rex » Sun 28 Apr, 2013 16:07

Latest post of the previous page:

И вообще на сколько известно этот EE_CHANGE нужен только тебе, и только в тех случаях когда ты дебагишь через редактор фара - т.е. скажем для 1% из редакторных сессий.

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

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

Post by zg » Sun 28 Apr, 2013 16:17

t-rex wrote:И вообще на сколько известно этот EE_CHANGE нужен только тебе, и только в тех случаях когда ты дебагишь через редактор фара - т.е. скажем для 1% из редакторных сессий.
красящие плагины используют. тот же колорер.

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

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

Post by Shmuel » Sun 28 Apr, 2013 16:17

t-rex wrote:Макрос который отписался, получать то EE_CHANGE больше не хочет - т.е. тебе кроме каунтера нужно точно знать кому пересылать это сообщение а кому нет.
Наверное не обязательно для макросов-событий в точности воспроизводить логику плагинов. Те макросы-события, которые "отписались" и не хотят больше обрабатывать EE_CHANGE, могут фильтровать его как раньше, по логике своего функционирования. В этом случае простого "счётчика активных подписок" будет достаточно.

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

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

Post by t-rex » Sun 28 Apr, 2013 16:23

zg wrote:
t-rex wrote:И вообще на сколько известно этот EE_CHANGE нужен только тебе, и только в тех случаях когда ты дебагишь через редактор фара - т.е. скажем для 1% из редакторных сессий.
красящие плагины используют. тот же колорер.
Да, про этот я забыл, но все ровно в общем мало плагинов.

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

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

Post by t-rex » Sun 28 Apr, 2013 16:24

Shmuel wrote:
t-rex wrote:Макрос который отписался, получать то EE_CHANGE больше не хочет - т.е. тебе кроме каунтера нужно точно знать кому пересылать это сообщение а кому нет.
Наверное не обязательно для макросов-событий в точности воспроизводить логику плагинов. Те макросы-события, которые "отписались" и не хотят больше обрабатывать EE_CHANGE, могут фильтровать его как раньше, по логике своего функционирования. В этом случае простого "счётчика активных подписок" будет достаточно.
Я не против, главное чтоб уложилось в логику. Но все ровно как то странно получать сообщение от которых отписались.

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

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

Post by t-rex » Sun 28 Apr, 2013 16:30

Тока не забудь, что каунтер он per EditorID (который может быть и -1 для текущего редактора).

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

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

Post by Shmuel » Sun 28 Apr, 2013 16:32

t-rex wrote:Я не против, главное чтоб уложилось в логику. Но все ровно как то странно получать сообщение от которых отписались.
Ну не будем называть это "отписались", а "декрементировали счётчик" или ещё как покрасивее придумаем. И раньше, и теперь плагины и макросы-обработчики фильтровали ненужные им "подсобытия".

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

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

Post by Shmuel » Sun 28 Apr, 2013 16:33

t-rex wrote:Тока не забудь, что каунтер он per EditorID (который может быть и -1 для текущего редактора).
Да, жить стало веселее. :)

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

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

Post by t-rex » Sun 28 Apr, 2013 16:47

Всегда рад развеселить :)

User avatar
NightRoman
Posts: 5852
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Sun 28 Apr, 2013 17:41

> И не понял вообще фразу - "Вместо лишней работы в Фаре теперь лишняя работа будет делаться в плагинах".
Вместо лишних вызовов плагинов будут лишние проверки и работа в плагинах. Подписка, отписка, регистрация.

> И вообще на сколько известно этот EE_CHANGE нужен только тебе, и только в тех случаях когда ты дебагишь через редактор фара - т.е. скажем для 1% из редакторных сессий.
Но ведь и другие применения могут найтись. И это может быть не 1%. Я - просто первый пользователь фичи, который ее и просил.

Но решили, так решили. Выигрыш какой от этого получился, есть уже данные?

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

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

Post by t-rex » Sun 28 Apr, 2013 18:10

подписка и отписка они бесплатные, а частое оповещение всех плагинов подряд не бесплатно.

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

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

Post by t-rex » Sun 28 Apr, 2013 18:19

NightRoman wrote:> И не понял вообще фразу - "Вместо лишней работы в Фаре теперь лишняя работа будет делаться в плагинах".
Вместо лишних вызовов плагинов будут лишние проверки и работа в плагинах. Подписка, отписка, регистрация.
Ещё раз повторяю, ты не обязан ничего вообще делать заумного, добавляешь две строки в свой код в обработке EE_READ:
EditorSubscribeChangeEvent esce = { sizeof(EditorSubscribeChangeEvent), PluginGuid };
Info.EditorControl(-1, ECTL_SUBSCRIBECHANGEEVENT, 0, &esce);

И всё, твои суб плагины никакой разницы от "слома" не почувствуют.

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

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

Post by Shmuel » Sun 28 Apr, 2013 18:30

t-rex
Пока вот что получилось, зацени:

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

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

Post by t-rex » Sun 28 Apr, 2013 18:39

Вроде как оно. Subscriptions это же какой нибудь хэш а не масив, да?

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

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

Post by Shmuel » Sun 28 Apr, 2013 18:41

t-rex wrote:Subscriptions это же какой нибудь хэш а не масив, да?
Хэш.

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

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

Post by t-rex » Sun 28 Apr, 2013 18:42

Тогда, да, оно.

User avatar
Aidar
Posts: 533
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 6 times
Contact:

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

Post by Aidar » Sun 28 Apr, 2013 18:50

zg wrote:
t-rex wrote:И вообще на сколько известно этот EE_CHANGE нужен только тебе, и только в тех случаях когда ты дебагишь через редактор фара - т.е. скажем для 1% из редакторных сессий.
красящие плагины используют. тот же колорер.
Пакет LuaFAR area config для плагина LuaFAR for Editor тоже использует.
Shmuel wrote:

Code: Select all

shmuel 28.04.2013 16:32:41 +0200 - build 140
1. LuaFAR: новая функция editor.SubscribeChangeEvent.
2. В связи с появлением ECTL_SUBSCRIBECHANGEEVENT, ECTL_UNSUBSCRIBECHANGEEVENT (Фар 3.0.3371)
   откатываем 137.1 и 137.2.
137.1 и 137.2 - это viewtopic.php?p=108510#p108510
137.1 был удобнее, а плагин сам бы мог определить, подписываться ему или нет на это событие.

Post Reply

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