Page 9 of 11
Помогите изменить макрос под новое API Far3
Posted: Mon 01 Apr, 2013 06:08
by kondrik
Latest post of the previous page:
Макрос вызывается из под пользовательского меню и используется для создание папки по текущей дате:
Code: Select all
macro: post %%folder="F:\\DOWNLOADS\\"+date("%Y_%m0_%d");
macro: post $If(0==fexist(%%folder)) m d Space print(%%folder) Enter $End
macro: post $If(1) c d Space print(%%folder) Enter $End
Re: Помогите изменить макрос под новое API Far3
Posted: Mon 01 Apr, 2013 06:33
by 2useven10
Code: Select all
macro: post Far.DisableHistory(1); local f=mf.date("F:\\DOWNLOADS\\%Y_%m0_%d"); if not mf.fexist(f) then print("md "..f); Keys('Enter') end print("cd "..f); Keys('Enter')
Re: Помогите изменить макрос под новое API Far3
Posted: Mon 01 Apr, 2013 06:38
by Smitis
Макросом на клавишах (можно развернуть в одну строку или вызывать из меню через eval)
Macro {
description="Create folder YYYY-MM-DD";
area="Shell Search";
key="AltShiftF7";
flags="NoPluginPanels";
action=function()
local f = mf.date("%Y-%m0-%d")
if Panel.FExist(0,f) == 0 then
Keys("F7 CtrlY")
print(f)
Keys("Enter")
else
Panel.SetPos(0,f)
end
end;
}
Re: Перенос макросов из прошлых версий фара в LuaMacro
Posted: Tue 07 May, 2013 11:19
by Vix
А аналог MacroView так и не появился? Чтобы через меню делать макросы, а не лезть редактором в lua, где ещё и разобраться надо...
Re: Перенос макросов из прошлых версий фара в LuaMacro
Posted: Tue 07 May, 2013 11:22
by John Doe
Re: Перенос макросов из прошлых версий фара в LuaMacro
Posted: Tue 07 May, 2013 13:52
by Vix
Посмотрел. Там надо писать в действиях function() Keys('F10') end, а хотелось бы просто F10. Есть такой плагин?
Re: Перенос макросов из прошлых версий фара в LuaMacro
Posted: Tue 07 May, 2013 13:54
by John Doe
Вообще-то это встроено в фар. Ctrl-<точка>
P.S.
Keys там тоже будет, однако да.
Хотите без Keys - старые версии фара ещё доступны.
Аналог panel.setpos
Posted: Thu 11 Jul, 2013 16:52
by ksandr1v
Есть макрос в Far2
Code: Select all
!w [Найти текущий элемент на пассивной панели]
%fname = Panel.Item(0,0,0);
panel.setpos(1, %fname)
Пытаюсь переписать на lua. В энкциклопедии (luafar_manual.chm) не нашел аналога функции panel.setpos.
Как можно переписать этот макрос в Far3?
Вот что пока получилось:
Code: Select all
Macro {
area="Shell"; key="w"; flags="EmptyCommandLine|DisableOutput";
action=function()
item = panel.GetCurrentPanelItem (nil, 1)
fname = item["FileName"]
panel.SetPos(1, fname) -- Exception !!
end;
}
Re: Аналог panel.setpos
Posted: Thu 11 Jul, 2013 17:15
by Shmuel
ksandr1v wrote:Пытаюсь переписать на lua. В энкциклопедии (luafar_manual.chm) не нашел аналога функции panel.setpos.
Есть ещё macroapi_manual.chm.
Lua чувствителен к регистру: panel и Panel - это разные переменные.
Должно быть: Panel.SetPos.
Re: Перенос макросов из прошлых версий фара в LuaMacro
Posted: Fri 16 Aug, 2013 19:20
by AleXH
M2L не конвертирует конструкцию $If() ... $End (замена rem)
Re: Перенос макросов из прошлых версий фара в LuaMacro
Posted: Thu 02 Jan, 2014 16:11
by tucker
Прошу помощи.
В результате обновления с 3.0.
2798 x86 на 3.0.
3746 x64 макросы работать перестали.
В 2798 выгрузил config.farconfig.
В 3746 установил плагин "Macro2Lua конвертер", но при запуске
Code: Select all
M2L: convert config.farconfig 1.lua
FAR молча закрывается, 1.lua не создается. С отдельной веткой <macros> и параметром xml_macros поведение аналогичное.
Конвертировать macros.db по теме
Переезд макросов из macros.db в файлы, тоже не получается.
Так как "
Нужно запустить его из Фара 2927-3000", а где хранятся столь старые версии FAR я
не знаю.
Как добавить поддержку LUA в 2798 тоже не нашел.
Кроме как "
создать LUA-макросы руками" есть другие варианты?
Re: Перенос макросов из прошлых версий фара в LuaMacro
Posted: Thu 02 Jan, 2014 16:22
by Shmuel
tucker wrote:Прошу помощи.
[.....]
В 2798 выгрузил config.farconfig.
Пришлите мне его в личку, попробую помочь.
Re: Перенос макросов из прошлых версий фара в LuaMacro
Posted: Thu 02 Jan, 2014 17:28
by John Doe
tucker wrote:Так как "Нужно запустить его из Фара 2927-3000", а где хранятся столь старые версии FAR я не знаю.
В параллельной теме недаво выкладывали билд
3000.
Re: Перенос макросов из прошлых версий фара в LuaMacro
Posted: Thu 02 Jan, 2014 19:59
by tucker
Спасибо за помощь!
Помогите транслировать макрос для архивации
Posted: Tue 18 Nov, 2014 17:19
by jur
Здравствуйте!
С вашей, форумчане, помощью породил простой макрос для архивации файлов.
Речь идет о Far-е 3.0.2579. Вызывается по ShiftF1 и делает следующие две вещи:
1. Если противоположная панель видна, то к имени файла архива, продложенному
плагином архивации, добавляет путь к этой папке. Если противоположная панель
выключена, то оставляет имя архива как есть.
2. "Нажимает" Alt+"f", т.е. включает фильтрацию файлов для архивации.
Далее я нажимаю "Enter" и получаю свой архив. Вот текст этого простого макроса
(он расположен в самом конце файла конфигурации):
Code: Select all
<macros>
<constants />
<variables />
<functions />
<keymacros>
<macro area="Shell" key="ShiftF1" flags="DisableOutput">
<text>$if (PPanel.Visible) ShiftF1 Home CtrlShift] $else ShiftF1 $end AltF Enter</text>
</macro>
</keymacros>
</macros>
По совету из
сообщения о переносе макросов я попытался сконвертировать его
в новый формат и импортировать в новый Far (текущая версия 3.0.4190).
Вот сконвертированный текст макроса:
Code: Select all
<macros>
<constants />
<variables />
<functions />
<keymacros>
<macro area="Shell" key="ShiftF1" flags="DisableOutput">
<text><![CDATA[ if PPanel.Visible then Keys("ShiftF1 Home CtrlShift]") else Keys("ShiftF1") end Keys("AltF Enter") ]]></text>
</macro>
</keymacros>
</macros>
Но ничего не получается. Новый конфиг импортируется, про ошибки не говорит,
но если снова экспортировать конфигурацию, то в ней нет моего макроса.
Помогите, пожалуйста!
Помогите транслировать макрос для архивации
Posted: Tue 18 Nov, 2014 17:51
by Shmuel
Поместите этот код в файл с расширением lua, а сам файл - в папку %farprofile%\Macros\scripts. Перезапустите Фар.
Code: Select all
Macro {
description="";
area="Shell"; key="ShiftF1";
action=function()
if PPanel.Visible then Keys("ShiftF1 Home CtrlShift]")
else Keys("ShiftF1")
end
Keys("AltF Enter")
end;
}