在 Emacs 中,有没有一种方法可以将带引号和反引号的 sexps 的括号与其他 sexps 的括号不同地突出显示,以便它们脱颖而出?例如,我希望这些括号的颜色与其他括号不同:
(foo `(bar (baz)) quux)
^ ^
在 Emacs 中,有没有一种方法可以将带引号和反引号的 sexps 的括号与其他 sexps 的括号不同地突出显示,以便它们脱颖而出?例如,我希望这些括号的颜色与其他括号不同:
(foo `(bar (baz)) quux)
^ ^
看看mic-paren,这是作为 Emacs 包 paren.el 和 stig-paren.el 的扩展而构建的次要模式。它的特点是识别“逃脱”的性别。
现在特别强调一下:如果你看一下代码,引用的 sexp 匹配的行为是由变量控制的paren-match-quoted-paren
。当找到几个匹配的 sexps 时,字体更改是使用以下语句进行的:
(mic-overlay-put mic-paren-backw-overlay 'face paren-mismatch-face)
(对于匹配的,不匹配的类似替代方案)。定义替代字体应该不会太难(类似于使用 所做的),如果为真paren-mismatch-face
,则用使用替代字体的函数替换那些字体更改语句。paren-match-quoted-paren
注意:更新链接以引用最新版本
您可以将以下补丁应用于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