Как вернуть в плагин результат работы макроса?

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Как вернуть в плагин результат работы макроса?

Post by Skirda »

Latest post of the previous page:

John Doe wrote:В противном случае запускает не оборачивая.
теперь я не понял
We are the Borg. You will be assimilated.
So Say We All!
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Как вернуть в плагин результат работы макроса?

Post by John Doe »

Запускает макрос-условие "как есть".
(Это всё следует понимать в контексте обсуждения MacroLib)

Если непонятно распишу по шагам.
AlexII
Posts: 270
Joined: Mon 10 Apr, 2006 00:53
Location: станица Григорополисская
Has thanked: 147 times
Contact:

Re: Как вернуть в плагин результат работы макроса?

Post by AlexII »

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

Re: Как вернуть в плагин результат работы макроса?

Post by Max Rusov »

AlexII wrote:Пусть в примере на замену F11, Menu.Select() сие не особо поможет (не все плагины могут быть доступны в вызванном контексте)
Ну почему - вполне поможет. Пример подразумевал целью - именно проверить наличие плагина. А доступность в контексте определяется обычным способом - через macroarea.
AlexII
Posts: 270
Joined: Mon 10 Apr, 2006 00:53
Location: станица Григорополисская
Has thanked: 147 times
Contact:

Re: Как вернуть в плагин результат работы макроса?

Post by AlexII »

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

Re: Как вернуть в плагин результат работы макроса?

Post by Max Rusov »

Чего непонятного? Макрос привязан к macroarea, там где он не имеет смысла он не вызовется. Доступность плагина в меню F11 определяется точно так-же, через macroarea. Эти условия взаимозаменяемы.
AlexII
Posts: 270
Joined: Mon 10 Apr, 2006 00:53
Location: станица Григорополисская
Has thanked: 147 times
Contact:

Re: Как вернуть в плагин результат работы макроса?

Post by AlexII »

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

Re: Как вернуть в плагин результат работы макроса?

Post by Max Rusov »

AlexII wrote:А если макрос в области «Common»?"
Ну, если мы говорим в контексте MacroLib, то там все проще. Макросы в реестре приходилось относить к области Common, чтобы не дублировать их код для N областей, где макрос имеет смысл. MacroLib умеет привязывать макрос сразу к нескольким областям - только тем где он действительно работает, например: Area="Shell Editor Viewer". Поэтому Common макросов становится не так много - только такие, которые действительно имеют смысл везде. У меня таких - всего несколько штук осталось.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Max Rusov »

А можно ли теперь будет решить задачу, обсуждавшуюся в этом топике:

Как вернуть в плагин результат работы макроса?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Max Rusov wrote:А можно ли теперь будет решить задачу, обсуждавшуюся в этом топике:

Как вернуть в плагин результат работы макроса?
Нельзя ли привести практический пример полезности этой идеи?
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Max Rusov »

Shmuel wrote:Нельзя ли привести практический пример полезности этой идеи?
По приведенной ссылке было много примеров, но продублирую.
Довольно давно предлагалось сделать для макросов более гибкое условие запуска, чтобы это было произвольное логическое выражение, а не просто набор флажков. Например, в MacroLib можно было бы писать:

Code: Select all

macro Descr="Extended Copy" Area="Shell" Key="F5" If="Plugin.Exist(#%ExtendedCopy)"
{{
  Plugin.Menu(#%ExtendedCopy)
}}
Еще оттуда:
...Конечно, в 90% случаев if будет укладываться в формулу, но эта формула должна пользоваться всеми функциями макро-api. Например, очень часто нужен условный запуск макросов, в зависимости от переменных окружения. Не хочется повторять вычислитель выражений в плагине, раз он уже есть в FAR'е.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Max Rusov wrote:Довольно давно предлагалось сделать для макросов более гибкое условие запуска, чтобы это было произвольное логическое выражение, а не просто набор флажков. Например, в MacroLib можно было бы писать:

Code: Select all

macro Descr="Extended Copy" Area="Shell" Key="F5" If="Plugin.Exist(#%ExtendedCopy)"
{{
  Plugin.Menu(#%ExtendedCopy)
}}
Это в принципе можно было бы реализовать по другому, не возвращая результат операции плагину, а делая всё внутри Фара. То-есть, каждый макрос нового формата содержал бы два макроса старого формата, первый из которых определял бы, нужно ли запускать второй.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Max Rusov »

В контексте MacroLiba'а это не устраивает. Там принцип такой:

1. По условиям срабатывания (Key, Area, Cond) строится список макросов, которые должны быть вызваны.
2. Из них выбираются макросы с наибольшим приоритетом (Priority)
3. Если остался один - он выполняется, если более одного - показывается меню с выбором.

Условие If, если оно бы могло быть реализовано, проверялось бы на первом шаге.

Конечно, если все эта логика будет повторена в FAR'е... +Все модификаторы нажатий... Но я сомневаюсь, что это будет делаться.

А синхронный запуск макро-функций мог бы быть полезен во множестве других плагинах. Везде, где хочется расширения функциональности скриптами.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Если вся проблема - в вычислении условий, то-есть при этом не надо посылать клавиши Фару и т.п., то проблема видится просто в том, что некоторые данные, доступные макросам, недоступны через API плагинов, и восполнение этого недостатка решило бы эту проблему. Так?

Пока я тут сочинял, ты успел добавить текст. Идея синхронного запуска - хорошая, буду думать.
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: Spring — внедрение Lua в качестве макроязыка

Post by NightRoman »

Наверное, не совсем так. Условие-то должно быть записано пользователем в виде скрипта. И плагин этот скрипт (макрос) должен запустить и получить результат.

Пока я сочинял, тоже добавился текст. ОК.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

NightRoman wrote:Наверное, не совсем так. Условие-то должно быть записано пользователем в виде скрипта. И плагин этот скрипт (макрос) должен запустить и получить результат.
Нет никакой проблемы уже сейчас добавить функцию в API плагинов, которая бы вызывала Lua-скрипт синхронно и возвращала бы результат (один или более). Загвоздка в том, видимо, что этот скрипт не должен посылать клавиш или делать прочие операции, для которых нужно быть внутри цикла опроса и обработки событий.

Примечание модератора: MCTL_EXECSTRING
Post Reply

Return to “Разработка плагинов”