新しくリリースされたFont Lock Studioを使用できます。以下は readme ファイルからのものです。
font-lock-studio - Font Lock キーワード用の対話型デバッガー
Font Lock Studioは、Font Lock キーワード (Emacs 構文強調表示ルール)の対話型デバッガーです。
序章
Font Lock Studio では、Font Lock キーワード (マッチャー、ハイライト、アンカー ルール)を1 ステップで実行できるため、バッファーがフォント化されたときに何が起こるかを確認できます。ルール上またはルール内にブレークポイントを設定し、ヒットするまで実行できます。ルール内では、一致は背景色のパレットを使用して視覚化されます。説明者は平文の英語でルールを説明できます。
Edebugとの緊密な統合により、Font Lock キーワードの一部である Lisp 式にステップ インできます。
デバッガーを使用すると、インターフェイス バッファーが表示されます。これにはすべてのキーワードが含まれており、一致データのナビゲーションと可視化に使用されます。
Font Lock Studio が開始されると、コメントと文字列は以前の構文段階の一部であるため
(Font Lock Studio ではサポートされていません)、事前に色付けされます。
「Mx font-lock-studio RET」と入力してデバッガを起動します。?
使用可能なコマンドについては、メニューを押すか参照してください。
例
を使用するバッファの場合html-mode
、インターフェイス バッファは次のようになります。他の主要なモードには通常、ますます複雑なルールがあります。左側の矢印は、現在アクティブな場所を示しています。ソース バッファ内の対応する矢印は、現在の検索位置に配置されます。
========================
=== Font Lock Studio ===
========================
--------------------------------------------------
=> "<\\([!?][_:[:alpha:]][-_.:[:alnum:]]*\\)"
(1 font-lock-keyword-face)
--------------------------------------------------
"</?\\([_[:alpha:]][-_.[:alnum:]]*\\)\\(?::\\([_:[:alpha:]]
[-_.:[:alnum:]]*\\)\\)?"
(1
(if
(match-end 2)
sgml-namespace-face font-lock-function-name-face))
(2 font-lock-function-name-face nil t)
--------------------------------------------------
"\\(?:^\\|[ \t]\\)\\([_[:alpha:]][-_.[:alnum:]]*\\)\\(?::
\\([_:[:alpha:]][-_.:[:alnum:]]*\\)\\)?=[\"']"
(1
(if
(match-end 2)
sgml-namespace-face font-lock-variable-name-face))
(2 font-lock-variable-name-face nil t)
--------------------------------------------------
"[&%][_:[:alpha:]][-_.:[:alnum:]]*;?"
(0 font-lock-variable-name-face)
--------------------------------------------------
"<\\(b\\(?:ig\\|link\\)\\|cite\\|em\\|h[1-6]\\|rev\\|s\\(?:
mall\\|trong\\)\\|t\\(?:itle\\|t\\)\\|var\\|[bisu]\\)
\\([ \t][^>]*\\)?>\\([^<]+\\)</\\1>"
(3
(cdr
(assoc-string
(match-string 1)
sgml-tag-face-alist t))
prepend)
==================================================
Public state:
Debug on error : YES
Debug on quit : YES
Explain rules : YES
Show compiled code : NO
スペースを押すと、すべてのキーワードをシングル ステップで表示します。"n" は次のキーワードに移動し、"b" はブレークポイントを設定し、"g" は最後 (または次のブレークポイント) まで実行し、"q" は終了します。
特徴
ステッピング
Font Lock キーワードの、上、および外にシングルステップで移動できます。固定ルールは完全にサポートされています。さらに、最後または次のブレークポイントまで実行できます。
ブレークポイント
キーワードの一部、マッチャー (正規表現など)、ハイライト ルール、または固定されたハイライト ルール内にブレークポイントを設定できます。
ブレークポイントで停止せずにステップ実行または実行する場合は、コマンドの前にC-u
.
固定ルールでは、ルール全体または個々の部分にブレークポイントを設定できることに注意してください。前者の場合、外側の括弧のみが強調表示されます。
試合データの可視化
キーワードまたはアンカーされたハイライトのマッチャーが実行された後、ソース バッファー、正規表現、および対応するハイライト ルールの背景色を使用して、一致データ (検索で見つかったものは何でも) が視覚化されます。正規表現またはハイライトの一部が一致しなかった場合、色付けされません。これは、たとえば、後置正規表現演算子?
が使用された場合に発生する可能性があります。
内側の一致グループは外側のグループよりも優先されることに注意してください。これは、ハイライト ルールが正規表現またはソース バッファーに表示されない色を取得する状況につながる可能性があります。たとえば、マッチャー "\(abc\)" はマッチ 1 の色で色付けされますが、ハイライト ルール `(0 a-face)' はマッチ 0 の色を取得します。
正規化されたキーワード
インターフェイスに表示されるキーワードは正規化されています。たとえば、代わりに
("xyz" . font-lock-type-face)
キーワード
("xyz" (0 font-lock-type-face))
示されています。詳細font-lock-studio-normalize-keywords
については、を参照してください。
説明者
説明者は、Font Lock キーワードの現在の部分の人間が読める説明をエコーします。これは、ルール内のすべてのnil
:s とt
:s が実際に意味することを理解するのに役立ちます。
自動説明機能を使用すると、Font Lock Studio は各コマンドの後に説明をエコーします。
Edebug -- Emacs Lisp デバッガ
Edebug との緊密な統合により、インターフェイス バッファー内のキーワードに埋め込まれた単一ステップの式が可能になり、ソース ファイルでデバッグするために呼び出された関数をインストルメント化できます。
フォローモードの認識
ソース バッファー内の検索位置は、オーバーレイ矢印とポイントの更新によって視覚化されます。ソース バッファが複数の横に並んだウィンドウに表示され、フォロー モードが有効になっている場合、スクロールを最小限に抑えるために検索場所が適切なウィンドウに表示されます。