Page 1 of 10

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

Posted: Wed 01 Aug, 2012 12:27
by John Doe
В данной теме можно задавать вопросы по миграции макросов.

Macro2Lua конвертер [анонс] преобразует макросы с макроязыка в язык Lua 5.1.
Служит для облегчения переноса, но результат как правило требует коррекции!

Рекомендуется к прочтению:
  • macroapi_manual.ru.chm (в дистрибутиве, папка Encyclopedia)
    В первую очередь см. статью Изменения API в сравнении с макроязыком.
  • readme.txt конвертера macro2lua, читать полностью
Связанные обсуждения:
См. также:

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

Posted: Mon 01 Oct, 2012 11:51
by NightRoman
Если не ошибаюсь. С конвертером есть одна подлянка, которую надо иметь в виду, и после конвертации просмотреть макросы все равно. В Луа число 0 в местах, где логическое значение ожидается, трактуется, как true, а не как false в некоторых (или многих) других языках. (В Луа только false и nil трактуются как false).

Так что старое выражение типа

Code: Select all

$if (Plugin.Call(...)) ...
будет не совсем правильно сконвертировано в

Code: Select all

if Plugin.Call(...) then ...
правильно так:

Code: Select all

if Plugin.Call(...) ~= 0 then ...

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

Posted: Mon 01 Oct, 2012 12:08
by Max Rusov
Так может лучше сделать, чтобы Plugin.Call возвращал True/False?

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

Posted: Mon 01 Oct, 2012 12:12
by NightRoman
Max Rusov wrote:Так может лучше сделать, чтобы Plugin.Call возвращал True/False?
По мне True/False было бы вполне хорошо. (Но идея-то была вроде, что с int плагин больше инфы может в макрос вернуть.)

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

Posted: Mon 01 Oct, 2012 12:13
by NightRoman
Но "подлянка" не только с Plugin.Call, таких мест в не совсем тривиальных макросах найдется еще. Все равно надо эту особенность Луа иметь в виду после конвертации (если она не будет это делать сама).

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

Posted: Mon 01 Oct, 2012 12:27
by NightRoman
Ну это как девелоперы решат. По мне true|false было бы нормально в этом конкретном случае с Plugin.Call

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

Posted: Mon 01 Oct, 2012 12:30
by Skirda
NightRoman wrote:правильно так:

Code: Select all

if Plugin.Call(...) ~= 0 then ...
или...

Code: Select all

if  Plugin.Exist(ColorerGUID) > 0 then 
Но все равно, да... подлянка.
Max Rusov wrote:
NightRoman wrote:Но идея-то была вроде, что с int плагин больше инфы может в макрос вернуть.
По факту сейчас - не может. А чтобы мог - планировалось RegisterMacroFunc (или как-то так)... Или на это теперь забили?
А смысл? Ты в луо-макросе можешь написать func...

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

Posted: Mon 08 Oct, 2012 13:27
by Raistlin
Shmuel wrote:В Macro2Lua конвертере пришлось проявить особую лояльность к переменной %Comment
Хм. А я комментарии в переменных %Rem размещаю. Перед конвертацией надо все переделывать? Может, задавать имя комментирующей переменной в комстроке?

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

Posted: Mon 08 Oct, 2012 15:26
by Shmuel
Raistlin wrote:
Shmuel wrote:В Macro2Lua конвертере пришлось проявить особую лояльность к переменной %Comment
Хм. А я комментарии в переменных %Rem размещаю. Перед конвертацией надо все переделывать? Может, задавать имя комментирующей переменной в комстроке?
1. Сделайте бэкап своих файлов
2. Из панелей вызовите плагин, делающий поиск и замену с регулярными выражениями: RESearch, LF Search, S&R.
3. Выставьте рег. выражение для поиска %Rem\b, для замены - %Comment
4. Произведите операцию.
5. Запустите M2L конвертер.

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

Posted: Mon 08 Oct, 2012 15:30
by John Doe
Видел у двух пользователей, но вот уж не подозревал что использование %Comment для комментариев это распространённое явление.

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

Posted: Mon 08 Oct, 2012 18:19
by Raistlin
Shmuel wrote: 1. Сделайте бэкап своих файлов
2. Из панелей вызовите плагин, делающий поиск и замену с регулярными выражениями: RESearch, LF Search, S&R.
3. Выставьте рег. выражение для поиска %Rem\b, для замены - %Comment
4. Произведите операцию.
5. Запустите M2L конвертер.
Это все понятно. Непонятно, почему тогда вы так фантазировали на тему %Comment, а не посоветовали тот же путь.

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

Posted: Mon 08 Oct, 2012 18:57
by Max Rusov
Прошу подсказать: какое решение сейчас есть для замены глобальных переменных, которые в старых макросах начинались на "%%"? Без сохранения между сеансами?

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

Posted: Mon 08 Oct, 2012 19:13
by Max Rusov
Еще, по поводу mf.msave / mf.mload. Как я понимаю, они сохраняют настройки в *.db файле плагина LuaMacro. Не лучше ли в Macro.db?

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

Posted: Mon 08 Oct, 2012 19:20
by Shmuel
Max Rusov wrote:Прошу подсказать: какое решение сейчас есть для замены глобальных переменных, которые в старых макросах начинались на "%%"? Без сохранения между сеансами?
Старый макрос: %%Var
Новый макрос: _G.Var
Max Rusov wrote:Еще, по поводу mf.msave / mf.mload. Как я понимаю, они сохраняют настройки в *.db файле плагина LuaMacro. Не лучше ли в Macro.db?
Это делает плагин, а у него нет доступа к Macro.db. Вопрос по-видимому с точки зрения удобства переносимости?

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

Posted: Mon 08 Oct, 2012 19:25
by Shmuel
Raistlin wrote:
Shmuel wrote: 1. Сделайте бэкап своих файлов
2. Из панелей вызовите плагин, делающий поиск и замену с регулярными выражениями: RESearch, LF Search, S&R.
3. Выставьте рег. выражение для поиска %Rem\b, для замены - %Comment
4. Произведите операцию.
5. Запустите M2L конвертер.
Это все понятно. Непонятно, почему тогда вы так фантазировали на тему %Comment, а не посоветовали тот же путь.
1. Это когда я фантазировал? (забыл вообще, когда последний раз фантазировал)
2. Кому я должен был посоветовать "тот же путь" ?
Эти вопросы без сарказма: мне совершенно непонятно, что вы хотели сказать.

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

Posted: Mon 08 Oct, 2012 19:32
by Max Rusov
Shmuel wrote:Новый макрос: _G.Var
Спасибо.
Max Rusov wrote:Это делает плагин, а у него нет доступа к Macro.db. Вопрос по-видимому с точки зрения удобства переносимости?
Ну, LuaMacro не совсем обычный плагин. У него особые "доверительные" отношения с FAR :), наверно, задача решаемая. Возможно, в будущем могут появиться другие скриптовые плагины. Было бы удобно, чтобы они шарили глобальные переменные. А если они будут в приватной базе - это невозможно.