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

Здесь обсуждается всё, что касается макросов.
Smitis
Posts: 1440
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 22 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: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

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

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

Если кому-то нужен перехват командной строки, можно использовать обработчик событияConsoleInput. вот простенький пример, кому надо:
Code: [Select all] [Expand/Collapse] [Download] (ProcessCommandLine.lua)
  1. -- +
  2.  
  3. -- Данный пример перехватывает командные строки, заканчивающиеся на "!!!", и выводит сообщение.
  4.  
  5. -- Для использования в своих нуждах скорректируйте строки, помеченные *поменять*
  6.  
  7. -- -
  8.  
  9. local F = far.Flags
  10.  
  11. Event{
  12.  
  13.   group="ConsoleInput"; description="Пример обработки командной строки";
  14.  
  15.   condition=
  16.  
  17. function(IR)
  18.  
  19. return Area.Shell and -- панели и
  20.  
  21.        not CmdLine.Empty and -- командная строка не пуста и
  22.  
  23.        IR.EventType==F.KEY_EVENT and IR.VirtualKeyCode==0x0d -- нажата Enter
  24.  
  25. end;
  26.  
  27.   action=
  28.  
  29. function()
  30.  
  31. if CmdLine.Value:match(".*!!!$") then -- командная строка удовлетворяет образцу? *поменять*
  32.  
  33.   far.Message(CmdLine.Value:sub(1,-4).."??? Вы взволнованы, успокойтесь...") -- сами что-то сделаем *поменять*
  34.  
  35.   return 1 -- Far ничего не делает
  36.  
  37. end
  38.  
  39. return 0 -- обычная обработка
  40.  
  41. end;
  42.  
  43. }

Shmuel
Posts: 5040
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

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

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

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

Smitis
Posts: 1440
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 22 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: 7979
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 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: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

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

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

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

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

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

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

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

Shmuel
Posts: 5040
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

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

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

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

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

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

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

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

Shmuel
Posts: 5040
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

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

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

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

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

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

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

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

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

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

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

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

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

Имхо.

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

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

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

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

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

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

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

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

Post Reply

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

Who is online

Users browsing this forum: No registered users and 2 guests