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

Здесь обсуждается всё, что касается макросов.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

Latest post of the previous page:

Пример Plugin.Prefix из другого треда:

Code: Select all

Plugin.Prefix("3A2AF458-43E2-4715-AFEA-93D33D56C0C2","goto:"+%h);
Как хотите, но это некрасиво и неудобно.

Хочется, чтобы было так:

Code: Select all

Exec("goto:"+%h)
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

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

Post by ctapmex »

NightRoman wrote:Пример Plugin.Prefix из другого треда:

Code: Select all

Plugin.Prefix("3A2AF458-43E2-4715-AFEA-93D33D56C0C2","goto:"+%h);
насколько я заметил, если у плагина один префикс, то его можно не указывать.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

NightRoman wrote:Хочется, чтобы было так:

Code: Select all

Exec("goto:"+%h)
Кстати, да, так будет понятнее (только все таки N=Plugin.Exec(S)), тем более, что в ФАРе есть механизмы определения...
Хотя, если у нескольких плагинов будет один и тот же префикс... Но тогда можно N=Plugin.Exec(S[,guid])
We are the Borg. You will be assimilated.
So Say We All!
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

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

Post by Kildor »

Хотя, если у нескольких плагинов будет один и тот же префикс...
во первых можно и «N=Plugin.Exec(S[,guid])», а во вторых — меню с выбором плагина никто не отменял.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

NightRoman wrote:
Plugin.Prefix предлагаю с одним параметром - команда с префиксом. Правила - те же, что в комстроке. Просто и понятно. Гуиды сюда не надо.
И лучше назвать просто Exec(). Ну и что, что пока это только для плагинов по префиксу. Или даже *всегда* только для плагинов, если обычный запускатель сюда так и не подключится (но надеюсь, что это не навсегда).
Повторю мысль, почему просто Exec() без всякого Plugin.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

Когда подключится и обычный запускатель (ну вдруг случится), то возврат - код выхода приложения, конечно. Все вписыается гладко.
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

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

Post by SUSim »

sonar wrote:насколько я заметил, если у плагина один префикс, то его можно не указывать.
это зависит от плагина как он забирает строку команд! и если префикс один то скорее всего плагин и воспринимает команду без префикса, а вот команду с префиксом МОЖЕТ обрабатывает неправильно (он просил без префикса, а всучили с префиксом...)
Выхода как всегда ДВА ;) :
1) пока ломается апи - убрать возможность указывать плагину как он хочет получить команду - с префиксом или без - сократить флаги и упростить фар - пусть всегда строка идет с префиксом, а плагинописатели отрезают от строки команд свой префикс - это просто...
2) передавать точно также как просит плагин - тоесть если плаг просит без префикса то строку надо проанализировать и если есть префикс то отрезать его, а если префикса не было, то приписать его в случае когда плагин хочет строку с префиксом а макрос передает без префикса!

Имхо первый вариант удобней всем!
SimSU ··· ·· -- ··· ··-
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

FYI
Чем закончилась опупея перевода шагового движка Фарнет в тест-системе с/на:

Code: Select all

Far::Net->PostMacro("F11 Menu.Select(\"FarNet\", 2) Enter");
Far::Net->PostMacro("Plugin.Menu(\"10435532-9BB3-487B-A045-B0E6ECAAB6BC\", \"10435532-9BB3-487B-A045-B0E6ECAAB6BC\")");
Ничем, вобщем-то. Прикрутить можно, но частично, если в сильно особых ситуациях
звать старый механизм для перевызова. Прироста скорости тестов при этом не
выявлено (факт ни на что не предендует, у меня меню плагинов маленькое).
А логика кода сильно закрученной становится.

Остаюсь на старом "добром" механизме F11 Menu.Select для самоперевызова. Это не
значит, что Plugin.Menu не годится или имеет проблемы для биндинга. Это значит,
что в очень хитрых сценариях он не обязательно полный аналог F11 Menu.Select
(во всяком случае, когда это зовется из плагина через АПИ).
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Post by John Doe »

Всю флеймообразующую ветку темы отделил.

Следствие: здесь удобство гуидов в макросах не обсуждаем
Если есть потребность обсудить - пишем zg в личку чтобы вновь открыл тему.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

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

Post by Max Rusov »

svs 12.03.2012 21:30:41 +0400 - build 2540
2. mmode(3) по умолчанию включен!
Это утверждение справедливо?
На практике наблюдается обратное:

Code: Select all

macro:post %CaseConv="ADAC3050-56E8-45FE-9CB1-A737623CC4A6"; Plugin.Call(%CaseConv) MsgBox("1")
ведет себя иначе, чем

Code: Select all

macro:post %CaseConv="ADAC3050-56E8-45FE-9CB1-A737623CC4A6"; mmode(3,1) Plugin.Call(%CaseConv) MsgBox("1")
Last edited by Max Rusov on Sat 31 Mar, 2012 16:07, edited 2 times in total.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

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

Post by Max Rusov »

Еще наблюдение. При исполнении следующего макроса видно как проскакивает диалог, как будто включен mmode(1,0).

Code: Select all

macro:post %CaseConv="ADAC3050-56E8-45FE-9CB1-A737623CC4A6"; mmode(3,1) Plugin.Call(%CaseConv) Esc
Это фича или ошибка?
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Max Rusov wrote:При исполнении следующего макроса видно как проскакивает диалог
Багофича, я вроде писал об этом (и почему), но сейчас не найду
Locked

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