init.elを合理化しようとしているときに、いくつかの機能を醜いcondツリーから移動することにしました。いくつかの決定をそこから移動するために、私は2つのヘルパー関数を作成しました。
(defun abstract-screen-width ()
(cond ((eq 'x window-system) (x-display-pixel-width))
((eq 'ns window-system) (display-pixel-width))
))
(defun perfect-font-size (pixels)
(cond ((eq 'x window-system) (cond ((<= pixels 1024) 100)
((<= pixels 1366) 110)
((> pixels 1366) 120)))
((eq 'ns window-system) (cond ((<= pixels 1024) 110)
((<= pixels 1280) 120)
((> pixels 1280) 140)))))
そして、それらはうまく組み合わされ、呼び出されることを意図した方法でそれらを呼び出すことはうまく機能します。
(perfect-font-size (abstract-screen-width))
130
動作したままのcustom-set-faces呼び出し
(custom-set-faces
'(default ((t (:inherit nil :stipple nil :inverse-video nil :box nil
:strike-through nil :overline nil
:underline nil :slant normal :weight normal
:height 130 :width normal
:family "IBM 3270"))))
'(linum ((t (:inherit default :foreground "#777" :height 130)))))
しかし、私の「より良い」バージョン
(custom-set-faces
'(default ((t (:inherit nil :stipple nil :inverse-video nil :box nil
:strike-through nil :overline nil
:underline nil :slant normal :weight normal
:height (perfect-font-size (abstract-screen-width)) :width normal
:family "IBM 3270"))))
'(linum ((t (:inherit default :foreground "#777" :height 120)))))
そうではありません。「デフォルトの面の高さは絶対的で正ではありません」というエラーが発生します。faces.elとcus-face.elのソースはあまり役に立ちませんでした。ヒントはありますか?