我使用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
欢迎提出任何建议。
感谢
答案 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>