根据主要模式更改字体

时间:2012-11-01 15:08:44

标签: emacs fonts major-mode

是否有办法根据主要模式更改字体?如果是这样,怎么样?我通常使用比例字体,但仅适用于dired模式和shell模式,我想切换到非比例字体。这些模式没有特殊的面,只使用默认面,所以不能通过设置字体面来完成。我希望能够根据主要模式自动切换,也许使用钩子。

2 个答案:

答案 0 :(得分:5)

使用模式挂钩,使用face remapping feature挂钩为当前缓冲区重新映射面部的函数:

(defun use-monospace ()
  "Switch the current buffer to a monospace font."
  (face-remap-add-relative 'default '(:family "Monospace")))

(add-hook 'dired-mode-hook 'use-monospace)
...

答案 1 :(得分:2)

如上所述定义自己的函数的另一种方法是使用buffer-face-mode。通常,这将使用variable-pitch来启用缓冲区,但由于您希望使用可变间距字体作为默认字体,因此您可以将其更改为fixed-pitch

(setq buffer-face-mode-face 'fixed-pitch)
(add-hook 'dired-mode-hook 'buffer-face-mode)
(add-hook 'shell-mode-hook 'buffer-face-mode)