LINUX.ORG.RU

Ответ на: комментарий от AiFiLTr0

А в идеале вообще кинетик скроллинг.

AiFiLTr0 ★★★★★
() автор топика

Что-нибудь типа set-window-vscroll? Но что-то я сомневаюсь, что это поможет. То есть не знаю, можно ли как-то заставить эту штуку работать так, как тебе хочется. И делал ли кто-нибудь так? Поиграйся, потом расскажи о фейле. :)

(dotimes (i 50)
  (sit-for 0.05)
  (set-window-vscroll (selected-window) (* i 0.1)))
Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Йолы, Zubok, да ты гений! Оно работает! Сча тока забиндим на скролл колесом, и перепишем на таймере, чтобы оно не паузило работу с текстом.

AiFiLTr0 ★★★★★
() автор топика
Ответ на: комментарий от AiFiLTr0

Хотя нет, сегодня уже не получится, мозг не варит.

AiFiLTr0 ★★★★★
() автор топика
Ответ на: комментарий от AiFiLTr0

Только вот скроллинг вниз так не работает. Такие дела. :) Я пока не представляю, как это сделать, надо в исходник лезть. Есть чувство, что вниз оно не поедет. :(

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Да у меня только вниз и работает. Вот только если оборачиваю в defun, то оно после скролла резко встает в исходное положение.

AiFiLTr0 ★★★★★
() автор топика
Последнее исправление: AiFiLTr0 (всего исправлений: 1)
Ответ на: комментарий от AiFiLTr0

Да у меня только вниз и работает.

И странно, что не работает вверх. Для чего, интересно, эта функция? Можно, конечно, погрепать по исходникам, чтобы посмотреть, кто и зачем. Сама функция определена в window.c.

Вот только если оборачиваю в defun, то оно после скролла резко встает в исходное положение.

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

Сюда также добавлю, что sit-for делая паузу, обрабатывает события и делает перерисовку (в отличие от sleep-for). Поэтому, кстати, можно пронаблюдать такое поведение: как только курсор коснется верхней части окна, то буфер снова перерисуется.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Нда, спасибо за разъяснения. По ходу просто и быстро сделать не выйдет...

AiFiLTr0 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.