2011-08-17 56 views
1

我目前正在和一位朋友創建一種語言,我想在jEdit中爲它提供一個突出顯示。它的語法其實很簡單。這些函數只能匹配這種模式: $function_name(arguments)jEdit自定義模式下的多行正則表達式

請注意,我們的解析器目前正在工作,沒有像C樣式的半列那樣關閉標籤,我們希望保留此功能。

我創建了我的jEdit模式,並且(幾乎)成功地用<SPAN_REGEXP>高亮我的模式。以下是我做的:

<SPAN_REGEXP HASH_CAR="\$" TYPE="KEYWORD3" DELEGATE="ARGS">

<BEGIN>\$[A-Za_z0-9_]*\s*\(</BEGIN>

<END>)</END>

</SPAN_REGEXP>

,但還不夠好。

這是我想什麼:

  • 整個功能骨架相同顏色:$func( )
  • 特別突出的$func(%content1%)
  • 沒有高亮爲%content1%(設置ARGS規則中已定義)括號不遵循$func
  • 授權替代多行語法,如

$func

(

args

)

這是現在不突出。 我猜我需要改變我的<BEGIN>正則表達式來接受換行符,但似乎jEdit無法匹配多行正則表達式突出顯示,儘管他完成搜索&取代!

我試過(?s)(?m)標誌,[\d\D]*解決辦法,甚至[\r\n]*但它永遠不會奏效。

所以,這裏是我的問題:

  • 沒有人知道如何使用jEdit模式<SPAN_REGEXP>匹配多正則表達式?
  • 如果沒有,有沒有人有任何想法如何做我需要的?
+0

冒着明顯的風險,你有沒有看過'modes'目錄下jedit的其他編輯模式?我希望你在'span_regexp'上最好。我被那個構造所奪去,失去了,所以我不能對你有所幫助。 Sry基因。 –

+0

感謝您的回答!是的,我做到了。沒有發現有趣的事情: – Romain360

回答

1

正如幫助中所述,SPAN_REGEXP不支持多行正則表達式。你當然可以指定多行的正則表達式,但是它們只是針對單獨的行進行檢查,因此永遠不會匹配。您可以將功能請求發佈到jEdit的功能請求跟蹤器,但是如果沒有它的話。