Emacs缓冲区本地字体

KAc*_*ion 7 emacs fonts

对于我的所有任务,我在Emacs中使用URW Chancery L字体.但是对于某些任务,比如组织模式表,shell或者日出指挥官,我想设置单宽度字体.所以,我的问题,我该怎么做?我发现的一切都是set-default-font,这不是我想要的.

Ste*_*fan 8

面(即用于指定文本外观的对象,如字体,颜色等)在Emacs中大多是全局的,尽管它们也可以在帧的基础上设置,因此您可以通过创建单独的框架来完成上述操作.更改要在该帧中使用的"默认"面.这就是说,Emacs现在也可以通过面部重映射改变面部对特定缓冲区的外观.例如

(face-remap-add-relative 'default '(:family "Monospace"))
Run Code Online (Sandbox Code Playgroud)

应使当前缓冲区使用Monospace.因此,添加上述内容org-mode-hook可能只是解决您的问题.


use*_*342 1

此代码片段仅在 C 模式下设置“Arial”字体系列:

(defun set-my-font ()
  (overlay-put (make-overlay (point-min) (point-max) nil nil t)
               'face '(:family "Monospace")))

(add-hook 'org-mode-hook 'set-my-font)
Run Code Online (Sandbox Code Playgroud)

替换org-mode-hook为所需的模式,它应该也可以工作。

该解决方案通过设置整个缓冲区上覆盖层的字体系列属性来实现缓冲区本地字体的创建。覆盖层的face属性仅指定字体系列 ( Monospace),Emacs 重新显示足够智能,可以将其与其他文本属性合并,例如 指定的颜色font-lock