Начиная с билда 3878 Far 3 поддерживает в макросах MoonScript — язык программирования, транслируемый в Lua.
Это позволяет писать более компактный и хорошо читаемый код (то же самое для JavaScript делает CoffeeScript).
Плагин LuaMacro автоматически загружает как *.lua, так и *.moon файлы.
Поддерживается также выполнение moon-скриптов из командной строки, см. документацию.
В дистрибутиве на официальном сайте дополнительно присутствуют утилиты moon.exe и moonc.exe (пример использования см. тут)
.
Но выше говорилось, что эти версии несовместимы.
Как это возможно?
Re: Макросы на MoonScript
Posted: Mon 26 May, 2014 09:50
by zg
John Doe wrote:Как это возможно?
там минорные несовместимости, monnscript с 0.12 работает.
Re: Макросы на MoonScript
Posted: Mon 26 May, 2014 09:56
by Shmuel
John Doe wrote:Но выше говорилось, что эти версии несовместимы.
Как это возможно?
MoonScript совместим как с LPeg 0.10, так и с 0.12. Это можно видеть здесь (см. таблицу "dependencies").
zg wrote:там минорные несовместимости, monnscript с 0.12 работает.
Отнюдь не минорные. Полагаю, что половина программ, массивно использующих LPeg 0.10, поломаются с 0.12.
Re: Макросы на MoonScript
Posted: Mon 26 May, 2014 21:15
by zg
Shmuel wrote:
zg wrote:там минорные несовместимости, monnscript с 0.12 работает.
Отнюдь не минорные. Полагаю, что половина программ, массивно использующих LPeg 0.10, поломаются с 0.12.
под минорностью можно конечно понимать разное, но если судить по test.lua, все изменения косметические, кроме lpeg.B, а lpeg.B:
(This is an experimental feature. There is a good chance it will change in future versions.)
Re: Макросы на MoonScript
Posted: Tue 27 May, 2014 06:22
by Shmuel
zg wrote:под минорностью можно конечно понимать разное
Вот именно. Одного изменения в lpeg.B хватает, чтобы поломать кучу программ.
Чинить, например, стороннюю библиотеку lxsh, используемую при компиляции мануалов, у меня нет времени - гораздо проще продолжать использовать для этого LPeg 0.10.
Re: Макросы на MoonScript
Posted: Thu 05 Jun, 2014 15:00
by John Doe
Macro Browser при нажатии F4 на макросе из moon-файла неправильно позиционирует редактор.
И это понятно, ведь фактически исполняется не этот файл, а тот, что получается после трансляции в lua.
Вероятно следует в случае moon вообще не надо пытаться устанавливать позицию.
P.S.
Из этого также следует невозможность использования отладчиков в MoonScript...
Re: Макросы на MoonScript
Posted: Thu 05 Jun, 2014 15:20
by NightRoman
А нельзя в Lua макросах завести опциональные данные, описывающие реальный сорс? В нормальных макросах в этом нужды нет, где они заданы, там и есть их сорс. Но при трансляции из Moon эти данные заполнять реальным сорсом в Moon скрипте.
(офф) С чем-то похожим недавно столкнулся в своей утилите Invoke-Build. Ввел там возможность расширять некую стандартную сущность task с помощью оберток. Все хорошо, но поехали сообщения об ошибках (файл, строка не те). Решил именно так, как выше описано - в task добавил параметр Source, который никогда не используется в нормальной жизни явно. Но обертками используется всегда, они формируют там "логически" правильные данные с точки зрения пользователя.
Re: Макросы на MoonScript
Posted: Thu 05 Jun, 2014 15:27
by zg
John Doe wrote:Вероятно следует в случае moon вообще не надо пытаться устанавливать позицию.
почему? оригинальную строку получить вообще элементарно: