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

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

Re: нужна помощь в преобразовании макросов из FAR2reg в FAR3

Post by John Doe »

Latest post of the previous page:

В данном контексте имеется ввиду, что чем делать за человека его работу - лучше доходчивее описать процесс, или усовершенствовать конвертер, или [...].

Ну или за каждого конвертировать.
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

Re: нужна помощь в преобразовании макросов из FAR2reg в FAR3

Post by Shmuel »

John Doe wrote:В данном контексте имеется ввиду, что чем делать за человека его работу - лучше доходчивее описать процесс, или усовершенствовать конвертер, или [...].

Ну или за каждого конвертировать.
Процесса (опубликованного) пока не существует.
"Делать за человека его работу" - иногда можно и помочь, ничего плохого в этом нет.
"Усовершенствовать конвертер" - это и был первый шаг в этом направлении.
"За каждого конвертировать" - это только по настроению: хочу - делаю, хочу - нет.
2useven10
Posts: 4115
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 195 times

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

Post by 2useven10 »

примитивный конвертер старых макросов фар в макросы .lua
конвертирует файл 'far3_macros.xml' в файл 'far3_macros.lua' в текущем каталоге.
сделан из 'db2file.lua' от Shmuel

нужен плагин Macro2Lua Converter
запуск -- M2L: run xml2lua.lua

файл far3_macros.xml можно получить при помощи 2x3.pl из реестра или .reg файла. Как пользоваться можно посмотреть в FAQ 2.6

Note:
Macro2Lua Converter не понимает $Text и $Date их надо руками заменить на print(...) и date(...)
Attachments
xml2lua.lua.7z
(1.08 KiB) Downloaded 153 times
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

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

Post by Shmuel »

2useven10 wrote:примитивный конвертер старых макросов фар в макросы .lua
Отлично, уже кое-что есть!
User avatar
John Doe
Бюрократ
Posts: 12897
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 296 times

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

Post by John Doe »

Как я понял, конвертер ещё дорабатывается.
Существует ли более свежая версия, чем на плагринге?

Старая версия не учитывает изменений области действия переменных (3001+).
Насколько я понимаю, теперь все локальные переменные должны быть предварительно определены как local.
В противном случае (если конечно переменная явно не инициализируется), то она сохраняет значение между вызовами макроса, со всеми вытекающими.

P.S.
Ещё для меня было открытием, что переменные могут быть локальны не только относительно lua-файла, или функции, но даже относительно любого блока.
if xxx then local yyy=zzz end
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

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

Post by Shmuel »

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

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

Post by John Doe »

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

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

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

Post by Shmuel »

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

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: 4115
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 195 times

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

Post by 2useven10 »

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

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

Post by 2useven10 »

или это работает lua-print, а не far-lua-print ?
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 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: 12897
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 296 times

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: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

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

Post by Shmuel »

2useven10 wrote:у меня тоже это не работатет...
вопросов собственно 2:
1) почему msgbox не работает (nil), а print при этом всё выводит без проблем ?
2) почему str_message всегда пуста, даже если были ошибки конвертации ?
1) уже ответил выше; а print - это не тот print.
2) конвертер большинство ошибок не обрабатывает, а просто выходит, увы.
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 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: 12897
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 296 times

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

Post by John Doe »

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

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

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