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

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 11383
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 16 times
Been thanked: 100 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 21 times

User avatar
HaRT
Moderator
Posts: 8105
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 103 times

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

Post by HaRT » Sun 17 Sep, 2017 20:33

Может, не стоит занимать под эту специализированную задачу столь общий префикс?
Предлагаю run/exec/invoke/spawn или luna/loon/mooa/loona/…
Фар есть инструмент, а не нянька. © 2009 DrKnS

Smitis
Posts: 1489
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 14 times
Been thanked: 24 times
Contact:

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

Post by Smitis » Sun 17 Sep, 2017 22:36

HaRT,
run и exec тоже достаточно общие префиксы. У меня одно время такие были.
Разум когда-нибудь победит.

User avatar
cmd.exe
Posts: 340
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 172 times
Been thanked: 5 times
Contact:

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

Post by cmd.exe » Sun 17 Sep, 2017 23:54

sulu идеально по мойму
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

User avatar
DrKnS
Posts: 4637
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

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

Post by DrKnS » Mon 18 Sep, 2017 07:40

cmd.exe wrote:
Sun 17 Sep, 2017 23:54
sulu

Smitis
Posts: 1489
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 14 times
Been thanked: 24 times
Contact:

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

Post by Smitis » Mon 18 Sep, 2017 08:30

xlua - eXtented/eXecute lua
Разум когда-нибудь победит.

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

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

Post by John Doe » Mon 18 Sep, 2017 09:32

HaRT wrote:
Sun 17 Sep, 2017 20:33
Может, не стоит занимать под эту специализированную задачу столь общий префикс?
Учитывая сколько всяких новых плагинов появляется каждый день полагаю беспокоиться не о чем, префиксов хватит на всех.

И в любом случае, никто же не захардкодил префикс, наоборот, его настройка вынесена в опции.

2useven10
Posts: 3036
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 82 times

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

Post by 2useven10 » Mon 18 Sep, 2017 11:12

Smitis wrote:
Mon 18 Sep, 2017 08:30
xlua
По-моему одна буква лишняя.

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

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

Post by John Doe » Mon 18 Sep, 2017 13:06

Пример утилиты, которую я использую через util:

filesmenu <mask> <cmd> <path> В папке <path> (по умолчанию ".") рекурсивно ищет файлы подходящие под <mask> (по умолчанию *.exe). Найденные отображает в виде меню, при выборе — запускает в командной строке, предваряя командой <cmd> (если задана). Кроме того, в меню доступны клавиши F3, F4, CtrlPgUp, служащие для вставки префиксов view:, edit:, goto:. Пример использования, через консольные алиасы: ----- chm=util:@filesmenu *.chm "" %FARHOME%\Encyclopedia cc=util:@filesmenu changelog* edit: %FARHOME%\Plugins gg=util:@filesmenu $* ----- chm — список chm-файлов из папки Encyclopedia сс — список changelog* из папки Plugins gg <mask> — список файлов <mask> в текущей папке с подпапками
Attachments
filesmenu.lua
(2.12 KiB) Downloaded 19 times

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

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

Post by John Doe » Mon 18 Sep, 2017 13:17

P.S.
Предлагаю в данной теме делиться подобными утилитками.

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

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

Post by John Doe » Mon 18 Sep, 2017 13:43

Есть мысль в перспективе сделать подобие командной строки для редактора, откуда можно было бы запускать скрипты с параметрами.

В простейшим виде для этого ничего особо не надо.
Потом, вероятно, потребуется какое-то апи, обеспечивающее дополнительные удобства.
Продумать, что вообще требуется... На вскидку, неплохо бы предусмотреть объединение команд в цепочки.
Emacs и vim бы глянуть..

А в нашем PowerShellFar есть такое?

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

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

Post by John Doe » Wed 20 Sep, 2017 13:26

Обновление скрипта в шапке.
v1.1
  • Панели теперь гасятся по мере надобности, при использовании функции print.
    Для запуска lua/moon-скриптов удобно использовать ассоциацию *.lua,*.moon | util:"!\!.!"
  • Символ @ используется для запрета отображения выполняемой команды на экране (полезно для "Применить команду").
    Если не указан, то команда отображается только если скрипт использовал print().
    Символ * используется для того, чтобы отобразить выполняемую команду в любом случае.
  • Символ = позволяет отобразить возвращаемые значения скрипта в виде списка.
    Таблицы можно просматривать (опционально: рекомендуются модули "le" и inspect)
    Если после = в командной строке не указан файл, то отображаются значения, возвращённые последним выполненным скриптом.
  • Опционально, эти значения также сохраняются и в глобальной переменной с указанным именем, по умолчанию LastCmdLineResult.
    Опционально, для просмотра этих значений предусмотрен макрос, по умолчанию назначенный на Ctrl-Shift-L.

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

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

Post by John Doe » Wed 20 Sep, 2017 16:09

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

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

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

Post by John Doe » Sun 24 Sep, 2017 16:45

waitkey.lua

Code: Select all

local i = 0
repeat
  local key = mf.waitkey()
  i = i+1
  print(i,key)
until key=="Esc"
Может быть полезно для изучения названий комбинаций клавиш в фаре

Если положить в Macros\Utils, настроить PATHEXT, и добавить ассоциацию, то можно запускать из командной строки просто как "waitkey".

Преимущества перед каким-либо аналогичным макросом:
  • крайняя простота таких примитивных утилит, не нужно организовывать диалоги, и даже (хоть и элементарная) обвязка в Macro {...} не нужна.
  • не приходится занимать клавиши (и помнить комбинации)

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

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

Post by sToLp » Sun 24 Sep, 2017 18:14

John Doe wrote:
Sun 24 Sep, 2017 16:45
waitkey.lua
У меня установка скрипта вызвала .

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

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

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

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

Post Reply

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