Page 2 of 3

При старте Фара задать активную панель и запустить команду в ней

Posted: Wed 24 Jun, 2020 21:15
by citRiks

Latest post of the previous page:

NightRoman wrote:
Wed 24 Jun, 2020 21:03
Жаль, однако, что Фар не позволяет это сделать без лишних приседаний.
В идеале, думаю что выглядело бы так:
far.exe "passive_path=C:\here" "active_path=D:\there" "command=dir /w"

Социальный эксперимент.
Если этот пост наберет 5 лайков, то реализую
В Луа, через обработчик события "FarStart"

При старте Фара задать активную панель и запустить команду в ней

Posted: Wed 24 Jun, 2020 22:13
by HaRT
NightRoman wrote:
Wed 24 Jun, 2020 20:16
у меня много таких команд ожидается (тесты с некоторыми вариациями), не хотелось бы на каждый создавать скрипт
Так можно же скрипту передавать параметры, на той же странице документации написано, как.

При старте Фара задать активную панель и запустить команду в ней

Posted: Wed 24 Jun, 2020 23:22
by zg
citRiks wrote:
Wed 24 Jun, 2020 20:05
не нужно ничего печатать, печатание команд - это зло :)
citRiks wrote:
Wed 24 Jun, 2020 21:04

Code: Select all

CmdLine.Value = [[edit:whatever.txt]]; eval("Enter", 2)
я так смотрю, вы только на словах против посылки кнопок, а на практике прямо пропагандой занимаетесь. и да, здесь не прокатит отмазка, что по другому сделать нельзя, можно: Plugin.Command('3A2AF458-43E2-4715-AFEA-93D33D56C0C2',[[edit:whatever.txt]]).

При старте Фара задать активную панель и запустить команду в ней

Posted: Thu 25 Jun, 2020 09:20
by citRiks
zg,
да, интересно, но это не общий случай, а например:
lua:Plugin.Command('3A2AF458-43E2-4715-AFEA-93D33D56C0C2', [[run:dir /w]])
.. и не получится, и в истории комманд сохранится как lua:.., а не run:dir /w

Поэтому все еще думаю что надо бы что то вроде CmdLine.Exec(...)
(или CmdLine.Run(...), или CmdLine.Launch(...))

Или как это сделать?

При старте Фара задать активную панель и запустить команду в ней

Posted: Thu 25 Jun, 2020 10:26
by buniak_a_h
zg, citRiks, я написал когда-то скрипт, выполняющий команду для файла из архива (аналогично CtrlG). Под командой понимается как внешняя (по отношению к FAR-у) команда, так и вызов плагина (макроса) по префиксу. Причём префикс может принадлежать не только FARCmds. Сам я немного переделал упомянутый скрипт: вычленил функцию, выполняющую команду, в модуль. Но т.к. за пару месяцев ни одного сообщение не появилось, выкладывать не стал. Если надо - я опубликую такой "универсальный" модуль. И тогда вместо приведённых Вами текстов будет нечто типа
require("EvalCmd")(«команда», «каталог», «wait»)

При старте Фара задать активную панель и запустить команду в ней

Posted: Thu 25 Jun, 2020 10:51
by zg
citRiks wrote:
Thu 25 Jun, 2020 09:20
zg,
да, интересно, но это не общий случай
для запуска плагина по префиксу — общий.
citRiks wrote:
Thu 25 Jun, 2020 09:20
а например:
lua:Plugin.Command('3A2AF458-43E2-4715-AFEA-93D33D56C0C2', [[run:dir /w]])
если уметь читать, то получится. но вы продолжаете упорно не хотеть научиться хотя бы базовым навыкам чтения.
citRiks wrote:
Thu 25 Jun, 2020 09:20
.. и не получится, и в истории комманд сохранится как lua:.., а не run:dir /w
где такое условие было, кроме вашего поста? я — не вижу. менять правила по ходу дискуссии — демагогия. зачем вы пытаетесь меня обмануть?

При старте Фара задать активную панель и запустить команду в ней

Posted: Thu 25 Jun, 2020 11:21
by buniak_a_h
zg wrote:
Thu 25 Jun, 2020 10:51
для запуска плагина по префиксу — общий.
Не-не!
1. Кроме FarCmds есть и другие плагины, запускаемые по префиксу. И тогда надо искать плагин, запускаемый по префиксу.
2. Сам префикс иногда указывается в строке, а иногда - нет. Т.е. надо не только искать соответствующий плагин, но и получать его инфу, и анализировать PInfo.Flags на PF_FULLCMDLINE.

При старте Фара задать активную панель и запустить команду в ней

Posted: Thu 25 Jun, 2020 13:27
by zg
buniak_a_h wrote:
Thu 25 Jun, 2020 11:21
1. Кроме FarCmds есть и другие плагины, запускаемые по префиксу. И тогда надо искать плагин, запускаемый по префиксу.
2. Сам префикс иногда указывается в строке, а иногда - нет. Т.е. надо не только искать соответствующий плагин, но и получать его инфу, и анализировать PInfo.Flags на PF_FULLCMDLINE.
и? вы будете при этом использовать какую-то другую функцию, а не Plugin.Command?

При старте Фара задать активную панель и запустить команду в ней

Posted: Thu 25 Jun, 2020 14:38
by buniak_a_h
zg, конечно же Plugin.Command . Но написанный Вами текст не решает задачи, описанной автором темы, в общем случае. И "прикручивание" команды к произвольному плагину отнюдь не тривиально.

При старте Фара задать активную панель и запустить команду в ней

Posted: Thu 25 Jun, 2020 15:23
by zg
buniak_a_h wrote:
Thu 25 Jun, 2020 14:38
zg, конечно же Plugin.Command . Но написанный Вами текст не решает задачи, описанной автором темы, в общем случае. И "прикручивание" команды к произвольному плагину отнюдь не тривиально.
я указал метод, позволяющий решить задачу в общем случае. этого достаточно.

При старте Фара задать активную панель и запустить команду в ней

Posted: Fri 26 Jun, 2020 06:54
by NightRoman
Вопрос по оригинальному дизайну параметров ком строки.

Допустим, есть команда:

Code: Select all

far c:\tmp my:command
Зачем составителю этой команды может понадобится запустить my:command в неизвестной пассивной панели?

И что значит "запустить команду в пассивной панели"? Фар временно сделает неизвестную панель активной, запустит в ней команду и потом сделает активной "c:\tmp"?

При старте Фара задать активную панель и запустить команду в ней

Posted: Fri 26 Jun, 2020 07:05
by NightRoman
Было бы полезнее оставить первые два параметра только для путей активной и пассивной панели.
А команду задавать отдельным параметром, например, -command <my command>.
Команда, конечно, выполняется в активной панели.
И это может быть и обычная команда, а не только команда с префиксом, как сейчас.

При старте Фара задать активную панель и запустить команду в ней

Posted: Fri 26 Jun, 2020 10:57
by DrKnS
NightRoman wrote:
Fri 26 Jun, 2020 06:54
И что значит "запустить команду в пассивной панели"? Фар временно сделает неизвестную панель активной, запустит в ней команду и потом сделает активной "c:\tmp"?
Да. Ноги растут оттуда.

При старте Фара задать активную панель и запустить команду в ней

Posted: Fri 26 Jun, 2020 11:42
by NightRoman
Ясно, предложение было реализовано "буквально", так сказать.
Можно ли пересмотреть этот дизайн и реализовать практически более полезный с параметром -command?

При старте Фара задать активную панель и запустить команду в ней

Posted: Fri 26 Jun, 2020 12:23
by HaRT
NightRoman wrote:
Fri 26 Jun, 2020 11:42
практически более полезный с параметром -command
Может, просто трактовать все позиционные параметры, начиная с третьего, как команду для выполнения в активной панели сразу после инициализации всего?

При старте Фара задать активную панель и запустить команду в ней

Posted: Fri 26 Jun, 2020 12:38
by NightRoman
HaRT wrote:
Fri 26 Jun, 2020 12:23
Может, просто трактовать все позиционные параметры, начиная с третьего, как команду для выполнения в активной панели сразу после инициализации всего?
Тогда пользователь обязан задать первые два параметра. Иногда это не нужно, особенно второй.