1

上にスクロールするキーを簡単にマップできます。

(defun up1()
  (interactive)
  (scroll-up 1))
(defun up2()
  (interactive)
  (scroll-up 2))
(global-set-key "\M-]" 'up2)

代わりに、次の動作を探しています。最初の一握りのスクロールは up1() を呼び出し、その後のスクロールは up2() を呼び出します。

4

1 に答える 1

1

これはどう:

(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)
于 2013-04-05T20:52:33.130 に答える