Page 1 of 3

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

Posted: Wed 24 Jun, 2020 17:47
by NightRoman
Как при старте Фара задать активную панель и запустить команду в ней с помощью
параметров ком строки?

Пример:

far %FARHOME%\Addons view:README.txt

Хотелось бы, чтобы эта команда работала так: активная панель при старте
устанавливается на "%FARHOME%\Addons", и в ней запускаем "view:README.txt".

По дизайну это не так. Команда "view:README.txt" запускается в пассивной панели
(не совсем уверен, но вроде так, согласно "far /?"). То есть команда запускается
в панели, директорию которой при старте задать нельзя. Так как параметр задает
либо директорию, либо команду, другого не дано.

Нет ли способа как-то обойти этот дизайн?

(Примечание: команда "view:" взята просто для простого примера)

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

Posted: Wed 24 Jun, 2020 19:13
by citRiks
NightRoman,
вроде так можно:
far.exe lua:far.Message("123")
(в Луа-скрипте можно задать любое нужно поведение)

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

Posted: Wed 24 Jun, 2020 19:47
by NightRoman
В смысле, в Луа и установить панели и потом из Луа "напечатать" нужную команду и "нажать" Ентер? (команда ведь не Луа, а другого плагина)

В принципе, можно... Я не силен в Луа, как оно примерно будет выглядеть? Не будет код слишком сложным для ком строки? (надо экранировать спец символы и т.п.).

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

Posted: Wed 24 Jun, 2020 20:05
by citRiks
NightRoman,
не нужно ничего печатать, печатание команд - это зло :)
Все остальное поправимо, такой вариант например должен хавать любые папки и файлы со спец. символами:
far.exe "lua:viewer.Viewer([[C:\whatever\something.txt]])" "c:\folder_1" "d:\folder_2"

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

Posted: Wed 24 Jun, 2020 20:08
by HaRT
NightRoman wrote:
Wed 24 Jun, 2020 19:47
Не будет код слишком сложным для ком строки?
Скрипт можно поместить в файл. Запустите lua: — откроется справка, там прямо на той (небольшой) странице написано, как записать запуск скрипта из файла.

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

Posted: Wed 24 Jun, 2020 20:14
by NightRoman
citRiks wrote:
Wed 24 Jun, 2020 20:05
far.exe "lua:viewer.Viewer([[C:\whatever\something.txt]])" "c:\folder_1" "d:\folder_2"
Это неправильная ком строка. Вы задаете команду и две папки. Фар такого не позволяет. И в команде вы используете запуск вьюера, а я подчеркнул, что это было просто для примера команды (любого плагина).
Не подумайте, что придираюсь, просто факты. Я очень ценю ваше желание помочь.

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

Posted: Wed 24 Jun, 2020 20:16
by NightRoman
HaRT wrote:
Wed 24 Jun, 2020 20:08
Скрипт можно поместить в файл. Запустите lua: — откроется справка, там прямо на той (небольшой) странице написано, как записать запуск скрипта из файла.
Да, так можно, конечно. Только у меня много таких команд ожидается (тесты с некоторыми вариациями), не хотелось бы на каждый создавать скрипт. Но буду думать в этом направлении.

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

Posted: Wed 24 Jun, 2020 20:34
by citRiks
NightRoman,
Да, верно, к сожалению корректно обрабатывается тольк первые два параметра а не три
Ну значит едем дальше на одном только Луа:

Code: Select all

far.exe "lua:Panel.SetPath(0, [[c:\фолдер_1]]); Panel.SetPath(1, [[c:\фолдер_2]]); viewer.Viewer([[C:\что-то\такое.txt]])"
это будет вполне себе общий случай на мой взгляд.
NightRoman wrote:
Wed 24 Jun, 2020 20:14
И в команде вы используете запуск вьюера, а я подчеркнул, что это было просто для примера команды (любого плагина).
Ну и естественно команда любого плагина пишется с огромным успехом в Луа,
если я правильно понял?

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

Posted: Wed 24 Jun, 2020 20:37
by citRiks
NightRoman wrote:
Wed 24 Jun, 2020 20:14
Не подумайте, что придираюсь, просто факты. Я очень ценю ваше желание помочь.
Я считаю что автору Фар.Нета можно и придираться сколько влезет ))

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

Posted: Wed 24 Jun, 2020 20:45
by NightRoman
citRiks wrote:
Wed 24 Jun, 2020 20:34
far.exe "lua:Panel.SetPath(0, [[c:\фолдер_1]]); Panel.SetPath(1, [[c:\фолдер_2]]); viewer.Viewer([[C:\что-то\такое.txt]])"
Ага, это уже ближе. Осталось "напечатать" нужную команду и "нажать".
citRiks wrote:
Wed 24 Jun, 2020 20:37
Я считаю что автору Фар.Нета можно и придираться сколько влезет ))
ха-ха, спасибо :)

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

Posted: Wed 24 Jun, 2020 20:48
by citRiks
NightRoman,
NightRoman wrote:
Wed 24 Jun, 2020 20:45
Ага, это уже ближе. Осталось "напечатать" нужную команду и "нажать".
А что прямо печатать-то надо?
В большом количестве случаев API (слава создателям :pray:) позволяет обходится без печатания

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

Posted: Wed 24 Jun, 2020 20:57
by NightRoman
А как? Через гуиды запускать, используя какой-нибудь Луа метод? Можно (если есть, наверное, есть). Но для ком строки тяжеловато. Хочется, чтобы все в ком строке было. Читаю Луа.

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

Posted: Wed 24 Jun, 2020 21:03
by NightRoman
Как-то так:

Code: Select all

far.exe "lua:Panel.SetPath(0, [[c:\tmp]]); Panel.SetPath(1, [[c:\temp]]); print[[foo: bar]]; Keys[[Enter]]"
Думаю, что это подойдет для моих текущих надобностей.

Жаль, однако, что Фар не позволяет это сделать без лишних приседаний.

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

Posted: Wed 24 Jun, 2020 21:04
by citRiks
NightRoman,
Ну да, через ГУИДы и методы плагинов.
Если сильно надо командую строку, то тогда так:

Code: Select all

CmdLine.Value = [[edit:whatever.txt]]; eval("Enter", 2)
Печатается только "Ентер"
Пользуясь случаем, обращаюсь к фаро-создателям убрать необходимость в печатании Ентера,
сделав что-то вроде CmdLine.Launch([[whatever.exe command]])

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

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

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