突出显示引用/反引号的parens

时间:2009-10-29 18:39:29

标签: emacs syntax-highlighting parentheses

在Emacs中,有没有一种方法可以突出显示引用和反引号的性别的括号而不是其他性别的parens所以它们脱颖而出?例如我希望这些parens与其他parens颜色不同:

(foo `(bar (baz)) quux)
      ^         ^

2 个答案:

答案 0 :(得分:1)

查看mic-paren,这是一个次要模式,作为Emacs的包paren.el和stig-paren.el的扩展而构建。它具有对“逃脱”性行为的认可。

现在进行特殊突出显示:如果查看the code,引用的sexp匹配行为由变量paren-match-quoted-paren控制。当找到几个匹配性别时,使用如下语句进行字体更改:

(mic-overlay-put mic-paren-backw-overlay 'face paren-mismatch-face)

(匹配,不匹配的类似替代品)。定义替代字体(类似于paren-mismatch-face所做的那样)应该不会太难,并且如果paren-match-quoted-paren为真,则使用替代字体的函数替换那些字体更改语句。< / p>

注意:更新链接以引用最新版本

答案 1 :(得分:1)

您可以将以下补丁应用于mic-paren(按照最新版本的链接,3.8)以获得您想要的内容。自定义新创建的面paren-face-quoted-match,其明显设置为具有绿色前景和橙色背景以用于测试目的。

现在当你在一组匹配的括号前面加上一个开放的引号`时,你就会得到引用的面。此示例使用橙色背景和绿色前景 - 很可能是您想要更改的颜色。

以下是它的实际情况: alt text http://img262.imageshack.us/img262/8866/quoted.png

--- orig-mic-paren.el   2009-11-11 17:02:42.000000000 -0800
+++ mic-paren.el    2009-11-11 17:05:35.306263000 -0800
@@ -561,4 +561,16 @@
   :group 'mic-paren-matching)

+(defface paren-face-quoted-match
+  '((((class color)) (:foreground "green" :background "orange"))
+    (t (:reverse-video t)))
+  ""
+  :group 'faces
+  :group 'mic-paren-matching)
+
+(defcustom paren-quoted-match-face 'paren-face-quoted-match
+  "Mic-paren face used for a quoted paren"
+  :type 'face
+  :group 'mic-paren-matching)
+
 ;;; End of User Options
 ;;; ======================================================================
@@ -1052,5 +1064,9 @@
                   face (if mismatch
                            paren-mismatch-face
-                         paren-match-face)
+                         (save-excursion
+                          (if (progn (goto-char (- (min (point) opos) 1))
+                                     (looking-at "`"))
+                              paren-quoted-match-face
+                            paren-match-face)))
                   visible (when (pos-visible-in-window-p opos)
                             (save-excursion

要应用修补程序,请将修补程序块剪切/粘贴到名为mic.patch的文件中,然后运行以下命令:

patch mic-paren.el mic.patch