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

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

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

Post by Zmey78 »

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

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

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

Post by Zmey78 »

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: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

1. В данном случае это не обязательно, т.е. и так правильно.
2. Да.
3. Нет, функция ShellExecute всегда возвращает целое число.
Меня несколько смущает AltT в вашем макросе.
Zmey78
Posts: 30
Joined: Sun 22 Feb, 2015 16:37
Has thanked: 4 times
Contact:

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

Post by Zmey78 »

3. Я про not item.FileAttributes:find("d") и нужно ли мне сравнивать с nil?
AltT работает, это для отметки пункта "перезаписывать существующие".
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Zmey78 wrote: 3. Я про not item.FileAttributes:find("d") и нужно ли мне сравнивать с nil?
Не нужно. Так, как у вас сделано - это эквивалентно сравнению с nil.
Zmey78 wrote: AltT работает, это для отметки пункта "перезаписывать существующие".
У меня английский интерфейс, там AltT исполняет другую функцию.
Zmey78
Posts: 30
Joined: Sun 22 Feb, 2015 16:37
Has thanked: 4 times
Contact:

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

Post by Zmey78 »

Написал, теперь все нормально:
http://forum.farmanager.com/viewtopic.php?f=60&t=10579
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Zmey78 wrote: Написал, теперь все нормально:
И в чём же была проблема? Сравнение старой версии (которая у вас глючила) и новой показывает только косметические различия.
Zmey78
Posts: 30
Joined: Sun 22 Feb, 2015 16:37
Has thanked: 4 times
Contact:

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

Post by Zmey78 »

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

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