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

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

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

Post by John Doe » Sun 17 Sep, 2017 15:09

util:[=][*|@]<filename> [<arg1> <arg2> ...] или, при настроенной ассоциации* <filename[.ext]> [<arg1> <arg2> ...] Назначение данной утилиты — запуск lua/moon скриптов из командной строки, подобно тому, как это делает luamacro с помощью "luas:@filename", но со следующими отличиями: • Аргументы отделяются друг от друга пробелами, и представлют собой строки (а не выражения lua). Это облегчает интеграцию скрипты с командами оболочки, в том числе в ассоциациях, меню пользователя и т.п. • Если не указан путь, то скрипт будет также искаться в %PATH%. Если не указано расширение, то сначала ищется ".lua", затем ".moon". • При старте к значению PATH добавляется путь к папке "Macros\utils" (настраивается). Для того чтобы скрипты можно было запускать без префикса: • Необходимо _вручную_ создать ассоциацию: *.lua,*.moon | util:"!\!.!" • Расширения ".lua;.moon" должны присутствовать в переменной среды PATHEXT. По умолчанию при старте скрипт добавляет их самостоятельно (настраивается). Дополнительные удобства: • Скрипту предоставляется функция "print" аналогичная стандартной (Lua), но дополнительно перекодирующая текст из utf8 в oem. Функция выводит текст в буфер под панелями (активируется автоматически, соответственно нет необходимости в ручном вызове GetUserScreen/SetUserScreen). Модификаторы, используемые с префиксом: • Символ @ используется для запрета отображения выполняемой команды на экране (полезно для "Применить команду"). Если не указан, то команда отображается только если скрипт использовал "print". • Символ * используется для того, чтобы отобразить выполняемую команду в любом случае. • Символ = позволяет отобразить возвращаемые значения скрипта в виде списка. Таблицы можно просматривать (опционально: рекомендуются модули "le" и "inspect") • Если после "=" в командной строке не указан файл, то отображаются значения, возвращённые последним выполненным скриптом. • Опционально, эти значения также сохраняются и в глобальной переменной с указанным именем, по умолчанию "LastCmdLineResult". • Опционально, для просмотра этих значений предусмотрен макрос, по умолчанию назначенный на Ctrl-Shift-L. • Опции можно изменить в начале скрипта. А чтобы после каждого обновления не приходилось вручную восстанавливать изменённые значения опций рекомендуется использовать возможности cfgscript из пакета ScriptsBrowser. Ссылки: Lua explorer (le): viewtopic.php?f=60&t=7988 Inspect : https://github.com/kikito/inspect.lua ScriptsBrowser : viewtopic.php?f=15&t=10418
Attachments
util.lua
1.2
(11.82 KiB) Downloaded 25 times

User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Sun 24 Sep, 2017 19:01

Latest post of the previous page:

Он не должен быть в scripts

User avatar
sToLp
Posts: 766
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 57 times
Been thanked: 5 times

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

Post by sToLp » Sun 24 Sep, 2017 19:09

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

У Вас написано:
John Doe wrote:
Sun 24 Sep, 2017 16:45
Если положить в
Наверное лучше бы написать "Скрипт нужно положить в ..."

User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Sun 24 Sep, 2017 19:11

Да, надо в справке описать, что в scripts нельзя.
Впрочем, у меня ряд утилит может работать как из scripts, так и из комстроки
Last edited by John Doe on Sun 24 Sep, 2017 19:12, edited 1 time in total.

User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Sun 24 Sep, 2017 19:26

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: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Sun 24 Sep, 2017 20:23

Script utils v1.2
  • Используются переменные PATH и PATHEXT, устанавливаются автоматически (настраивается)
  • Рекомендуется использование из командной строки по ассоциации.
    Таким образом можно не указывать префикс и расширение файла

User avatar
NightRoman
Posts: 5872
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

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

Post by NightRoman » Wed 27 Sep, 2017 19:10

John Doe wrote:
Mon 18 Sep, 2017 13:43
А в нашем PowerShellFar есть такое?
Был в отпуске, поздновато отвечаю. Есть вызов диалога команды PowerShell из почти любого места, в том числе из редактора. И АПИ есть через префикс вызывать любые команды. То есть, наверное, да.

gotar
Posts: 296
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

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

Post by gotar » Wed 27 Sep, 2017 21:57

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: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Thu 28 Sep, 2017 07:23

NightRoman wrote:
Wed 27 Sep, 2017 19:10
Есть вызов диалога команды PowerShell из почти любого места, в том числе из редактора. И АПИ есть через префикс вызывать любые команды. То есть, наверное, да.
Интересует, предусмотрены ли какое-то специальное АПИ для редактора, или же всё возлагается на вызываемый скрипт.
Для примера возьмём такую задачу, как переформатировать текущий абзац.
1.Это может быть целиком работа одного скрипта: а)выбрать строки, относящиеся к абзацу, б)преобразовать их, и в)вставить обратно.
2.Либо это может быть работа 3х разных скриптов, и в командной строке мы как-то объединяем их вызов
3.Альтернативно, можно предоставлять вызываемому скрипту какое-то АПИ.

User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Thu 28 Sep, 2017 07:30

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

И я бы тоже предпочёл иметь подобную функцию из коробки, в luafar.

User avatar
NightRoman
Posts: 5872
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

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

Post by NightRoman » Thu 28 Sep, 2017 10:32

John Doe wrote:
Thu 28 Sep, 2017 07:23
Интересует, предусмотрены ли какое-то специальное АПИ для редактора, или же всё возлагается на вызываемый скрипт.
Не уверен, что значит специальное. Для скриптов АПИ тот же, что и для всех FarNet модулей.
Скрипт, который вы в качестве примера привели, вот:
https://github.com/nightroman/FarNet/bl ... ction-.ps1
Специальный там АПИ или нет, решите сами.

User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Thu 28 Sep, 2017 14:39

Думаю над тем, стоит ли поиск скриптов редактора ограничить одной определённой папкой.
Либо с именем, начинающимся на "editor."...

Post Reply

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