Notepad ++(版本:6.7.8.2)函数列表。头部和身体功能障碍之间的评论

时间:2015-06-23 13:04:29

标签: regex xml notepad++

我一直在网上搜索解决方案,但没有运气。我对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]*)*(?!(;))

0 个答案:

没有答案