クロージャを使ったコマンド

フレームとバッファとグローバルマーカを一元管理するモードを考えていて、ちょっと詰まってきた*1ので気分転換に作ってみた。
謎の機能クロージャ - himadatenodeの日記
これを何かに使った事とって殆どないけどと言われてるクロージャだけど、数値を記憶して欲しい簡単なコマンドなどには便利。

(let ((N 3))
  (defun fast-scroll (dir &optional new)
	(if new	(setq N new))
	(scroll-window (if dir N (- N)))))
(defun fast-forward-line (&optional N)
  (interactive "p")
  (fast-scroll t N))
(defun fast-previous-line (&optional N)
  (interactive "p")
  (fast-scroll nil N))

fast-scrollの移動数を切り替えられると便利。だけど、そのために変数名を消費するのはいやだ。
そこで、こう書いておけば、外のコマンドからは参照されないNに移動量を保存しておける。
値を変更したいときは、universal-argument[C-u]やdegit-argumentで簡単に行える。

*1:何もできてないじゃん。