我一直在网上搜索解决方案,但没有运气。我对Notepad ++中的函数列表如何工作有一个问题,我希望它可以在functionList.xml中修复...
如果函数头和函数Body 之间有注释,函数列表不会列出函数,如下所示。
void main()
//------- commentary here
{...}
如果此位置没有评论,功能列表工作正常。但是我使用Levelscripts(类似于c ++但不太先进),它们有大量的这样的评论,使得函数列表变得毫无用处。我曾经使用非常旧的 Notepad ++版本和一个适用于这些脚本的Function list 2.0插件。到目前为止,我已经使用了旧的Notepad ++版本,但它确实不再实用。
我也尝试过C ++和C的功能列表,它们有同样的问题。
我为Notepad ++创建了自己的UDL,工作正常,我还编辑了迄今为止有效的functionList.xml,除了它还有上面提到的问题。我希望通过使用正则表达式来解决这个问题,因为它们用于设置函数的重新配置方式。我在这里是迄今为止我在functionList.xml中使用的内容:
<parser id="stef2_morpheurs_script" displayName="stef2_morpheurs_script" commentExpr="((/\*.*?\*)/|(//.*?$))">
<function
mainExpr="^[\t ]*((void|float|vector|string)[\s]+)?[\w:]+([\s]+[\w]+)?([\s]+|\*[\s]+|[\s]+\*|[\s]+\*[\s]+)([\w_]+[\s]*::)?(?!(if|while|for))[\w_]+[\s]*\([^\)\(]*\)?[\n\s]*\{"
displayMode="$functionName">
<functionName>
<nameExpr expr="(?!(if|while|for))[\w_~]+[\s]*\("/>
<nameExpr expr="(?!(if|while|for))[\w_~]+"/>
</functionName>
</function>
</parser>
这就是我认为的基本部分:
mainExpr="^[\t ]*((void|float|vector|string)[\s]+)?[\w:]+([\s]+[\w]+)?([\s]+|\*[\s]+|[\s]+\*|[\s]+\*[\s]+)([\w_]+[\s]*::)?(?!(if|while|for))[\w_]+[\s]*\([^\)\(]*\)?[\n\s]*\{"
经过几个小时的尝试和阅读正则表达式后,我的进步很少,因为我使用Notepad ++ regEx的技能非常不足。
所以任何提示或建议如何处理这个以及可能是一个声明,如果甚至可以用正则表达式解决这个问题将非常感激。
提前感谢您的时间和专业知识。
最新代码:
^[\t ]*[\w:]+([\s]+[\w]+)?([\s]+|\*[\s]+|[\s]+\*|[\s]+\*[\s]+)(?!(if|while|for))[\w_]+[\s]*\([^\)\(]*\)(.*[\n\s]*)*(?!(;))