ときどき、デフォルトとは異なる font-family と size を手動で設定しますbuffer-face-mode
。(正確には、マウスを使用してダイアログボックスから選択します。) 一度設定すると、モードを変更してもそのバッファに設定されたままにしたいので、カスタマイズを試みました。アイデアは、change-major-mode-hook
後で呼び出される関数で、設定されている場合、バッファフェイスを保存する(バッファローカルが殺される直前に実行される)を追加することでした-それはうまくいくようです。しかし、その関数はあまりにも早く呼び出されたようで、モードの変更が終わったときにbuffer-face-mode
アクティブではありません。
今までのカスタマイズはこちら
(defun my-preserve-bufface-cmmh ()
"Keep the state of buffer-face-mode between major-mode changes"
(if (and (local-variable-p 'buffer-face-mode) buffer-face-mode)
(delay-mode-hooks
(message "face is %s" buffer-face-mode-face) ; Just to show me it has the right face
(let ((my-inner-face buffer-face-mode-face))
(run-mode-hooks
(message "inner %s" my-inner-face) ; it still has the right face here
(setq buffer-face-mode-face my-inner-face)
(buffer-face-mode))))))
(add-hook 'change-major-mode-hook
'my-preserve-bufface-cmmh)
マイナーモードが設定されたバッファでメジャーモードを変更すると、メッセージが実行され、カスタムフェイスが表示buffer-face-mode
されます。新しいモードが設定された後、... の組み合わせで ... が実行されると思っていましたが、どうやらそうではないdelay-mode-hooks
ようrun-mode-hooks
です。setq buffer-face-mode-face
(buffer-face-mode)
このカスタマイズは「近い」/私の要望に応じて回収できますか? よりクリーンな方法はありますか?