Макрос (работа с панелями) глючит, подскажите как лечить!

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
Zmey78
Posts: 28
Joined: Sun 22 Feb, 2015 16:37
Has thanked: 3 times

Макрос (работа с панелями) глючит, подскажите как лечить!

Post by Zmey78 » Tue 13 Dec, 2016 14:49

Пишу макрос под эту задачу: viewtopic.php?t=10570

Работает очень нестабильно, раза 2 срабатывает, а затем уже почему-то реагирует на Enter только стандартным образом. Иногда перезапуск FAR ненадолго помогает, иногда нет. Far 3.0 build 4747 (x64).
  1. local F = far.Flags
  2.  
  3. Macro {
  4.   description="Open from the temporary directory";
  5.   area="Shell"; key="Enter";
  6.   condition=function()
  7.     local info = panel.GetPanelInfo(nil,1)
  8.     local item = panel.GetCurrentPanelItem(nil,1)
  9.     if info.PanelType==F.PTYPE_FILEPANEL and bit64.band(info.Flags,F.PFLAGS_PLUGIN)~=0 and not item.FileAttributes:find("d") then
  10.       return true
  11.     end
  12.   end;
  13.   action=function()
  14.     Keys('F5 Del % T E M P % AltT Enter')
  15.     win.ShellExecute(nil,nil,win.GetEnv("TEMP").."\\"..panel.GetCurrentPanelItem(nil,1).FileName)
  16.   end;
  17. }
Кладу сюда: "C:\Users\Alexey\AppData\Roaming\Far Manager\Profile\Macros\scripts\Panel.Open.lua"

Zmey78
Posts: 28
Joined: Sun 22 Feb, 2015 16:37
Has thanked: 3 times

Макрос (работа с панелями) глючит, подскажите как лечить!

Post by Zmey78 » Wed 14 Dec, 2016 14:02

Zmey78 wrote: if info.PanelType==F.PTYPE_FILEPANEL and bit64.band(info.Flags,F.PFLAGS_PLUGIN)~=0 and not item.FileAttributes:find("d") then
Я подозреваю вот эту часть:
1) надо ли заключать условия в () между and?
2) правильно ли использую функцию find?
3) надо ли сравнивать с nil то, что возвращает эта функция?

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

Макрос (работа с панелями) глючит, подскажите как лечить!

Post by Shmuel » Wed 14 Dec, 2016 14:09

1. В данном случае это не обязательно, т.е. и так правильно.
2. Да.
3. Нет, функция ShellExecute всегда возвращает целое число.
Меня несколько смущает AltT в вашем макросе.

Zmey78
Posts: 28
Joined: Sun 22 Feb, 2015 16:37
Has thanked: 3 times

Макрос (работа с панелями) глючит, подскажите как лечить!

Post by Zmey78 » Wed 14 Dec, 2016 15:54

3. Я про not item.FileAttributes:find("d") и нужно ли мне сравнивать с nil?
AltT работает, это для отметки пункта "перезаписывать существующие".

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

Макрос (работа с панелями) глючит, подскажите как лечить!

Post by Shmuel » Wed 14 Dec, 2016 16:29

Zmey78 wrote: 3. Я про not item.FileAttributes:find("d") и нужно ли мне сравнивать с nil?
Не нужно. Так, как у вас сделано - это эквивалентно сравнению с nil.
Zmey78 wrote: AltT работает, это для отметки пункта "перезаписывать существующие".
У меня английский интерфейс, там AltT исполняет другую функцию.

Zmey78
Posts: 28
Joined: Sun 22 Feb, 2015 16:37
Has thanked: 3 times

Макрос (работа с панелями) глючит, подскажите как лечить!

Post by Zmey78 » Wed 14 Dec, 2016 17:11

Написал, теперь все нормально:
viewtopic.php?f=60&t=10579

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

Макрос (работа с панелями) глючит, подскажите как лечить!

Post by Shmuel » Wed 14 Dec, 2016 17:36

Zmey78 wrote: Написал, теперь все нормально:
И в чём же была проблема? Сравнение старой версии (которая у вас глючила) и новой показывает только косметические различия.

Zmey78
Posts: 28
Joined: Sun 22 Feb, 2015 16:37
Has thanked: 3 times

Макрос (работа с панелями) глючит, подскажите как лечить!

Post by Zmey78 » Wed 14 Dec, 2016 18:07

Shmuel wrote: в чём же была проблема
Так и не понял, но теперь не глючит. Версия Far та же.

Post Reply

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