Emacs では、引用符で囲まれた、または逆引用符で囲まれた sexp の括弧を、他の sep の括弧とは異なる方法で構文強調表示して、目立つようにする方法はありますか? たとえば、これらの括弧を他の括弧とは異なる色にしたい:
(foo `(bar (baz)) quux)
^ ^
Emacs では、引用符で囲まれた、または逆引用符で囲まれた sexp の括弧を、他の sep の括弧とは異なる方法で構文強調表示して、目立つようにする方法はありますか? たとえば、これらの括弧を他の括弧とは異なる色にしたい:
(foo `(bar (baz)) quux)
^ ^
Emacs用のパッケージparen.elおよびstig-paren.elの拡張として構築されたマイナーモードであるmic-parenをご覧ください。それは「逃げた」sexpsの認識を特徴とします。
ここで、特別な強調表示について説明します。コードを見ると、引用符で囲まれたsexpマッチングの動作は変数によって制御されますparen-match-quoted-paren
。いくつかの一致するsexpsを見つけるとき、書体の変更は次のようなステートメントを使用して行われます。
(mic-overlay-put mic-paren-backw-overlay 'face paren-mismatch-face)
(一致、不一致の同様の代替手段を使用)。代替フォントを定義し(で行われるのと同様にparen-mismatch-face
)、それらの書体を変更するステートメントを、trueの場合は代替フォントを使用する関数に置き換えるのはそれほど難しいことではありませんparen-match-quoted-paren
。
注:最新バージョンを参照するようにリンクを更新しました
次のパッチをmic-parenに適用して(最新バージョン 3.8 のリンクをたどってください)、必要なものを取得できます。paren-face-quoted-match
テスト目的で、前景が緑色で背景がオレンジ色になるように設定された新しく作成された顔をカスタマイズします。
これで、単一の開き引用符が前に付いた対応する括弧のセットの隣にいると、引用符`で囲まれた顔が表示されます。この例では、オレンジ色の背景と緑色の前景を使用しています。おそらく変更したい色です。
動作中の写真は次のとおりです。 代替テキスト 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