Kazu Yamamoto ( 山本和彦 )
kazu****@iij*****
2005年 7月 26日 (火) 12:18:35 JST
> CVS 先端で、以下の関数を定義しておいて、 すいませんが、まずここだけ質問させて下さい。 なぜ再帰を利用するのでしょうか? ignore ではない、carbon-font.el の関数ですが、以下のように定義するので はダメなんでしょうか? あと、append を利用するのは、セルを無駄遣いするので、あまりよいことでは ありません。 # carbon-font-get-scale は、もう少し奇麗にする余地があると思います。 ------------------- ;; 関数定義 ;; ;; カレントフレームで使われているフォントの、リスケールファクターを、 ;; carbon-font-scale-alist から、取得する。 (defun carbon-font-get-scale (font-name) "current frame で、font-name の、rescale parameter を返す" (let ((x (cdr (assoc (substring (cdr (assoc 'font (frame-parameters))) -2 nil) (assoc font-name (if carbon-font-auto-rescale-enable carbon-font-scale-alist-without-silk carbon-font-scale-alist-with-silk)))))) (or x 1.0))) ;; 取得したリスケールファクターで、face-font-rescale-alistを書き換える。 (defun carbon-font-append-factor () (let ((scale-list (if carbon-font-auto-rescale-enable carbon-font-scale-alist-without-silk carbon-font-scale-alist-with-silk)) ent font new old key) (while scale-list (setq ent (car scale-list)) (setq scale-list (cdr scale-list)) (setq font (car ent)) (setq key (format ".*%s.*" font)) (setq new (cons key (carbon-font-get-scale font))) (setq old (assoc key face-font-rescale-alist)) (setq face-font-rescale-alist (delete old face-font-rescale-alist)) (setq face-font-rescale-alist (cons new face-font-rescale-alist))))) ;; フォントが変更された場合にフックをかけて、 ;; carbon-font-append-factor を起動する。 (add-hook 'after-setting-font-hook 'carbon-font-append-factor) -------------------