Экспериментально: ProcessFarCommandLine

Здесь обсуждается всё, что касается макросов.
Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

Экспериментально: ProcessFarCommandLine

Post by Smitis » Fri 29 Apr, 2016 10:22

Latest post of the previous page:

После обсуждения в viewtopic.php?f=3&t=10242 и с появлением http://bugs.farmanager.com/view.php?id=3223 может стоит вернуть ProcessFarCommandLine?
Теоретически, это решило бы проблему использования альтернативных оболочек - проанализировали comspec, выполнили необходимые преобразования и выполнили через win.system, нет - вернули строку Far-у и там уже включается стандартный механизм?
Разум когда-нибудь победит.

gene.pavlovsky
Posts: 157
Joined: Tue 11 Aug, 2015 16:53
Has thanked: 11 times

Экспериментально: ProcessFarCommandLine

Post by gene.pavlovsky » Fri 29 Apr, 2016 13:09

Возобновилось обсуждение темы
viewtopic.php?f=3&t=10242&p=137441#p137441
http://bugs.farmanager.com/view.php?id=3223

IgorZ
Posts: 459
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Экспериментально: ProcessFarCommandLine

Post by IgorZ » Fri 06 May, 2016 06:49

Если кому-то нужен перехват командной строки, можно использовать обработчик событияConsoleInput. вот простенький пример, кому надо:
  1. -- +
  2. -- Данный пример перехватывает командные строки, заканчивающиеся на "!!!", и выводит сообщение.
  3. -- Для использования в своих нуждах скорректируйте строки, помеченные *поменять*
  4. -- -
  5. local F = far.Flags
  6. Event{
  7.   group="ConsoleInput"; description="Пример обработки командной строки";
  8.   condition=
  9. function(IR)
  10. return Area.Shell and -- панели и
  11.        not CmdLine.Empty and -- командная строка не пуста и
  12.        IR.EventType==F.KEY_EVENT and IR.VirtualKeyCode==0x0d -- нажата Enter
  13. end;
  14.   action=
  15. function()
  16. if CmdLine.Value:match(".*!!!$") then -- командная строка удовлетворяет образцу? *поменять*
  17.   far.Message(CmdLine.Value:sub(1,-4).."??? Вы взволнованы, успокойтесь...") -- сами что-то сделаем *поменять*
  18.   return 1 -- Far ничего не делает
  19. end
  20. return 0 -- обычная обработка
  21. end;
  22. }

Shmuel
Posts: 5166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

Экспериментально: ProcessFarCommandLine

Post by Shmuel » Fri 06 May, 2016 07:17

IgorZ, здОрово! Вроде до сих пор никто не озвучивал этого решения.
Добавлю, что данный подход позволяет также и модифицировать комстроку перед передачей её Фару.

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

Экспериментально: ProcessFarCommandLine

Post by Smitis » Sat 07 May, 2016 12:37

IgorZ wrote:Если кому-то нужен перехват командной строки, можно использовать обработчик события ConsoleInput. вот простенький пример, кому надо:
Ну так можно было и просто макросы на Enter и ShiftEnter повесить, для непустой строки.
Но ещё есть меню пользователя, ассоциации, история команд, Apply Command (CtrlG).
Разум когда-нибудь победит.

gene.pavlovsky
Posts: 157
Joined: Tue 11 Aug, 2015 16:53
Has thanked: 11 times

Экспериментально: ProcessFarCommandLine

Post by gene.pavlovsky » Sat 07 May, 2016 23:33

Такой метод отличается чем-нибудь от установки макроса на Enter, ShiftEnter?
Кстати, а почему ставлю какой-либо макрос на AltEnter, а он не выполняется?

User avatar
HaRT
Moderator
Posts: 8051
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

Экспериментально: ProcessFarCommandLine

Post by HaRT » Sun 08 May, 2016 00:15

gene.pavlovsky wrote:Кстати, а почему ставлю какой-либо макрос на AltEnter, а он не выполняется?
viewtopic.php?p=116428#p116428
Фар есть инструмент, а не нянька. © 2009 DrKnS

gene.pavlovsky
Posts: 157
Joined: Tue 11 Aug, 2015 16:53
Has thanked: 11 times

Экспериментально: ProcessFarCommandLine

Post by gene.pavlovsky » Sun 08 May, 2016 00:35

Благодарю!

IgorZ
Posts: 459
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Экспериментально: ProcessFarCommandLine

Post by IgorZ » Sun 08 May, 2016 19:47

Smitis wrote:Ну так можно было и просто макросы на Enter и ShiftEnter повесить, для непустой строки.
Можно. Но обработчик событий кажется мне несколько более гибким в данной ситуации, а значит, данный подход обладает бОльшим потенциалом. Впрочем, на абсолютную правоту не претендую.
Smitis wrote:Но ещё есть меню пользователя, ассоциации, история команд, Apply Command (CtrlG).
Я просто предложил простенький пример, который можно взять за основу.

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

Экспериментально: ProcessFarCommandLine

Post by Smitis » Sun 08 May, 2016 21:36

Shmuel, а Вас нет желания вынести данный функционал в отдельный lua-плагин? Как я понимаю, есть какие-то неозвученные причины не делать этого в LuaMacro, но отдельный плагин, не входящий в стандартную поставку, на основе LuaMacro, никому бы не помешал.
Разум когда-нибудь победит.

Shmuel
Posts: 5166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

Экспериментально: ProcessFarCommandLine

Post by Shmuel » Sun 08 May, 2016 21:48

Зачем отдельный плагин, чем LuaMacro не годится?
Данная функциональность уже была реализована в первом приближении (билд 3885), но столкнувшись с явно выраженным недовольством двух коллег по Far Group, я её откатил, решив, что мне не больше всех надо.

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

Экспериментально: ProcessFarCommandLine

Post by Smitis » Sun 08 May, 2016 21:57

Возможно, недовольства не будет, если функция не будет входить в стандартный плагин.
Разум когда-нибудь победит.

Shmuel
Posts: 5166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

Экспериментально: ProcessFarCommandLine

Post by Shmuel » Sun 08 May, 2016 22:04

Smitis wrote: Возможно, недовольства не будет, если функция не будет входить в стандартный плагин.
Насчёт довольства/недовольства кого бы то ни было, меня это сейчас не интересует. Но никто никому не запрещает это сделать, это необязательно должен быть я.

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

Экспериментально: ProcessFarCommandLine

Post by Smitis » Sun 08 May, 2016 22:19

Shmuel wrote:Но никто никому не запрещает это сделать
Была такая мысль. Но не знаю как к этому подступиться. Допустим, обработку командной строки можно сделать через ProcessPanelEvent. Из истории, по логике, должно попадать туда же. А остальное? Например, команду из ассоциации? Apply command?
Разум когда-нибудь победит.

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

Экспериментально: ProcessFarCommandLine

Post by John Doe » Mon 09 May, 2016 11:59

Smitis wrote: Но не знаю как к этому подступиться.
Для того чтобы реализовать (и поддерживать) всё по-простому, как было, надо быть членом фартим.

Если альтернативно, отдельным плагином, то для этого необходимо специальное апи (имеющегося как вы заметили недостаточно).
Впрочем подозреваю даже разработав такое апи, мы столкнёмся с тем, что никто из фартим не заинтересован в его поддержке.

Имхо.

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

Экспериментально: ProcessFarCommandLine

Post by Smitis » Wed 11 May, 2016 22:05

Перекомпилировал LuaMacro с поддержкой ProcessPanelEventW (в таблицу экспорта добавилась). Ставлю отдельным плагином. Но export.ProcessPanelEvent не вызывается, ни на какие события. Там есть какие-нибудь нюансы использования, кроме того, что бы просто описать эту функцию?
Разум когда-нибудь победит.

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

Экспериментально: ProcessFarCommandLine

Post by John Doe » Wed 11 May, 2016 22:10

Smitis wrote: Но export.ProcessPanelEvent не вызывается, ни на какие события
А панель создали?

Post Reply

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