Function list and AutoIt / AU3 files
-
Hi there,
my name is Dave and I am a big fan of NotePad++ and I am trying to customize it as far as I can. And as I am writing some AutoIt stuff at the moment, I try to find or write a parser to include into functionList.xml to add recognition of AU3 functions.
They look like this :Func function_name(parameters)
and comments are delimitated by a “;” : everything on the right of the “;” is ignored.
as a first try, I added this :
<association langID="40" id="au3_function"/>
and
<parser id="au3_function" displayName="Au3 script" > <function mainExpr="^\s*func\s+\w+\(.*" displayMode="$functionName"> <functionName> <nameExpr expr=".*"/> </functionName> </function> </parser>
the function list seems to detect the AU3 file, but nothing appears…
subsidiary question : is the function list parser case sensitive ? because I type “func” but it could be “Func” or “FUNC” or any other combination…
Notepad++ doc on the subject :
https://notepad-plus-plus.org/features/function-list.htmlThanks for your help and have a nice day.
Dave.
-
Try this parser:
<parser id="au_function" displayName="AutoIt3" commentExpr="(((?mi-s)^\h*;.*?$)/|((?s-m)#cs.*?#ce))" > <function mainExpr="(?i)^\h*func\h+\w+\h*\(" > <functionName> <nameExpr expr="(?mi)(?<=^\h*func\h+)\w+" /> </functionName> </function> </parser>
-
Hi,
thanks a lot for the answer.
sorry to reply with another login, but I cannot login with my google+ on firefox… strange.
So I tried what you said, but it does not match at all.
So I tried to simplify and the only thing that worked was :<function mainExpr="^\h*func\h+\w+\h*\(" > <functionName> <nameExpr expr="^\h*func\h+\w+" />
but it returns “func” before each function name.
I do not understand why (?<= does not work… -
Mea Culpa, didn’t test it, just copied from my FuncionList.xml.
Try this (tested and confirmed!) parser:
<parser id="au3_function" displayName="AutoIt3" commentExpr="(?mi-s)^\s*;.*?$|(?s-m)#cs.*?#ce" > <function mainExpr="^\s*(?i:FUNC)\s+[A-Za-z_]\w*\s*\([^()]*?\)" > <functionName> <nameExpr expr="(?!(?i:FUNC)\s+)[A-Za-z_]\w*\s*\(" /> <nameExpr expr="[A-Za-z_]\w*" /> </functionName> </function> </parser>
-
Thanks a lot !
It works like a charm.
I understood what you did,
I just have a problem with the [^()]*? part between the two function parenthesis at the end of mainExpr.
And what about (?!func\s+). Does it mean that I don’t want a func patern at the right ? Why not a positive lookbehind with ?<= is not working ?Could you explain to a novice ?
-
With the
[^()]*?
(none greedy zero or more characters not being parenthesis) I was aiming for the possibility to include the function parameters in the tree view.(?!(?i:FUNC)\s+))
should have been(?!(?i:FUNC)\b))
so you can even use function names starting with func, Func, fUNC, FUNC, FuNc, etc. e.g.Func functionNameExample() ; function body EndFunc
Positive look behind is supported since Boost v1.33.0.
So in theory it should be supported as Notepad++ is using Boost v1.55.0 for the RegEx engine in its custom Scintilla build. -
Thanks for the explanation
-
Hi!
here is an alternative working version of the author AZJIO http://azjio.ucoz.ru/
You need to Don Ho added support for AU3 functions in functionList.xml
it will be more convenient and useful for many users.
P.S.
Sorry for the emphasis is the translator.<parser id=“au3_function” displayName=“au3 Func” commentExpr=“(((?m)^\h*;.?$)/|((?s)#cs.?#ce))”> <!-- комментарий, где игнорировать -->
<!-- то, к чему совершать прыжок -->
<function
mainExpr=“(?i)^\hFunc\h+[_A-Za-z0-9]+\h(”
displayMode=“$functionName”>
<functionName>
<nameExpr expr=“(?mi)(?<=^Func\h)([_A-Za-z0-9]+)”/> <!-- захватить имена в список функций -->
</functionName>
</function>
</parser> -
@Martian the
commentExpr
is incorrect.FYI PR #2602 - FunctionList Update 2 includes an AutoIt3 parser.
-
@MAPJe71 said:
@Martian the
commentExpr
is incorrect.FYI PR #2602 - FunctionList Update 2 includes an AutoIt3 parser.
Thank you MAPJe71
I meant it to be in the official Notepad ++ installer