2012-09-05 202 views
6

對於我所有的任務,我在Emacs中使用URW Chancery L字體。但對於一些任務,如組織模式表,shell或日出指揮官,我想設置單寬字體。 所以,我的問題,我該怎麼辦?我發現的全部是set-default-font,這不是我想要的。Emacs緩衝區本地字體

回答

0

此代碼段設置了「Arial字體」字體族只在C模式:

(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重新顯示足夠智能,可將其與其他文本屬性(如font-lock指定的顏色)合併。

+0

我用'Monospace'替換了您的示例家庭,奇怪的是,它只能幫助西里爾文的符號。組織模式下的表格仍然在視覺上不垂直。 – KAction

+0

你能指導我如何獲得組織模式表嗎?我不是一個組織模式的用戶,我嘗試的一些微不足道的事情似乎很好。 – user4815162342

+0

在'org-mode' printf頭文件中,使用'|'分隔,如'foo | bar | baz |'。然後按Enter,插入'|'並按Tab鍵。你會得到對齊的單元格。那麼,只爲monowidth進行視覺上的分配。 – KAction

8

Emacs中面部(即用於指定文字出現的對象,例如字體,顏色等)大多是全局的,儘管它們也可以基於幀設置,所以您可以通過創建一個單獨的框架,並更改該框架中使用的「默認」面。這就是說,Emacs現在也可以通過面鏡重新編寫來改變臉部對於特定緩衝區的外觀。例如。

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

應使當前緩衝區使用等寬字體。因此,將以上內容添加到org-mode-hook可能只是解決您的問題。

+0

同樣的效果 - 隻影響西里爾文。是否有任何方法將screeshots插入SO? – KAction

0

您是否嘗試過自定義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

使用標籤來自動完成,並看其他可用字體

Finaly你也可以直接修改你init.el有類似

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