Макросы на MoonScript

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13842
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 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
zg
zero-gravity
Posts: 6033
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Макросы на MoonScript

Post by zg »

Latest post of the previous page:

HaRT wrote: Sun 08 Jan, 2023 19:09Если бы прикручивание Teal к Фару позволило производить статический анализ типов в его скриптах (а также частично в скриптах на Луа), это само по себе было бы уже полезно для их разработки. Но оправданно это будет только при наличии раскраски синтаксиса и полноценной работе LuaCheck.
не очень понимаю, о чём вы.
User avatar
HaRT
Moderator
Posts: 10850
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Макросы на MoonScript

Post by HaRT »

zg wrote: Sun 08 Jan, 2023 20:42 не очень понимаю, о чём вы
Про раскраску синтаксиса (файлов *.tl) как важное условие их комфортного написания, уверен, понятно. Про полноценную работу LuaCheck в таких файлах (хотя бы на том же уровне, что в MoonScript), надеюсь, тоже. Что же осталось непонятным? Попытаюсь додумать за вас.
Мне видится, что когда загрузчик и инструментарий Teal интегрированы в Фар, становится возможным такой сценарий: я написал скрипт на Teal (с раскраской синтаксиса), могу проверить его посредством LuaCheck, а также могу проверить статическое соответствие типов в скрипте (tl check). Для этого, вероятно, придётся прописать аннотации типов для FAR API. Желательно также, чтобы соответствие типов проверялось (хотя бы опционально) при загрузке Teal-скриптов плагином LuaMacro.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6033
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Макросы на MoonScript

Post by zg »

ваше акцент на раскраске меня пугает. добавить поддержку в luacheck тоже не сложно.
НО! я не очень понимаю пользу от всего этого в рамках фара. вся эта проверка типов возможно хорошо работает на больших проектах. у меня самый большой проект, который я использую — editorsettingscore. примерно 1000 строк. и вроде как там есть настройки, где типы teal были бы полезны, но мне лаконичность мунскрипта важнее строгости teal. нет там какой-то супер сложности, которая замедляет поиск ошибок. поэтому пока это всё выглядит, как прикольная теоретическая штука. надеюсь, что ошибаюсь.
User avatar
HaRT
Moderator
Posts: 10850
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Макросы на MoonScript

Post by HaRT »

zg wrote: Mon 09 Jan, 2023 16:34 у меня самый большой проект, который я использую — editorsettingscore. примерно 1000 строк. и вроде как там есть настройки, где типы teal были бы полезны, но мне лаконичность мунскрипта важнее строгости teal. нет там какой-то супер сложности, которая замедляет поиск ошибок.
Есть у людей скрипты для Фара и подлиннее (сложнее ли, судить не берусь). И да, у разных программистов разные предпочтения. Я, например, больше люблю, чтобы потенциальные ошибки за меня выявил инструмент, нежели потом их обнаруживать самому, находить и исправлять, даже если это не слишком сложно. И для меня дело даже не столько в скорости поиска/исправления ошибок, сколько в комфортности этого процесса.
zg wrote: Mon 09 Jan, 2023 16:34 мне лаконичность мунскрипта важнее
Да, я её тоже оценил, хотя в последнее время изругался на престранные правила не-/разбиения выражения на строки (а также удивился непоследовательности в не-/трактовке присваивания как выражения). Вот если бы Yue это улучшал, для меня это было бы уже достаточной причиной для его внедрения. (Я про Yue пока прочитал явно недостаточно, чтобы определиться.)
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13842
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Макросы на MoonScript

Post by John Doe »

zg wrote: Tue 18 Oct, 2022 09:17 пул-реквест с поддержкой бом добавили, прямо захотелось в фар добавить.
В последний релиз (v0.15.12) вошло.
И действительно хочется это в фаре)
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13842
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Макросы на MoonScript

Post by John Doe »

Минутка оффтопика: попался большущий список проектов, транслирующихся в Lua. И отдельно любителям языков с фигурными скобками:
https://t.me/FarManager — Telegram чат
User avatar
zg
zero-gravity
Posts: 6033
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Макросы на MoonScript

Post by zg »

John Doe wrote: Sat 11 Mar, 2023 12:42https://moocscript.fun/
я может что-то не понял, но выглядит так, что глобальные переменные предопределены и приходится писать вот так:

Code: Select all

local far=_G.far
far.Show("mooc")
local Macro=getfenv().Macro
Macro(
  {
    area="Shell";
    key="CtrlShiftF10";
    action={in far.Show("mooc macro")}
  })
User avatar
John Doe
Бюрократ
Posts: 13842
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Макросы на MoonScript

Post by John Doe »

zg wrote: Sun 12 Mar, 2023 12:06 я может что-то не понял

Code: Select all

lua:assert(require"moocscript.core".loadstring("far.Show(1,2,3)"))
Он рассматривает необъявленную переменную как синтаксическую ошибку, что конечно бред.
https://github.com/lalawue/mooncake/issues/1
https://t.me/FarManager — Telegram чат
User avatar
zg
zero-gravity
Posts: 6033
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Макросы на MoonScript

Post by zg »

загрузчик макросов на yue, teal и mooncake. teal стоит последним не просто так, если его поставить перед mooncake, то после tl.loader() require"moocscript.core" выполняется 8 секунд. из всего мне известного ещё можно добавить fennel, но там что-то с символом лямбды, не разобрался пока.
Last edited by zg on Sun 12 Mar, 2023 23:39, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13842
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Макросы на MoonScript

Post by John Doe »

zg wrote: Sun 12 Mar, 2023 22:07 из всего мне известного
А Erde почему не рассматриваете?
https://t.me/FarManager — Telegram чат
User avatar
zg
zero-gravity
Posts: 6033
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Макросы на MoonScript

Post by zg »

John Doe wrote: Sun 12 Mar, 2023 22:28А Erde почему не рассматриваете?
потому что не найдя в документации упоминания интерфейса я решил, что его нет. добавил, но с обработкой ошибок надо разбираться.

скрипт теперь тут.
User avatar
John Doe
Бюрократ
Posts: 13842
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Макросы на MoonScript

Post by John Doe »

John Doe wrote: Sun 12 Mar, 2023 14:31
zg wrote: Sun 12 Mar, 2023 12:06 я может что-то не понял

Code: Select all

lua:assert(require"moocscript.core".loadstring("far.Show(1,2,3)"))
Он рассматривает необъявленную переменную как синтаксическую ошибку, что конечно бред.
https://github.com/lalawue/mooncake/issues/1
Увы я не смог.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13842
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Макросы на MoonScript

Post by John Doe »

Поддержка префикса yue:/yues: для выполнения кода и запуска скриптов на Yuescript.
Attachments
yue_yues.lua
(3.02 KiB) Downloaded 47 times
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10850
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Динамическая раскраска элементов панели

Post by HaRT »

buniak_a_h wrote: Tue 02 Apr, 2024 22:44 Если бы этот скрипт был на LUA - легко. НО! Очень не хочется привыкать к moon - для меня этот язык какой-то кривой…
Так MoonScript же для дальнейшей обработки транслируется в Lua. Берёте инструмент, конвертируете скрипт в Луа и дальше развлекаетесь, как душе угодно.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4256
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Макросы на MoonScript

Post by buniak_a_h »

HaRT, я в курсе. Но транслированный совсем уж не читабельный. Я пробовал. :-(
User avatar
John Doe
Бюрократ
Posts: 13842
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Макросы на MoonScript

Post by John Doe »

Очень не хочется привыкать к moon - для меня этот язык какой-то кривой…
Он конечно на любителя, но довольно гибкий, в том плане, что не обязывает использовать сразу все его фичи.
Можно брать их на вооружение избирательно, тогда код не будет так сильно отличаться от Lua.
Хотя, подозреваю, что по мере адаптации, захочется применять больше всего, и тогда..

..тогда получится customfolderstate.moon. Но к тому времени это уже не должно пугать)
https://t.me/FarManager — Telegram чат
Post Reply

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