在emacs中,我可以通过text-scale-adjust
更改当前缓冲区的字体大小。但是,要更改字体,我只找到set-face-font
或set-frame-font
等函数,它们将在emacs中全局更改字体(或更改当前帧中所有缓冲区的字体)。
emacs中是否只有一个函数只更改当前缓冲区的字体(默认字体),而不修改任何其他缓冲区中的字体?
答案 0 :(得分:3)
从Emacs 23开始,您可以通过M-x buffer-face-set
更改每个缓冲区的面部。见http://www.emacswiki.org/emacs/FacesPerBuffer。因此,根据Firegun的回答,您可以像buffer-set-face
那样使用:
(defun jmi/set-buffer-local-family (font-family)
"Sets font in current buffer"
(interactive "sFont Family: ")
(defface tmp-buffer-local-face
'((t :family font-family))
"Temporary buffer-local face")
(buffer-face-set 'tmp-buffer-local-face))
(注意:这仍然存在面部名称本身是全局的问题)
答案 1 :(得分:2)
我找到了一种方法,虽然它有一些副作用,因为它改变了全局变量buffer-face-mode-face
例如,我想设置当前缓冲区,我可以评估此函数定义并运行它
(defun my-buffer-face-mode-serif ()
"Sets a fixed width (monospace) font in current buffer"
(interactive)
(setq buffer-face-mode-face '(:family "Times New Roman"))
(buffer-face-mode))
答案 2 :(得分:0)
不,据我所知,你不能。在GNU Emacs中,字体是面部的一部分。除非您(例如,仅将特定面部用于所需的缓冲区),并且将该面部的字体设置为您想要的字体,否则我认为您无法实现您的要求。