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

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

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

Postby Shmuel » Mon 28 Jan, 2013 16:08

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: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

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

Postby John Doe » Mon 28 Jan, 2013 16:21

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

Если конвертер всё-таки будет дорабатываться, то есть такие пожелания.
1) вести лог ворнингов. Т.е. обращать внимание пользователя на места, требующие ручной доработки.
Возможно в виде комментариев в исходном тексте.
2) при невозможности конвертации выдавать позицию в тексте, и описание ошибки.
3) Пытаться продолжить конвертацию при ошибках.

Shmuel
Posts: 4954
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 124 times

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

Postby Shmuel » Mon 28 Jan, 2013 16:30

John Doe wrote:Если конвертер всё-таки будет дорабатываться, то есть такие пожелания.[......]

Я сохраню эти пожелания на будущее, но уверенности, что займусь конвертером нет. Причина проста - он требует много времени, а продуктом является одноразовым (переконвертировал и выкинул). На мой взгляд, он с поставленной задачей (взять 90-95 процентов работы на себя) справляется, а доводить этот показатель до 99-100 %, тратя на это кучу времени, и получая, максимум, спасибо, - не могу себе позволить.

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

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

Postby John Doe » Mon 28 Jan, 2013 16:43

Вопросы по использованию 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: 2878
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 76 times

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

Postby 2useven10 » Mon 28 Jan, 2013 17:05

у меня тоже это не работатет...
вопросов собственно 2:
1) почему msgbox не работает (nil), а print при этом всё выводит без проблем ?
2) почему str_message всегда пуста, даже если были ошибки конвертации ?

2useven10
Posts: 2878
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 76 times

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

Postby 2useven10 » Mon 28 Jan, 2013 17:06

или это работает lua-print, а не far-lua-print ?

Shmuel
Posts: 4954
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 124 times

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

Postby Shmuel » Mon 28 Jan, 2013 17:11

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: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

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

Postby John Doe » Mon 28 Jan, 2013 17:25

Shmuel wrote:

Code: Select all

local arg1, arg2 = ...
far.Show(arg1, arg2)
Магическое троеточие!
А как узнать количество аргументов?

Shmuel wrote:3. Plugin.Command ?
Похоже из редактора не выйдет:
Если плагин с таким Guid не поддерживает вызов по префиксу или при вызове не из панелей - функция вернет ошибку.


P.S.
А что такое Expression в [<syntax>]?

Shmuel
Posts: 4954
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 124 times

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

Postby Shmuel » Mon 28 Jan, 2013 17:39

2useven10 wrote:у меня тоже это не работатет...
вопросов собственно 2:
1) почему msgbox не работает (nil), а print при этом всё выводит без проблем ?
2) почему str_message всегда пуста, даже если были ошибки конвертации ?

1) уже ответил выше; а print - это не тот print.
2) конвертер большинство ошибок не обрабатывает, а просто выходит, увы.

Shmuel
Posts: 4954
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 124 times

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

Postby Shmuel » Mon 28 Jan, 2013 17:47

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: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

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

Postby John Doe » Mon 28 Jan, 2013 19:53

Shmuel wrote:
John Doe wrote:
Shmuel wrote:Plugin.Call как раз добавить не проблема.
Было бы неплохо.

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

Примечание модератора: часть сообщений отделена.

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

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

Postby John Doe » Mon 28 Jan, 2013 20:11

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

Зачем вам это?
Перевожу макросы потихоньку.
Для большей осмысленности хотелось бы вызывать конвертацию из редактора (выделенный блок).
Без этого сложно определить, в каких местах конвертер отказывается работать.
Но часа вашей работы это вероятно не стоит.

Shmuel
Posts: 4954
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 124 times

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

Postby Shmuel » Mon 28 Jan, 2013 20:34

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

Ну раз это не для баловства, сделаю. И ради интереса время засеку.

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

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

Postby John Doe » Mon 28 Jan, 2013 20:44

Да в общем необходимости нет.
Выйти в панели не проблема, код я уже отладил.
Осталось выяснить как лучше из внешнего скрипта (вызываемого m2l) передать данные обратно в макрос.

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

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

Postby Max Rusov » Mon 28 Jan, 2013 21:08

John Doe wrote:Для большей осмысленности хотелось бы вызывать конвертацию из редактора (выделенный блок).

Я что-то такое делал, вроде:
Max Rusov @ MacroLib — Far Macro Library

Оно преобразует не только FML файлы, но произвольный макрокод...

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

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

Postby John Doe » Wed 30 Jan, 2013 14:11

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)


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

Shmuel
Posts: 4954
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 124 times

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

Postby Shmuel » Wed 30 Jan, 2013 14:18

Это неудивительно. Макросы используют одну виртуальную машину (LuaMacro), а скрипт - другую (Macro2Lua).

Кроме временных файлов, можно использовать переменные окружения. Ну, и Plugin.Call, естественно (если бы был реализован).

P.S. Непонятно, зачем вам в этой истории макросы. Делайте всё в скрипте.


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

Who is online

Users browsing this forum: No registered users and 2 guests