2013-04-05 49 views
1

人们可以很容易地映射某些键向上滚动。加速键盘滚动

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

我正在寻找的是以下行为。滚动的第一把 将调用up1(),随后的调用up2()。

回答

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) 
+0

不完全是。我只想在键盘重复中加入“加速”。这个想法是,如果我停止滚动,这意味着我想更仔细地看当前可见的代码。 – Calaf 2013-04-05 20:59:18

+0

我不明白你的意思。每当您连续调用up1而不是另一个命令时,加速度会超过“my-scroll-limit”时间。 '键盘重复'是什么意思? – Tyler 2013-04-05 21:02:57

+0

如果您按下键盘键,则只输入一个实例,但如果按住键盘键,则会重复键并获得多个实例。如果我持有\ M-],我希望滚动速度最初很慢,但要加速。如果我停下来,我想要重新启动相同的行为。 – Calaf 2013-04-05 21:18:52