Событие CommandLine — макросы для командной строки
- hoopoe
- Posts: 263
- Joined: Mon 28 Mar, 2005 07:44
- Location: Нежный Новгород
- Has thanked: 1 time
- Contact:
Событие CommandLine — макросы для командной строки
hi всем
есть способ повесить макрос на префикс команды?
есть немного идей про макросы, но нужно уметь управлять фаром по типу vim, а именно:
pref:command args
и в макросе разобрать команду и параметры ну и сделать что-нить полезное...
поиск по доке результатов не дал (или не знал как искать)... ткните носом в доку или сампел... пасиб
есть способ повесить макрос на префикс команды?
есть немного идей про макросы, но нужно уметь управлять фаром по типу vim, а именно:
pref:command args
и в макросе разобрать команду и параметры ну и сделать что-нить полезное...
поиск по доке результатов не дал (или не знал как искать)... ткните носом в доку или сампел... пасиб
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: LuaMacro — Lua как язык макросов
Способа 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. К сожалению автор от него почему-то отказался.
- дописать пожелание сюда: 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. К сожалению автор от него почему-то отказался.
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: LuaMacro — Lua как язык макросов
В следующей ночной сборке будет.hoopoe wrote:есть способ повесить макрос на префикс команды?
Описание смотрите в macroapi_manual.ru.chm, в статьях "Плагин LuaMacro" и "Обработчики событий".
Если будут вопросы/предложения - спрашивайте и предлагайте.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: LuaMacro — Lua как язык макросов
Подразумевается значение возвращённое из action или condition?When there are multiple `CommandLine` handlers, and one of them returned
a true value, then the rest of those handlers will not be called.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: LuaMacro — Lua как язык макросов
А condition обрабатывается?
Меня тут беспокоят отличия от других обработчиков.
Я совсем не против реакции на возвращаемое значение, даже завёл тикет.
Но хотелось бы единообразия.
Меня тут беспокоят отличия от других обработчиков.
Я совсем не против реакции на возвращаемое значение, даже завёл тикет.
Но хотелось бы единообразия.
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: LuaMacro — Lua как язык макросов
Всё как в других обработчиках. filemask игнорируется.John Doe wrote:А condition обрабатывается?
Меня тут беспокоят отличия от других обработчиков.
А возвращаемое значение action всегда обрабатывалось в событиях DialogEvent и EditorInput - в соответствии с API плагинов.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: LuaMacro — Lua как язык макросов
Code: Select all
shmuel 28.06.2014 00:21:04 +0200 - build 384
1. Продолжение 383: плагин передаёт обработчикам события "CommandLine" таблицу - массив аргументов.
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: LuaMacro — Lua как язык макросов
Учитывая, что все аргументы типа string, эти 2 способа эквивалентны, но, на мой взгляд, с таблицей проще работать.John Doe wrote:Я почему-то ожидал не таблицу а vararg
Есть, правда, одна существенная разница - обработчики могут модифицировать эту таблицу. Это надо иметь в виду: либо не делать этого, либо делать с определённой целью.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: LuaMacro — Lua как язык макросов
У нового события много общего с запуском
Но есть 2 различия:
Было бы здорово если бы обработчик CommandLine и скрипт, запущенный как
Например в этом случае будет элементарно делать такие обработчики вызовом внешних скриптов.
Как-то так: или так
lua: @<filename> [<params>]
Но есть 2 различия:
- то о чём сказано выше (как принимаются параметры: table vs vararg);
- как они передаются:
В случае CommandLine всё обычно для командной строки, параметры разделяются пробелом (если параметр содержит пробел, то он закавычивается).
А в случае сlua: @<filename> [<params>]
параметры передаются как выражение Lua, и разделяются запятой.
Это когда когда-то обсуждалось, одним из аргументов в пользу такого решения было отсутствие необходимости выдумывать свой парсер командной строки.
Было бы здорово если бы обработчик CommandLine и скрипт, запущенный как
lua: @<filename> [<params>]
работали одинаково.Например в этом случае будет элементарно делать такие обработчики вызовом внешних скриптов.
Как-то так: или так
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: LuaMacro — Lua как язык макросов
Update: в примере 2 ошибка, не учитывается возможность пробелов внутри аргументов.
В общем неважно, каким бы способом ни передавались параметры, выкрутится можно.
Но однотипность всё-таки желательна.
В общем неважно, каким бы способом ни передавались параметры, выкрутится можно.
Но однотипность всё-таки желательна.
Re: LuaMacro — Lua как язык макросов
Хочу предложить другой формат командной строки.
Цель: иметь возможность создавать команды, выполняющиеся в процессе фара и измеряющие его состояние, а не в отдельном процессе. Примеры таких команд: cd и set.
Для каждого обработчика команды задается имя команды этого обработчика. Два обработчика с одним и тем же именем команды считаются ошибкой конфликта имен. В обработчике команды имя команды задается текстовой строкой( не регулярным выражением и т.п.).
формат
lm:<имя команды> <param1> <param2> ...
При попытке создать обработчик для команд load, unload, save и т.п. должна выдаваться ошибка о конфликте имен команд.
Цель: иметь возможность создавать команды, выполняющиеся в процессе фара и измеряющие его состояние, а не в отдельном процессе. Примеры таких команд: cd и set.
Для каждого обработчика команды задается имя команды этого обработчика. Два обработчика с одним и тем же именем команды считаются ошибкой конфликта имен. В обработчике команды имя команды задается текстовой строкой( не регулярным выражением и т.п.).
формат
lm:<имя команды> <param1> <param2> ...
При попытке создать обработчик для команд load, unload, save и т.п. должна выдаваться ошибка о конфликте имен команд.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: LuaMacro — Lua как язык макросов
Т.е. вы предлагаете убратьlm:<имя команды> <param1> <param2> ...
user
.Можно пойти ещё дальше и убрать
lm:
.Сейчас это возможно реализовать проверкой в функции condition.Для каждого обработчика команды задается имя команды этого обработчика.
Вы предлагаете завести отдельное поле в таблице. Возможно и стоит.