Jawaban:
buffer-face-set
dan buffer-face-mode
dalam Emacs 23 atau lebih baru dirancang untuk ini. Dari wiki Emacs :
;; 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)
Anda dapat melakukan perubahan dengan menggunakan org-mode-hook
, seperti ini
(add-hook 'org-mode-hook (lambda () (set-frame-font "Inconsolata" t)))
Yang akan mengubah font setiap kali Anda memasuki mode org. Kelemahannya adalah tidak mengubah font kembali setelah Anda meninggalkan mode org.
Sunting: seperti yang ditunjukkan oleh Ryan , Anda dapat mengikuti saran pada halaman wiki ini untuk melakukannya per buffer. Saya belum diuji secara luas, tetapi ini sepertinya berhasil
(add-hook 'org-mode-hook (lambda ()
(setq buffer-face-mode-face '(:family "Inconsolata"))
(buffer-face-mode)))
Mungkin ada masalah jika Anda ingin menggunakan buffer-face-mode
buffer lain, tetapi jika Anda hanya menggunakannya untuk ini maka itu harus bekerja.
buffer-face-set
? Halaman wiki ini menunjukkan bahwa Anda dapat melakukan hal yang sama per buffer alih-alih per frame.