为Perl配置记事本++“功能列表”

问题描述:

我试图在记事本++(v 6.7.5)上使用类(或软件包,以perl的说法)为Perl工作的“功能列表”功能。默认情况下,仅支持软件包外的常规子例程。为Perl配置记事本++“功能列表”

下面是来自函数列表配置文件(位于我的Windows计算机上的C:\ Users \ user \ AppData \ Roaming \ Notepad ++ \ functionList.xml)中存在问题的XML片段。我自己在默认的“功能”节点之上添加了“classRange”节点。

编辑:下面是更正后的XML,这要归功于用户stribizhev

更新:我已经注释掉“正常”的功能部分,因为它引起了我的所有方法在功能列表中出现两次。

<parser id="perl_function" displayName="Perl"> 
    <classRange mainExpr="^package.*?(?=\npackage|\Z)"> 
     <className> 
      <nameExpr expr="\s\K[^;]+"/> 
     </className> 
     <function mainExpr="^[\s]*(?&lt;!#)[\s]*sub[\s]+[\w]+[\s]*\(?[^\)\(]*?\)?[\n\s]*\{" displayMode="$className->$functionName"> 
      <functionName> 
       <funcNameExpr expr="(sub[\s]+)?\K[\w]+"/> 
      </functionName> 
     </function> 
    </classRange> 
    <!-- 
    <function mainExpr="^[\s]*(?&lt;!#)[\s]*sub[\s]+[\w]+[\s]*\(?[^\)\(]*?\)?[\n\s]*\{" displayMode="$className->$functionName"> 
     <functionName> 
      <nameExpr expr="(sub[\s]+)?\K[\w]+"/> 
     </functionName> 
    </function> 
    --> 
</parser> 

此文档是here

最可能的是,你应该使用funcNameExpr而不是nameExpr

例子:

<functionName> 
    <funcNameExpr expr="(sub[\s]+)?\K[\w]+"/> 
</functionName> 
+0

感谢你的快速和正确的答案! ! – beasy 2015-03-24 23:13:29

我想你的XML在记事本++ 6.8.1,虽然它的工作对Perl有 '包',我没有包的纯脚本现在不能生成子目录。我取消了注释掉的注释,它修复了这个问题,但确实表现出你提到的行为 - 在“包裹”中将子项加倍。

我发现了以下工作很好,甚至忽略了POD潜艇(可能还有为例使用),因此它们不会添加到列表中:

 <parser id="perl_function" displayName="Perl" commentExpr="(#.*?$|(__END__.*\Z))"> 
      <classRange mainExpr="(?&lt;=^package).*?(?=\npackage|\Z)"> 
       <className> 
        <nameExpr expr="\s\K[^;]+"/> 
       </className> 
       <function mainExpr="^[\s]*(?&lt;!#)[\s]*sub[\s]+[\w]+[\s]*\(?[^\)\(]*?\)?[\n\s]*\{"> 
        <functionName> 
         <funcNameExpr expr="(sub[\s]+)?\K[\w]+"/> 
        </functionName> 
       </function> 
      </classRange> 
      <function mainExpr="^[\s]*(?&lt;!#)[\s]*sub[\s]+[\w]+[\s]*\(?[^\)\(]*?\)?[\n\s]*\{"> 
       <functionName> 
        <nameExpr expr="(?:sub[\s]+)?\K[\w]+"/> 
       </functionName> 
      </function> 
     </parser>