每个主要模式使用不同的字体


19

可以按照主要模式设置不同的字体吗?说Inconsolata-12org-mode缓冲区和Symbola-12所有的剩余模式。或至少可以做一个

(set-frame-font "Inconsolata" t)

切换到org-mode缓冲区后?

Answers:


21

buffer-face-setbuffer-face-mode在Emacs 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页面指示您可以对每个缓冲区而不是每个帧执行相同的操作。
瑞安

1
太好了,谢谢,这正是我想要的。这个社区是非凡的。
csantosb 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.