Начиная с билда 3878 Far 3 поддерживает в макросах MoonScript — язык программирования, транслируемый в Lua.
Это позволяет писать более компактный и хорошо читаемый код (то же самое для JavaScript делает CoffeeScript).
Плагин LuaMacro автоматически загружает как *.lua, так и *.moon файлы.
Поддерживается также выполнение moon-скриптов из командной строки, см. документацию.
В дистрибутиве на официальном сайте дополнительно присутствуют утилиты moon.exe и moonc.exe (пример использования см. тут)
unsignedshort key;/* key in ktable for Lua data (0 if no key) */
…
вот это переполняется. если убрать short — всё работает.
судя по всему вот это:
* Changes from version 0.11 to 0.12
---------------------------------
+ no "unsigned short" limit for pattern sizes
не попало реально в исходники, потому что как в 0.11, так и в 0.12 это единственное место, где есть unsigned short.
Re: Макросы на MoonScript
Posted: Thu 26 Jun, 2014 00:56
by Shmuel
zg wrote:если убрать short — всё работает.
судя по всему вот это:
* Changes from version 0.11 to 0.12
---------------------------------
+ no "unsigned short" limit for pattern sizes
не попало реально в исходники, потому что как в 0.11, так и в 0.12 это единственное место, где есть unsigned short.
Спросил на Lua-форуме, посмотрим, что ответят.
И независимо от того, что ответят, странно выглядят измеренные времена 5-ти последовательных исполнений данного скрипта (в миллисекундах):
1. С LPeg 0.10.2: 527, 518, 518, 517, 524.
2. С LPeg 0.12, собранной с предложенным изменением: 3011, 6835, 10717, 16582, 23092.
Re: Макросы на MoonScript
Posted: Thu 26 Jun, 2014 09:41
by zg
Shmuel wrote:И независимо от того, что ответят, странно выглядят измеренные времена 5-ти последовательных исполнений данного скрипта (в миллисекундах):
1. С LPeg 0.10.2: 527, 518, 518, 517, 524.
2. С LPeg 0.12, собранной с предложенным изменением: 3011, 6835, 10717, 16582, 23092.
из того, что я успел понять в 0.12, там создаётся «глобальная» луатаблица ktable с индексами правил в деревьях. за один раз выполнения скрипта в неё пихается ~85000 элементов. после — не удаляется. возможно проблемы где-то здесь.
Re: Макросы на MoonScript
Posted: Thu 26 Jun, 2014 09:49
by Shmuel
zg wrote:из того, что я успел понять в 0.12, там создаётся «глобальная» луатаблица ktable с индексами правил в деревьях. за один раз выполнения скрипта в неё пихается ~85000 элементов. после — не удаляется. возможно проблемы где-то здесь.
Если честно, меня внутренности LPeg мало интересуют. Есть автор, пусть разбирается (если действительно проблема в LPeg, а не в MoonScript).
Багрепорт в трекер MoonScript также поместил.
Re: Макросы на MoonScript
Posted: Thu 26 Jun, 2014 15:25
by Shmuel
Произвёл подобные тесты с плагином Macro2Lua Converter. Результаты похожие - стабильные времена с LPeg 0.10.2, растущие - с LPeg 0.12.
Откатил в Фаре обратно на LPeg 0.10.2, до лучших времён.
Да, и не надо думать, что данные тесты искусственные, а в "реальной жизни" LPeg 0.12 вполне годится. Я вышел на эту неисправность вполне реально: на седьмом-восьмом запуске luamacro\macrotest.lua вылезает ошибка, после чего уже ни тест, ни MoonScript не работают.
Ещё один реальный пример из той же оперы: если в Macros\scripts более 100 файлов *.moon (в каждом хотя бы 1 макрос), получим ошибку при загрузке и опять-таки MoonScript дальше работать не будет.
Макросы на MoonScript
Posted: Sat 29 Nov, 2014 01:48
by zg
не грузятся мун-модули в utf8 с бомом.
например test.moon:
хотя возможно обрезать нужно вообще в to_lua. или наоборот не трогать loadfile и добавить обрезание в moon_loader.
Макросы на MoonScript
Posted: Sat 29 Nov, 2014 12:17
by Shmuel
zg wrote:хотя возможно обрезать нужно вообще в to_lua. или наоборот не трогать loadfile и добавить обрезание в moon_loader.
Если бы автор MoonScript реагировал, то правильнее всего было бы открыть новый issue в проекте.
Делай на своё усмотрение.
Макросы на MoonScript
Posted: Thu 05 Mar, 2015 23:49
by Shmuel
В связи с обнаруженным, на мой взгляд, критичным, багом в MoonScript 0.3.0, представляется логичным вернуться к 0.2.6 до тех пор, пока баг не починят.
Макросы на MoonScript
Posted: Tue 22 Dec, 2015 06:00
by cmd.exe
В дальнейшем в данной теме будет документация на использование Moon Script в far manager? В Энциклопедия фара очень скудное упоминание про Moon Script.
Macroapi_manual только упоминание о том что функция может использоваться и Moon Script то-же.