LuaMacro — Lua как язык макросов

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 14580
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

Проект Spring (обсуждение) влился в стабильную версию Far Manager 3.0.

Таким образом, в макросах сейчас доступны:
  • Стандартные функции и библиотеки Lua.
  • В фаре используется LuaJIT (обсуждение), что (в частности) даёт доступ к библиотеке FFI (обсуждение), и некоторые другие расширения.
  • "Надстройка" над Lua: MoonScript (Подробности и обсуждение)
  • Функции API плагинов, посредством библиотеки LuaFAR (см. luafar_manual.chm)
  • Функции старого макроязыка (API макросов) (Обновление)
    Актуальный мануал, отражающий после перехода на Lua: macroapi_manual.ru.chm.
    (Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел )
См. также:
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

Ликбез по Lua

Post by Shmuel »

Latest post of the previous page:

lua:@1.lua 6,7,8
╔════════════════╗ ║ 1│ 6 ║ ║ 2│ 7 ║ ║ 3│ 8 ║ ╚═ 3 arguments ══╝
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

Ликбез по Lua

Post by Shmuel »

gotar wrote: Mon 06 Jan, 2025 12:12 Far.Show(args[0]) показывает nil
В Lua массивы индексируются, начиная от 1.
gotar
Posts: 519
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 31 times
Been thanked: 3 times

Ликбез по Lua

Post by gotar »

спасибо. вот не догадался заключить аргументы в кавычки, хотя в хелпе все написано. А все таки к командной строке можно получить доступ из скрипта вызываемого c помощью @? или чтобы получить доступ к командной строке надо писать обработчик собственного префикса?
Last edited by gotar on Mon 06 Jan, 2025 12:37, edited 3 times in total.
User avatar
buniak_a_h
Posts: 4559
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

Ликбез по Lua

Post by buniak_a_h »

  1. Есть ещё функция select, дающая доступ к конкретному параметру по его номеру или количество параметров.
  2. Для получения номера строки можно воспользоваться функцией debug.getinfo (или debug.traceback)
Last edited by buniak_a_h on Mon 06 Jan, 2025 12:55, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 14580
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Ликбез по Lua

Post by John Doe »

gotar wrote: Mon 06 Jan, 2025 12:17 или чтобы получить доступ к командной строке надо писать обработчик собственного префикса?
Именно поэтому мне пришлось написать LuaShell.
https://t.me/FarManager — Telegram чат
gotar
Posts: 519
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 31 times
Been thanked: 3 times

Ликбез по Lua

Post by gotar »

Еще один вопрос. Мне нужно ввести значение переменной с клавиатуры. Можно ли это сделать простым способом не формируя сложных диалогов виде таблицы Lua, а просто вызвав функцию. Для вывода данных есть подобная функция far.Show, может быть есть подобная функция и для ввода.
User avatar
buniak_a_h
Posts: 4559
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

Ликбез по Lua

Post by buniak_a_h »

gotar wrote: Mon 06 Jan, 2025 15:33 может быть есть подобная функция и для ввода.
far.InputBox
gotar
Posts: 519
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 31 times
Been thanked: 3 times

LuaMacro — Lua как язык макросов

Post by gotar »

Кто нибудь может подсказать почему {("abcdef"):match("(abc)?(def)")} возвращает пустую таблицу вместо массива из двух элементов "abc" и "def"?
Last edited by gotar on Thu 09 Jan, 2025 21:00, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 11454
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

LuaMacro — Lua как язык макросов

Post by HaRT »

gotar wrote: Thu 09 Jan, 2025 20:57 Кто нибудь может подсказать почему {("abcdef"):match("(abc)?(def)")} возвращает пустую таблицу вместо массива из двух элементов "abc" и "def"?
Lua patterns — это не регэкспы, они не поддерживают группы:
20.2 – Patterns wrote:Unlike some other systems, in Lua a modifier can only be applied to a character class; there is no way to group patterns under a modifier. For instance, there is no pattern that matches an optional word (unless the word has only one letter).
Фар есть инструмент, а не нянька. © 2009 DrKnS
gotar
Posts: 519
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 31 times
Been thanked: 3 times

LuaMacro — Lua как язык макросов

Post by gotar »

ответили
Last edited by gotar on Thu 09 Jan, 2025 23:17, edited 1 time in total.
gotar
Posts: 519
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 31 times
Been thanked: 3 times

LuaMacro — Lua как язык макросов

Post by gotar »

я спросил у ИИ: как переписать регулярное выражение ^([^:/]*://)?([^?#:/]*) используя lua pattern Он мне ответил: Галлюцинирует?
User avatar
HaRT
Moderator
Posts: 11454
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

LuaMacro — Lua как язык макросов

Post by HaRT »

gotar wrote: Thu 09 Jan, 2025 21:39 Я точно знаю, что в Lua для Фар есть regexp. Как надо написать чтобы использовать регулярные выражения?
Как юниор, право слово! В документации по LuaFAR не пробовали искать? "%FarHome%\Encyclopedia\luafar_manual.chm" :rtfm2:
gotar wrote: Thu 09 Jan, 2025 21:49Галлюцинирует?
Похоже на то.
Фар есть инструмент, а не нянька. © 2009 DrKnS
gotar
Posts: 519
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 31 times
Been thanked: 3 times

LuaMacro — Lua как язык макросов

Post by gotar »

какой функцией выводить сообщение об ошибке из макроса?
User avatar
HaRT
Moderator
Posts: 11454
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

LuaMacro — Lua как язык макросов

Post by HaRT »

gotar wrote: Thu 09 Jan, 2025 23:42 какой функцией выводить сообщение об ошибке из макроса?
Фар есть инструмент, а не нянька. © 2009 DrKnS
gotar
Posts: 519
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 31 times
Been thanked: 3 times

LuaMacro — Lua как язык макросов

Post by gotar »

просмотрел каждую функцию из luafar_manual.chm. ничего подходящего не увидел. их там много, мог зевнуть, но руководство смотрел. На форуме тоже пробовал искать, И даже в Far Faq заглянул.
User avatar
HaRT
Moderator
Posts: 11454
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

LuaMacro — Lua как язык макросов

Post by HaRT »

gotar wrote: Fri 10 Jan, 2025 00:51 просмотрел каждую функцию из luafar_manual.chm. ничего подходящего не увидел
И всё же поищите, например, по слову message.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

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