Переименовать callplugin

Здесь обсуждается всё, что касается макросов.
Locked
User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Переименовать callplugin

Post by Skirda » Tue 25 Jan, 2011 19:49

Latest post of the previous page:

переименовывать бессмысленно, но после появления новых функций эта будет просто удалена.
на счет идентификаторов - скорее всего гуиды, после перелопачивания апи (см. соответствующую тему)
We are the Borg. You will be assimilated.
So Say We All!

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

Re: Переименовать callplugin

Post by John Doe » Wed 15 Feb, 2012 15:49

Skirda wrote:Хмм... судя по всему нужно callplugin отлучать от OpenPlugin в пользу вызова новой функции, в противном случае получим бяку.
Skirda wrote:...или удавить callplugin (перенеся наработки на новую, всем удобную функцию)
Skirda wrote:переименовывать бессмысленно, но после появления новых функций эта будет просто удалена.
Прошло немало времени, но итог не ясен...
Вопрос к Skirda: так что же делать с callplugin?
Чем её заменить?

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

Re: Переименовать callplugin

Post by John Doe » Wed 15 Feb, 2012 15:57

По итогам обсуждения на предыдущих 7 страницах, есть такие варианты:
  • 1) "допилить" callplugin (вызывать плагин по гуиду, с параметрами)
    2) вызывать плагин "как из командной строки", через префикс (посредством специальной макрофункции).
    3) заменить на ProcessMacroFuncW (каждый плагин при необходимости экспортирует свою макрофункцию)

    Кроме этой темы есть ещё и тикет на мантисе, где предполагается сосуществование всех перечисленных вариантов, и к ним добавляются ещё 2 макрофункции заменяющие вызов F11 и Ctrl-Shift-F9:
Вопрос ко всем присутствующим: необходимо ли всё это многообразие вариантов вызова плагина, или можно ограничиться одним-двумя?
Нужен ли для чего-то "синхронный" вызов, или во всех вариантах предпочтительна асинхронность?

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

Re: Переименовать callplugin

Post by zg » Wed 15 Feb, 2012 16:11

John Doe wrote:По итогам обсуждения на предыдущих 7 страницах, есть такие варианты:
1) "допилить" callplugin (вызывать плагин по гуиду, с параметрами)
это уже есть.

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

Re: Переименовать callplugin

Post by John Doe » Wed 15 Feb, 2012 16:13

zg
А что с "синхронностью", мешающей макросам?
Она для чего-то нужна специально, или просто побочный эффект неудачной реализации?

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Переименовать callplugin

Post by Max Rusov » Wed 15 Feb, 2012 16:17

В идеале синхронностью надо управлять, потому что, очевидно, могут быть случаи когда она нужна и наоборот - мешает.

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

Re: Переименовать callplugin

Post by John Doe » Wed 15 Feb, 2012 16:22

Можете привести пример (понятный мне как пользователю макроязыка) когда синхронность необходима?

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

Re: Переименовать callplugin

Post by NightRoman » Wed 15 Feb, 2012 16:24

John Doe wrote:Можете привести пример (понятный мне как пользователю макроязыка) когда синхронность необходима?
Два вызова в макросе. Второй пользуется результатами первого, или между ними макрос еще что-то делает. Пример гипотетический, но вполне практичный. Нужен, наверное, редко (но метко).

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

Re: Переименовать callplugin

Post by John Doe » Wed 15 Feb, 2012 16:28

Пардон, вероятно я что-то напутал, но "синхронностью" я называю то свойство, благодаря которому после нынешнего callplugin не могут следовать другие макрокоманды.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Переименовать callplugin

Post by Max Rusov » Wed 15 Feb, 2012 16:28

John Doe wrote:Можете привести пример (понятный мне как пользователю макроязыка) когда синхронность необходима?
По CallPlugin открывается диалог, и то что в нем ввели используется по возврату из CallPlugin.

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

Re: Переименовать callplugin

Post by John Doe » Wed 15 Feb, 2012 16:36

Max Rusov wrote:По CallPlugin открывается диалог, и то что в нем ввели используется по возврату из CallPlugin.
Ага, теперь сообразил.
Что если оставить этот вариант только для (будущего) ProcessMacroFuncW?
А callplugin пусть возвращает только ошибку вызова плагина.

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

Re: Переименовать callplugin

Post by John Doe » Wed 29 Feb, 2012 10:17

А тем временем старые костыли поменялись на новые:

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Переименовать callplugin

Post by Skirda » Wed 29 Feb, 2012 11:01

А в чем проблема то?
We are the Borg. You will be assimilated.
So Say We All!

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

Re: Переименовать callplugin

Post by John Doe » Wed 29 Feb, 2012 11:33

Проблемы нет.
Но сама функция вида callplugin(xxx,макро_строка) неестественна.
Неужели невозможно иначе разрулить ситуацию с синхронностью/асинхронностью?

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Переименовать callplugin

Post by Max Rusov » Wed 29 Feb, 2012 11:56

Чем Вам CallPlugin не нравится? Нормальная функция, нормальный синтаксис, оставьте ее в покое.
Как я понимаю mmode(3 - не делает функцию асинхронной, а решает другую проблему - реентрантность макросов:
http://bugs.farmanager.com/view.php?id=1280

Тоже нужная тема.

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Переименовать callplugin

Post by Skirda » Wed 29 Feb, 2012 11:59

John Doe wrote:Что если оставить этот вариант только для (будущего) ProcessMacroFuncW?
ProcessMacroFuncW и callplugin (или что-то подобное) - разные сущности (даже не потому, что первое относится к АПИ, а второе к макроязыку)
ProcessMacroFuncW предназначен для вызова макрофункций, предоставляемых плагинами. Не больше и не меньше.
Вызов ProcessMacroFuncW - это синхронный вызов плагина из макродвижка в процессе исполнения макропоследовательности.
В макроязыке ты не встретишь слово "ProcessMacroFuncW", это слово - сакральное знание плагинописателя ;-)
Это "ты", как плагинописатель, должен запрограммировать обработку "вот этой" макрофункции...

Допустим есть плагин math.func.dll, который предоставляет макродвижку математические функции (sin, cos, ...).
Имеется макрос, например, masbox(sin(3.14)).
Когда макродвижок встретит sin, он не обматюкается (т.к. уже будет знать, что такое функция "sin"), а просто дернет math.func.dll::ProcessMacroFuncW("sin",параметры).
Плагин "вычислит" sin(параметр) и вернет в макрос значение.
We are the Borg. You will be assimilated.
So Say We All!

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Переименовать callplugin

Post by Skirda » Wed 29 Feb, 2012 12:00

Max Rusov wrote:Как я понимаю mmode(3 - не делает функцию асинхронной, а решает другую проблему - реентрантность макросов:
http://bugs.farmanager.com/view.php?id=1280
а ты проверь :-)
We are the Borg. You will be assimilated.
So Say We All!

Locked

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