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

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

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

Post by John Doe » Tue 21 Oct, 2014 07:14

Latest post of the previous page:

Увы, слишком много конкурирующих планов.
Тем более что нормальный способ ждёт своего героя на мантисе.

P.S.
Альтернативно, возможно стоило бы адаптировать вот этот готовый плагинчик: http://forum.farmanager.com/viewtopic.php?p=1046
(Сейчас в режиме /w он работает совсем некорректно)

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

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

Post by LanKing » Sun 21 Dec, 2014 22:47

John Doe wrote: Прежде всего напомню стандартные клавиатурные комбинации для "перемотки" по консольному буферу (в хелпе до сих пор не описаны):
Ctrl-Alt- <Up/Down> — построчно
Ctrl-Alt- <PgUp/PgDn> — постранично
Ctrl-Alt- <Номе/End> — к началу/концу
Подскажите, что я делаю не так? Говорю dir, получаю листинг за пределами окна. Пробую CtrlAltUp - не скроллит. Макрос ещё не ставил.

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

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

Post by HaRT » Sun 21 Dec, 2014 23:13

LanKing, Far запущен с ключом /w?
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

Post by LanKing » Mon 22 Dec, 2014 00:25

Нет, но far:config (System.WindowMode = true).

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

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

Post by LanKing » Mon 22 Dec, 2014 00:29

Разобрался, я ошибся. Спасибо! )

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

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

Post by LanKing » Mon 22 Dec, 2014 18:45

Баг такой:
1. Отключаем панели (CtrlO)
2. Проматываем несколько строк вверх Up Up
3. Включаем панели через CtrlO

Видим часть консоли и начало верхней части окна фара, окно частично спрятано.


Довесил костыль, изменив ф-цию, отвечающую за Esc:




То есть по CtrlO не только показать панели но и проскроллить буфер вначале.


P.S. Спасибо за отличный макрос!

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

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

Post by John Doe » Mon 22 Dec, 2014 20:34

LanKing wrote: Баг такой:
Давайте называть вещи своими именами: никакого бага тут нет.
Скрипт выполняет ровно те функции, что описаны в шапке.

А так можно ещё и другие функции подёргать, например F1.

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

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

Post by LanKing » Mon 22 Dec, 2014 20:40

Логично :) А не существует условия "anykey" в макросах?

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

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

Post by John Doe » Mon 22 Dec, 2014 20:50

Code: Select all

key="/.*/"

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

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

Post by LanKing » Tue 23 Dec, 2014 13:56

Попробовал написать универсальное решение для возврата скролла перед любым выводом кроме консоли, пришёл к тому что нужно обрабатывать все хоткеи + все хоткеи зарегистрированных макросов, что вызывает мощную нагрузку на макрос. Оставил Ctrl+O для себя, остальное уместно делать в ядре. Ещё было бы замечательно в ядре фара иметь флаг для макросов вроде notConsole - отвечающий за то, что что-то на экран выведено и это не консоль.

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

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

Post by John Doe » Tue 23 Dec, 2014 14:30

Не пойму что у вас за сложности такие.
Если я в процессе листания "ушёл" от окна фара, то прежде чем выполнять какие-либо действия жму Esc, и возвращаюсь в окно.

При желании вы можете добавить в набор и другой макрос, чтобы при нажатии любой посторонней комбинации консоль прокручивалась к окну фара.
Только зачем.

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

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

Post by LanKing » Tue 23 Dec, 2014 17:48

Мне тогда придётся добавить список всех хоткеев, кроме хоткеев buffer.scroll -) А это поганый изврат, поскольку он будет создавать нагрузку и когда консоль не открыта (проверками - а открыта ли она).

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

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

Post by John Doe » Tue 23 Dec, 2014 18:39

Во-первых, никакой список не нужен.
Во-вторых, никакой нагрузки не будет.

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

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

Post by LanKing » Tue 23 Dec, 2014 19:01

Поясните так, чтобы было понятно?

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

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

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

Например:

Code: Select all

Macro {
  area="Common"; key="/.*/"; priority=55;
  condition=function()
    local in_window,yDelta = far_in_window()
    if not in_window then
      Far.Window_Scroll(yDelta)
      return true
    end
  end;
  action=function()
    local key = akey(1)
    if eval(key,2)==-2 then Keys(key) end; 
  end;
}
(Этот кусок кода не претендует на законченное решение, если что)

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

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

Post by LanKing » Tue 23 Dec, 2014 19:13

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

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

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

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

И что?

Post Reply

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

Who is online

Users browsing this forum: No registered users and 1 guest