Function List not working in v7.2
-
`
<parser
displayName=“JavaScript”
id =“javascript_function”
commentExpr=“(?s:/.?*/)|(?m-s://.*?$)”bemerkung1="für Kommentar zwischen function header und {. [\n\s]*\{ am Ende gelöscht." bemerkung2="für new Function(...) (?:new\s*)? eingefügt." bemerkung3="für function (a,b,c) ohne Funktionsname ein \s* eingefügt." comment1="comment between function header and function body {, removed [\n\s]*\{" comment2="new Function() : inserted (?:new\s*)? " comment3="function (a,b,c) without function name: inserted \s*" comment4="comment within function header still not recognized. e.g. function /*returns real*/ a(b) { }" comment99="there must be something wrong with processing of commentExpr" > <function mainExpr="((^|\s+|[;\}\.])([A-Za-z_]\w*\.)*[A-Za-z_]\w*\s*[=:]|^|[\s;\}]+)\s*(?:new\s*)?function(\s+[A-Za-z_]?\w*\s*\([^\)\(]*\)|s*\([^\)\(]*\))" > <functionName> <nameExpr expr="[A-Za-z_]\w*\s*[=:]|[A-Za-z_]?\w*\s*\(" /> <nameExpr expr="[A-Za-z_]?\w*" /> </functionName> <className> <nameExpr expr="([A-Za-z_]\w*\.)*[A-Za-z_]\w*\." /> <nameExpr expr="([A-Za-z_]\w*\.)*[A-Za-z_]\w*" /> </className> </function> </parser>`
-
trying again, by content and by form
<parser displayName="JavaScript" id ="javascript_function" XcommentExpr="(?s:/\*.*?\*/)|(?m-s://.*?$)" bemerkung1="für Kommentar zwischen function header und {. [\n\s]*\{ am Ende gelöscht." bemerkung2="für new Function(...) (?:new\s*)? eingefügt." bemerkung3="für function (a,b,c) ohne Funktionsname ein \s* eingefügt." bemerkung4="Kommentar im Funktionsheader wird nicht behandelt, z.B. function /*returns real*/ a(b) { } " bemerkung5="commentExpr überhaupt X-ed." bemerkung99="Es muss etwas falsch sein mit commentExpr durch nichts ersetzen." comment1="Comment between function header and function body {: removed [\n\s]*\{ " comment2="new Function(): inserted (?:new\s*)? " comment3="function (a,b,c) without function name: inserted \s*" comment4="Comment within function header still not handled. e.g. function /*returns real*/ a(b) { } " comment5="commentExpr disabled: X-ed." comment99="There must be something wrong in NPP when replacing commentExpr by nothing." > <function mainExpr="((^|\s+|[;\}\.])([A-Za-z_]\w*\.)*[A-Za-z_]\w*\s*[=:]|^|[\s;\}]+)\s*(?:new\s*)?function(\s+[A-Za-z_]?\w*\s*\([^\)\(]*\)|s*\([^\)\(]*\))" > <functionName> <nameExpr expr="[A-Za-z_]\w*\s*[=:]|[A-Za-z_]?\w*\s*\(" /> <nameExpr expr="[A-Za-z_]?\w*" /> </functionName> <className> <nameExpr expr="([A-Za-z_]\w*\.)*[A-Za-z_]\w*\." /> <nameExpr expr="([A-Za-z_]\w*\.)*[A-Za-z_]\w*" /> </className> </function> </parser>
-
Notepad++ uses the
commentExpr
to determine which parts of the text to skip when searching for classes, methods and/or functions.
“Embedded” comments are not supported. -
@t12122013-Fink
See also issues #344 and #1023 on GitHub. -
C# function list fix for v7.4.2
Basically copy the function section inside classRange and paste it at the same level of classRange.
<!-- ========================================================== [ C# ] --><!-- | Based on: | http://sourceforge.net/p/notepad-plus/patches/613/ \--> <parser displayName="C#" id ="csharp_class" commentExpr="(?s:/\*.*?\*/)|(?m-s://.*?$)" > <classRange mainExpr ="^[\t\x20]*((public|protected|private|internal)\s+)?(\w+\s*)?(class|struct|interface)[\t\x20]+[^\{]+\{" openSymbole ="\{" closeSymbole="\}" > <className> <nameExpr expr="(class|struct|interface)[\t\x20]+\w+" /> <nameExpr expr="[\t\x20]+\w+" /> <nameExpr expr="\w+" /> </className> <function mainExpr="^[^\S\r\n]*(?<modifier1>(?:public|protected|internal|private)\s*)?(?<modifier2>(?:new|static|virtual|sealed|override|abstract|extern)\s*)?(partial\s*)?(?<type>(?!(return|if|else))\w+(?<genericType><[\w,\s<>]+>)?\s+)(?<name>\w+(?<genericNameType><[\w,\s<>]+>)?\s?)\((?<params>[\w\s,<>\[\]\:=\.]*)\)(?<ctorChain>\s*\:\s*(?:base|this)\s*\((?<ctorParams>[\w\s,<>\[\]\:=\.]*)\))?[\w\s<>\:,\(\)\[\]]*(?:\{|;)" > <functionName> <funcNameExpr expr="(\w+(<[\w,\s<>]+>)?\s?)\(" /> <funcNameExpr expr="(\w+(<[\w,\s<>]+>)?\s?)" /> </functionName> </function> </classRange> <function mainExpr="^[^\S\r\n]*(?<modifier1>(?:public|protected|internal|private)\s*)?(?<modifier2>(?:new|static|virtual|sealed|override|abstract|extern)\s*)?(partial\s*)?(?<type>(?!(return|if|else))\w+(?<genericType><[\w,\s<>]+>)?\s+)(?<name>\w+(?<genericNameType><[\w,\s<>]+>)?\s?)\((?<params>[\w\s,<>\[\]\:=\.]*)\)(?<ctorChain>\s*\:\s*(?:base|this)\s*\((?<ctorParams>[\w\s,<>\[\]\:=\.]*)\))?[\w\s<>\:,\(\)\[\]]*(?:\{|;)" > <functionName> <funcNameExpr expr="(\w+(<[\w,\s<>]+>)?\s?)\(" /> <funcNameExpr expr="(\w+(<[\w,\s<>]+>)?\s?)" /> </functionName> </function> </parser>
-
@ MAPJe71
Thank you for the explanation about comment handling. Of course I assumed Notepad++ would strip comments lexically, replacing them by an empty string, and only then apply mainExpr, but it seems not to be the case.For my situation and needs I prefer to disable commentExpr at all, and do the other minor improvements written in my comments. I do get all functions, and do not get false functions. Reasoning, I do not have functions inside comments, and I do not place comments in function headers except between ) and { . Besides that, functions temporarely commented out, may still count as functions.
At least the <parser> above is a partial proposal to my and other’s issues.By the way do you have an idea how to remove the mis-written earlier posts. I was not fluent with this BB and with markup language, and is there a preview?
-
how to remove the mis-written earlier posts
Use delete in the three-dots menu right next to
^ 0 v
.is there a preview?
As soon as you hit
reply
to open the edit pane you get either a preview pane on the right or ashow preview
option in the top right corner of the edit pane. -
I’m only allowed to delete within 180 seconds. And today I get the preview, but yesterday there was none (preview availability depends on browser window width) . The BB is not easy but I’m motivated.
About the issue, I propose to disable commentExpr because of the following cases:
function setdata(x,y,z,w) // set coordinates x y z w
function setdata(x,y,z,w) /* set coordinates x y z w */
Functionlist will detect the function if there are two spaces between ) and the comment, but will not detect the function if there is just one space. My mainExpr as above given, stops after ) and does not eat one space.
-
@David-Liang Doesn’t work :(
-
i have problem too with Javascript functionList. I change the langID=58 (L_JAVASCRIPT) to langID=19 (L_JS) at :
<association id= “javascript_function” langID=“19” />
and it work verywell.
-
This was bothering me for a while - turns out that even though I tick “don’t use roaming profiles” when installing, it still does so.
And the old config file was from 2016. So I simply copied the new version over from the notepad install dir and everything is OK now! -
I recovered from this problem by uninstalling notepad++ and then renaming what was left in Program Files to oldNotepad++, then reinstalling notepad++. Something obviously is out of whack.
Takes less time this way