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

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

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

Post by kondrik » Mon 01 Apr, 2013 06:08

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: 3036
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 82 times

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

Post by 2useven10 » Mon 01 Apr, 2013 06:33

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')

Smitis
Posts: 1489
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 14 times
Been thanked: 24 times
Contact:

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

Post by Smitis » Mon 01 Apr, 2013 06:38

Макросом на клавишах (можно развернуть в одну строку или вызывать из меню через eval)
  1. Macro {
  2.     description="Create folder YYYY-MM-DD";
  3.     area="Shell Search";
  4.     key="AltShiftF7";
  5.     flags="NoPluginPanels";
  6.     action=function()
  7.         local f = mf.date("%Y-%m0-%d")
  8.         if Panel.FExist(0,f) == 0 then
  9.             Keys("F7 CtrlY")
  10.             print(f)
  11.             Keys("Enter")
  12.         else
  13.             Panel.SetPos(0,f)
  14.         end
  15.     end;
  16. }
Разум когда-нибудь победит.

Vix
Posts: 57
Joined: Sat 24 Jul, 2010 22:48
Been thanked: 1 time

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

Post by Vix » Tue 07 May, 2013 11:19

А аналог MacroView так и не появился? Чтобы через меню делать макросы, а не лезть редактором в lua, где ещё и разобраться надо...

User avatar
John Doe
Бюрократ
Posts: 11383
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 16 times
Been thanked: 100 times

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

Post by John Doe » Tue 07 May, 2013 11:22


Vix
Posts: 57
Joined: Sat 24 Jul, 2010 22:48
Been thanked: 1 time

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

Post by Vix » Tue 07 May, 2013 13:52

Посмотрел. Там надо писать в действиях function() Keys('F10') end, а хотелось бы просто F10. Есть такой плагин?

User avatar
John Doe
Бюрократ
Posts: 11383
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 16 times
Been thanked: 100 times

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

Post by John Doe » Tue 07 May, 2013 13:54

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

P.S.
Keys там тоже будет, однако да.
Хотите без Keys - старые версии фара ещё доступны.

ksandr1v
Posts: 10
Joined: Wed 10 Jul, 2013 10:02
Has thanked: 1 time

Аналог panel.setpos

Post by ksandr1v » Thu 11 Jul, 2013 16:52

Есть макрос в 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: 5222
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 150 times

Re: Аналог panel.setpos

Post by Shmuel » Thu 11 Jul, 2013 17:15

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 » Fri 16 Aug, 2013 19:20

M2L не конвертирует конструкцию $If() ... $End (замена rem)

tucker
Posts: 47
Joined: Tue 18 Jul, 2006 04:09
Location: 56

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

Post by tucker » Thu 02 Jan, 2014 16:11

Прошу помощи.
В результате обновления с 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: 5222
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 150 times

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

Post by Shmuel » Thu 02 Jan, 2014 16:22

tucker wrote:Прошу помощи.
[.....]
В 2798 выгрузил config.farconfig.
Пришлите мне его в личку, попробую помочь.

User avatar
John Doe
Бюрократ
Posts: 11383
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 16 times
Been thanked: 100 times

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

Post by John Doe » Thu 02 Jan, 2014 17:28

tucker wrote:Так как "Нужно запустить его из Фара 2927-3000", а где хранятся столь старые версии FAR я не знаю.
В параллельной теме недаво выкладывали билд 3000.

tucker
Posts: 47
Joined: Tue 18 Jul, 2006 04:09
Location: 56

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

Post by tucker » Thu 02 Jan, 2014 19:59

Спасибо за помощь!

jur
Posts: 33
Joined: Mon 02 Apr, 2012 07:00
Has thanked: 4 times

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

Post by jur » Tue 18 Nov, 2014 17:19

Здравствуйте!

С вашей, форумчане, помощью породил простой макрос для архивации файлов.
Речь идет о 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: 5222
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 150 times

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

Post by Shmuel » Tue 18 Nov, 2014 17:51

Поместите этот код в файл с расширением 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;
}

jur
Posts: 33
Joined: Mon 02 Apr, 2012 07:00
Has thanked: 4 times

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

Post by jur » Wed 19 Nov, 2014 12:47

Включение фильтра уже заработало, спасибо! Только
пришлось в строке с "if" убрать правую квадратную скобку.

Теперь хотелось бы также включить подстановку имени
каталога из противоположной панели, если она включена.
За это, вроде, ранее отвечала строка: "ShiftF1 Home CtrlShift",
но теперь этого действия не происходит. Я попробовал без
скрипта, руками нажать: Shift + F1, потом Home и Ctrl + Shift.
Путь из противоположной панели все-равно не подставляется.

Наверное нужно для этого применить какую-нибудь специальную
команду или последовательность нажатий клавиш?

P.S. Вообще-то я вижу, что было бы удобнее после нажатия
ShiftF1 сначала выполнить "AltF Enter", а затем каким-нибудь
образом вернуться в поле с именем файла и возможно сделать
подстановку пути из противоположной панели. Это возможно?
MPEG-4 - в массы!

Post Reply

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