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

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

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

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
t-rex
Страшный и ужасный
Posts: 4907
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 6 times
Contact:

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

Post by t-rex »

Latest post of the previous page:

И вообще на сколько известно этот EE_CHANGE нужен только тебе, и только в тех случаях когда ты дебагишь через редактор фара - т.е. скажем для 1% из редакторных сессий.
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

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

Post by zg »

t-rex wrote:И вообще на сколько известно этот EE_CHANGE нужен только тебе, и только в тех случаях когда ты дебагишь через редактор фара - т.е. скажем для 1% из редакторных сессий.
красящие плагины используют. тот же колорер.
Shmuel
Posts: 6210
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 342 times

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

Post by Shmuel »

t-rex wrote:Макрос который отписался, получать то EE_CHANGE больше не хочет - т.е. тебе кроме каунтера нужно точно знать кому пересылать это сообщение а кому нет.
Наверное не обязательно для макросов-событий в точности воспроизводить логику плагинов. Те макросы-события, которые "отписались" и не хотят больше обрабатывать EE_CHANGE, могут фильтровать его как раньше, по логике своего функционирования. В этом случае простого "счётчика активных подписок" будет достаточно.
User avatar
t-rex
Страшный и ужасный
Posts: 4907
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 6 times
Contact:

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

Post by t-rex »

zg wrote:
t-rex wrote:И вообще на сколько известно этот EE_CHANGE нужен только тебе, и только в тех случаях когда ты дебагишь через редактор фара - т.е. скажем для 1% из редакторных сессий.
красящие плагины используют. тот же колорер.
Да, про этот я забыл, но все ровно в общем мало плагинов.
User avatar
t-rex
Страшный и ужасный
Posts: 4907
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 6 times
Contact:

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

Post by t-rex »

Shmuel wrote:
t-rex wrote:Макрос который отписался, получать то EE_CHANGE больше не хочет - т.е. тебе кроме каунтера нужно точно знать кому пересылать это сообщение а кому нет.
Наверное не обязательно для макросов-событий в точности воспроизводить логику плагинов. Те макросы-события, которые "отписались" и не хотят больше обрабатывать EE_CHANGE, могут фильтровать его как раньше, по логике своего функционирования. В этом случае простого "счётчика активных подписок" будет достаточно.
Я не против, главное чтоб уложилось в логику. Но все ровно как то странно получать сообщение от которых отписались.
User avatar
t-rex
Страшный и ужасный
Posts: 4907
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 6 times
Contact:

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

Post by t-rex »

Тока не забудь, что каунтер он per EditorID (который может быть и -1 для текущего редактора).
Shmuel
Posts: 6210
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 342 times

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

Post by Shmuel »

t-rex wrote:Я не против, главное чтоб уложилось в логику. Но все ровно как то странно получать сообщение от которых отписались.
Ну не будем называть это "отписались", а "декрементировали счётчик" или ещё как покрасивее придумаем. И раньше, и теперь плагины и макросы-обработчики фильтровали ненужные им "подсобытия".
Shmuel
Posts: 6210
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 342 times

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

Post by Shmuel »

t-rex wrote:Тока не забудь, что каунтер он per EditorID (который может быть и -1 для текущего редактора).
Да, жить стало веселее. :)
User avatar
t-rex
Страшный и ужасный
Posts: 4907
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 6 times
Contact:

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

Post by t-rex »

Всегда рад развеселить :)
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

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

Post by NightRoman »

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

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

Но решили, так решили. Выигрыш какой от этого получился, есть уже данные?
User avatar
t-rex
Страшный и ужасный
Posts: 4907
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 6 times
Contact:

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

Post by t-rex »

подписка и отписка они бесплатные, а частое оповещение всех плагинов подряд не бесплатно.
User avatar
t-rex
Страшный и ужасный
Posts: 4907
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 6 times
Contact:

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

Post by t-rex »

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

И всё, твои суб плагины никакой разницы от "слома" не почувствуют.
Shmuel
Posts: 6210
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 342 times

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

Post by Shmuel »

t-rex
Пока вот что получилось, зацени:
User avatar
t-rex
Страшный и ужасный
Posts: 4907
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 6 times
Contact:

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

Post by t-rex »

Вроде как оно. Subscriptions это же какой нибудь хэш а не масив, да?
Shmuel
Posts: 6210
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 342 times

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

Post by Shmuel »

t-rex wrote:Subscriptions это же какой нибудь хэш а не масив, да?
Хэш.
User avatar
t-rex
Страшный и ужасный
Posts: 4907
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 6 times
Contact:

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

Post by t-rex »

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

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