有没有人有Ruby和Rake的Notepad ++函数列表插件的解析规则

时间:2009-11-10 18:44:51

标签: ruby plugins rake notepad++

我使用Notepad ++编辑rake文件,我希望能够使用函数列表插件。

我一直无法在线找到任何解析规则,而且“语言解析规则”对话框的记录也不是很清楚。

我正在使用以下方法将方法解析到列表中,但是也希望显示任务。

Function Begin:  [ \t]*def[ \t]+
Function List Name: [a-zA-Z0-9_\.]*

这不是很干净,并且不会捕获以...结尾的功能?或者!,但这是一个开始。

我的任务规则是:

Function Begin: [ \t]*task[ \t]+
Function List Name: :[a-zA-Z0-9_\.]*
Function End: [ \t]+do

欢迎提出任何建议。

感谢

4 个答案:

答案 0 :(得分:1)

也许您可以使用以下设置,您可以在FunctionListRules.xml文件中添加:

<Language name="Ruby" imagelistpath="C:\Documents and Settings\king_cao\Application Data\Notepad++\plugins\config\C++.flb">
        <Group name="CLASS" subgroup="FUNCTION" icon="1" child="11" autoexp="4" matchcase="1" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^class\s+" regexfunc="[\w_]+" regexend="" bodybegin="" bodyend="^end$" sep="" />
        </Group>
        <Group name="FUNCTION" subgroup="" icon="9" child="17" autoexp="4" matchcase="1" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^[\s\t]+def\s+" regexfunc="[\w_]+" regexend="" bodybegin="" bodyend="^[\s\t]+end$" sep="" />
        </Group>
        <Group name="GlobalFunction" subgroup="" icon="9" child="17" autoexp="4" matchcase="1" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^def\s+" regexfunc="[\w_]+" regexend="" bodybegin="" bodyend="^end$" sep="" />
        </Group>
        <Group name="MODULE" subgroup="FUNCTION" icon="8" child="11" autoexp="4" matchcase="1" fendtobbeg="" bbegtobend="" keywords="">
            <Rules regexbeg="^module\s+" regexfunc="[\w_]+" regexend="" bodybegin="" bodyend="^end$" sep="" />
        </Group>
</Language>

答案 1 :(得分:1)

这是我的规则。还不完美。不知道如何配置子组。

<Language name="Ruby" imagelistpath="">
    <CommList param1="#" param2="" />
    <CommList param1="//" param2="" />
    <CommList param1="/\*" param2="\*/" />
    <Group name="MODULE" subgroup="" icon="0" child="0" autoexp="0" matchcase="1" fendtobbeg="" bbegtobend="" keywords="">
        <Rules regexbeg="^[\s\t]*module\s+" regexfunc="[\w]+" regexend="" bodybegin="" bodyend="" sep="" />
    </Group>
    <Group name="CLASS" subgroup="" icon="0" child="0" autoexp="0" matchcase="1" fendtobbeg="" bbegtobend="" keywords="">
        <Rules regexbeg="^[\s\t]*class\s+" regexfunc="[\w]+" regexend="" bodybegin="" bodyend="" sep="" />
    </Group>
    <Group name="FUNCTION" subgroup="" icon="0" child="0" autoexp="0" matchcase="1" fendtobbeg="" bbegtobend="" keywords="">
        <Rules regexbeg="^[\s\t]*def\s+" regexfunc="[\w\?!\.=]+" regexend="" bodybegin="" bodyend="" sep="" />
    </Group>
</Language>

答案 2 :(得分:1)

从版本6.4开始,不需要插件!查看新功能列表功能: http://notepad-plus-plus.org/features/function-list.html

语言支持即将到来,也许在这里要求会有所帮助: https://sourceforge.net/p/notepad-plus/discussion/331753/thread/b9d2fe00/

答案 3 :(得分:0)

我正在使用以下解析器来处理新的functionList.xml。如果多个定义位于同一行,它会识别大多数类模块和方法定义。 E.g。

module A; module B; class C end; end; end;

在上述情况下,它只会识别“模块A”

所有内容都只是作为功能呈现,包括“class”“module”或“def”关键字。它不使用classrange提供的层次结构。

  <parser id="rb_function" displayName="Ruby" >
    <function
        mainExpr="^[\s]*(def|class|module)[\s]+(self\.)?[\S]+;?"
        displayMode="$className->$functionName" >
      <functionName>
        <nameExpr expr="(def|class|module)[^\(;]*" />
      </functionName>
    </function>
  </parser>