Макросы на MoonScript

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Макросы на MoonScript

Post by John Doe »

Начиная с билда 3878 Far 3 поддерживает в макросах MoonScript — язык программирования, транслируемый в Lua.
Это позволяет писать более компактный и хорошо читаемый код (то же самое для JavaScript делает CoffeeScript).

Документация по языку: Плагин LuaMacro автоматически загружает как *.lua, так и *.moon файлы.
Поддерживается также выполнение moon-скриптов из командной строки, см. документацию.

В дистрибутиве на официальном сайте дополнительно присутствуют утилиты moon.exe и moonc.exe (пример использования см. тут)

Онлайн-компилятор тут: http://moonscript.org/compiler/
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Макросы на MoonScript

Post by John Doe »

Latest post of the previous page:

Интересно а что вы предполагаете на вторых порах :-)
А так - кому нужен скачивает по ссылкам. Как и мануал Lua, кстати.
Если кто соберётся в CHM скомпилировать - милости просим, выложим в шапке.
https://t.me/FarManager — Telegram чат
User avatar
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

Re: Макросы на MoonScript

Post by SUSim »

По ссылке то я скачал... но htm неудобно...и хочется нормальный индекс и поиск. (я думаю для знающих это очень просто сделать)
А, вовторых я попросил бы русский :whistle:
SimSU ··· ·· -- ··· ··-
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Макросы на MoonScript

Post by zg »

вот такой макрос вызывает ошибку в фаре:

Code: Select all

C:\Program Files\far\Plugins\luamacro\moonscript.lua:677: too many pending calls/choices
официальный moon.exe выполняет без проблем.
update: lpeg.dll с luapower тоже не имеет вышеуказанной проблемы.
Attachments
test2.moon.7z
(184 Bytes) Downloaded 226 times
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Макросы на MoonScript

Post by Shmuel »

Спасибо за репорт, поправил.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Макросы на MoonScript

Post by zg »

для истории: проявлялось на любой длл после macro:load.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Макросы на MoonScript

Post by John Doe »

Неудобно, что сообщение, выводимое при ошибке в moon файле, не содержит имени файла

Code: Select all

╔═══ MoonScript ═══╗
║ Failed to parse: ║
║  [84] >>         ║
╟──────────────────╢
║      { OK }      ║
╚══════════════════╝
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Макросы на MoonScript

Post by zg »

package.moonpath пустой из-за вот этого:
  1. do -- force MoonScript to load lpeg.dll residing in %farhome%
в принципе можно и самим заполнить, не?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Макросы на MoonScript

Post by Shmuel »

Поправил.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Макросы на MoonScript

Post by John Doe »

В логах вижу:
https://code.google.com/p/farmanager/source/list wrote:r11852 Upgrade LPeg from 0.10.2 to 0.12
.
Но выше говорилось, что эти версии несовместимы.
Как это возможно?
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Макросы на MoonScript

Post by zg »

John Doe wrote:Как это возможно?
там минорные несовместимости, monnscript с 0.12 работает.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Макросы на MoonScript

Post by Shmuel »

John Doe wrote:Но выше говорилось, что эти версии несовместимы.
Как это возможно?
MoonScript совместим как с LPeg 0.10, так и с 0.12. Это можно видеть здесь (см. таблицу "dependencies").
zg wrote:там минорные несовместимости, monnscript с 0.12 работает.
Отнюдь не минорные. Полагаю, что половина программ, массивно использующих LPeg 0.10, поломаются с 0.12.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Макросы на MoonScript

Post 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.)
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Макросы на MoonScript

Post by Shmuel »

zg wrote:под минорностью можно конечно понимать разное
Вот именно. Одного изменения в lpeg.B хватает, чтобы поломать кучу программ.
Чинить, например, стороннюю библиотеку lxsh, используемую при компиляции мануалов, у меня нет времени - гораздо проще продолжать использовать для этого LPeg 0.10.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Макросы на MoonScript

Post by John Doe »

Macro Browser при нажатии F4 на макросе из moon-файла неправильно позиционирует редактор.
И это понятно, ведь фактически исполняется не этот файл, а тот, что получается после трансляции в lua.

Вероятно следует в случае moon вообще не надо пытаться устанавливать позицию.

P.S.
Из этого также следует невозможность использования отладчиков в MoonScript...
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Макросы на MoonScript

Post by NightRoman »

А нельзя в Lua макросах завести опциональные данные, описывающие реальный сорс? В нормальных макросах в этом нужды нет, где они заданы, там и есть их сорс. Но при трансляции из Moon эти данные заполнять реальным сорсом в Moon скрипте.

(офф) С чем-то похожим недавно столкнулся в своей утилите Invoke-Build. Ввел там возможность расширять некую стандартную сущность task с помощью оберток. Все хорошо, но поехали сообщения об ошибках (файл, строка не те). Решил именно так, как выше описано - в task добавил параметр Source, который никогда не используется в нормальной жизни явно. Но обертками используется всегда, они формируют там "логически" правильные данные с точки зрения пользователя.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Макросы на MoonScript

Post by zg »

John Doe wrote:Вероятно следует в случае moon вообще не надо пытаться устанавливать позицию.
почему? оригинальную строку получить вообще элементарно:
  1. local line_tables=require("moonscript.line_tables")
  2.  
  3. local errors=require("moonscript.errors")
  4.  
  5. local cache={}
  6.  
  7. local fname=[[C:\Program Files\far\Profile\Macros\scripts\test.moon]]
  8.  
  9. local tbl=line_tables[fname]
  10.  
  11. if tbl then
  12.  
  13.   far.Show(errors.reverse_line_number(fname,tbl,113,cache))
  14.  
  15. end
Post Reply

Return to “Обсуждение макросов”