2012-03-08 64 views
1

我无法弄清楚如何设置emacs只使用两种颜色,一种用于注释,另一种用于所有语言模式中的常规代码。 当然可以将除注释以外的每个块的颜色设置为第二种颜色,但我不确定所有可用块是什么。自定义emacs语法着色

到目前为止,我发现的所有内容都是 (setq-default全局字体锁定模式无) 但这也会杀死评论的着色。

我想这对于经过时间验证的emacs战士来说一定是相当容易的。

回答

4

请参阅angry fruit salad wiki页面以清除字体锁定面。您可以稍微修改代码以免除注释。

如果你真的必须删除所有颜色的代码会做所有的面孔,除了警告和注释:

(defun decolorize-font-lock() 
    "remove all colors from font-lock faces except comment and warning" 
    (let ((fg (face-attribute 'default :foreground)) 
     (bg (face-attribute 'default :background))) 
    (mapc (lambda (face) 
      (when face 
       (set-face-attribute face nil 
            :foreground fg 
            :background bg))) 
      (mapcar (lambda (f) 
        (if (and (string-match "^font-lock" (symbol-name f)) 
          (not (string-match "-comment\\|-warning" (symbol-name f)))) 
         f 
         nil)) 
        (face-list))))) 

(decolorize-font-lock) 
+0

哇,这个工作!我现在正在修改此代码来杀死所有字体重量差异。我只想能够从代码中发表评论。 – Tentresh 2012-03-08 17:11:13

+0

高兴地upvote和“接受”。谢谢。再来。 – 2012-03-08 17:13:50

+0

已接受。不能upvote,因为这是我的第一个问题和第一天在stackoverflow。 – Tentresh 2012-03-08 17:15:58

0

color-theme是一个方便的“框架”定义的语法和窗口的语言无关的方式着色。

开始使用它就像黑客入侵默认主题一样简单。一个典型的通道是这样的:

(font-lock-builtin-face ((t (:foreground "#000080")))) 
(font-lock-keyword-face ((t (:bold t :foreground "#000080")))) 
(font-lock-function-name-face ((t (:foreground "#000080")))) 
(font-lock-variable-name-face ((t (:bold t :foreground "#000080")))) 
(font-lock-string-face ((t (:foreground "#177A12")))) 
(font-lock-comment-face ((t (:italic t :foreground "#716F6F")))) 
(font-lock-constant-face ((t (:italic t :foreground "#660E7A")))) 
(font-lock-doc-string-face ((t (:foreground "DarkOrange"))))