Plugin.Command: нужно ли указание префикса Topic is solved

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Plugin.Command: нужно ли указание префикса

Post by buniak_a_h »

У меня вопрос по использованию вызова Plugin.Command совместно с ArcLite
В описании написано:
N=plugin.command(Guid,Command) Аналог вызова плагина по префиксу
Следует ли из этого, что command надо указывать с префиксом?
Например, команда arc:Far.7z, набранная в командной строке, прекрасно открывает архив. НО если я в макросе напишу:

Code: Select all

local ArcLite_Guid = '65642111-AA69-4B84-B4B8-9249579EC4FA'
Plugin.Command(ArcLite_Guid, [[arc:Far.7z]])
то получаю ошибку (кстати, функция Plugin.Command возвращает true! Т.е. даже так не определить, нужен ли префикс). А если из командной сроки убрать префикс arc:

Code: Select all

local ArcLite_Guid = '65642111-AA69-4B84-B4B8-9249579EC4FA'
Plugin.Command(ArcLite_Guid, [[Far.7z]])
то всё работает. При этом для плагина MultiArc надо указывать префикс. Вот так

Code: Select all

local ma_Guid = 'C5508DDB-5175-4736-9A10-C8F6EED7B32F'
Plugin.Command(ma_Guid, [[ma:Far.7z]])
работает.
Как узнать, когда надо указывать префикс, а когда - нет? И нельзя ли как-то это унифицировать? Может, это ошибка конкретного плагина ArcLite и надо туда написать?
Last edited by buniak_a_h on Tue 02 Jun, 2020 00:08, edited 2 times in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Plugin.Command: нужно ли указание префикса

Post by John Doe »

Зависит от флага PF_FULLCMDLINE.
https://api.farmanager.com/ru/structure ... ULLCMDLINE
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Plugin.Command: нужно ли указание префикса

Post by buniak_a_h »

John Doe, ой, значит ошибка в FARCmds. Там Flags = 1 (PF_PRELOAD). А PF_FULLCMDLINE не выставлен. Хотя абсолютно точно нужен:
https://api.farmanager.com/ru/structures/plugininfo.html#PF_FULLCMDLINE wrote:Обязательно использовать этот флаг, если плагин умеет обрабатывать несколько префиксов CommandPrefix.
а FARCmds умеет.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Plugin.Command: нужно ли указание префикса

Post by John Doe »

https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Plugin.Command: нужно ли указание префикса

Post by buniak_a_h »

Что-то я с флагами вообще ничего не понимаю.
У ArcLite Flags=0 - вроде как нормально
У MultiArc вообще феерия: Flags=0x1000000000000000
А F.PF_FULLCMDLINE = 16
Может, надо как-то сдвигать? Хотя с Flags==1 всё равно непонятно будет…
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Plugin.Command: нужно ли указание префикса

Post by buniak_a_h »

John Doe, вот как я получаю информацию о плагине:

Code: Select all

local F = far.Flags
local Guid=far.InputBox('3BF83EA6-54D6-4050-A4A8-CD90734A9522',
      'Find plugin by GUID', 'Enter GUID', 'Find plugin by GUID', nil, nil, nil,
      bor(F.FIB_NOAMPERSAND, F.FIB_NONE))
if Guid then
 local plugin = far.FindPlugin(F.PFM_GUID, win.Uuid(Guid))
 if plugin then
  local PlugInfo = far.GetPluginInformation(plugin)
  if PlugInfo then
   require('le')(PlugInfo)
  end
 end
end
Что не так?
Last edited by buniak_a_h on Tue 02 Jun, 2020 09:55, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Plugin.Command: нужно ли указание префикса

Post by buniak_a_h »

John Doe wrote: Tue 02 Jun, 2020 09:05 Плохо смотрите
Вы на входе показываете, что там всё правильно. А я на выходе - там совершенно другие цифры. Как я должен смотреть? Проверка исходников не считается.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Plugin.Command: нужно ли указание префикса

Post by buniak_a_h »

John Doe, есть уж совсем простой способ посмотреть:
lua:=far.GetPluginInformation(far.FindPlugin('PFM_GUID', win.Uuid('3A2AF458-43E2-4715-AFEA-93D33D56C0C2'))).Flags
выдаёт 1. Для контроля
lua:=far.GetPluginInformation(far.FindPlugin('PFM_GUID', win.Uuid('3A2AF458-43E2-4715-AFEA-93D33D56C0C2'))).GInfo.Title
должна показать FARCmds
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Plugin.Command: нужно ли указание префикса

Post by John Doe »

https://api.farmanager.com/ru/structure ... ation.html

Искомое поле PInfo.Flags.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Plugin.Command: нужно ли указание префикса

Post by buniak_a_h »

John Doe, спасибо. Не рассмотрел,что там несколько полей Flags.
Post Reply

Return to “Нужна помощь”