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

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

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

Post by Skirda » Mon 17 Jan, 2011 14:30

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: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Mon 17 Jan, 2011 14:34

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

Если непонятно распишу по шагам.

AlexII
Posts: 260
Joined: Mon 10 Apr, 2006 00:53
Location: станица Григорополисская
Has thanked: 58 times
Contact:

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

Post by AlexII » Mon 17 Jan, 2011 19:17


User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

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

Post by Max Rusov » Mon 17 Jan, 2011 19:41

AlexII wrote:Пусть в примере на замену F11, Menu.Select() сие не особо поможет (не все плагины могут быть доступны в вызванном контексте)
Ну почему - вполне поможет. Пример подразумевал целью - именно проверить наличие плагина. А доступность в контексте определяется обычным способом - через macroarea.

AlexII
Posts: 260
Joined: Mon 10 Apr, 2006 00:53
Location: станица Григорополисская
Has thanked: 58 times
Contact:

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

Post by AlexII » Mon 17 Jan, 2011 22:10

Max Rusov wrote:А доступность в контексте определяется обычным способом - через macroarea.
Не ясно. Если можно — пример макроса в личку.

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

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

Post by Max Rusov » Mon 17 Jan, 2011 22:15

Чего непонятного? Макрос привязан к macroarea, там где он не имеет смысла он не вызовется. Доступность плагина в меню F11 определяется точно так-же, через macroarea. Эти условия взаимозаменяемы.

AlexII
Posts: 260
Joined: Mon 10 Apr, 2006 00:53
Location: станица Григорополисская
Has thanked: 58 times
Contact:

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

Post by AlexII » Tue 18 Jan, 2011 06:16

Max Rusov wrote:Макрос привязан к macroarea, там где он не имеет смысла он не вызовется.
Спасибо, теперь ясно.

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

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

Post by Max Rusov » Tue 18 Jan, 2011 13:43

AlexII wrote:А если макрос в области «Common»?"
Ну, если мы говорим в контексте MacroLib, то там все проще. Макросы в реестре приходилось относить к области Common, чтобы не дублировать их код для N областей, где макрос имеет смысл. MacroLib умеет привязывать макрос сразу к нескольким областям - только тем где он действительно работает, например: Area="Shell Editor Viewer". Поэтому Common макросов становится не так много - только такие, которые действительно имеют смысл везде. У меня таких - всего несколько штук осталось.

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

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

Post by Max Rusov » Mon 08 Oct, 2012 12:24

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

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

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

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

Post by Shmuel » Mon 08 Oct, 2012 15:20

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

Как вернуть в плагин результат работы макроса?
Нельзя ли привести практический пример полезности этой идеи?

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

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

Post by Max Rusov » Mon 08 Oct, 2012 15:35

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: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

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

Post by Shmuel » Mon 08 Oct, 2012 15:55

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

Code: Select all

macro Descr="Extended Copy" Area="Shell" Key="F5" If="Plugin.Exist(#%ExtendedCopy)"
{{
  Plugin.Menu(#%ExtendedCopy)
}}
Это в принципе можно было бы реализовать по другому, не возвращая результат операции плагину, а делая всё внутри Фара. То-есть, каждый макрос нового формата содержал бы два макроса старого формата, первый из которых определял бы, нужно ли запускать второй.

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

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

Post by Max Rusov » Mon 08 Oct, 2012 16:04

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

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

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

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

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

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

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

Post by Shmuel » Mon 08 Oct, 2012 16:11

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

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

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

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

Post by NightRoman » Mon 08 Oct, 2012 16:18

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

Пока я сочинял, тоже добавился текст. ОК.

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

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

Post by Shmuel » Mon 08 Oct, 2012 16:23

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

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

stasf
Posts: 111
Joined: Wed 10 Dec, 2014 22:53
Has thanked: 2 times
Been thanked: 1 time

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

Post by stasf » Sun 25 Oct, 2015 20:18

Очень извиняюсь за возрат к старой закрытой теме, но как все-таки правильно принимать входящие параметры и отдавать результат в макросе, вызываемом из плагина с помощью MCTL_EXECSTRING ?
Что-то не могу найти где это описано :-(

Post Reply

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

Who is online

Users browsing this forum: No registered users and 3 guests