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)
  1. Macro {
  2.  
  3.     description="Create folder YYYY-MM-DD";
  4.  
  5.     area="Shell Search";
  6.  
  7.     key="AltShiftF7";
  8.  
  9.     flags="NoPluginPanels";
  10.  
  11.     action=function()
  12.  
  13.         local f = mf.date("%Y-%m0-%d")
  14.  
  15.         if Panel.FExist(0,f) == 0 then
  16.  
  17.             Keys("F7 CtrlY")
  18.  
  19.             print(f)
  20.  
  21.             Keys("Enter")
  22.  
  23.         else
  24.  
  25.             Panel.SetPos(0,f)
  26.  
  27.         end
  28.  
  29.     end;
  30.  
  31. }

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;
}