2011-08-17 59 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的功能请求跟踪器,但是如果没有它的话。