Page 1 of 1

Добавить прокруточку в Ctrl-O по PageUp/PageDown

Posted: Fri 16 Jun, 2017 12:03
by techie
Far хорош с панелями, и скроллбар там лишний. А вот в режиме с выключенными панелями (Ctrl-O) очень и очень часто бывает нужно отмотать назад вывод какого-нибудь сообщения об ошибке нажав пару раз PageUp. Но нет. Нет скроллбара, нет реакции на PageUp и буфера я так подозреваю тоже нет. Посему вопрос - можно ли сделать этот (кольцевой) буфер, скролбар и реакцию на PageUp? Это вообще технически возможно? Пока что при ошибках при выполнении команд приходится перезапускать процесс через edit:<

Добавить прокруточку в Ctrl-O по PageUp/PageDown

Posted: Fri 16 Jun, 2017 12:42
by DrKnS
Всё что можно уже сделано 7 лет назад - far /w, и уже полтора года как включено по умолчанию.

Добавить прокруточку в Ctrl-O по PageUp/PageDown

Posted: Fri 16 Jun, 2017 12:48
by techie
Почему тогда не работает, если включено?

Добавить прокруточку в Ctrl-O по PageUp/PageDown

Posted: Fri 16 Jun, 2017 12:53
by DrKnS
Потому что желаемый размер кольцевого буфера устанавливается пользователем самостоятельно в свойствах консоли.

Добавить прокруточку в Ctrl-O по PageUp/PageDown

Posted: Fri 16 Jun, 2017 13:32
by John Doe
FAQ 7.4

Добавить прокруточку в Ctrl-O по PageUp/PageDown

Posted: Sat 17 Jun, 2017 10:23
by techie
John Doe wrote: Fri 16 Jun, 2017 13:32FAQ 7.4
Отвалился FAQ. Указывает на app.php/help/faq

Добавить прокруточку в Ctrl-O по PageUp/PageDown

Posted: Sat 17 Jun, 2017 10:37
by techie
Читаю http://forum.farmanager.com/viewtopic.php?f=3&t=5399 включил всё что трэба и увеличил буфер.

1. PageUp/PageDown при выключенных панелях не работают
2. при включенных панелях виден нативный гуёвый скроллбар

А что мешает Far скармливать контроллировать stdin/stdout запущенных через него процессов? Раз он всё равно родитель этих процессов, может он им и отдельный дескриптор для вывода выдаст с отдельным буфером вместо того, чтобы свой шарить?

Тогда ж много чего ещё можно делать научиться, и плагинам удобно будет.

Добавить прокруточку в Ctrl-O по PageUp/PageDown

Posted: Sat 17 Jun, 2017 12:22
by DrKnS
techie wrote: Sat 17 Jun, 2017 10:37А что мешает Far скармливать контроллировать stdin/stdout запущенных через него процессов?
Архитектура консоли Windows, куда можно писать не только через stdout.
может он им и отдельный дескриптор для вывода выдаст с отдельным буфером вместо того, чтобы свой шарить?
Отдельный буфер в теории можно, да. Однако, на этот буфер надо будет переключаться каждый раз при запуске программ, его размер будет не совпадать с основным, скроллбары будут появляться и исчезать, потом содержимое этого буфера надо будет частями копировать в основной и к тому же всё потеряется после выхода. Для меня эти недостатки перевесили достоинства.

Добавить прокруточку в Ctrl-O по PageUp/PageDown

Posted: Sat 17 Jun, 2017 15:43
by techie
DrKnS wrote: Sat 17 Jun, 2017 12:22Архитектура консоли Windows, куда можно писать не только через stdout.
М-да. Что-то я не подумал про это. Это ведь все цвета и пр. через этот API виндовый. А перехватывать эти вызовы и в своём процессе их отрабатывать нельзя же, да?
DrKnS wrote: Sat 17 Jun, 2017 12:22Однако, на этот буфер надо будет переключаться каждый раз при запуске программ, его размер будет не совпадать с основным, скроллбары будут появляться и исчезать, потом содержимое этого буфера надо будет частями копировать в основной и к тому же всё потеряется после выхода.
Так и так при запуске программ панели на что-то переключаются. Появляющиеся скроллбары в тёмном консольном окне - это норм, главное, чтобы фар себе красивенький скроллбар отрисовывал. Если буфер это просто поток, то копировать его можно ж в реалтайме сразу в несколько потоков. Не очень понятно только как при выходе всё теряется. Если родительский поток создаёт буфер, то почему потомок его будет уничтожать?

Добавить прокруточку в Ctrl-O по PageUp/PageDown

Posted: Sat 17 Jun, 2017 17:14
by DrKnS
techie wrote: Sat 17 Jun, 2017 15:43А перехватывать эти вызовы и в своём процессе их отрабатывать нельзя же, да?
Все эти перехваты работают медленно, ненадёжно и убого, зачастую создавая больше проблем, чем решая.
Если буфер это просто поток, то копировать его можно ж в реалтайме сразу в несколько потоков.
Буфер - это то, что показывает консольное окно. Их может быть несколько, один активен, остальные в фоне (если тут кто-то ещё помнит conman, то он как раз об этом).
Если так делать, то фоновый буфер перед запуском программы вытаскивается на поверхность, программа туда пишет, при её завершении он уходит обратно в фон, а фар по Ctrl+O предоставляет такой себе "вьювер" этого буфера, читая оттуда куски по мере необходимости.
Не очень понятно только как при выходе всё теряется. Если родительский поток создаёт буфер, то почему потомок его будет уничтожать?
Потеряется в сценарии "был открыт cmd, из него запустили far, из него что-то позапускали и вышли обратно в cmd" потому что см. выше - буфер в фоне, если из фара выйти - досупа к нему уже не будет.

Если у вас претензии ограничиваются наличием скроллбара - можно смотреть в сторону conemu, он его прячет.

Добавить прокруточку в Ctrl-O по PageUp/PageDown

Posted: Sat 17 Jun, 2017 22:20
by HaRT
Вот для меня самое серьёзное неудобство в этой области — это то, что при выполнении консольных команд в NetBox (до того, как их сломали) в буфере под панелям остаётся отпечаток старых панелей, скрывая прежний вывод и сбивая с толку. Решение с раздельными буферами решит эту проблему? Или это ошибка в NetBox?

Чисто концептуально же идея отдельного scrollback-буфера мне нравится больше, чем нынешняя мешанина. Да и что мешает Фару перед выходом перенести scrollback в основной буфер?

Добавить прокруточку в Ctrl-O по PageUp/PageDown

Posted: Sat 17 Jun, 2017 23:19
by DrKnS
HaRT wrote: Sat 17 Jun, 2017 22:20 ошибка в NetBox?
Да.