上にスクロールするキーを簡単にマップできます。
(defun up1()
(interactive)
(scroll-up 1))
(defun up2()
(interactive)
(scroll-up 2))
(global-set-key "\M-]" 'up2)
代わりに、次の動作を探しています。最初の一握りのスクロールは up1() を呼び出し、その後のスクロールは up2() を呼び出します。
上にスクロールするキーを簡単にマップできます。
(defun up1()
(interactive)
(scroll-up 1))
(defun up2()
(interactive)
(scroll-up 2))
(global-set-key "\M-]" 'up2)
代わりに、次の動作を探しています。最初の一握りのスクロールは up1() を呼び出し、その後のスクロールは up2() を呼び出します。
これはどう:
(setq my-scroll-counter 0)
(setq my-scroll-limit 5)
(defun up1()
(interactive)
(if (eq last-command this-command)
(incf my-scroll-counter)
(setq my-scroll-counter 0))
(if (> my-scroll-counter my-scroll-limit)
(scroll-up 2)
(scroll-up 1)))
(global-set-key "\M-]" 'up1)
少し手の込んだものが必要な場合は、コマンドを繰り返す回数に基づいてスクロール ステップを動的に計算します。
(setq my-scroll-counter 0)
(setq my-maximum-scroll 20)
(setq my-scroll-acceleration 4)
(defun up1()
(interactive)
(if (eq last-command this-command)
(incf my-scroll-counter)
(setq my-scroll-counter 0))
(scroll-up (min
(+ 1 (/ my-scroll-counter my-scroll-acceleration))
my-maximum-scroll)))
(global-set-key "\M-]" 'up1)