Макросы для работы с большим буфером консоли

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 11848
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 26 times
Been thanked: 130 times

Макросы для работы с большим буфером консоли

Post by John Doe » Thu 29 May, 2014 19:37

Предлагаю набор макросов, облегчающих работу с большим буфером консоли¹.

Прежде всего перечислю стандартные клавиатурные комбинации для перемещения по
консольному буферу (в справке фара до сих пор не описаны):
Ctrl+Alt+ <Up/Down> — построчно
Ctrl+Alt+ <PgUp/PgDn> — постранично
Ctrl+Alt+ <Номе/End> — к началу/концу
Данный набор макросов вносит следующие улучшения:
  • При скроллинге в панелях они автоматически гасятся, чтобы не загораживать
    "подпанельную" часть буфера.
  • Можно перемещаться по буферу с помощью простых курсорных клавиш (без модификаторов Ctrl+Alt-).
    Это работает, если панели скрыты, и командная строка пуста.
    Или если прокрутка уже начата, и фар "не в окне".
  • С помощью клавиши Esc можно в любой момент вернуться из любого места буфера в окно Far.
  • Сочетания с Home прокручивают буфер к реальному началу консольного вывода
    (фар заполняет буфер нетипичным образом: начиная снизу).
  • Поддержка прокрутки колесом мыши (в том числе горизонтально, см. определения макросов).
  • Все сочетания работают также и в области Desktop.
    Это особенно удобно использовать с макросом на Ctrl+O² для перехода в Desktop из любой области.
  • Ctrl+Up/Down прокручивает буфер к месту запуска предыдущей/следующей команды (при скрытых панелях).
    Регэксп для поиска строки приглашения настраивается.
    Ctrl+F7 отображает список всех найденных в буфере команд.
  • Ctrl+Shift+F7 позволяет задать строку для поиска в буфере, и отображает список найденных.
    Заданная строка запоминается, и впоследствии можно перемещаться между вхождениями в буфере
    используя клавиши Ctrl+Shift+Up/Down.
Важно: работа с большим буфером возможна только в режиме WindowMode (в актуальных
версиях фара включен по умолчанию).

Если размер буфера не задан (например в свойствах консоли), то при старте скрипт
увеличивает его до значения, указанного в параметре height.

Обсуждения на форуме:

¹ Far работает с большим буфером консоли!
² Ctrl-O: просмотр пользовательского экрана из любой области
Attachments
BufferScroll061.7z
v0.6.1
(6.33 KiB) Downloaded 69 times
Last edited by John Doe on Mon 13 Nov, 2017 12:55, edited 3 times in total.

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

Макросы для работы с большим буфером консоли

Post by John Doe » Tue 23 Dec, 2014 19:19

Latest post of the previous page:

И что?

User avatar
LanKing
Posts: 180
Joined: Thu 31 Aug, 2006 20:39

Макросы для работы с большим буфером консоли

Post by LanKing » Tue 23 Dec, 2014 21:18

Нехорошо.

User avatar
Alexander84
Posts: 123
Joined: Fri 01 May, 2009 06:38
Has thanked: 14 times
Been thanked: 2 times

Макросы для работы с большим буфером консоли

Post by Alexander84 » Tue 31 Oct, 2017 16:39

John Doe, обратите внимание, пожалуйста.

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

Макросы для работы с большим буфером консоли

Post by John Doe » Tue 31 Oct, 2017 17:49

Подозреваю, что параллельно у вас стоит макрос из темы о том, что граббер не работает из Ctrl-O в редакторе.

В любом случае, из BufferScroll макрос удалите (в актуальной версии его и нет).
Замену опубликую отдельно.

User avatar
zg
zero-gravity
Posts: 5492
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 73 times
Contact:

Макросы для работы с большим буфером консоли

Post by zg » Tue 31 Oct, 2017 18:24

да нет, у вас там panel.GetUserScreen() делается, а panel.SetUserScreen() — нет.

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

Макросы для работы с большим буфером консоли

Post by John Doe » Tue 31 Oct, 2017 23:25

Да, это неприлично, поэтому в шапке обновление:

Мелкие фиксы, поддержка колеса мыши (надо бы задокументировать в каких функциях)
Макросы для Ctrl-O теперь отдельно viewtopic.php?f=15&t=10983

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

Макросы для работы с большим буфером консоли

Post by John Doe » Sat 04 Nov, 2017 23:10

В шапке обновление.
  • Макросы заново выверены, улучшены условия срабатывания, согласованы описания, и т.п.
  • Добавлены новые функции:
    - Список команд в буфер
    - Поиск строки в буфере
    - Копирование строки, экрана, и сохранение буфера целиком
    - При старте может устанавливаеться размер буфера
  • Описание макросов в отдельном hlf.

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

Макросы для работы с большим буфером консоли

Post by HaRT » Thu 09 Nov, 2017 17:16

Вижу, в комплекте идёт файл справки (спасибо). Предполагается ли, что он открывается из каких-то меню/диалогов, показываемых скриптом? Например, у меня ни из диалога Search console buffer, ни из меню найденных в буфере команд по F1 справка не открывается.

И пожелание: сложно ли сделать, чтобы по AltIns (переход в режим граббера) буфер не прокручивался в самый низ?
Возможно, стоит при прокрутке буфера, если каретка оказалась за пределами окна, задавать её положение в ближайшей (или верхней?) строке окна…
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Макросы для работы с большим буфером консоли

Post by John Doe » Thu 09 Nov, 2017 18:48

HaRT wrote:
Thu 09 Nov, 2017 17:16
Предполагается ли, что он открывается из каких-то меню/диалогов, показываемых скриптом?
Не предполагалось, но действительно, почему бы и нет.
HaRT wrote:
Thu 09 Nov, 2017 17:16
сложно ли сделать, чтобы по AltIns (переход в режим граббера) буфер не прокручивался в самый низ?
Граббер работает только внизу, извините..
https://bugs.farmanager.com/view.php?id=1395

Зато теперь можно мышью https://bugs.farmanager.com/view.php?id=2648

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

Макросы для работы с большим буфером консоли

Post by HaRT » Thu 09 Nov, 2017 19:30

John Doe wrote:
Thu 09 Nov, 2017 18:48
почему бы и нет
Да, неплохо бы (и из других меню/диалогов скрипта тоже).
John Doe wrote:
Thu 09 Nov, 2017 18:48
Зато теперь можно мышью
Спасибо за разъяснение и ссылку!
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Макросы для работы с большим буфером консоли

Post by John Doe » Mon 13 Nov, 2017 13:00

v0.6
  • Сочетания с Home прокручивают буфер к реальному началу консольного вывода (фар заполняет нетипичным образом: начиная снизу).
  • В связи с https://bugs.farmanager.com/view.php?id=2648 макросы для копирования из буфера по умолчанию отключены (за ненадобностью).
  • Фиксы.

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

Макросы для работы с большим буфером консоли

Post by John Doe » Tue 14 Nov, 2017 09:10

v0.6.1
По ошибке была выложена не последняя версия..

LAT
Posts: 165
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 5 times
Been thanked: 4 times

Макросы для работы с большим буфером консоли

Post by LAT » Wed 19 Sep, 2018 15:30

Столкнулся со следующей проблемой.

Для ярлыка для запуска FAR-а заданы размеры буфера окна и экрана: ширина = 110, высота = 60.
Параметры из far:config:
System.WindowMode = true
System.WindowMode.StickyX = true
Если задать System.WindowMode.StickyY = true (чтобы не отображалась вертикальная панель прокрутки), макрос перестает работать, плюс при запуске FAR-а возникают проблемы с прорисовкой панелей.
При запуске вверху появляется лишняя (на скриншоте черная) строка

При попытке ввести что-либо в командную строку выясняется, что на самом деле курсор находится на 1 строку выше. При передвижении по панели (стрелки вверх-вниз) появляются проблемы с прорисовкой содержимого панели


UPD1. Win 7, FAR 3.0.2561 x86, версия макроса v0.6.1
UPD2. Если изменить значение height в макросе на 43 или меньше, проблем с прорисовкой не наблюдается, но макрос все равно не работает.
Last edited by LAT on Wed 19 Sep, 2018 15:41, edited 3 times in total.

2useven10
Posts: 3556
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 3 times
Been thanked: 138 times

Макросы для работы с большим буфером консоли

Post by 2useven10 » Wed 19 Sep, 2018 15:39

LAT wrote:
Wed 19 Sep, 2018 15:30
Если задать System.WindowMode.StickyY = false (чтобы не отображалась вертикальная панель прокрутки)
С false как раз полоса прокрутки должна отображаться.

LAT
Posts: 165
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 5 times
Been thanked: 4 times

Макросы для работы с большим буфером консоли

Post by LAT » Wed 19 Sep, 2018 15:42

Вы правы, перепутал. Исправил в своих предыдущих постах.

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

Макросы для работы с большим буфером консоли

Post by John Doe » Thu 20 Sep, 2018 07:14

LAT wrote:
Wed 19 Sep, 2018 15:30
Если задать System.WindowMode.StickyY = true (чтобы не отображалась вертикальная панель прокрутки)
Если я правильно понял, то таким образом вы управляете не полосой прокрутки, а именно высотой буфера, делая её равной высоте окна.
Соответственно макрос становится просто не нужен.

LAT
Posts: 165
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 5 times
Been thanked: 4 times

Макросы для работы с большим буфером консоли

Post by LAT » Thu 20 Sep, 2018 08:57

John Doe wrote:
Thu 20 Sep, 2018 07:14
LAT wrote:
Wed 19 Sep, 2018 15:30
Если задать System.WindowMode.StickyY = true (чтобы не отображалась вертикальная панель прокрутки)
Если я правильно понял, то таким образом вы управляете не полосой прокрутки, а именно высотой буфера, делая её равной высоте окна.
Соответственно макрос становится просто не нужен.
Получается, [с точки зрения пользователя] установка "System.WindowMode.StickyY = true" равносильна "System.WindowMode = false", т.е. эта отмена работы с большим буфером консоли, только другим способом?

Post Reply

Return to “Полезные макросы и скрипты”