| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | 
							- <?xml version="1.0" encoding="UTF-8" ?>
 
- <!-- Copied from  https://github.com/notepad-plus-plus/notepad-plus-plus/issues/4563 -->
 
- <NotepadPlus>
 
- 	<functionList>
 
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
- 			|   Based on:
 
- 			|       http://stackoverflow.com/questions/19246077/how-to-add-lua-functions-to-the-notepad-functionlist-xml
 
- 			|
 
- 			|   Note(s):
 
- 			|   1)  Multi Line Comment `Level` is supported by Lua 5.1 and above;
 
- 			|   2)  Nested table view not supported;
 
- 			\-->
 
- 			<parser
 
- 				displayName="Lua w/ Class"
 
- 				id         ="lua_syntax"
 
- 				commentExpr="(?x)                                               # free-spacing (see `RegEx - Pattern Modifiers`)
 
- 							(?s:                                                # Multi Line Comment (MLC)
 
- 								(?<!-)                                       # - no preceeding dash, otherwise start of SLC
 
- 								-{2}\x5B(?'MLCLvl'=*)\x5B.*?\x5D\k'MLCLvl'\x5D
 
- 							)
 
- 						|	(?m-s:-{2}(?!\x5B=*\x5B).*$)                        # Single Line Comment (SLC)
 
- 						|	(?s:\x22(?:[^\x22\x5C]|\x5C.)*\x22)                 # String Literal - Double Quoted (SLDQ) / Normal String
 
- 						|	(?s:                                                # String Literal - Multi Line    (SLML) / Long   String
 
- 								(?<!-{2})                                    # - no preceeding double dash, otherwise start of MLC or SLC
 
- 								\x5B(?'SLMLLvl'=*)\x5B(?:[^\x5C\x5D]|\x5C.)*\x5D\k'SLMLLvl'\x5D
 
- 							)
 
- 						|	(?s:\x27(?:[^\x27\x5C]|\x5C.)*\x27)                 # String Literal - Single Quoted (SLSQ) / Char   String
 
- 					"
 
- 			>
 
- 				<classRange
 
- 					mainExpr    ="(?x)                                          # free-spacing (see `RegEx - Pattern Modifiers`)
 
- 							[.\w]+
 
- 							\s*=
 
- 							\s*\{
 
- 						"
 
- 					openSymbole ="\{"
 
- 					closeSymbole="\}"
 
- 				>
 
- 					<className>
 
- 						<nameExpr expr="[.\w]+" />
 
- 					</className>
 
- 					<function
 
- 						mainExpr="(?x)                                          # free-spacing (see `RegEx - Pattern Modifiers`)
 
- 								[.\w]+
 
- 								\s*=
 
- 								\s*(?'QT'[\x22\x27]?)\w+\k'QT'
 
- 							"
 
- 					>
 
- 						<functionName>
 
- 							<funcNameExpr expr=".*" />
 
- 						</functionName>
 
- 					</function>
 
- 				</classRange>
 
- 				<function
 
- 					mainExpr="(?x)                                              # free-spacing (see `RegEx - Pattern Modifiers`)
 
- 							(?m-i)                                              # ^ and $ match at line-breaks, case-sensitive
 
- 							(?(DEFINE)                                          # definition of sub-routine(s)
 
- 								(?'VALID_ID'                                    # Valid Identifier sub-routine
 
- 									\b(?!(?-i:                                  # - keywords (case-sensitive), not to be used as identifier
 
- 										and
 
- 									|	break
 
- 									|	do
 
- 									|	e(?:lse(?:if)?|nd)
 
- 									|	f(?:alse|or|unction)
 
- 									|	goto
 
- 									|	i[fn]
 
- 									|	local
 
- 									|	n(?:il|ot)
 
- 									|	or
 
- 									|	re(?:peat|turn)
 
- 									|	t(?:hen|rue)
 
- 									|	until
 
- 									|	while
 
- 									)\b)
 
- 									[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*            # - valid character combination for identifiers
 
- 								)
 
- 							)
 
- 							(?m)                                                # ^ and $ match at line-breaks
 
- 							(?:
 
- 								^\h*                                            # optional leading white-space at start-of-line
 
- 								(?:local\s+)?
 
- 								function\s+
 
- 								\K                                              # discard text matched so far
 
- 								(?&VALID_ID)
 
- 								(?:\s*\.\s*(?&VALID_ID))*
 
- 								(?:\s*:\s*(?&VALID_ID))?
 
- 							|
 
- 								(?&VALID_ID)
 
- 								(?:\s*\.\s*(?&VALID_ID))*
 
- 								\s*=
 
- 								\s*function
 
- 							)
 
- 							\s*\(                                               # start-of-parameter-list indicator
 
- 							[^)]*                                               # optional parameters
 
- 							\)                                                  # end-of-parameter-list indicator
 
- 						"
 
- 				>
 
- 					<functionName>
 
- 						<nameExpr expr="[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*(?=\s*[(=])" />
 
- 					</functionName>
 
- 					<className>
 
- 						<nameExpr expr="[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*(?:\s*\.\s*[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*)*(?=\s*[.:])" />
 
- 					</className>
 
- 				</function>
 
- 			</parser>
 
- 	</functionList>
 
- </NotepadPlus>
 
 
  |