Menggunakan font yang berbeda untuk setiap mode utama


19

Apakah mungkin untuk mengatur font yang berbeda mengikuti mode utama? Katakan Inconsolata-12dalam org-modebuffer dan Symbola-12dalam semua mode yang tersisa. Atau setidaknya, apakah mungkin untuk melakukan

(set-frame-font "Inconsolata" t)

setelah beralih ke org-modebuffer?

Jawaban:


21

buffer-face-setdan buffer-face-modedalam 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)

4

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-modebuffer lain, tetapi jika Anda hanya menggunakannya untuk ini maka itu harus bekerja.


4
Sudahkah Anda melihat buffer-face-set? Halaman wiki ini menunjukkan bahwa Anda dapat melakukan hal yang sama per buffer alih-alih per frame.
Ryan

1
Hebat, terima kasih, inilah tepatnya yang saya cari. Komunitas ini luar biasa.
csantosb
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.