我試圖爲主要模式設置字體鎖定。下面是一些示例代碼:Emacs中的上下文敏感不連續字體鎖定
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:Context-sensitive font-locking in emacs,用於解決非常類似的問題。
但是,他的解決方案利用了以下事實:要突出顯示的項目的「序列」在paranthesises內部,這不是這裏的情況。
字體鎖有這樣的情況(Unknown number of matches in regex and font-lock)的麻煩,但我仍然希望有一些「足夠好」的解決方案,即使它需要黑客的字體鎖內部。
我不明白應該遵循的規則是什麼。例如。爲什麼不'bar','foo','fuelcolors',...? – Stefan
只應突出顯示'TUPLE:....;'表達式中的單詞。 –