Console Control

Здесь можно обсудить ваш любимый плагин.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Console Control

Post by Max Rusov »

Console Control for FAR 3

Микроплагин для управления размером и шрифтом консольного окна FAR с помощью мыши или клавиатуры.
skipik
Posts: 318
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 67 times
Been thanked: 29 times

Console Control

Post by skipik »

Latest post of the previous page:

Krest_kz, макросом.
Вот вам пример, адаптируйте под свои нужды.
Krest_kz
Posts: 42
Joined: Sat 22 Sep, 2007 15:28

Console Control

Post by Krest_kz »

skipik,
skipik wrote: Вот вам пример, адаптируйте под свои нужды.
Спасибо - судя вот по этим строкам
flags="RunAfterFARStart";
Plugin.Call(CCID,"WindowSize",80,35);
Plugin.Call(CCID,"BufferSize",80,35);
Plugin.Call(CCID,"FontName","Lucida Console",15);
- как раз то что нужно

Только я вот ни разу не работал с такими вещами - меня в эту тему перенаправили с другой
Подскажите что нужно сделать что бы это заработало?

1. Я так понимаю нужно создать файл с определенным расширением скинуть туда эту информацию и потом положить его куда то?
2. В файл нужно сбрасывать всю информацию со спойлера или только ту что начинается с
skipik wrote: require "ConsoleControl"
?
3. Как активизировать макрос в принципе? судя по его описанию он должен стартовать Перед загрузкой фара - это как сделать?
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

Console Control

Post by 2useven10 »

Приведённый текст запишите в файл %FARPROFILE%\Macros\scripts\InitConsole.lua и перезапустите фар.
InitConsole можете заменить на своё имя, остальное менять не надо.
Если будете менять файл (под свои предпочтения), для применения изменений фар надо перезапустить.
На самом деле можно не перезапускать, а перегрузить макросы, но для начала так проще.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

Console Control

Post by 2useven10 »

FARPROFILE - это переменная окружения, которую устанавливает фар после запуска.
Да ещё - файл лучше записать в кодировке UTF8 (65001).
Krest_kz
Posts: 42
Joined: Sat 22 Sep, 2007 15:28

Console Control

Post by Krest_kz »

2useven10, файл создал под именем InitConsole.lua с кодировкой UTF8 (65001) в Notepad++ положил %FARPROFILE%\Macros\scripts\InitConsole.lua

выбрасывает такое вот -
Image

насколько я понял он просто ищет и не может найти сам макрос
Скачал отсюда http://plugring.farmanager.com/plugin.php?pid=886 архив ConCtrl.far3.x64.1.4.rar
распаковал его. и папку переименовал в consolecontrol
пробовал просто закинуть распакованный архив - без толку

закидывал сюда %FARPROFILE%\Macros\scripts\macros\modules
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

Console Control

Post by 2useven10 »

Плагин надо было распаковать в %FARHOME%\plugins\ConsoleControl\
Ругань не на созданный вами макрос, а на вспомогательный макрос самого плагина.
В детали не вникал, но мне кажется он вам не нужен.
Если это всё-таки не так, то ConsoleControl-Macros.lua надо положить в %FARPROFILE%\Macros\scripts\
а ConsoleControl.lua в %FARPROFILE%\Macros\modules\
Krest_kz
Posts: 42
Joined: Sat 22 Sep, 2007 15:28

Console Control

Post by Krest_kz »

2useven10 wrote: Если это всё-таки не так, то ConsoleControl-Macros.lua надо положить в %FARPROFILE%\Macros\scripts\
а ConsoleControl.lua в %FARPROFILE%\Macros\modules\
Спасибо помогло
да вот помогло это - запустил на другой машине - развернулось до заданных размеров и ярлык не понадобился
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Console Control

Post by John Doe »

Макрос на AltF9 при максимизации увеличивает и размеры консольного буфера (если он недостаточен для разворачивания окна на весь экран).
Проблема в том, что, что "нарощенная" часть буфера при этом наследует фон интерфейса фара (например панелей).

Чтобы этого не происходило интерфейс стоит предварительно гасить (FCTL_GETUSERSCREEN/FCTL_SETUSERSCREEN)
Желательно усовершенствовать плагин.

Можно конечно и прямо в макрос добавить, но тогда мелькать будет будет при каждом нажатии AltF9, а не только когда это необходимо.
Хотя.. можно попробовать и в макросе угадать:

Code: Select all

local cc = ConsoleControl
Macro { description="Console Control: Maximize/Restore";
  area="Common"; key="AltF9";
  condition=cc.Exist;
  action=function()
    local wW, wH = cc.WindowSize () -- размеры окна
    local bW, bH = cc.BufferSize () -- размеры буфера
    local Max
    if cc.Maximize()==0 and (wW==bW or wH==bH) then
      panel.GetUserScreen()
      Max = cc.Maximize(1)
      mf.waitkey(1)
      panel.SetUserScreen()
    else
      Max = cc.Maximize(-1)
    end
    if Max then
--    ShowHint("Maximize: " .. (Max == 1 and "On" or "Off") )
      ShowHint()
    end
  end;
}
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Console Control

Post by John Doe »

Интересно, что экран всё равно портился, пока я не добавил после Maximize ещё и mf.waitkey(1)
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Console Control

Post by fml2 »

Здравствуйте.

Обнаружился непонятный случай: Если я выполняю команду mode con: col=170 lines=60, а потом выполняю команды

Code: Select all

Plugin.Call("94624B7B-FFDB-435F-B955-F99DBBC3BFE0", "WindowSize", 170, 60);
Plugin.Call("94624B7B-FFDB-435F-B955-F99DBBC3BFE0", "BufferSize", 170, 360);
то, Фар почему-то перестаёт реагировать на нажатие клавиш. Реагирует только на Enter. На стрелки вверх и вниз не реагирует.

Проблема возникла при проверке работы предложения из этой ветки. В чем может быть причина такого поведения?

Версия Фара: 3.0.5883.0 х86.
Last edited by fml2 on Fri 27 Aug, 2021 11:31, edited 4 times in total.
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Console Control

Post by fml2 »

Есть у меня подозрение, что Фар на самом деле понимает, что нажимаются кнопки, но просто не перерисовывает экран. Поэтому и на "ввод" реагирует -- потому что пытается "запустить" отмеченный файл.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Console Control

Post by Shmuel »

fml2, на всякий случай проверьте, что будет, если заменить Plugin.Call на Plugin.SyncCall.
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Console Control

Post by fml2 »

@Shmuel: Попробовал. Никакого улучшения. Но кое-какие наблюдения сделал:
  1. Фар действительно понимает, что нажимаются кнопки, и отрабатывает их, но не перерисовывает экран. Если я после выполнения макроса нажимаю "ввод" и ем самым перехожу в подкаталог (вслепую), то вижу, что заголовок окна меняется: в нем отображается новый каталог. Но на "основном экране" ничего не меняется.
  2. Если буфер консоли больше размера окна, то справа показывается вертикальная полоса прокрутки. Обычно она находится в "самом нижнем" положении. После выполнения макроса она находится иногда сверху а иногда примерно на 1/3 от верха.
  3. Консоль, похоже, находится в состоянии "отмечать". Т.е. когда я куда-нибудь тыкаю мышкой, начинается отмечание прямоугольника. Похоже, это не фаровское отмечание, а консольное.
Перед тем, как все это пробовать, я удалил все плагины кроме "ConsoleControl" и "LuaMacro".

Я понимаю, что плагин скорее всего не виноват (если бы он так глючил, это бы уже давно кто-нибудь заметил), но не понимаю, что у меня не так. Надо будет то же самое попробовать на другом компьютере.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Console Control

Post by John Doe »

Перед выполнением надо погасить панели, после - восстановить.
Именно так я делаю в наборе BufferScroll
https://t.me/FarManager — Telegram чат
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Console Control

Post by fml2 »

Выяснилось, что если уже в "глючном" состоянии нажать Esc, то Фар более-менее приходит в себя, т.е. принажатии кнопок вверх/вниз по экрану бегает курсор.

Пока самое лучшее, чего мне удалось добиться, выглядит так:
  1. Перед запуском макро вручную гашу панели (Ctrl+O). Понятно, что если это будет частью решения, то надо будет засунуть это в макро.
  2. Запускаю макро --> Вертикальная полоса прокрутки отображается в самом верхнем положении.
  3. Нажимаю Esc --> Вертикальная полоса прокрутки отображается в самом нижнем положении. В командной строке курсор не мигает (его вообще не видно).
  4. Отображаю панели (Ctrl+O) --> показываются панели; командная строка пуста. Если в этом месте еще раз погасить панели, то в ком. строке начинает мигать курсор, но промпта нет. Если нажать TAB, то все становится как надо, т.е. курсор перескакивает на другую панель и в ком. строке появляется промпт и мигает курсор.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Console Control

Post by John Doe »

Гасить панели надо не CtrlO, а panel.GetUserScreen()
https://t.me/FarManager — Telegram чат
Post Reply

Return to “Обсуждение плагинов”