Emacs缓冲区本地字体

Emacs缓冲区本地字体,emacs,fonts,Emacs,Fonts,对于我的所有任务,我在Emacs中使用URW Chancery L字体。但有些任务,, 像组织模式的表格、shell或sunrise commander一样,我想设置单宽字体。 那么,我的问题是,我该怎么做?我只找到了设置默认字体,这不是我想要的。此代码片段仅在C模式下设置“Arial”字体系列: (defun set-my-font () (overlay-put (make-overlay (point-min) (point-max) nil nil t)

对于我的所有任务,我在Emacs中使用URW Chancery L字体。但有些任务,, 像组织模式的表格、shell或sunrise commander一样,我想设置单宽字体。 那么,我的问题是,我该怎么做?我只找到了
设置默认字体
,这不是我想要的。

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

面指定的颜色(即用于指定字体、颜色等文本外观的对象)在Emacs中大部分是全局的,尽管它们也可以在帧的基础上进行设置,因此您可以通过创建单独的帧并更改“默认”面来执行上述操作,以在该帧中使用。 这就是说,Emacs现在还可以通过面部重新映射来更改特定缓冲区的面部外观。例如


应使当前缓冲区使用Monospace。因此,将上述内容添加到
组织模式钩子
可能会解决您的问题。

您是否尝试自定义
组织表

您可以使用
org menu>Customize>Customize>org table

或者使用命令行

M-x集合字体检索组织表格检索-PfEd DejaVu Sans Mono normal-*-*-*-*-*-*-*-*-*-*-M-0-iso10646-1

使用tab自动完成并查看其他可用字体

最后,您还可以直接修改init.el,使其具有

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

在您的示例族中,我将其替换为
Monospace
,奇怪的是,它只对西里尔字母符号有用。组织模式下的表格在视觉上仍然不是垂直的。你能告诉我如何获得组织模式下的表格吗?我不是一个组织模式的用户,我尝试过的一些琐碎的事情似乎都很好。在
org模式下
printf标题中,用
|
分隔,比如'foo | bar | baz |'。然后按Enter键,插入“|”,然后按Tab键。您将获得对齐的单元格。好吧,视觉上只为单幅对齐。它似乎对我仍然有效。重复步骤:1。emacs-q;2.
M-x自定义字体RET默认RET
,将family设置为
Arial
或其他比例字体;3.运行(修订)答案中的代码;4.切换到新的缓冲区并运行
M-x组织模式RET
;5.输入
foo | bar | baz RET RET RET
。在这些步骤之后,我看到缓冲区的内容是单空格字体,单元格正确对齐。Emacs版本是24.2.1,组织模式版本是7.8.11。同样的效果——只影响西里尔语。有没有办法在SO中插入SCREESHOT?
(custom-set-faces
 '(org-table ((t (:foreground "LightSkyBlue" :family "DejaVu Sans Mono")))))