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

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Latest post of the previous page:

John Doe wrote:Как я понял, конвертер ещё дорабатывается.
Существует ли более свежая версия, чем на плагринге?
Конвертер не дорабатывается (не могу себя заставить, т.к. всё время есть что-то более срочное). На плагринге - последняя версия (0.4).
John Doe wrote:Старая версия не учитывает изменений области действия переменных (3001+).
Насколько я понимаю, теперь все локальные переменные должны быть предварительно определены как local.
В противном случае (если конечно переменная явно не инициализируется), то она сохраняет значение между вызовами макроса, со всеми вытекающими.
Даже если переменная определена как local, это не всегда спасает от сохранения её значения между вызовами макроса. Если переменная local X является внешней по отношению к функции action макроса, то её значение будет сохраняться.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Спасибо за пояснение.

Если конвертер всё-таки будет дорабатываться, то есть такие пожелания.
1) вести лог ворнингов. Т.е. обращать внимание пользователя на места, требующие ручной доработки.
Возможно в виде комментариев в исходном тексте.
2) при невозможности конвертации выдавать позицию в тексте, и описание ошибки.
3) Пытаться продолжить конвертацию при ошибках.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

John Doe wrote: Если конвертер всё-таки будет дорабатываться, то есть такие пожелания.[......]
Я сохраню эти пожелания на будущее, но уверенности, что займусь конвертером нет. Причина проста - он требует много времени, а продуктом является одноразовым (переконвертировал и выкинул). На мой взгляд, он с поставленной задачей (взять 90-95 процентов работы на себя) справляется, а доводить этот показатель до 99-100 %, тратя на это кучу времени, и получая, максимум, спасибо, - не могу себе позволить.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Вопросы по использованию M2L: run <script file> [<arguments>]

1)
Пытаюсь запустить <script file> следующего содержания:

Code: Select all

str_out, str_message = Convert ("chunk", "%n=1;")
msgbox(str_message,str_out)
...но получаю ошибку .

Чувствую что упускаю что-то из базовое в Lua.
Вроде бы и спрашивать неудобно, но и садиться за изучение Lua от корки до корки тоже сейчас нет возможности.
Не прошу разжёвывать, нужно только ключевое слово для поиска в документации (или пример рабочего кода)

2) Как обработать <arguments> в скрипте?

3) Можно ли как-то использовать Convert() в макросах?
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

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

Post by 2useven10 »

у меня тоже это не работатет...
вопросов собственно 2:
1) почему msgbox не работает (nil), а print при этом всё выводит без проблем ?
2) почему str_message всегда пуста, даже если были ошибки конвертации ?
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

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

Post by 2useven10 »

или это работает lua-print, а не far-lua-print ?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

John Doe wrote:Вопросы по использованию M2L: run <script file> [<arguments>]

1)
Пытаюсь запустить <script file> следующего содержания:

Code: Select all

str_out, str_message = Convert ("chunk", "%n=1;")
msgbox(str_message,str_out)
...но получаю ошибку

2) Как обработать <arguments> в скрипте?

3) Можно ли как-то использовать Convert() в макросах?
1. Macro-API (в данном случае msgbox) недоступно для прямого использования в LuaFAR-плагинах. Нужно пользоваться Plugins API (в данном случае far.Message).

2. Аргументы - наподобие как в командной строке консоли: все имеют тип string, разделены пробелами (если есть пробелы - надо закавычивать).
M2L: run <script file> hello world

Code: Select all

local arg1, arg2 = ...
far.Show(arg1, arg2)
3. Plugin.Command ?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Shmuel wrote:

Code: Select all

local arg1, arg2 = ...
far.Show(arg1, arg2)
Магическое троеточие!
А как узнать количество аргументов?
Shmuel wrote:3. Plugin.Command ?
Похоже из редактора не выйдет:
Если плагин с таким Guid не поддерживает вызов по префиксу или при вызове не из панелей - функция вернет ошибку.
P.S.
А что такое Expression в [<syntax>]?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

2useven10 wrote:у меня тоже это не работатет...
вопросов собственно 2:
1) почему msgbox не работает (nil), а print при этом всё выводит без проблем ?
2) почему str_message всегда пуста, даже если были ошибки конвертации ?
1) уже ответил выше; а print - это не тот print.
2) конвертер большинство ошибок не обрабатывает, а просто выходит, увы.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

John Doe wrote:Магическое троеточие!
А как узнать количество аргументов?

Code: Select all

local narg = select("#",...)
John Doe wrote:
Shmuel wrote:3. Plugin.Command ?
Похоже из редактора не выйдет:
Ну я не думал об этом. Plugin.Call как раз добавить не проблема.
John Doe wrote:А что такое Expression в [<syntax>]?
Просто выражение: с переменными, действиями, скобками, но без присваивания, без if-ов, короче - то, что называется "выражение" в языках программирования.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Shmuel wrote:
John Doe wrote:
Shmuel wrote:Plugin.Call как раз добавить не проблема.
Было бы неплохо.
А зачем? Кому это надо? Даже если это займёт час работы, и то неохота делать просто "чтобы было".
Надо мне. Потому что сейчас извращаюсь с выходом в панели.
Но час это много.

Примечание модератора: часть сообщений отделена.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Shmuel wrote:
John Doe wrote:
Shmuel wrote:Даже если это займёт час работы, и то неохота делать просто "чтобы было".
Надо мне. Потому что сейчас извращаюсь с выходом в панели.
Но час это много.
Зачем вам это?
Перевожу макросы потихоньку.
Для большей осмысленности хотелось бы вызывать конвертацию из редактора (выделенный блок).
Без этого сложно определить, в каких местах конвертер отказывается работать.
Но часа вашей работы это вероятно не стоит.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

John Doe wrote:
Shmuel wrote:Даже если это займёт час работы, и то неохота делать просто "чтобы было".
Надо мне. Потому что сейчас извращаюсь с выходом в панели.
Но час это много.
Ну раз это не для баловства, сделаю. И ради интереса время засеку.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Да в общем необходимости нет.
Выйти в панели не проблема, код я уже отладил.
Осталось выяснить как лучше из внешнего скрипта (вызываемого m2l) передать данные обратно в макрос.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

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

Post by Max Rusov »

John Doe wrote:Для большей осмысленности хотелось бы вызывать конвертацию из редактора (выделенный блок).
Я что-то такое делал, вроде:
http://forum.farmanager.com/viewtopic.p ... 406#p99406

Оно преобразует не только FML файлы, но произвольный макрокод...
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

John Doe wrote:Осталось выяснить как лучше из внешнего скрипта (вызываемого m2l) передать данные обратно в макрос.
Не выходит даже передать данные из макроса в скрипт.
Пытаюсь через глобальную переменную.
lm:post _G.tmp="tmp" Keys("CtrlG") mf.print("m2l:run script.lua") Keys("Enter")

script.lua:

Code: Select all

far.Show(_G.tmp)
Возможно ли это вообще (кроме как используя временные файлы)?
Post Reply

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