Emacs缓冲本地字体



对于我的所有任务,我在Emacs中使用URW Chancery L字体。但是对于某些任务,像组织模式表、shell或sunrise命令器一样,我想设置单色字体。那么,我的问题是,我该怎么做呢?我只发现了set-default-font,这不是我想要的。

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

(face-remap-add-relative 'default '(:family "Monospace"))

应使当前缓冲区使用Monospace。因此,将上述内容添加到org-mode-hook中可能会解决您的问题。

此代码段仅在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)

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

此解决方案通过设置覆盖整个缓冲区的字体族属性来创建缓冲区本地字体。覆盖的face属性仅指定字体系列(Monospace),Emacs redisplay足够聪明,可以将其与其他文本属性(如font-lock指定的颜色)合并。

您是否尝试自定义org-table

您可以使用org-menu > Customize > Customize > org-table 进行修改

或者使用命令行

M-x set-face-font RET org-table RET -PfEd-DejaVu Sans Mono-normal-normal-normal-*-*-*-*-*-m-0-iso10646-1

使用选项卡自动完成并查看其他可用字体

最后,你也可以直接修改你的init.el,使其具有类似的东西

(custom-set-faces
 '(org-table ((t (:foreground "LightSkyBlue" :family "DejaVu Sans Mono")))))

最新更新