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

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Docent1
Posts: 561
Joined: Thu 31 Mar, 2005 23:13
Been thanked: 1 time

Re: Ликбез по Луа

Post by Docent1 »

Latest post of the previous page:

Shmuel
Shmuel wrote:
Docent1 wrote:Спасибо, Shmuel, наверняка lua хорош, но из головы уже вылезают всякие "языки и макросы" в виде шишек!
Если не ошибаюсь, это был твой первый пост по Lua-макросам? Что же ты хочешь: пришёл, увидел, победил? Так бывает редко. Язык Lua - очень простой на самом деле, так что иронии я не понял. Но если нужна будет помощь - всегда с удовольствием.
Переписал твой фай в "F:\Program Files (x86)\Far3\Profile\Macros\internal\Editor_AltR.lua"
Заменил

Code: Select all

Macro {
  description="colorer on off";
  area="Editor";
  key="AltR";
  flags="DisableOutput";
  action=Keys("F11") if  Menu.Select("FarColorer", 0) > 0 then  Keys("Enter C Space Enter") else Keys("Esc") Keys("AKey") end;
}
Выдает ошибку:
F:\Program Files (x86)\Far3\Profile\Macros\internal\Editor_AltR.lua:103: '}' expected
(to close '{' at line 98) near 'if'
Может, есть какие соображения?
Придется все-таки изучать LUA.
Last edited by Docent1 on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: [code]
Docent1
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Ликбез по Луа

Post by John Doe »

При чём тут вообще Lua
Посмотрите примеры макросов в Addons хотя бы
action=function() end;
Docent1
Posts: 561
Joined: Thu 31 Mar, 2005 23:13
Been thanked: 1 time

Re: Ликбез по Луа

Post by Docent1 »

John Doe wrote:При чём тут вообще Lua
Посмотрите примеры макросов в Addons хотя бы
action=function() end;
Я перепробовал все варианты, в том числе и этот. В этом случае выдается ошибка, что это глобальный маккрос или типо того.
Docent1
Docent1
Posts: 561
Joined: Thu 31 Mar, 2005 23:13
Been thanked: 1 time

Re: Ликбез по Луа

Post by Docent1 »

Code: Select all

Macro {
  description="colorer on off";
  area="Editor";
  key="AltR";
  flags="DisableOutput";
  action=function()
  Keys("F11")
  if  Menu.Select("FarColorer", 0) > 0 then
  Keys("Enter C Space Enter")
  else
  Keys("Esc") Keys("AKey")
  end;
  end;
}
Ошибка:
...s (x86)\Far3\Profile\Macros\internal\Editor_AltR.lua:98: attempt to call global
'Macro' (a nil value)
Last edited by Docent1 on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: [code]
Docent1
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Ликбез по Луа

Post by John Doe »

В internal нечего делать макросам (поиск по changelog поможет)
Отсюда и ошибка.

P.S.
Я проверил, ваш макрос (в последней его редакции) прекрасно работает.
Поместить надо в любой сабфолдер внутри Macros\scripts
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Некоторые ньюансы.
DisableOutput уже не существует
А плагины лучше вызывать посредством Plugin.Menu и прочих функций того же семейства.
Docent1
Posts: 561
Joined: Thu 31 Mar, 2005 23:13
Been thanked: 1 time

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

Post by Docent1 »

John Doe
Так бы и сказали, что нужно помещать их в scripts.
Shmuel
Спасибо за Lua! Да, это первая попыка "переползти" с Far2 на Far3 и я вижу уже что Lua дает многое!
Docent1
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Конвертер не любит символ CR.

Code: Select all

  local Macro1='%Comment="test1";\r\n%Comment="test1";\r\n'
  local Macro2='%Comment="test1";\n%Comment="test1";\n'

  local guid = "50b1abe5-91ba-478c-be2d-64366a81d47c"
  far.Show(Plugin.Call(guid, "chunk", Macro1),Plugin.Call(guid, "chunk", Macro2))
Результат:

Code: Select all

╔═══════════════════════╗
║  1│ Comment="test1";♪ ║
║   │ Comment="test1";♪ ║
║   │                   ║
║  2│ -- test1          ║
║   │ -- test1          ║
kondrik
Posts: 139
Joined: Tue 29 Mar, 2005 13:30
Has thanked: 2 times

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

Post by kondrik »

Макрос вызывается из под пользовательского меню и используется для создание папки по текущей дате:

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: 5204
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 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: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 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;
}
Post Reply

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