1. Ок, первая особенность реализации Far3.0 (полное или частичное отсутствие на экране пущенной команды) — исправлена. Спасибо.
2. Ситуация со второй особенностью (принудительное удаление первой строки буфера, невзирая на наличие места в подвале оного) перетекла в чуждую мне плоскость "способы реализации".
3. А я продолжу в плоскости "интерфейс пользователя".
DrKnS, 2019.02.22 13:41
изымать из имеющего место быть «диалога» те или иные фрагменты не из-за исчерпания места
Как раз из-за исчерпания места. Запускаемой программе предоставлен весь экран. Совсем весь. Мы не знаем, где она там наследила, поэтому
предполагается, что везде.
См. ниже.
размер буфера ведь и увеличить можно
Какого буфера?
Этого (см. начало второго фрагмента). В этот буфер идёт выдача пущенных команд и из него принудительно удаляется первая строка (по завершении работы оных команд).
cmd делает точно такой же промежуток из точно таких же соображений.
Нет. Cmd просто отрабатывает CrLf в текущей позиции курсора + рисует с первой позиции следующей строки приглашение ко вводу (очередной) команды.
NB. Никаких целенаправленных промежутков не делается. А прокрутка вверх происходит, ЕСЛИ указанный CrLf выполняется в
последней строке этого буфера. Только в этом случае старая первая строка исчезает.
Far - не компроцессор, промпт у него прибит гвоздями внизу экрана, поэтому текст едет вверх.
Не совсем так. "Гвоздями прибито" место
на экране, где пользователю
предлагается ввести команду. А вот место
в буфере, где фиксируются промпт+введённая_команда, и, откуда (с какого места) эта команда может выводить нечто на StdOut/StdErr, - это
другое место. Разумеется, эти места можно и совместить. К слову, "гвозди" для часиков (или, например, диалога по "<Shift>+<F4>") - для "приколачивания" промпта не подойдут?
4. Можно рассмотреть два варианта (Mini и Maxi) исключения второй вышеуказанной особенности Far3.0. В обоих вариантах, сразу по завершении работы запущенной команды, но до рисования своих элементов (промпт, панели, меню и прочие часики):
Mini ("а ля Far1.*/Far2.0"):
- проверить позицию строки с курсором в буфере;
-
если она НЕ выше грядущего промпта ФАР-а, сдвинуть содержимое буфера вверх, освободив место для промпта.
Maxi ("оседающий буфер"):
- переместить пустые строки из подвала буфера в его начало;
+ сдвинуть содержимое буфера вверх, освободив место для промпта.
5. Иными словами (по максимуму), желательно бы "прибить гвоздями"
последнюю НЕ_пустую строку буфера к месту над промптом. Что бы
не наблюдать бессмысленное (пустое) пространство
после содержательной части выдачи отработавшего процесса. Попутно частично разрешилась бы …
John Doe, 2019.02.22 14:23
… и другая проблема: по завершению батника текста просто не видно, потому что он "уехал" на несколько тысяч строк вверх, где не каждый даже догадается поискать.