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 回答