Page 1 of 1
Макрос (работа с панелями) глючит, подскажите как лечить!
Posted: Tue 13 Dec, 2016 14:49
by Zmey78
Пишу макрос под эту задачу:
http://forum.farmanager.com/viewtopic.php?t=10570
Работает очень нестабильно, раза 2 срабатывает, а затем уже почему-то реагирует на Enter только стандартным образом. Иногда перезапуск FAR ненадолго помогает, иногда нет. Far 3.0 build 4747 (x64).
local F = far.Flags
Macro {
description="Open from the temporary directory";
area="Shell"; key="Enter";
condition=function()
local info = panel.GetPanelInfo(nil,1)
local item = panel.GetCurrentPanelItem(nil,1)
if info.PanelType==F.PTYPE_FILEPANEL and bit64.band(info.Flags,F.PFLAGS_PLUGIN)~=0 and not item.FileAttributes:find("d") then
return true
end
end;
action=function()
Keys('F5 Del % T E M P % AltT Enter')
win.ShellExecute(nil,nil,win.GetEnv("TEMP").."\\"..panel.GetCurrentPanelItem(nil,1).FileName)
end;
}
Кладу сюда: "C:\Users\Alexey\AppData\Roaming\Far Manager\Profile\Macros\scripts\Panel.Open.lua"
Макрос (работа с панелями) глючит, подскажите как лечить!
Posted: Wed 14 Dec, 2016 14:02
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 то, что возвращает эта функция?
Макрос (работа с панелями) глючит, подскажите как лечить!
Posted: Wed 14 Dec, 2016 14:09
by Shmuel
1. В данном случае это не обязательно, т.е. и так правильно.
2. Да.
3. Нет, функция ShellExecute всегда возвращает целое число.
Меня несколько смущает AltT в вашем макросе.
Макрос (работа с панелями) глючит, подскажите как лечить!
Posted: Wed 14 Dec, 2016 15:54
by Zmey78
3. Я про not item.FileAttributes:find("d") и нужно ли мне сравнивать с nil?
AltT работает, это для отметки пункта "перезаписывать существующие".
Макрос (работа с панелями) глючит, подскажите как лечить!
Posted: Wed 14 Dec, 2016 16:29
by Shmuel
Zmey78 wrote: 3. Я про not item.FileAttributes:find("d") и нужно ли мне сравнивать с nil?
Не нужно. Так, как у вас сделано - это эквивалентно сравнению с nil.
Zmey78 wrote: AltT работает, это для отметки пункта "перезаписывать существующие".
У меня английский интерфейс, там AltT исполняет другую функцию.
Макрос (работа с панелями) глючит, подскажите как лечить!
Posted: Wed 14 Dec, 2016 17:11
by Zmey78
Макрос (работа с панелями) глючит, подскажите как лечить!
Posted: Wed 14 Dec, 2016 17:36
by Shmuel
Zmey78 wrote: Написал, теперь все нормально:
И в чём же была проблема? Сравнение старой версии (которая у вас глючила) и новой показывает только косметические различия.
Макрос (работа с панелями) глючит, подскажите как лечить!
Posted: Wed 14 Dec, 2016 18:07
by Zmey78
Shmuel wrote: в чём же была проблема
Так и не понял, но теперь не глючит. Версия Far та же.