自定义emacs语法着色

时间:2012-03-08 15:54:33

标签: emacs syntax highlighting

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

直到现在我发现的全部是     (setq-default global-font-lock-mode nil) 但这也会使评论变色。

对于经过时间考验的emacs战士,我认为这一定相当容易。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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"))))