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

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 12162
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 30 times
Been thanked: 159 times

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

Post by John Doe » Sat 22 May, 2010 23:57

С недавних пор, Far умеет работать с большим буфером консоли.
В связи с этим хочется чтобы новая функциональность была доступна из макросов.
А именно, нужны следующие макрофункции:
  • Функция для прокрутки буфера, позволяющая реализовать, например, такие комбинации:
    Ctrl-Alt-Up|Down|Left|Right|PgUp|PgDn|Home|End.
  • Функция для изменение размеров буфера/окна/обоих сразу
  • Функция для получения размера буфера/окна
  • Функция для переключения режима работы в пределах окна/буфера

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Что ещё не реализовано

Post by Skirda » Wed 26 May, 2010 06:58

John Doe wrote:
  • Хочется иметь всю гамму возможностей по прокрутке буфера: Ctrl-Alt-Up|Down|Left|Right|PgUp|PgDn|Home|End.
    Вероятно, удобнее всего реализовать весь этот разнообразный скроллинг с помощью одной макрофункции.

Code: Select all

Scroll(Direct,Count)
Так?
We are the Borg. You will be assimilated.
So Say We All!

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Far работает с большим буфером консоли!

Post by Skirda » Wed 26 May, 2010 07:09

Хотя, видимо, достаточно одно параметра для Scroll(), а знак покажет направление
:-)
We are the Borg. You will be assimilated.
So Say We All!

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

Re: Far работает с большим буфером консоли!

Post by John Doe » Wed 26 May, 2010 09:04

Skirda wrote:

Code: Select all

Scroll(Direct,Count)
Название функции хочется более "говорящее", типа BufScroll/ScrollBuffer/ConScroll/ScrollConsole

А Count что значит?
Нужна возможность указывать Строки, Экраны, Конец/Начало
Горизонталь/Вертикаль

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Far работает с большим буфером консоли!

Post by Skirda » Wed 26 May, 2010 12:02

John Doe wrote:
Skirda wrote:

Code: Select all

Scroll(Direct,Count)
Название функции хочется более "говорящее", типа BufScroll/ScrollBuffer/ConScroll/ScrollConsole
да как скажете...
John Doe wrote:А Count что значит?
Count - на сколько строк "сдвинуть" вверх или вниз
John Doe wrote:Нужна возможность указывать Строки, Экраны, Конец/Начало
а смысл?
John Doe wrote:Горизонталь/Вертикаль
хмм

предложения (кроме вопросов)?
We are the Borg. You will be assimilated.
So Say We All!

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

Re: Far работает с большим буфером консоли!

Post by John Doe » Wed 26 May, 2010 12:36

Skirda wrote:
John Doe wrote:Нужна возможность указывать Строки, Экраны, Конец/Начало
а смысл?
Смысл - реализовать с помощью этой функции Ctrl-Alt-Up|Down|Left|Right|PgUp|PgDn|Home|End
Видимо нужен дополнительный параметр - 0=Экраны, 1=Строки, 2=Начало и конец
Skirda wrote:
John Doe wrote:Горизонталь/Вертикаль
предложения (кроме вопросов)?
Тоже задавать дополнительным параметром. 0=Вертикаль, 1=Горизонталь.

Итого три параметра, два из них могут быть опциональными.

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

Re: Far работает с большим буфером консоли!

Post by HaRT » Wed 26 May, 2010 12:45

John Doe wrote:2=Начало и конец
Тогда уж хорошо бы и середину тоже.
А в целом поддерживаю.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Re: Far работает с большим буфером консоли!

Post by John Doe » Wed 26 May, 2010 12:46

John Doe wrote:Ctrl-Alt-Home|End
Предполагается что Home должен скроллить не в самый верх, а к реальному началу вывода в буфере.
(В текущей реализации это не то же самое)

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

Re: Far работает с большим буфером консоли!

Post by John Doe » Wed 26 May, 2010 12:50

HaRT wrote:
John Doe wrote:2=Начало и конец
Тогда уж хорошо бы и середину тоже.
В принципе при 0 можно и так.
С другой стороны я надеюсь что будут реализованы и другие функции.
И если будет функция для получения размеров буфера, то "середину" можно будет вычислить самому.

User avatar
DrKnS
Posts: 5105
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 184 times

Re: Far работает с большим буфером консоли!

Post by DrKnS » Wed 26 May, 2010 12:50

N=scroll(count, type)

параметры:
count - число. Положительное - вверх, отрицательное - вниз.
type - число, опционально. 0 - вертикаль, 1 - горизонталь. По умолчанию - 0.

return: 1 - прокрутили, 0 - не прокрутили.

Дополнительный параметр для "экранов" не нужен, т.к. есть Far.Width / Far.Height
Дополнительный параметр для "Начало или конец" не нужен, т. к. есть $while.

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

Re: Far работает с большим буфером консоли!

Post by John Doe » Wed 26 May, 2010 13:00

DrKnS wrote:Дополнительный параметр для "Начало или конец" не нужен, т. к. есть $while.
$while - во-первых громоздко, во-вторых не позволяет получить Реальную границу буфера.

User avatar
DrKnS
Posts: 5105
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 184 times

Re: Far работает с большим буфером консоли!

Post by DrKnS » Wed 26 May, 2010 13:10

John Doe wrote:$while - во-первых громоздко
$while(scroll(Far.Height)) $end - это, типа, "громоздко"?
во-вторых не позволяет получить Реальную границу буфера.
Если ты про "реальное начало вывода", то фар такой информацией не владеет.

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

Re: Far работает с большим буфером консоли!

Post by John Doe » Wed 26 May, 2010 13:55

DrKnS wrote:Если ты про "реальное начало вывода", то фар такой информацией не владеет.
Жаль.
Остаётся надеяться на реализацию "Заполнения буфера сверху вниз, как в cmd"

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

Re: Far работает с большим буфером консоли!

Post by John Doe » Wed 26 May, 2010 15:33

DrKnS wrote:N=scroll(count, type)

return: 1 - прокрутили, 0 - не прокрутили.
А что если "прокрутили, но меньше запрошенного"?

Может, возвращать количество прокрученных линий?

User avatar
DrKnS
Posts: 5105
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 184 times

Re: Far работает с большим буфером консоли!

Post by DrKnS » Wed 26 May, 2010 16:04

John Doe wrote:Может, возвращать количество прокрученных линий?
А чем тебе поможет знание этого количества?

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

Re: Far работает с большим буфером консоли!

Post by John Doe » Wed 26 May, 2010 16:19

DrKnS wrote:А чем тебе поможет знание этого количества?
Это как наиболее универсальный вариант для случая:
John Doe wrote:А что если "прокрутили, но меньше запрошенного"?
Если это значение фару известно - лучше его и вернуть.
Если нет, тогда что предлагается возвращать в случае когда прокручено, но меньше?

Post Reply

Return to “Обсуждение макросов”