【问题标题】:How do I set the colour of brackets/braces/parentheses in Emacs?如何在 Emacs 中设置括号/大括号/圆括号的颜色?
【发布时间】:2010-09-27 08:30:27
【问题描述】:

我想在自定义颜色主题中指定{}、() 和[] 的颜色。这可能吗?

更新:这里是来源。请注意该主题的开发状态;在工作场所和家中使用都不安全。

;;; 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"))))
     )
   )
  )

【问题讨论】:

    标签: emacs elisp dot-emacs


    【解决方案1】:

    你可以使用 Rainbow-delimiters 模式,你可以从 Emacs24 包系统中的 MELPA 安装它或从以下位置下载 rainbow-delimiters.el:

    emacswiki-RainbowDelimiters

    将 rainbow-delimiters.el 放在您的 emacs 加载路径上

    在您的 .emacs 文件中写入初始化代码:

    (require 'rainbow-delimiters)
    
    (global-rainbow-delimiters-mode)
    

    【讨论】:

    • 这会导致:Symbol's function definition is void: global-rainbow-delimiters-mode
    【解决方案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")))))
    

    【讨论】:

    • 只有当你的光标在一个括号上时才会这样做。还是我错过了什么?
    • 哦,你想从一开始就给它上色。编辑了答案。试试推荐的那个。
    • 我可以让它只在我正在编辑主题的缓冲区中仅对圆括号进行着色,而且只是有时?如果我将它添加到主题并打开另一个 emacs,它不会做任何事情。奇怪?!
    • @MDCore 已编辑。你能再试一次吗?
    • 仍然没有得到快乐。我已经用完整的源代码更新了问题
    猜你喜欢
    • 1970-01-01
    • 2021-01-11
    • 2011-01-12
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    相关资源
    最近更新 更多