メジャーモードのフォントロックを設定しようとしています。コード例を次に示します。
USING: foo bar bar ;
IN: fuelcolors
TUPLE: font < super-class
name
size
bold?
italic?
{ foreground initial: COLOR: black }
{ background initial: COLOR: white } ;
TUPLE: rgb red green blue ;
: foobar ( seq -- seq )
hello there { 1 2 3 } ;
名前、サイズ、ボールド?、イタリック?、前景、背景、赤、緑、青。タプルのスロットの名前を表します。
一致した領域が連続していないため、正規表現ではそれができないことはわかっています。イタリック?および前景は一致する必要がありますが、これらの記号の間の { 文字は一致しません。その代わりに、Dmitri がここで提供しているものと同様の font-lock マッチャー関数を作成できると考えました: Context-sensitive font-locking in emacs for a very similar problem.
しかし、彼のソリューションは、ハイライトするアイテムの「シーケンス」が括弧内にあるという事実を利用していますが、ここではそうではありません。
Font-lock はこのような状況で問題を抱えています (正規表現と font-lock の一致数が不明です) が、font-lock の内部をハッキングする必要がある場合でも、「十分な」解決策を望んでいます。