Page 9 of 11
Re: Ликбез по Луа
Posted: Mon 11 Mar, 2013 20:22
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.
Re: Ликбез по Луа
Posted: Mon 11 Mar, 2013 20:29
by John Doe
При чём тут вообще Lua
Посмотрите примеры макросов в Addons хотя бы
action=function() end;
Re: Ликбез по Луа
Posted: Mon 11 Mar, 2013 20:40
by Docent1
John Doe wrote:При чём тут вообще Lua
Посмотрите примеры макросов в Addons хотя бы
action=function() end;
Я перепробовал все варианты, в том числе и этот. В этом случае выдается ошибка, что это глобальный маккрос или типо того.
Re: Ликбез по Луа
Posted: Mon 11 Mar, 2013 20:44
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)
Re: Ликбез по Луа
Posted: Mon 11 Mar, 2013 20:47
by John Doe
В internal нечего делать макросам (поиск по changelog поможет)
Отсюда и ошибка.
P.S.
Я проверил, ваш макрос (в последней его редакции) прекрасно работает.
Поместить надо в любой сабфолдер внутри Macros\scripts
Re: Перенос макросов из прошлых версий фара в LuaMacro
Posted: Mon 11 Mar, 2013 20:56
by John Doe
Некоторые ньюансы.
DisableOutput уже не существует
А плагины лучше вызывать посредством Plugin.Menu и прочих функций того же семейства.
Re: Перенос макросов из прошлых версий фара в LuaMacro
Posted: Mon 11 Mar, 2013 21:06
by Docent1
John Doe
Так бы и сказали, что нужно помещать их в scripts.
Shmuel
Спасибо за Lua! Да, это первая попыка "переползти" с Far2 на Far3 и я вижу уже что Lua дает многое!
Re: Перенос макросов из прошлых версий фара в LuaMacro
Posted: Mon 18 Mar, 2013 12:41
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 ║
Помогите изменить макрос под новое API Far3
Posted: Mon 01 Apr, 2013 06:08
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
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;
}