Edit C:\Users\Admin\AppData\Roaming\Notepad++\functionList\baanc.xml
<?xml version="1.0" encoding="UTF-8" ?> <!-- ==========================================================================\ | | To learn how to make your own language parser, please check the following | link: | https://npp-user-manual.org/docs/function-list/ | \=========================================================================== --> <NotepadPlus> <functionList> <!-- ======================================================= [ BaanC ] --> <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Based on: | https://notepad-plus-plus.org/community/topic/14494/functionlist-classrange-question | | Note(s): | 1. Boost::Regex 1.58-1.59 do not correctly handle quantifiers on subroutine calls | therefore the additional non-capturing group i.e. "(?:(?&COMMENT))?" instead | of simply "(?&COMMENT)?" \--> <parser displayName="BaanC Sections" id ="baanc_section" > <classRange mainExpr="(?x) # free-spacing (see `RegEx - Pattern Modifiers`) (?im) # case-insensitive, ^ and $ match at line breaks (?(DEFINE) # definition of sub-routines (?'SECTION' ^\h* # optional leading whitespace at start-of-line (?: # known section names (?:after|before)\.(?:report\.\d+|\w+(?:\.\w+)*\.\d+) | (?:field|zoom\.from)\.(?:all|other|\w+(?:\.\w+)*) | (?:footer|group|header)\.\d+ | choice\.\w+(?:\.\w+)* | detail\.\d+ | form\.(?:all|other|\d+) | functions | main\.table\.io ): # end-of-section-header indicator ) (?'SECTION_EMPTY' ^\h* # optional leading whitespace at start-of-line (?: # known `empty` section names after\.(?:form\.read|program|receive\.data|update\.db\.commit) | before\.(?:(?:display|new)\.object|program) | declaration | on\.(?:display\.total\.line|error) ): # end-of-section-header indicator ) ) (?&SECTION) # section header (?s:.*?) # whatever, (?= # ...up till \s* (?: (?&SECTION) # ...next section header, | (?&SECTION_EMPTY) # ...next `empty` section header | \Z # ...or end-of-text ) ) " > <className> <nameExpr expr="^\h*\K\w+(?:\.\w+)*:" /> </className> <function mainExpr="(?x) # free-spacing (see `RegEx - Pattern Modifiers`) (?im) # case-insensitive, ^ and $ match at line breaks (?(DEFINE) # definition of sub-routines (?'COMMENT' \s*\x7C[^\r\n]* # trailing comment (?: # optional subsequent comment (?:\r?\n|\n?\r) # - mandatory line-break \s*\x7C[^\r\n]* # - `trailing` comment )* ) ) ^\h* # optional leading whitespace at start-of-line (?: \K # discard text matched so far (?: # known sub-section names after\.(?:choice|d(?:elete|isplay)|f(?:ield|orm)|group|input|layout|re(?:ad|write)|skip\.(?:delete|(?:re)?write)|write|zoom) | before\.(?:ch(?:ecks|oice)|d(?:elete|isplay)|f(?:ield|orm)|group|input|layout|print|re(?:ad|write)|write|zoom) | check\.input | domain\.error | init\.(?:f(?:ield|orm)|group) | on\.(?:choice|e(?:ntry|xit)|input) | read\.view | ref\.(?:display|input) | selection\.filter | when\.field\.changes ): # end-of-sub-section-header indicator | function # keyword, start-of-function-header indicator (?:(?&COMMENT))? # optional `embedded` comment (?: # optional storage-class specifier \s+extern (?:(?&COMMENT))? # ...with optional `embedded` comment )? (?: # optional function type specifier \s+(?: boolean | double | long | string | void | domain (?:(?&COMMENT))? # ...with optional `embedded` comment \s+\w+(?:\.\w+)* ) (?:(?&COMMENT))? # ...with optional `embedded` comment )? \s+ \K # discard text matched so far \w+(?:\.\w+)* # function identifier (?:(?&COMMENT)(?:\r?\n|\n?\r))? # optional `embedded` comment \s*\( # start-of-parameter-list indicator ) " > <functionName> <funcNameExpr expr="\w+(?:\.\w+)*(?:\h*:)?" /> </functionName> </function> </classRange> <function mainExpr="(?x) # free-spacing (see `RegEx - Pattern Modifiers`) (?im) # case-insensitive, ^ and $ match at line breaks (?(DEFINE) # definition of sub-routines (?'COMMENT' \s*\x7C[^\r\n]* # trailing comment (?: # optional subsequent comment (?:\r?\n|\n?\r) # - mandatory line-break \s*\x7C[^\r\n]* # - `trailing` comment )* ) ) ^\h* # optional leading whitespace at start-of-line (?: \K # discard text matched so far (?: # known `empty` section names after\.(?:form\.read|program|receive\.data|update\.db\.commit) | before\.(?:display\.object|new\.object|program) | declaration | on\.(?:display\.total\.line|error) ): # end-of-section-header indicator | function # keyword, start-of-function-header indicator (?:(?&COMMENT))? # optional `embedded` comment (?: # optional storage-class specifier \s+extern (?:(?&COMMENT))? # ...with optional `embedded` comment )? (?: # optional function type specifier \s+(?: boolean | double | long | string | void | domain (?:(?&COMMENT))? # ...with optional `embedded` comment \s+\w+(?:\.\w+)* ) (?:(?&COMMENT))? # ...with optional `embedded` comment )? \s+ \K # discard text matched so far \w+(?:\.\w+)* # function identifier (?:(?&COMMENT)(?:\r?\n|\n?\r))? # optional `embedded` comment \s*\( # start-of-parameter-list indicator ) " > <functionName> <nameExpr expr="\w+(?:\.\w+)*(?:\h*:)?" /> </functionName> </function> </parser> </functionList> </NotepadPlus>
Ms-Dos/Windows
Unix
Write backup
jsp File Browser version 1.2 by
www.vonloesch.de