Начиная с билда 3878 Far 3 поддерживает в макросах MoonScript — язык программирования, транслируемый в Lua.
Это позволяет писать более компактный и хорошо читаемый код (то же самое для JavaScript делает CoffeeScript).
Плагин LuaMacro автоматически загружает как *.lua, так и *.moon файлы.
Поддерживается также выполнение moon-скриптов из командной строки, см. документацию.
В дистрибутиве на официальном сайте дополнительно присутствуют утилиты moon.exe и moonc.exe (пример использования см. тут)
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.
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 элементов. после — не удаляется. возможно проблемы где-то здесь.
zg wrote:из того, что я успел понять в 0.12, там создаётся «глобальная» луатаблица ktable с индексами правил в деревьях. за один раз выполнения скрипта в неё пихается ~85000 элементов. после — не удаляется. возможно проблемы где-то здесь.
Если честно, меня внутренности LPeg мало интересуют. Есть автор, пусть разбирается (если действительно проблема в LPeg, а не в MoonScript).
Багрепорт в трекер MoonScript также поместил.
Откатил в Фаре обратно на LPeg 0.10.2, до лучших времён.
Да, и не надо думать, что данные тесты искусственные, а в "реальной жизни" LPeg 0.12 вполне годится. Я вышел на эту неисправность вполне реально: на седьмом-восьмом запуске luamacro\macrotest.lua вылезает ошибка, после чего уже ни тест, ни MoonScript не работают.
Ещё один реальный пример из той же оперы: если в Macros\scripts более 100 файлов *.moon (в каждом хотя бы 1 макрос), получим ошибку при загрузке и опять-таки MoonScript дальше работать не будет.
В дальнейшем в данной теме будет документация на использование Moon Script в far manager? В Энциклопедия фара очень скудное упоминание про Moon Script.
Macroapi_manual только упоминание о том что функция может использоваться и Moon Script то-же.
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper I know nothing except the fact of my ignorance. (с) Socrates