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

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

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

Пример:

far %FARHOME%\Addons view:README.txt

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

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

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

(Примечание: команда "view:" взята просто для простого примера)
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

NightRoman,
вроде так можно:
far.exe lua:far.Message("123")
(в Луа-скрипте можно задать любое нужно поведение)
Last edited by citRiks on Wed 24 Jun, 2020 19:14, edited 1 time in total.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

В смысле, в Луа и установить панели и потом из Луа "напечатать" нужную команду и "нажать" Ентер? (команда ведь не Луа, а другого плагина)

В принципе, можно... Я не силен в Луа, как оно примерно будет выглядеть? Не будет код слишком сложным для ком строки? (надо экранировать спец символы и т.п.).
Last edited by NightRoman on Wed 24 Jun, 2020 19:49, edited 2 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

NightRoman,
не нужно ничего печатать, печатание команд - это зло :)
Все остальное поправимо, такой вариант например должен хавать любые папки и файлы со спец. символами:
far.exe "lua:viewer.Viewer([[C:\whatever\something.txt]])" "c:\folder_1" "d:\folder_2"
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

NightRoman wrote: Wed 24 Jun, 2020 19:47 Не будет код слишком сложным для ком строки?
Скрипт можно поместить в файл. Запустите lua: — откроется справка, там прямо на той (небольшой) странице написано, как записать запуск скрипта из файла.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post 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"
Это неправильная ком строка. Вы задаете команду и две папки. Фар такого не позволяет. И в команде вы используете запуск вьюера, а я подчеркнул, что это было просто для примера команды (любого плагина).
Не подумайте, что придираюсь, просто факты. Я очень ценю ваше желание помочь.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

HaRT wrote: Wed 24 Jun, 2020 20:08 Скрипт можно поместить в файл. Запустите lua: — откроется справка, там прямо на той (небольшой) странице написано, как записать запуск скрипта из файла.
Да, так можно, конечно. Только у меня много таких команд ожидается (тесты с некоторыми вариациями), не хотелось бы на каждый создавать скрипт. Но буду думать в этом направлении.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post 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 И в команде вы используете запуск вьюера, а я подчеркнул, что это было просто для примера команды (любого плагина).
Ну и естественно команда любого плагина пишется с огромным успехом в Луа,
если я правильно понял?
Last edited by citRiks on Wed 24 Jun, 2020 20:35, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

NightRoman wrote: Wed 24 Jun, 2020 20:14 Не подумайте, что придираюсь, просто факты. Я очень ценю ваше желание помочь.
Я считаю что автору Фар.Нета можно и придираться сколько влезет ))
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post 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 Я считаю что автору Фар.Нета можно и придираться сколько влезет ))
ха-ха, спасибо :)
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

NightRoman,
NightRoman wrote: Wed 24 Jun, 2020 20:45 Ага, это уже ближе. Осталось "напечатать" нужную команду и "нажать".
А что прямо печатать-то надо?
В большом количестве случаев API (слава создателям :pray:) позволяет обходится без печатания
Last edited by citRiks on Wed 24 Jun, 2020 20:49, edited 1 time in total.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

А как? Через гуиды запускать, используя какой-нибудь Луа метод? Можно (если есть, наверное, есть). Но для ком строки тяжеловато. Хочется, чтобы все в ком строке было. Читаю Луа.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

Как-то так:

Code: Select all

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

Жаль, однако, что Фар не позволяет это сделать без лишних приседаний.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

NightRoman,
Ну да, через ГУИДы и методы плагинов.
Если сильно надо командую строку, то тогда так:

Code: Select all

CmdLine.Value = [[edit:whatever.txt]]; eval("Enter", 2)
Печатается только "Ентер"
Пользуясь случаем, обращаюсь к фаро-создателям убрать необходимость в печатании Ентера,
сделав что-то вроде CmdLine.Launch([[whatever.exe command]])
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post 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"
Last edited by citRiks on Fri 26 Jun, 2020 15:04, edited 2 times in total.
Post Reply

Return to “Нужна помощь”