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

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

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

Postby John Doe » Wed 01 Aug, 2012 12:27

В данной теме можно задавать вопросы по миграции макросов.

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

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

Связанные обсуждения:
См. также:

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Postby NightRoman » Mon 01 Oct, 2012 11:51

Если не ошибаюсь. С конвертером есть одна подлянка, которую надо иметь в виду, и после конвертации просмотреть макросы все равно. В Луа число 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 ...

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 01 Oct, 2012 12:08

Так может лучше сделать, чтобы Plugin.Call возвращал True/False?

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Postby NightRoman » Mon 01 Oct, 2012 12:12

Max Rusov wrote:Так может лучше сделать, чтобы Plugin.Call возвращал True/False?

По мне True/False было бы вполне хорошо. (Но идея-то была вроде, что с int плагин больше инфы может в макрос вернуть.)

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Postby NightRoman » Mon 01 Oct, 2012 12:13

Но "подлянка" не только с Plugin.Call, таких мест в не совсем тривиальных макросах найдется еще. Все равно надо эту особенность Луа иметь в виду после конвертации (если она не будет это делать сама).

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Postby NightRoman » Mon 01 Oct, 2012 12:27

Ну это как девелоперы решат. По мне true|false было бы нормально в этом конкретном случае с Plugin.Call

User avatar
Skirda
Posts: 3473
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 1 time

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

Postby Skirda » Mon 01 Oct, 2012 12:30

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...
We are the Borg. You will be assimilated.
So Say We All!

User avatar
Raistlin
Posts: 656
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Contact:

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

Postby Raistlin » Mon 08 Oct, 2012 13:27

Shmuel wrote:Source of the postВ Macro2Lua конвертере пришлось проявить особую лояльность к переменной %Comment

Хм. А я комментарии в переменных %Rem размещаю. Перед конвертацией надо все переделывать? Может, задавать имя комментирующей переменной в комстроке?
Magically yours
Raistlin

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

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

Postby Shmuel » Mon 08 Oct, 2012 15:26

Raistlin wrote:
Shmuel wrote:В Macro2Lua конвертере пришлось проявить особую лояльность к переменной %Comment

Хм. А я комментарии в переменных %Rem размещаю. Перед конвертацией надо все переделывать? Может, задавать имя комментирующей переменной в комстроке?

1. Сделайте бэкап своих файлов
2. Из панелей вызовите плагин, делающий поиск и замену с регулярными выражениями: RESearch, LF Search, S&R.
3. Выставьте рег. выражение для поиска %Rem\b, для замены - %Comment
4. Произведите операцию.
5. Запустите M2L конвертер.

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

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

Postby John Doe » Mon 08 Oct, 2012 15:30

Видел у двух пользователей, но вот уж не подозревал что использование %Comment для комментариев это распространённое явление.

User avatar
Raistlin
Posts: 656
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Contact:

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

Postby Raistlin » Mon 08 Oct, 2012 18:19

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

Это все понятно. Непонятно, почему тогда вы так фантазировали на тему %Comment, а не посоветовали тот же путь.
Magically yours

Raistlin

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 08 Oct, 2012 18:57

Прошу подсказать: какое решение сейчас есть для замены глобальных переменных, которые в старых макросах начинались на "%%"? Без сохранения между сеансами?

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 08 Oct, 2012 19:13

Еще, по поводу mf.msave / mf.mload. Как я понимаю, они сохраняют настройки в *.db файле плагина LuaMacro. Не лучше ли в Macro.db?

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

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

Postby Shmuel » Mon 08 Oct, 2012 19:20

Max Rusov wrote:Прошу подсказать: какое решение сейчас есть для замены глобальных переменных, которые в старых макросах начинались на "%%"? Без сохранения между сеансами?

Старый макрос: %%Var
Новый макрос: _G.Var

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

Это делает плагин, а у него нет доступа к Macro.db. Вопрос по-видимому с точки зрения удобства переносимости?

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

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

Postby Shmuel » Mon 08 Oct, 2012 19:25

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

Это все понятно. Непонятно, почему тогда вы так фантазировали на тему %Comment, а не посоветовали тот же путь.

1. Это когда я фантазировал? (забыл вообще, когда последний раз фантазировал)
2. Кому я должен был посоветовать "тот же путь" ?
Эти вопросы без сарказма: мне совершенно непонятно, что вы хотели сказать.

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 08 Oct, 2012 19:32

Shmuel wrote:Новый макрос: _G.Var

Спасибо.

Max Rusov wrote:Это делает плагин, а у него нет доступа к Macro.db. Вопрос по-видимому с точки зрения удобства переносимости?

Ну, LuaMacro не совсем обычный плагин. У него особые "доверительные" отношения с FAR :), наверно, задача решаемая. Возможно, в будущем могут появиться другие скриптовые плагины. Было бы удобно, чтобы они шарили глобальные переменные. А если они будут в приватной базе - это невозможно.


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

Who is online

Users browsing this forum: No registered users and 1 guest