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

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Latest post of the previous page:

str_out, str_message = Plugin.Call(guid, "chunk", Editor.SelValue)
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Поправил в версии 0.7.
Дальнейшие репорты по конвертеру принимаются, но оперативно чиниться не будут.
xarx
Posts: 125
Joined: Tue 23 Nov, 2010 12:06

Re: Spring — внедрение Lua в качестве макроязыка

Post by xarx »

Macro2Lua незнает функцию panelitem (я исползуюсь panelitem(0,i,8)). Какой ее lua эквивалент?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Луа не при чём, со времён Far 2 функция называется Panel.Item
http://api.farmanager.com/ru/macro/macr ... index.html

А вообще рекомендую macroapi_manual.chm (в поставке)
xarx
Posts: 125
Joined: Tue 23 Nov, 2010 12:06

Re: Spring — внедрение Lua в качестве макроязыка

Post by xarx »

Спасибо, но это документация для макроязыка для FAR2. LUA FAR3 API то же самое?
Panelitem какая то устаревшая функциа. Но макросы, каторые ее исползуют, постоянно работают (но Macro2Lua ее незнает). Имеют аргументы Panel.Item те же значения?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Кто его знает...
Может в доку заглянуть стоит?
xarx
Posts: 125
Joined: Tue 23 Nov, 2010 12:06

Re: Spring — внедрение Lua в качестве макроязыка

Post by xarx »

Если это был ответ на мой первий вопрос, то это грустно, что здес нет никакой документации для LUA FAR3 API. :-(
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

В дистрибутиве фара забыли посмотреть?
xarx
Posts: 125
Joined: Tue 23 Nov, 2010 12:06

Re: Spring — внедрение Lua в качестве макроязыка

Post by xarx »

Спасибо, уже нашел. Этого я искал!
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Сколько таких, кто уже пересел на Far 3 с Far 2

Post by John Doe »

Shmuel wrote:В "плане миграции" упомянуто, что конвертер макросов часто обламывается[...]
Для тех макросов, конвертация которых обламывается, я использую такой хелпер:

Code: Select all

Macro {
  area="Editor"; 
  key="CtrlEnter"; 
  description="*.macro convert"; 
  filemask="*.macro";
action=function()
  if not Object.Selected then Keys("CtrlA") end
  local Macro=Editor.SelValue:gsub("\r","")
                             :gsub(";;([^\n]+)",function(s)
                                return ("%%Comment=%q;"):format(s:gsub('"','"')):gsub("\r","")
                              end)  
  local guid = "50b1abe5-91ba-478c-be2d-64366a81d47c"
  local str_out, str_message = Plugin.Call(guid, "chunk", Macro)
  if str_out then 
    if msgbox("[[ "..str_message.." ]]", str_out, 0x00000008)==1 then mf.clip(1,str_out:gsub('"','"')) end
  else
    msgbox("Error",Macro,0x1+0x8) 
  end
end;
}

Мои макросы со времён двойки храняться в файлах (не макролиб), а комментарии через двойную точку с запятой, и потому конвертером не воспринимались.
Хелпер настроен на срабатывание в файлах *.macro
Запуск - CtrlEnter.
Обрабатывается выделенный блок, если нет - то выделяется весь файл.
В случае успеха результат выводится в msgbox, и доступен в буфере обмена.
В случае неуспеха - можно найти блок, на котором спотыкается.

У автора макролиба есть сходный хелпер: http://forum.farmanager.com/viewtopic.p ... 406#p99406

P.S.
Перед конвертацией необходимо ознакомиться не только с macroapi_manual.chm, но и (обязательно!) с readme.txt конвертера.
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Re: Сколько таких, кто уже пересел на Far 3 с Far 2

Post by Wave »

Спасибо, воспользуюсь чуть позже. Если мне не изменяет мой склероз, $Text выпилили ещё из двойки, до 1807. Но в целом а) понятно, учту, б) в любом случае нужно изучать новый макроязык и его обвязку детально. А так вломммм.
А, и да, самые используемые и самые простые макросы наподобии BS = CtrlPgUp перетащил и уровень комфорта благодаря этому скакнул на порядок.
Пользуюсь ФАРом больше 20 лет © собирательный.
Docent1
Posts: 561
Joined: Thu 31 Mar, 2005 23:13
Been thanked: 1 time

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

Post by Docent1 »

Перевел все макросы с помощью macro2lua v.07 из Far2
Далее нажал Ctrl. и записа макрос. Получил
area="Editor" key="AltR" flags="" description="" code="Keys("x")
Вставил вместо code то, что перевелось и что хотелось;
code="Keys("F11") if Menu.Select("FarColorer", 0) > 0 then Keys("Enter C Space Enter") else Keys("Esc") Keys("AKey") end"
При старте Фара 3.0.3235.0 получаю ошибку в макросе
"C:\Program Files (x86)\Far3\Profile\Macros\internal\Editor_AltR.lua:5: '=' expected near 'C'"

Буду признателен, чзн?
Docent1
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Docent1 wrote:

Code: Select all

code="Keys("F11") if  Menu.Select("FarColorer", 0) > 0 then  Keys("Enter C Space Enter") else Keys("Esc") Keys("AKey") end"
В первую очередь настоятельно рекомендую не пользоваться таким способом создания макросов, то-есть редактированием клавиатурных макросов. Лучше поставьте этот макрос и пользуйтесь им.

А код ваш не компилируется потому, что внутри закавыченного стринга есть незаэкранированные кавычки. Замените внешние кавычки " на одинарные ', должно помочь.
Docent1
Posts: 561
Joined: Thu 31 Mar, 2005 23:13
Been thanked: 1 time

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

Post by Docent1 »

Спасибо, Shmuel, наверняка lua хорош, но из головы уже вылезают всякие "языки и макросы" в виде шишек!
Docent1
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Docent1 wrote:Спасибо, Shmuel, наверняка lua хорош, но из головы уже вылезают всякие "языки и макросы" в виде шишек!
Если не ошибаюсь, это был твой первый пост по Lua-макросам? Что же ты хочешь: пришёл, увидел, победил? Так бывает редко. Язык Lua - очень простой на самом деле, так что иронии я не понял. Но если нужна будет помощь - всегда с удовольствием.
Docent1
Posts: 561
Joined: Thu 31 Mar, 2005 23:13
Been thanked: 1 time

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

Post by Docent1 »

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

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