Перенос макросов из прошлых версий фара в LuaMacro

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
kondrik
Posts: 139
Joined: Tue 29 Mar, 2005 13:30
Has thanked: 2 times

Помогите изменить макрос под новое API Far3

Post 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
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

Re: Помогите изменить макрос под новое API Far3

Post 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')
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Помогите изменить макрос под новое API Far3

Post 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. }
Разум когда-нибудь победит.
Vix
Posts: 57
Joined: Sat 24 Jul, 2010 22:48
Been thanked: 1 time

Re: Перенос макросов из прошлых версий фара в LuaMacro

Post by Vix »

А аналог MacroView так и не появился? Чтобы через меню делать макросы, а не лезть редактором в lua, где ещё и разобраться надо...
Vix
Posts: 57
Joined: Sat 24 Jul, 2010 22:48
Been thanked: 1 time

Re: Перенос макросов из прошлых версий фара в LuaMacro

Post by Vix »

Посмотрел. Там надо писать в действиях function() Keys('F10') end, а хотелось бы просто F10. Есть такой плагин?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Перенос макросов из прошлых версий фара в LuaMacro

Post by John Doe »

Вообще-то это встроено в фар. Ctrl-<точка>

P.S.
Keys там тоже будет, однако да.
Хотите без Keys - старые версии фара ещё доступны.
ksandr1v
Posts: 10
Joined: Wed 10 Jul, 2013 10:02
Has thanked: 1 time

Аналог panel.setpos

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

Re: Аналог panel.setpos

Post by Shmuel »

ksandr1v wrote:Пытаюсь переписать на lua. В энкциклопедии (luafar_manual.chm) не нашел аналога функции panel.setpos.
Есть ещё macroapi_manual.chm.
Lua чувствителен к регистру: panel и Panel - это разные переменные.
Должно быть: Panel.SetPos.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Перенос макросов из прошлых версий фара в LuaMacro

Post by AleXH »

M2L не конвертирует конструкцию $If() ... $End (замена rem)
tucker
Posts: 47
Joined: Tue 18 Jul, 2006 04:09
Location: 56

Re: Перенос макросов из прошлых версий фара в LuaMacro

Post 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-макросы руками" есть другие варианты?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Перенос макросов из прошлых версий фара в LuaMacro

Post by Shmuel »

tucker wrote:Прошу помощи.
[.....]
В 2798 выгрузил config.farconfig.
Пришлите мне его в личку, попробую помочь.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Перенос макросов из прошлых версий фара в LuaMacro

Post by John Doe »

tucker wrote:Так как "Нужно запустить его из Фара 2927-3000", а где хранятся столь старые версии FAR я не знаю.
В параллельной теме недаво выкладывали билд 3000.
tucker
Posts: 47
Joined: Tue 18 Jul, 2006 04:09
Location: 56

Re: Перенос макросов из прошлых версий фара в LuaMacro

Post by tucker »

Спасибо за помощь!
jur
Posts: 33
Joined: Mon 02 Apr, 2012 07:00
Has thanked: 4 times

Помогите транслировать макрос для архивации

Post 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>
Но ничего не получается. Новый конфиг импортируется, про ошибки не говорит,
но если снова экспортировать конфигурацию, то в ней нет моего макроса.

Помогите, пожалуйста!
MPEG-4 - в массы!
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Помогите транслировать макрос для архивации

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

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