Событие CommandLine — макросы для командной строки

Здесь обсуждается всё, что касается макросов.
User avatar
hoopoe
Posts: 263
Joined: Mon 28 Mar, 2005 07:44
Location: Нежный Новгород
Has thanked: 1 time
Contact:

Событие CommandLine — макросы для командной строки

Post by hoopoe » Fri 27 Jun, 2014 09:48

hi всем

есть способ повесить макрос на префикс команды?
есть немного идей про макросы, но нужно уметь управлять фаром по типу vim, а именно:
pref:command args
и в макросе разобрать команду и параметры ну и сделать что-нить полезное...

поиск по доке результатов не дал (или не знал как искать)... ткните носом в доку или сампел... пасиб

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

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

Post by John Doe » Fri 27 Jun, 2014 09:54

Способа 3
- дописать пожелание сюда: http://bugs.farmanager.com/view.php?id=2393
- оформить макрос lua-плагином: http://forum.farmanager.com/viewtopic.php?f=15&t=4365
- использовать консольные алиасы: http://forum.farmanager.com/viewtopic.php?f=15&t=8546

Последний способ проще всего. Но между командой/параметрами должен быть пробел

P.S.
Был ещё один способ: ProcessFarCommandLine. К сожалению автор от него почему-то отказался.

Shmuel
Posts: 5924
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

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

Post by Shmuel » Fri 27 Jun, 2014 15:06

hoopoe wrote:есть способ повесить макрос на префикс команды?
В следующей ночной сборке будет.
Описание смотрите в macroapi_manual.ru.chm, в статьях "Плагин LuaMacro" и "Обработчики событий".
Если будут вопросы/предложения - спрашивайте и предлагайте.

User avatar
hoopoe
Posts: 263
Joined: Mon 28 Mar, 2005 07:44
Location: Нежный Новгород
Has thanked: 1 time
Contact:

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

Post by hoopoe » Fri 27 Jun, 2014 15:10

Вот спасибо :)

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

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

Post by John Doe » Fri 27 Jun, 2014 15:47

When there are multiple `CommandLine` handlers, and one of them returned
a true value, then the rest of those handlers will not be called.
Подразумевается значение возвращённое из action или condition?

Shmuel
Posts: 5924
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

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

Post by Shmuel » Fri 27 Jun, 2014 15:50

John Doe wrote:Подразумевается значение возвращённое из action или condition?
Из action.

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

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

Post by John Doe » Fri 27 Jun, 2014 15:59

А condition обрабатывается?

Меня тут беспокоят отличия от других обработчиков.
Я совсем не против реакции на возвращаемое значение, даже завёл тикет.
Но хотелось бы единообразия.

Shmuel
Posts: 5924
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

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

Post by Shmuel » Fri 27 Jun, 2014 16:15

John Doe wrote:А condition обрабатывается?

Меня тут беспокоят отличия от других обработчиков.
Всё как в других обработчиках. filemask игнорируется.
А возвращаемое значение action всегда обрабатывалось в событиях DialogEvent и EditorInput - в соответствии с API плагинов.

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

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

Post by John Doe » Sat 28 Jun, 2014 09:56

Code: Select all

shmuel 28.06.2014 00:21:04 +0200 - build 384

1. Продолжение 383: плагин передаёт обработчикам события "CommandLine" таблицу - массив аргументов.
Я почему-то ожидал не таблицу а vararg

Shmuel
Posts: 5924
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

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

Post by Shmuel » Sat 28 Jun, 2014 10:18

John Doe wrote:Я почему-то ожидал не таблицу а vararg
Учитывая, что все аргументы типа string, эти 2 способа эквивалентны, но, на мой взгляд, с таблицей проще работать.

Есть, правда, одна существенная разница - обработчики могут модифицировать эту таблицу. Это надо иметь в виду: либо не делать этого, либо делать с определённой целью.

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

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

Post by John Doe » Sat 28 Jun, 2014 10:54

У нового события много общего с запуском lua: @<filename> [<params>]
Но есть 2 различия:
  • то о чём сказано выше (как принимаются параметры: table vs vararg);
  • как они передаются:
    В случае CommandLine всё обычно для командной строки, параметры разделяются пробелом (если параметр содержит пробел, то он закавычивается).
    А в случае с lua: @<filename> [<params>] параметры передаются как выражение Lua, и разделяются запятой.
    Это когда когда-то обсуждалось, одним из аргументов в пользу такого решения было отсутствие необходимости выдумывать свой парсер командной строки.
Теперь свой парсер уже есть.
Было бы здорово если бы обработчик CommandLine и скрипт, запущенный как lua: @<filename> [<params>] работали одинаково.

Например в этом случае будет элементарно делать такие обработчики вызовом внешних скриптов.
Как-то так: или так

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

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

Post by John Doe » Sat 28 Jun, 2014 11:31

Update: в примере 2 ошибка, не учитывается возможность пробелов внутри аргументов.

В общем неважно, каким бы способом ни передавались параметры, выкрутится можно.
Но однотипность всё-таки желательна.

Shmuel
Posts: 5924
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

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

Post by Shmuel » Sat 28 Jun, 2014 16:24

John Doe wrote:Но однотипность всё-таки желательна.
Пока останется как есть, а дальше жизнь покажет.

gotar
Posts: 316
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 9 times

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

Post by gotar » Sat 28 Jun, 2014 23:48

Хочу предложить другой формат командной строки.

Цель: иметь возможность создавать команды, выполняющиеся в процессе фара и измеряющие его состояние, а не в отдельном процессе. Примеры таких команд: cd и set.

Для каждого обработчика команды задается имя команды этого обработчика. Два обработчика с одним и тем же именем команды считаются ошибкой конфликта имен. В обработчике команды имя команды задается текстовой строкой( не регулярным выражением и т.п.).

формат
lm:<имя команды> <param1> <param2> ...

При попытке создать обработчик для команд load, unload, save и т.п. должна выдаваться ошибка о конфликте имен команд.

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

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

Post by John Doe » Sun 29 Jun, 2014 12:35

lm:<имя команды> <param1> <param2> ...
Т.е. вы предлагаете убрать user.
Можно пойти ещё дальше и убрать lm:.
Для каждого обработчика команды задается имя команды этого обработчика.
Сейчас это возможно реализовать проверкой в функции condition.
Вы предлагаете завести отдельное поле в таблице. Возможно и стоит.

gotar
Posts: 316
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 9 times

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

Post by gotar » Sun 29 Jun, 2014 13:50

Нет. Я предлагаю user сделать одной из команд.
Last edited by gotar on Sun 29 Jun, 2014 13:53, edited 1 time in total.

Locked

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