如何在Emacs中设置括号的颜色?(如圆括号、花括号、方括号等)

7

我想指定自定义颜色主题中{}()[]的颜色。这是否可能?

更新:以下是源代码。请注意,此主题正在开发中;它在工作场所和家庭周围使用都不安全。

;;; Color theme based on Moria for VIM.
(defun color-theme-moria ()
  "A color theme based on Moria for VIM."
  (interactive)
  (color-theme-install
   '(color-theme-moria
     ((foreground-color . "#000000") ;done
      (cursor-color . "#ffffff")
      (background-color . "#f0f0f0") ;done
      (background-mode . light)) ;done
     (default ((t (nil)))) ;done
     (underline ((t (:underline t)))) ;done
     (modeline ((t (:foreground "black" :background "#000000"))))
     (modeline-buffer-id ((t (:foreground "red" :background "#0000ff"))))
     (modeline-mousable ((t (:foreground "cyan" :background "#007080"))))
     (modeline-mousable-minor-mode ((t (:foreground "cyan" :background "#007080"))))
     (highlight ((t (:background "#d0d0d0")))) ;done
     (region ((t (:background "#c0c0c0")))) ;done
     (font-lock-builtin-face ((t (:foreground "black"))))
     (font-lock-constant-face ((t (:foreground "#ff0000")))) ;hmmm
     (font-lock-comment-face ((t (:foreground "#786000")))) ;done
     (font-lock-function-name-face ((t (:foreground "#000000" )))) ;done
     ; highlight ma brackets
     (font-lock-add-keywords nil '(("\\([\{\}\\[\]\(\)]+\\)" 1 font-lock-keyword-face prepend)))
     (font-lock-preprocessor-face ((t (:foreground "#912F11" :bold t))))
     (font-lock-keyword-face ((t (:foreground "#1f3f81" :bold t)))) ; done e.g. defun

     (font-lock-string-face ((t (:foreground "#077807")))) ;done
     (font-lock-variable-name-face ((t (:foreground "#ff0000" )))) ;hmmm
     (font-lock-warning-face ((t (:foreground "#ff0000"))))
     (highlight-changes-face ((t (:background "#ff0000"))))
     (highlight-changes-delete-face ((t (:foreground "red" :background "pink"))))
     (show-paren-match ((t (:foreground "#2e3436" :background "#73d216"))))

     (widget-field-face ((t (:foreground "pink" :background "red"))))
     (widget-inactive-face ((t (:foreground "gray"))))
     (custom-button-face ((t (:foreground "yellow" :background "dark blue"))))
     (custom-state-face ((t (:foreground "mediumaquamarine"))))
     (custom-face-tag-face ((t (:foreground "goldenrod" :underline t))))
     (custom-documentation-face ((t (:foreground "#10D010"))))
     (custom-set-face ((t (:foreground "#2020D0"))))
     )
   )
  )
2个回答

2

尝试:

(font-lock-add-keywords nil '(("\\([\{\}\\[\]\(\)]+\\)" 1 font-lock-keyword-face prepend)))

仅适用于父级匹配:

评估以下表达式或将其放入您的.emacs文件中:

(custom-set-faces
 '(show-paren-match ((t (:background "blue"))))
 '(show-paren-mismatch ((((class color)) (:background "red" :foreground "white")))))

只有当光标位于括号上方时,它才会起作用。或者我漏掉了什么? - MDCore
哦,你一开始就想要着色。我编辑了答案。试试建议的那个。 - OTZ
我可以让它只在我编辑主题的缓冲区中着色圆括号,而且有时候只着色圆括号吗?如果我将其添加到主题中并打开另一个emacs,它什么也不做。奇怪?! - MDCore
@MDCore 已编辑。你能再试一次吗? - OTZ
仍然没有得到乐趣。我已经更新了问题,并提供了完整的源代码。 - MDCore

2

你可以使用彩虹括号模式(rainbow-delimiters mode),在Emacs24包系统中,你可以从MELPA安装它,或从以下链接下载rainbow-delimiters.el:

emacswiki-RainbowDelimiters

将rainbow-delimiters.el放置在emacs的加载路径(load-path)中

在你的.emacs文件中编写初始化代码(init code):

(require 'rainbow-delimiters)

(global-rainbow-delimiters-mode)

这导致出现以下错误:符号的函数定义无效:global-rainbow-delimiters-mode - Zelphir Kaltstahl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接