Custom Events

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

Custom Events

Post by John Doe »

Latest post of the previous page:

buniak_a_h wrote: Fri 29 May, 2020 21:32 чтоб в condition и в action передавалась таблица data (аналогично макросам)
А кто-нибудь подскажет в какой теме это у нас обсуждалось?

Update:
Начало тут viewtopic.php?p=157560#p157560

И ещё: viewtopic.php?f=15&t=11950
Last edited by John Doe on Sun 31 May, 2020 12:09, edited 1 time in total.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4266
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Custom Events

Post by buniak_a_h »

John Doe, может, это не ко мне вопрос? Я не ссылался на обсуждение. Вы же сами писали:
https://github.com/FarGroup/FarManager/pull/244 wrote:меня не устраивают следующие ограничения:
Нестандартные поля в определении обработчика отбрасываются…
Уже после моего замечания про передачу таблицы там появилось сообщение (дополнение) с ссылкой на запись Shmuel-а в ченджлоге и указание на сложность реализации. Я писал своё сообщение/пожелание независимо от какой-либо темы. Поэтому про тему я не в курсе.
… Или цитата ко мне не относится - просто как текст приведена?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Custom Events

Post by citRiks »

John Doe wrote: Sat 30 May, 2020 08:10 Aналогично не выйдет, поскольку список аргументов обработчиков событий определён изначально. Добавить в конец как ещё один аргумент - довольно криво, ведь в разных группах даже количество аргументов отличается
Что я думаю об этом
Что надо поставить эту таблицу EventData первой.
Конечно же все АПИ плагинов сломаются, но других проблем я не вижу
(есть ли еще какие проблемы кроме плагиновских АПИ ?)


Теперь как починить сломанные АПИ, есть такие варианты:

1.) Для плагинов написанных на "нормальных" типизированных языках как Си и Паскаль, есть полиморфизм методов (функций).
полиморфизм означает вариативность "сигнатуры" метода (функции) без измения в самом методе (функции)
Т.е., совсем не проблема, поправьте если где ошибаюсь.
Старые плагины работают как раньше, новым рекомендуется использовать новую форму вызова, все счастливы.


2.) Для нетипизированных обращений, как например из плагина LuaMacro.
Тут проблема серьезнее, ведь старый макрос не знает что сейчас первый параметр это уже не то что было раньше.
Но есть такие варианты, для Луа:
2.1.) И/ИЛИ: При инициализации (создании) макроса (в LuaFar/LuaMacro) для функций condition()/action() задается upvalue - таблица названная EventData.
2.2.) И/ИЛИ: Создать "полиморфизм" уже на уровне LuaFar/LuaMacro, как condition2() и action2(), которые и будут принимать (EventData, ...)
Кривовато, но легитимно, и частенько (если не всегда, когда есть всякие legacy) развитие кода именно в таком направлении.
Старые макросы работают, а у новых есть EventData, все счастливы

Причем все предложенные изменения тривиальны, поправьте если ошибаюсь
John Doe wrote: Sat 30 May, 2020 08:10Можно добавить как отдельное поле Event. Но тогда и для макросов стоит переделать аналогично.
Это я не понял, как не старался, наверное что-то упустил, обьясните кому не лень

POST SCRIPTUM
Пояснения к зачеркнутому:
@ShmuZ wrote:Могу только заметить, что оригинальное предложение касается только макросистемы и не влияет на API плагинов (в смысле не ломает).
А и точно ведь, у "нормальных" плагинов (не макро скриптов) ведь такого понятия как condition()/action() вапще нет, и означенной проблемы соответвенно нет, спасибо за замечание
Last edited by citRiks on Sat 10 Sep, 2022 10:04, edited 5 times in total.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Custom Events

Post by Shmuel »

citRiks wrote: Fri 09 Sep, 2022 10:20 Для нетипизированных недо-плагинов вроде скриптологии на Луа
Вы не оригинальны:
chpock wrote: Sun 24 Mar, 2013 00:25 вместо недо-скрипто-макросов, недо-плагин-прокладок (навроде LuaFAR for Editor)
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Custom Events

Post by citRiks »

Shmuel wrote: Fri 09 Sep, 2022 20:34Вы не оригинальны:
Не, я не это имел ввиду, и не согласен в этом смысле с процитированным Чпоком.
Плагин ЛФ4Едитор/ЛуаФар/ЛуаМакро - это лучшее что есть в Фаре.
(кроме оконного менеджера легендарного ЗероГравити, который и в ЛуаМакро участвовал тоже)
При этом, ЛуаМакро полностью отражает АПИ Фара, значит знание С++ не нужно теперь.

Нетипизированность это не есть недостаток, а есть нужное, потому что жестко типизированная скриптология это усложнение и кошмар.
Как язык Луа непривычный и малоподдерживаемый производителем, но архитектурно логичен, обоснован, минимален в хорошем смысле этого слова, что для embedded скриптологии идеальнo.
Last edited by citRiks on Sat 10 Sep, 2022 06:42, edited 3 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Custom Events

Post by citRiks »

citRiks wrote: Fri 09 Sep, 2022 10:20Что я думаю об этом ...
Исправлено учитывая и благодаря наставлениям oт @Shmuel
Post Reply

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