LuaShell — запуск lua/moon скриптов из командной строки

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

LuaShell — запуск lua/moon скриптов из командной строки

Post by John Doe »

Назначение данной утилиты — реализовать запуск lua/moon/yue скриптов из командной строки
максимально естественным образом, наподобие команд оболочки, и наравне с ними.

Точно так же скрипты можно запускать просто по имени, не задумываясь где именно
они расположены (в текущей папке, или где-то в %PATH%).
И по тем же правилам им можно передавать аргументы в командной строке.

Скрипты удобно не только запускать вручную, но и использовать в ассоциациях,
меню пользователя, диалоге “Применить команду” и т.п.

Область действия не ограничена панелями, командная строка доступна в любой области
фара, с автодополнением и историей.

Скриптам: предоставляется ряд средств, в числе которых — простое обращение к другим
скриптам, доступным в %PATH%, что позволяет сформировать собственную экосистему,
в некотором роде альтернативную модулям Lua.

Макросам: предоставляется модуль sh для доступа к скриптам (см. API).

Установка

Опции

Использование

Скрипты

Диалог запуска скрипта

Просмотр возвращаемых значений

Повторный запуск скрипта

API, предоставляемый скрипту

Командная строка
Attachments
3rd-party-macros.7z
21/08/2021
(116.24 KiB) Downloaded 293 times
LuaShell-02.7z
20/08/2021
(34.44 KiB) Downloaded 258 times
3rd-party.7z
08/08/2021
(57.77 KiB) Downloaded 250 times
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Script utils — запуск lua/moon скриптов из командной строки

Post by sToLp »

Latest post of the previous page:

John Doe wrote: Sun 24 Sep, 2017 16:45waitkey.lua
У меня установка скрипта вызвала .
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Script utils — запуск lua/moon скриптов из командной строки

Post by John Doe »

Он не должен быть в scripts
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Script utils — запуск lua/moon скриптов из командной строки

Post by sToLp »

John Doe wrote: Sun 24 Sep, 2017 19:01Он не должен быть в scripts
Спасибо! Ошибка исчезла.

У Вас написано:
John Doe wrote: Sun 24 Sep, 2017 16:45Если положить в
Наверное лучше бы написать "Скрипт нужно положить в ..."
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Script utils — запуск lua/moon скриптов из командной строки

Post by John Doe »

Да, надо в справке описать, что в scripts нельзя.
Впрочем, у меня ряд утилит может работать как из scripts, так и из комстроки
Last edited by John Doe on Sun 24 Sep, 2017 19:12, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Script utils — запуск lua/moon скриптов из командной строки

Post by John Doe »

dump.lua

Code: Select all

if ... then
  local f = assert(loadstring("return "..(...)))
  print(require"moon".dump(f()))
end
Запускать как dump <arg>, где аргументом любое глобальное значение, например _G или far.
Или выражение, например {a=1,b=2,3,4}, math.sinus(1)
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Script utils — запуск lua/moon скриптов из командной строки

Post by John Doe »

Script utils v1.2
  • Используются переменные PATH и PATHEXT, устанавливаются автоматически (настраивается)
  • Рекомендуется использование из командной строки по ассоциации.
    Таким образом можно не указывать префикс и расширение файла
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Script utils — запуск lua/moon скриптов из командной строки

Post by NightRoman »

John Doe wrote: Mon 18 Sep, 2017 13:43А в нашем PowerShellFar есть такое?
Был в отпуске, поздновато отвечаю. Есть вызов диалога команды PowerShell из почти любого места, в том числе из редактора. И АПИ есть через префикс вызывать любые команды. То есть, наверное, да.
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Script utils — запуск lua/moon скриптов из командной строки

Post by gotar »

John Doe wrote:• Скрипту предоставляется функция "print" аналогичная стандартной (Lua),
но дополнительно перекодирующая текст из utf8 в oem.
Функция выводит текст в буфер под панелями (активируется автоматически,
соответственно нет необходимости в ручном вызове GetUserScreen/SetUserScreen)
А нельзя ли эту функцию выделить в отдельный файл, назвать по другому, например cprint, чтобы ее можно было использовать в своих скриптах.
Last edited by gotar on Thu 28 Sep, 2017 06:26, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Script utils — запуск lua/moon скриптов из командной строки

Post by John Doe »

NightRoman wrote: Wed 27 Sep, 2017 19:10Есть вызов диалога команды PowerShell из почти любого места, в том числе из редактора. И АПИ есть через префикс вызывать любые команды. То есть, наверное, да.
Интересует, предусмотрены ли какое-то специальное АПИ для редактора, или же всё возлагается на вызываемый скрипт.
Для примера возьмём такую задачу, как переформатировать текущий абзац.
1.Это может быть целиком работа одного скрипта: а)выбрать строки, относящиеся к абзацу, б)преобразовать их, и в)вставить обратно.
2.Либо это может быть работа 3х разных скриптов, и в командной строке мы как-то объединяем их вызов
3.Альтернативно, можно предоставлять вызываемому скрипту какое-то АПИ.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Script utils — запуск lua/moon скриптов из командной строки

Post by John Doe »

gotar wrote: Wed 27 Sep, 2017 21:57А нельзя ли эту функцию выделить в отдельный файл, назвать по другому, например cprint, чтобы ее можно было использовать в своих скриптах.
1. У меня имя "print" ни с чем ни конфликтует.
Для "вставки" текста в элементы интерфейса фара есть mf.print (или можно _G.print).
2. Чтобы использовать в своих скриптах, скопируйте исходный текст в _macroinit.lua, или создайте модуль.

И я бы тоже предпочёл иметь подобную функцию из коробки, в luafar.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Script utils — запуск lua/moon скриптов из командной строки

Post by NightRoman »

John Doe wrote: Thu 28 Sep, 2017 07:23Интересует, предусмотрены ли какое-то специальное АПИ для редактора, или же всё возлагается на вызываемый скрипт.
Не уверен, что значит специальное. Для скриптов АПИ тот же, что и для всех FarNet модулей.
Скрипт, который вы в качестве примера привели, вот:
https://github.com/nightroman/FarNet/bl ... ction-.ps1
Специальный там АПИ или нет, решите сами.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Script utils — запуск lua/moon скриптов из командной строки

Post by John Doe »

Думаю над тем, стоит ли поиск скриптов редактора ограничить одной определённой папкой.
Либо с именем, начинающимся на "editor."...
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Lua shell — запуск lua/moon скриптов из командной строки

Post by John Doe »

Изначально скрипт планировался весьма простым, но вот уже в фоне несколько раз переписываю его.
Следующая версия поменяет имя на "Lua shell".
Lua shell
=========

Назначение данной утилиты — реализовать запуск lua/moon скриптов из командной строки
максимально естественным образом, наподобие команд оболочки, и наравне с ними.

Точно так же скрипты можно запускать просто по имени, не задумываясь где именно
они расположены (в текущей папке, или в любом месте PATH).

Область действия не ограничена панелями, командная строка доступна в любой области
фара, с автодополнением и историей: отовсюду можно запустить скрипт, с указанными
аргументами.

Скриптам предоставляется ряд средств, в числе которых — простое обращение к другим
скриптам доступным в PATH, что позволяет сформировать собственную экосистему,
в некотором роде альтернативную модулям Lua.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Lua shell — запуск lua/moon скриптов из командной строки

Post by citRiks »

Эмм, а куда делся предмет обсуждения, сам оный скрипт?
В заголовке нет, на других этих двух страницах тоже нет
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Lua shell — запуск lua/moon скриптов из командной строки

Post by buniak_a_h »

citRiks, собсно, предмет неясен. Лично я тупо сделал ассоциацию на *.lua такие:

Code: Select all

[x] Execute command (used for Enter):
    lua:=@"!\!.!" [[!\!.!]]
[x] Execute command (used for Ctrl+PgDn):
    lua:@"!\!.!" [[!\!.!]]
и аналогичные для *.moon(только moon:…)
Прекрасно работает, предмет не нужен.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Lua shell — запуск lua/moon скриптов из командной строки

Post by citRiks »

buniak_a_h,
Согласен что неясен, нo во введении описан довольно богатый функционал,
превышающий ваше простое ассоциирование, вот и хотелось взглянуть.
Там например насписано что можно передавать параметры.
А насколько мне известно, с lua:@.. можно передать только один единственный строковый параметр?
поправьте меня если я где ошибаюсь
Post Reply

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