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

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

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

Postby Smitis » Fri 29 Apr, 2016 10:22

Latest post of the previous page:

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


IgorZ
Posts: 436
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

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

Postby IgorZ » Fri 06 May, 2016 06:49

Если кому-то нужен перехват командной строки, можно использовать обработчик событияConsoleInput. вот простенький пример, кому надо:
Code: [Select all] [Expand/Collapse] [Download] (ProcessCommandLine.lua)
  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: 4999
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

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

Postby Shmuel » Fri 06 May, 2016 07:17

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

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

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

Postby 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

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

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

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

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

Postby HaRT » Sun 08 May, 2016 00:15

gene.pavlovsky wrote:Кстати, а почему ставлю какой-либо макрос на AltEnter, а он не выполняется?
Smitis @ XKeys — скрипт для замены одноимённого плагина
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

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

HaRT wrote:http://forum.farmanager.com/viewtopic.php?p=116428#p116428
Благодарю!

IgorZ
Posts: 436
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

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

Postby IgorZ » Sun 08 May, 2016 19:47

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

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

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

Postby Smitis » Sun 08 May, 2016 21:36

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

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

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

Postby Shmuel » Sun 08 May, 2016 21:48

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

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

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

Postby Smitis » Sun 08 May, 2016 21:57

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

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

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

Postby Shmuel » Sun 08 May, 2016 22:04

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

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

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

Postby Smitis » Sun 08 May, 2016 22:19

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

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

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

Postby John Doe » Mon 09 May, 2016 11:59

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

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

Имхо.

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

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

Postby Smitis » Wed 11 May, 2016 22:05

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

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

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

Postby John Doe » Wed 11 May, 2016 22:10

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


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

Who is online

Users browsing this forum: No registered users and 1 guest