-
Notifications
You must be signed in to change notification settings - Fork 207
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
luamacro: implement custom events (POC) #244
base: master
Are you sure you want to change the base?
Conversation
Данный PR создан исключительно как proof-of-concept этой идеи: https://bugs.farmanager.com/view.php?id=3796, Дискуссионные моменты реализации:
В настоящий момент меня не устраивают следующие ограничения:
|
Мне кажется, что предлагаемую функциональность можно реализовать Lua-модулем, не трогая плагин LuaMacro. Модуль мог бы "экспортировать" функции Event и ProcessEvent (это предложенные в верхнем сообщении имена, но можно взять и другие). |
Абсолютно согласен что можно. А с другой стороны тривиальное изменение луамакро, дающее то же самое из коробки всем и сразу. Та часть, что не реализована здесь (фильтры), имеет самостоятельную ценность (на мантисе отдельный тикет: https://bugs.farmanager.com/view.php?id=2595). |
Хотелось бы иметь эту функциональность именно из коробки, в данном случае считаю что это оправданно. Как недавно обсуждалось на форуме, один из основных юзкейсов - предоставление интерфейса для плагинов. Опираясь на предлагаемый механизмпроизвольный плагин может генерировать собственные события для макросов. Например, автор колорера так сможет легко реализовать оповещение о смене типа файла в редакторе. Этого не случится, если ему надо будет реализовывать весь механизм самому, или переадресовывать пользователей к какому-то стороннему скрипту. |
@johnd0e, is it still relevant? |
It was neither implemented nor rejected, so yes, I suppose it is still relevant. |
Многоуважаемый Алабужев и многоуважаемые все. ВОПРОС ВАЖНЫЙ! спасибо заранее за любой ответ |
Ок, я чуть углубился, и понял что этот патч от @johndoe в лучшем случае черновик :) |
вот это очень правильно я щитаю. |
Вообще данная идея, предложенная johnd0e, мне сейчас видится более привлекательной, чем изначально. |
@dr-dba if you look at the top right corner, you might notice the "Draft" label. To merge it, the author needs to finish it first and mark it accordingly. This could happen tomorrow or in 10 years, depending on personal circumstances. On top of that, the author has already mentioned in the comments above that it is a POC that needs a further discussion, so you are welcome to participate and clarify any outstanding topics. Having said that, please do not expect a lot of activity from me personally in this particular PR: lua is not my area of expertise and I am not confident enough to review it. When the time will come, please talk to Shmuel. I will happily merge it with his blessing. |
@shmuz, Потому что так проще ? |
Цитирую то что я думаю как можно было бы решить:
|
|
Ну зачем-то вы же предложили, и если кто-то будет продолжать пилить в этом направлении, то ему было бы полезно ваше мнение
Цитата была ответом на раздумья Джона как безопасно поставить таблицу EventData первым параметром в action()/condition() обьекта Event.
А и точно ведь, у "нормальных" плагинов (не макро скриптов) ведь такого понятия как condition()/action() вапще нет, и означенной проблемы соответвенно, спасибо за замечание |
Если вместо расширения ф-ции Event ввести новую функцию, то и вопроса куда ставить параметр, который вы называете EventData, не будет. Функция Event остаётся как есть, а с новой функцией у разработчика полная свобода рук. |
(Писалось до того как я увидел ваш последний камент, но тем не менее по теме как оказалось:) 1.) добавления новых луа-функций condition2(EvtDat, ...)/action2(EvtDat, ...) для евента 2.) И/ИЛИ Механизм ЛуаФар/ЛуаМакро задает функциям condition()/action() некое upvalue именем EventData вот это хотелось чтобы вы прокомментировали |
define event handler: ```lua Event { description="test!"; group="CustomEvent"; action=function(Event,...) far.Show(Event,...) end; } ``` emit event: ```lua mf.ProcessEvent("CustomEvent",{},1,2,3) ```
8a04edf
to
0162c3e
Compare
Пример использования:
define event handler:
emit event:
Аргументы
mf.ProcessEvent
:group
options
- сфера применение не вполне ясна. Параметр заведён радиfilename
filename
можно и напрямую передавать, а не в таблицеfilename
не будет иметь значения...