メジャーモードごとに異なるフォントを使用する


19

メジャーモードの後に​​異なるフォントを設定することは可能ですか?言うInconsolata-12org-modeバッファとSymbola-12残りのすべてのモードで。または、少なくとも、することは可能ですか

(set-frame-font "Inconsolata" t)

org-modeバッファに切り替えた後?

回答:


21

buffer-face-setそしてbuffer-face-modeEmacsで23以降は、まさにこのために設計されています。Emacs wikiから:

;; Use variable width font faces in current buffer
 (defun my-buffer-face-mode-variable ()
   "Set font to a variable width (proportional) fonts in current buffer"
   (interactive)
   (setq buffer-face-mode-face '(:family "Symbola" :height 100 :width semi-condensed))
   (buffer-face-mode))

 ;; Use monospaced font faces in current buffer
 (defun my-buffer-face-mode-fixed ()
   "Sets a fixed width (monospace) font in current buffer"
   (interactive)
   (setq buffer-face-mode-face '(:family "Inconsolata" :height 100))
   (buffer-face-mode))

 ;; Set default font faces for Info and ERC modes
 (add-hook 'erc-mode-hook 'my-buffer-face-mode-variable)
 (add-hook 'Info-mode-hook 'my-buffer-face-mode-variable)

4

org-mode-hookこのように、を使用して変更を行うことができます

(add-hook 'org-mode-hook (lambda () (set-frame-font "Inconsolata" t)))

組織モードに入ると、フォントが変更されます。欠点は、組織モードを終了してもフォントが元に戻らないことです。

編集:Ryanが指摘したように、このwikiページのアドバイスに従って、バッファーごとに行うことができます。私は広範囲にテストしていませんが、これはうまくいくようです

(add-hook 'org-mode-hook (lambda ()
                            (setq buffer-face-mode-face '(:family "Inconsolata"))
                            (buffer-face-mode)))

buffer-face-mode他のバッファで使用したい場合は問題が発生する可能性がありますが、これだけに使用する場合は機能します。


4
見たことがありbuffer-face-setますか?このWikiページは、フレームごとではなくバッファごとに同じことができることを示しています。
ライアン14年

1
素晴らしい、ありがとう、これはまさに私が探していたものです。このコミュニティは特別です。
csantosb 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.