Setup Notepad++ for AutoHotkey

Discuss features, issues, about Editors for AHK
User avatar
boiler
Posts: 2372
Joined: 21 Dec 2014, 02:44

Re: Setup Notepad++ for AutoHotkey

19 Feb 2017, 10:29

jNizM wrote:[Auto-Completion]
1. Download AutoHotkey.xml as raw (Right-click and choosing save as target...)
2. Save it to the right location (C:\Program Files (x86)\Notepad++\plugins\APIs\)
3. Start Notepad++ and click on Menu Settings --> Preferences
4. Click on Auto-Completion and activate Enable auto-completion on each input
5. (recommendation: From 2th character, Function completion, Function parameters hint on input)

- Autocomplete ( Download | Preview )
I had always thought that the function parameters hint functionality must only work for functions, since that's the only time I was able to activate them (after typing the function name and the open parenthesis), but now I went in and looked at jNizM's xml file, and I see it has all the parameter definitions for commands as well. Is there a way to activate the parameter hints for commands? If so, I never knew you could, and now that I see the info is there, I can't figure out how to make them appear.
KusochekDobra
Posts: 32
Joined: 25 Apr 2016, 18:00

Re: Setup Notepad++ for AutoHotkey

26 Feb 2017, 17:38

boiler wrote:
KusochekDobra wrote:Hello everyone!
I use "notepad++ v7.2.2" and do not understand, how to install plugin FunctionList. Zip with all content "notepad++" now a have this plugin and him "functionlist.xml" do not have a rule for AHK, described in "FunctionListRule.xml" in the plugin located in "sourceforge.net". Rule in this thread - is not working properly showing everything, including variable after a name which is a sign ":".
Help me in this question please. And sorry for my bad english.
Did you edit the file functionList.xml as was described in the other thread? Perhaps you didnn't add the new information in the correct location in that file. Can you post the contents of your function list.xml file? Please put it between tags.
Im insert new code from last example this thread.

Code: Select all

<?xml version="1.0" encoding="UTF-8" ?>
<!-- ==========================================================================\
|
|   To learn how to make your own language parser, please check the following
|   link:
|       http://notepad-plus-plus.org/features/function-list.html
|
\=========================================================================== -->
<NotepadPlus>
	<functionList>
		<associationMap>
		<!--
			langID:

			Don't use L_JS (19) use L_JAVASCRIPT (58) instead!
			Don't use L_USER and L_EXTERNAL, use extension or UDL name association instead!

			L_ADA          = 42 | L_DIFF         = 33 | L_LISP         = 30 | L_SCHEME       = 31
			L_ASCII        = 14 | L_EXTERNAL     = 60 | L_LUA          = 23 | L_SEARCHRESULT = 47
			L_ASM          = 32 | L_FLASH        = 27 | L_MAKEFILE     = 10 | L_SMALLTALK    = 37
			L_ASP          = 16 | L_FORTRAN      = 25 | L_MATLAB       = 44 | L_SQL          = 17
			L_AU3          = 40 | L_FORTRAN_77   = 59 | L_NSIS         = 28 | L_TCL          = 29
			L_BASH         = 26 | L_GUI4CLI      = 51 | L_OBJC         =  5 | L_TEX          = 24
			L_BATCH        = 12 | L_HASKELL      = 45 | L_PASCAL       = 11 | L_TEXT         =  0
			L_C            =  2 | L_HTML         =  8 | L_PERL         = 21 | L_USER         = 15
			L_CAML         = 41 | L_INI          = 13 | L_PHP          =  1 | L_VB           = 18
			L_CMAKE        = 48 | L_INNO         = 46 | L_POWERSHELL   = 53 | L_VERILOG      = 43
			L_COBOL        = 50 | L_JAVA         =  6 | L_PROPS        = 34 | L_VHDL         = 38
			L_COFFEESCRIPT = 56 | L_JAVASCRIPT   = 58 | L_PS           = 35 | L_XML          =  9
			L_CPP          =  3 | L_JS           = 19 | L_PYTHON       = 22 | L_YAML         = 49
			L_CS           =  4 | L_JSON         = 57 | L_R            = 54 |
			L_CSS          = 20 | L_JSP          = 55 | L_RC           =  7 |
			L_D            = 52 | L_KIX          = 39 | L_RUBY         = 36 |

			 0 = L_TEXT         | 16 = L_ASP          | 32 = L_ASM          | 48 = L_CMAKE
			 1 = L_PHP          | 17 = L_SQL          | 33 = L_DIFF         | 49 = L_YAML
			 2 = L_C            | 18 = L_VB           | 34 = L_PROPS        | 50 = L_COBOL
			 3 = L_CPP          | 19 = L_JS           | 35 = L_PS           | 51 = L_GUI4CLI
			 4 = L_CS           | 20 = L_CSS          | 36 = L_RUBY         | 52 = L_D
			 5 = L_OBJC         | 21 = L_PERL         | 37 = L_SMALLTALK    | 53 = L_POWERSHELL
			 6 = L_JAVA         | 22 = L_PYTHON       | 38 = L_VHDL         | 54 = L_R
			 7 = L_RC           | 23 = L_LUA          | 39 = L_KIX          | 55 = L_JSP
			 8 = L_HTML         | 24 = L_TEX          | 40 = L_AU3          | 56 = L_COFFEESCRIPT
			 9 = L_XML          | 25 = L_FORTRAN      | 41 = L_CAML         | 57 = L_JSON
			10 = L_MAKEFILE     | 26 = L_BASH         | 42 = L_ADA          | 58 = L_JAVASCRIPT
			11 = L_PASCAL       | 27 = L_FLASH        | 43 = L_VERILOG      | 59 = L_FORTRAN_77
			12 = L_BATCH        | 28 = L_NSIS         | 44 = L_MATLAB       | 60 = L_EXTERNAL
			13 = L_INI          | 29 = L_TCL          | 45 = L_HASKELL      |
			14 = L_ASCII        | 30 = L_LISP         | 46 = L_INNO         |
			15 = L_USER         | 31 = L_SCHEME       | 47 = L_SEARCHRESULT |

			if langID cannot be found above, you can set the file extensions ...

			<association id="my_parser_id" ext=".my_parser_ext1" />
			<association id="my_parser_id" ext=".my_parser_ext2" />

			and for User Defined Languages (UDL's) use ...

			<association id="my_parser_id" userDefinedLangName="My UDL Name" />


			Note(s):
				Not required, just a guide.
				Suffix		Indicates
				~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
				_class		parser has a class part only
				_function	parser has a function part only
				_syntax		parser has both a class and function part
		-->
			<!-- ======================================================================== -->
			<!--         ___ parserID                                                     -->
			<!--         V                                                                -->
			<association id=         "php_syntax"     langID= "1"                          />
			<association id=           "c_function"   langID= "2"                          />
			<association id=   "cplusplus_syntax"     langID= "3"                          />
			<association id=      "csharp_class"      langID= "4"                          />
			<association id=        "java_syntax"     langID= "6"                          />
			<association id=         "xml_node"       langID= "9"                          />
<!--		<association id="functionlist_syntax"     langID= "9"                          /> -->
			<association id=       "batch_label"      langID="12"                          />
			<association id=         "ini_section"    langID="13"                          />
			<association id=        "perl_function"   langID="21"                          />
			<association id=      "python_syntax"     langID="22"                          />
			<association id=        "bash_function"   langID="26"                          />
			<association id=        "nsis_syntax"     langID="28"                          />
			<association id=    "assembly_subroutine" langID="32"                          />
			<association id=        "ruby_syntax"     langID="36"                          />
			<association id=     "autoit3_function"   langID="40"                          />
			<association id=   "innosetup_syntax"     langID="46"                          />
			<association id=  "powershell_function"   langID="53"                          />
			<association id=  "javascript_function"   langID="58"                          />
			<!-- ======================================================================== -->
			<association id=         "krl_function"   userDefinedLangName="KRL"            />
			<association id=         "krl_function"   ext=".src"                           />
			<association id=         "krl_function"   ext=".sub"                           />
			<!-- ======================================================================== -->
			<association id=   "sinumerik_function"   userDefinedLangName="Sinumerik"      />
			<association id=   "sinumerik_function"   ext=".arc"                           />
			<!-- ======================================================================== -->
			<association id=    "universe_basic"      userDefinedLangName="UniVerse BASIC" />
			<association id=    "universe_basic"      ext=".bas"                           />
			<!-- ======================================================================== -->
			
			<association ext=".ahk" id="ahk_function"/>
			<association userDefinedLangName="AutoHotkey" id="ahk_function"/>
			
		</associationMap>
		<parsers>
			<parser id="ahk_function" displayName="AHK" commentExpr="(\/\*[\s+\w+\n]{1,}\*\/)|(^;[\s+\w+]{1,})">
				<!-- AutoHotKey Function List -->
				<classRange
					mainExpr="^[\t ]*(class|struct)[\t ]+[\w]+([\t ]+|[\t ]+(extends)[\s]+(\,[\t ]*|(\\|[\w][\w]*))+[\s]*)?[\r\n\t\s]*\{"
					openSymbole = "\{"
					closeSymbole = "\}"
					displayMode="node">
					<className>
						<nameExpr expr="(class|struct)[\t ]+[\w]+"/>
						<nameExpr expr="[\t ]+[\w]+"/>
						<nameExpr expr="[\w]+"/>
					</className>
					<function
						mainExpr="^[\t ]*(?!(if|while|for))([a-zA-Z0-9#!^+&<>*~$_:])+\d*(\([\w+:=\d\s,"#]*\)[\s\r\n\t]*\{|:(?![^\r\n\t\s]):?)">
						<functionName>
							<funcNameExpr expr="([a-zA-Z0-9#!^+&<>*~$_:])+\d*(\([\w+:=\d\s,"#]*\)|::?)"/>
						</functionName>
					</function>
				</classRange>
				<function
					mainExpr="^[\t ]*(?!(if|while|for))([a-zA-Z0-9#!^+&<>*~$_:])+\d*(\([\w+:=\d\s,"#]*\)[\s\r\n\t]*\{|:(?![^\r\n\t\s]):?)"
					displayMode="$className->$functionName">
					<functionName>
						<nameExpr expr="([a-zA-Z0-9#!^+&<>*~$_:])+\d*(\([\w+:=\d\s,"#]*\)|::?)"/>
					</functionName>
				</function>
			</parser>
			<!-- ========================================================= [ PHP ] -->
			<!-- PHP - Personal Home Page / PHP Hypertext Preprocessor             -->

			<parser
				id         ="php_syntax"
				displayName="PHP"
				commentExpr="(?s:/\*.*?\*/)|(?m-s://.*?$)"
			>
				<classRange
					mainExpr    ="^\s*(class|abstract\s+class|final\s+class)[\t\x20]+[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*(\s*|\s*(extends|implements|(extends\s+(\\|[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*)+\s+implements))\s+(\,\s*|(\\|[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*))+\s*)?\{"
					openSymbole ="\{"
					closeSymbole="\}"
				>
					<className>
						<nameExpr expr="(class|abstract\s+class|final\s+class)\s+\w+" />
						<nameExpr expr="\s+\w+\Z" />
						<nameExpr expr="\w+\Z" />
					</className>
					<function
						mainExpr="^\s*((static|public|protected|private|final)*(\s+(static|public|protected|private|final))+\s+)?(function\s+)+(\w+(\s+\w+)?(\s+|\*\s+|\s+\*|\s+\*\s+))?(\w+\s*::)?(?!(if|while|for|switch))[\w~]+\s*\([^\{]*\{"
					>
						<functionName>
							<funcNameExpr expr="(?!(if|while|for|switch))\w+\s*\([^\{]*" />
							<!-- comment out the following node to display the method with parameters -->
							<funcNameExpr expr="(?!(if|while|for|switch))\w+" />
						</functionName>
					</function>
				</classRange>
				<function
					mainExpr="^\s*function\s+\w+\("
				>
					<functionName>
						<nameExpr expr="(?!(if|while|for))\w+\s*\(" />
						<nameExpr expr="(?!(if|while|for))\w+" />
					</functionName>
					<className>
						<nameExpr expr="\w+(?=\s*::)" />
					</className>
				</function>
			</parser>

			<!-- =========================================================== [ C ] -->

			<parser
				displayName="C"
				id         ="c_function"
				commentExpr="(?x)                                               # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?s:\x2F\x2A.*?\x2A\x2F)                        # Multi Line Comment
							|	(?m-s:\x2F{2}.*$)                               # Single Line Comment
							|	(?s:\x22(?:[^\x22\x5C]|\x5C.)*\x22)             # String Literal - Double Quoted
							|	(?s:\x27(?:[^\x27\x5C]|\x5C.)*\x27)             # String Literal - Single Quoted
							"
			>
				<function
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							(?:                                                 # Declaration specifiers
								\b
								(?:
									(?-i:auto|register|static|extern|typedef)   # Storage class specifier
								|	(?:                                         # Type specifier
										(?-i:void|char|short|int|long|float|double|(?:un)?signed)
									|	(?-i:struct|union|enum)
										\s+
										(?&VALID_ID)                        # Struct, Union or Enum Specifier (simplified)
									|	(?&VALID_ID)                        # Type-definition name
									)
								|	(?'TYPE_QUALIFIER'(?-i:const|volatile))
								)
								\b
								\s*
							)*
							(?'DECLARATOR'
								(?'POINTER'
									\*
									\s*
									(?:
										\b(?&TYPE_QUALIFIER)\b
										\s*
									)*
									(?:(?&POINTER))?                        # Boost::Regex 1.58-1.59 do not correctly handle quantifiers on subroutine calls
								)?
								(?:                                             # 'DIRECT_DECLARATOR'
									\s*
									(?'VALID_ID'                                # valid identifier, use as subroutine
										\b(?!(?-i:
											auto
										|	break
										|	c(?:ase|har|on(?:st|ntinue))
										|	d(?:efault|o(?:uble)?)
										|	e(?:lse|num|xtern)
										|	f(?:loat|or)
										|	goto
										|	i(?:f|n(?:t|line))
										|	long
										|	while
										|	re(?:gister|strict|turn)
										|	s(?:hort|i(?:gned|zeof)|t(?:atic|ruct)|witch)
										|	typedef
										|	un(?:ion|signed)
										|	vo(?:id|latile)
										|	_(?:
												A(?:lignas|lignof|tomic)
											|	Bool
											|	Complex
											|	Generic
											|	Imaginary
											|	Noreturn
											|	Static_assert
											|	Thread_local
											)
										)\b)                                    # keywords, not to be used as identifier
										[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*        # valid character combination for identifiers
									)
								|	\s*\(
									(?&DECLARATOR)
									\)
								|	\s*(?&VALID_ID)
									\s*\[
									[^[\];{]*?
									\]
								|	\s*(?&VALID_ID)
									\s*\(
									[^();{]*?
									\)
								)
								\s*
							)
							(?=\{)                                              # start of function body
						"
				>
					<functionName>
						<nameExpr expr="(?x)                                    # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*
								\s*\(                                           # start of parameters
								(?s:.*?)                                        # whatever, until...
								\)                                              # end   of parameters
							" />
						<!-- comment out the following node to display the method with its parameters -->
<!--						<nameExpr expr="[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*" /> -->
					</functionName>
				</function>
			</parser>

			<!-- ========================================================= [ C++ ] -->

			<parser
				displayName="C++"
				id         ="cplusplus_syntax"
				commentExpr="(?s:/\*.*?\*/)|(?m-s://.*?$)"
			>
				<classRange
					mainExpr    ="^[\t\x20]*(class|struct)[\t\x20]+\w+\s*(final)?\s*(:\s*(public|protected|private)\s+\w+\s*)?\{"
					openSymbole ="\{"
					closeSymbole="\}"
				>
					<className>
						<nameExpr expr="(class|struct)[\t\x20]+\w+" />
						<nameExpr expr="[\t\x20]+\w+" />
						<nameExpr expr="\w+" />
					</className>
					<function
						mainExpr="^[\t\x20]*((static|const|virtual)\s+)?(\w+(\s+\w+)?(\s+|(\*|\*\*|&)\s+|\s+(\*|\*\*|&)|\s+(\*|\*\*|&)\s+))?(\w+\s*::)?(?!(if|while|for|switch))[\w~]+\s*\([^\)\(]*\)(\s*const\s*)?(\s*(final|override|final\s*override|override\s*final)\s*)?[\n\s]*\{"
					>
						<functionName>
							<funcNameExpr expr="(?!(if|while|for|switch))[\w~]+\s*\(" />
							<funcNameExpr expr="(?!(if|while|for|switch))[\w~]+" />
						</functionName>
					</function>
				</classRange>
				<function
					mainExpr="^[\t\x20]*((static|const|virtual)\s+)?\w+(\s+\w+)?(\s+|(\*|\*\*|&)\s+|\s+(\*|\*\*|&)|\s+(\*|\*\*|&)\s+)(\w+\s*::)?(?!(if|while|for))\w+\s*\([^\)\(]*\)(\s*const\s*)?[\n\s]*\{"
				>
					<functionName>
						<nameExpr expr="(?!(if|while|for))\w+\s*\(" />
						<nameExpr expr="(?!(if|while|for))\w+" />
					</functionName>
					<className>
						<nameExpr expr="\w+(?=\s*::)" />
					</className>
				</function>
			</parser>

			<!-- ========================================================== [ 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>
			</parser>

			<!-- ======================================================== [ Java ] -->

			<!--
			|   Based on:
			|       https://notepad-plus-plus.org/community/topic/12691/function-list-with-java-problems
			\-->
			<parser
				displayName="Java"
				id         ="java_syntax"
			>
				<classRange
					mainExpr    ="(?x)                                          # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							(?m)^[\t\x20]*                                      # leading whitespace
							(?:
								(?-i:
									abstract
								|	final
								|	native
								|	p(?:rivate|rotected|ublic)
								|	s(?:tatic|trictfp|ynchronized)
								|	transient
								|	volatile
								|	@[A-Za-z_]\w*                               # qualified identifier
									(?:                                         # consecutive names...
										\.                                      # ...are dot separated
										[A-Za-z_]\w*
									)*
								)
								\s+
							)*
							(?-i:class|enum|@?interface)
							\s+
							(?'DECLARATOR'
								(?'VALID_ID'                                    # valid identifier, use as subroutine
									\b(?!(?-i:
										a(?:bstract|ssert)
									|	b(?:oolean|reak|yte)
									|	c(?:ase|atch|har|lass|on(?:st|tinue))
									|	d(?:efault|o(?:uble)?)
									|	e(?:lse|num|xtends)
									|	f(?:inal(?:ly)?|loat|or)
									|	goto
									|	i(?:f|mp(?:lements|ort)|nstanceof|nt(?:erface)?)
									|	long
									|	n(?:ative|ew)
									|	p(?:ackage|rivate|rotected|ublic)
									|	return
									|	s(?:hort|tatic|trictfp|uper|witch|ynchronized)
									|	th(?:is|rows?)|tr(?:ansient|y)
									|	vo(?:id|latile)
									|	while
									)\b)                                        # keywords, not to be used as identifier
									[A-Za-z_]\w*                                # valid character combination for identifiers
								)
								(?:
									\s*\x3C                                     # start-of-template indicator...
									(?'GENERIC'                                 # ...match first generic, use as subroutine
										\s*
										(?:
											(?&DECLARATOR)                  # use named generic
										|	\?                                  # or unknown
										)
										(?:                                     # optional type extension
											\s+(?-i:extends|super)
											\s+(?&DECLARATOR)
											(?:                                 # multiple bounds...
												\s+\x26                         # ...are ampersand separated
												\s+(?&DECLARATOR)
											)*
										)?
										(?:                                     # match consecutive generics objects...
											\s*,                                # ...are comma separated
											(?&GENERIC)
										)?
									)
									\s*\x3E                                     # end-of-template indicator
								)?
								(?:                                             # package and|or nested classes...
									\.                                          # ...are dot separated
									(?&DECLARATOR)
								)?
							)
							(?:                                                 # optional object extension
								\s+(?-i:extends)
								\s+(?&DECLARATOR)
								(?:                                             # consecutive objects...
									\s*,                                        # ...are comma separated
									\s*(?&DECLARATOR)
								)*
							)?
							(?:                                                 # optional object implementation
								\s+(?-i:implements)
								\s+(?&DECLARATOR)
								(?:                                             # consecutive objects...
									\s*,                                        # ...are comma separated
									\s*(?&DECLARATOR)
								)*
							)?
							\s*\{                                               # whatever, up till start-of-body indicator
						"
					openSymbole ="\{"
					closeSymbole="\}"
				>
					<className>
						<nameExpr expr="(?-i:class|enum|@?interface)\s+\K\w+(?:\s*\x3C.*?\x3E)?" />
					</className>
					<function
						mainExpr="(?x)                                          # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								^[\t\x20]*                                      # leading whitespace
								(?:
									(?-i:
										abstract
									|	final
									|	native
									|	p(?:rivate|rotected|ublic)
									|	s(?:tatic|trictfp|ynchronized)
									|	transient
									|	volatile
									|	@[A-Za-z_]\w*                           # qualified identifier
										(?:                                     # consecutive names...
											\.                                  # ...are dot separated
											[A-Za-z_]\w*
										)*
									)
									\s+
								)*
								(?:
									\s*\x3C                                     # start-of-template indicator
									(?&GENERIC)
									\s*\x3E                                     # end-of-template indicator
								)?
								\s*
								(?'DECLARATOR'
									[A-Za-z_]\w*                                # (parent) type name
									(?:                                         # consecutive sibling type names...
										\.                                      # ...are dot separated
										[A-Za-z_]\w*
									)*
									(?:
										\s*\x3C                                 # start-of-template indicator
										(?'GENERIC'                             # match first generic, use as subroutine
											\s*
											(?:
												(?&DECLARATOR)              # use named generic
											|	\?                              # or unknown
											)
											(?:                                 # optional type extension
												\s+(?-i:extends|super)
												\s+(?&DECLARATOR)
												(?:                             # multiple bounds...
													\s+\x26                     # ...are ampersand separated
													\s+(?&DECLARATOR)
												)*
											)?
											(?:                                 # consecutive generics objects...
												\s*,                            # ...are comma separated
												(?&GENERIC)
											)?
										)
										\s*\x3E                                 # end-of-template indicator
									)?
									(?:                                         # package and|or nested classes...
										\.                                      # ...are dot separated
										(?&DECLARATOR)
									)?
									(?:                                         # optional compound type...
										\s*\[                                   # ...start-of-compound indicator
										\s*\]                                   # ...end-of-compound indicator
									)*
								)
								\s+
								(?'VALID_ID'                                    # valid identifier, use as subroutine
									\b(?!(?-i:
										a(?:bstract|ssert)
									|	b(?:oolean|reak|yte)
									|	c(?:ase|atch|har|lass|on(?:st|tinue))
									|	d(?:efault|o(?:uble)?)
									|	e(?:lse|num|xtends)
									|	f(?:inal(?:ly)?|loat|or)
									|	goto
									|	i(?:f|mp(?:lements|ort)|nstanceof|nt(?:erface)?)
									|	long
									|	n(?:ative|ew)
									|	p(?:ackage|rivate|rotected|ublic)
									|	return
									|	s(?:hort|tatic|trictfp|uper|witch|ynchronized)
									|	th(?:is|rows?)|tr(?:ansient|y)
									|	vo(?:id|latile)
									|	while
									)\b)                                        # keywords, not to be used as identifier
									[A-Za-z_]\w*                                # valid character combination for identifiers
								)
								\s*\(                                           # start-of-parameters indicator
								(?'PARAMETER'                                   # match first parameter, use as subroutine
									\s*(?-i:final\s+)?
									(?&DECLARATOR)
									\s+(?&VALID_ID)                         # parameter name
									(?:                                         # consecutive parameters...
										\s*,                                    # ...are comma separated
										(?&PARAMETER)
									)?
								)?
								\)                                              # end-of-parameters indicator
								(?:                                             # optional exceptions
									\s*(?-i:throws)
									\s+(?&VALID_ID)                         # first exception name
									(?:                                         # consecutive exception names...
										\s*,                                    # ...are comma separated
										\s*(?&VALID_ID)
									)*
								)?
								[^{;]*\{                                        # start-of-function-body indicator
							"
					>
						<functionName>
							<funcNameExpr expr="\w+(?=\s*\()" />
						</functionName>
					</function>
				</classRange>
			</parser>

			<!-- ========================================================= [ XML ] -->
			<!-- XML - eXtensible Markup Language                                  -->

			<parser
				displayName="XML Node"
				id         ="xml_node"
				commentExpr="(?x)                                               # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?:\x3C!--(?:[^\-]|-(?!-\x3E))*--\x3E)          # Multi Line Comment
							"
			>
				<function
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							\x3C                                                # begin of node
							(?:
								(?-i:\?XML)                                     # only name of root node is allowed to start with a question mark
							|	\w+(?::\w+)?                                    # a node name can contain a colon e.g. `xs:schema`
							)
							(?:                                                 # match attributes
								\s+                                             # at least one whitespace before attribute-name
								\w+(?::\w+)?                                    # an attribute name can contain a colon e.g. `xmlns:xs`
								\h*=\h*                                         # name-value separator can be surrounded by blanks
								(?:                                             # quoted attribute value, embedded escaped quotes allowed...
									\x22(?:[^\x22\x5C]|\x5C.)*?\x22             # ...double quoted...
								|	\x27(?:[^\x27\x5C]|\x5C.)*?\x27             # ...single quoted
								)
							)+                                                  # only match nodes with at least one attribute
						"
				>
					<functionName>
						<nameExpr expr="[^\x3C]*" />
					</functionName>
				</function>
			</parser>
			<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			|   Show each FunctionList `association`-node as a leaf in an
			|   `assiociationMap` branch and each `parser`-node as a leaf in a
			|   `parsers` branch of the FunctionList tree
			\-->
			<parser
				displayName="XML of Function List"
				id         ="functionlist_syntax"
				commentExpr="(?x)                                               # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?:\x3C!--(?:[^\-]|-(?!-\x3E))*--\x3E)          # Multi Line Comment
							"
			>
				<classRange
					mainExpr    ="(?xs)                                         # can span multiple lines
							\x3C(?'COMPOUND'associationMap|parsers)\x3E         # begin of a `associationMap` or `parsers`-node
							.*?                                                 # include anything between the node`s tags
							\x3C/\k'COMPOUND'\x3E                               # end of the applicable node
						"
				>
					<!--
					|   Use the node's name as label for the branch
					\-->
					<className>
						<nameExpr expr="\x3C\w+\x3E" />
						<nameExpr expr="\w+" />
					</className>
					<function
						mainExpr="(?x)                                          # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								\x3C(?:association|parser)                      # begin of a `association` or `parser`-node
								(?:                                             # match attributes
									\s+\w+                                      # at least one whitespace before attribute-name
									\h*=\h*                                     # name-value separator can be surrounded by blanks
									(?:                                         # quoted attribute value, embedded escaped quotes allowed...
										\x22(?:[^\x22\x5C]|\x5C.)*?\x22         # ...double quoted...
									|	\x27(?:[^\x27\x5C]|\x5C.)*?\x27         # ...single quoted
									)
								)+                                              # only match nodes with at least one attribute
								\s*/?\x3E                                       # end of the node or node-tag resp.
							"
					>
						<!--
						|   For `association`-nodes use its `id`-attribute value as its leaf
						|   name and for `parser`-nodes use its `displayName`-attribute value.
						|   NOTE: to be able to use the node's `displayName`-attribute,
						|         make sure it's defined before the `id`-attribute.
						\-->
						<functionName>
							<funcNameExpr expr="(?x)                            # Utilize inline comments (see `RegEx - Pattern Modifiers`)
									(?:displayName|\bid)
									\h*=\h*
									(?:
										\x22(?:[^\x22\x5C]|\x5C.)*?\x22
									|	\x27(?:[^\x27\x5C]|\x5C.)*?\x27
									)
								"
							/>
							<funcNameExpr expr="(?<=[\x22\x27])(?:[^\x22\x27\x5C]|\x5C.)*?(?=[\x22\x27])" />
						</functionName>
					</function>
				</classRange>
				<!--
				|   Fallback: show each `parser`-node as a leaf of the root in the FunctionList tree
				\-->
				<function
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							\x3Cparser                                          # begin of a `parser`-node
							(?:                                                 # match attributes
								\s+\w+                                          # at least one whitespace before attribute-name
								\h*=\h*                                         # name-value separator can be surrounded by blanks
								(?:                                             # quoted attribute value, embedded escaped quotes allowed..
									\x22(?:[^\x22\x5C]|\x5C.)*?\x22             # ...double quoted...
								|	\x27(?:[^\x27\x5C]|\x5C.)*?\x27             # ...single quoted
								)
							)+                                                  # only match nodes with at least one attribute
							\s*/?\x3E                                           # end of the `parser`-node-tag
						"
				>
					<!--
					|   Use the `displayName`-attribute value as leaf name.
					\-->
					<functionName>
						<nameExpr expr="displayName\h*=\h*(?:\x22(?:[^\x22\x5C]|\x5C.)*?\x22|\x27(?:[^\x27\x5C]|\x5C.)*?\x27)" />
						<nameExpr expr="(?<=[\x22\x27])(?:[^\x22\x27\x5C]|\x5C.)*?(?=[\x22\x27])" />
					</functionName>
				</function>
			</parser>

			<!-- ================================ [ Batch / Command Shell Script ] -->

			<parser
				displayName="Batch / Command Shell Script"
				id         ="batch_label"
				commentExpr="(?x)                                               # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?m-s:(?i:REM)(?:\h.+)?$)                       # Single Line Comment 1
							|	(?m-s::{2}.*$)                                  # Single Line Comment 2
							"
			>
				<function
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							(?m-s)                                              # enforce strict line by line search
							^                                                   # label starts at the beginning of a line,...
							\h*                                                 # ...can be preceded by blank characters and
							:                                                   # ...starts with a colon
							\K                                                  # keep the text matched so far, out of the overall match
							\w                                                  # a label name has to start with a word character,...
							[\w.\-]+                                            # ...the remainder of the name can contain dots and minus signs and
							\b                                                  # ...ends at a word boundary i.e. discard any trailing characters
						"
				/>
			</parser>

			<!-- ========================================= [ Initialisation File ] -->
			<!-- File format used for: .INF / .INI / .REG / .editorconfig          -->

			<parser
				displayName="INI Section"
				id         ="ini_section"
				commentExpr="(?x)
								(?m-s:[;\#].*$)                                 # Single Line Comment
							"
			>
				<function
					mainExpr="^\h*[\["][\w*.;\x20()\-]+["\]]"
				>
					<functionName>
						<nameExpr expr="[^[\]"]*" />
					</functionName>
				</function>
			</parser>

			<!-- ======================================================== [ PERL ] -->
			<!-- PERL - Practical Extraction and Reporting Language                -->

			<parser
				displayName="PERL"
				id         ="perl_function"
				commentExpr="(?x)                                               # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?m-s:\x23.*$)                                  # Single Line Comment
							"
			>
				<function
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							sub
							\s+
							[A-Za-z_]\w*
							\s*
							\(
							[^()]*
							\)
							\s*\{                                               # start of class body
						"
				>
					<functionName>
						<nameExpr expr="(?:sub\s+)?\K[A-Za-z_]\w*" />
					</functionName>
					<className>
						<nameExpr expr="[A-Za-z_]\w*(?=\s*:{2})" />
					</className>
				</function>
			</parser>

			<!-- ====================================================== [ Python ] -->

			<parser
				displayName="Python"
				id         ="python_syntax"
				commentExpr="(?s:'''.*?''')|(?m-s:#.*?$)"
			>
				<classRange
					mainExpr    ="(?<=^class\x20).*?(?=\n\S|\Z)"
				>
					<className>
						<nameExpr expr="\w+(?=[\(|:])" />
					</className>
					<function
						mainExpr="(?<=def\x20).+?(?=:)"
					>
						<functionName>
							<funcNameExpr expr=".*" />
						</functionName>
					</function>
				</classRange>
				<function
					mainExpr="(?<=def\x20).+?(?=:)"
				>
					<functionName>
						<nameExpr expr=".*" />
					</functionName>
				</function>
			</parser>

			<!-- ======================================================== [ Bash ] -->
			<!-- BASH - Bourne-Again Shell                                         -->

			<parser
				displayName="Bash"
				id         ="bash_function"
				commentExpr="(?x)                                               # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?-s:(?:^\x23[^!]|^\h*\x23|\h+\x23).*$)         # Single Line Comment
							|	(?s:\x22(?:[^\x22\x5C]|\x5C.)*\x22)             # String Literal - Double Quoted
							|	(?s:\x27[^\x27]*\x27)                           # String Literal - Single Quoted
							|	(?s:                                            # Here Document (Type 1) and Here String
									\x3C{2,3}\h*(?'HD1ID'[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*\b)[^\r\n]*\R
									(?s:.*?)
									\R\k'HD1ID'                                 # close with exactly the same identifier, in the first column
								)
							|	(?s:                                            # Here Document (Type 2)
									\x3C{2}-\h*(?'HD2ID'[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*\b)[^\r\n]*\R
									(?s:.*?)
									\R\h*\k'HD2ID'                              # close with exactly the same identifier
								)
							"
			>
				<function
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							(?m)^\h*                                            # optional leading whitespace
							(?:
								(?-i:function\s+)
								(?'VALID_ID'                                    # valid identifier, use as subroutine
									\b(?!(?-i:
										do(?:ne)?
									|	el(?:if|se)|esac
									|	f(?:i|or|unction)
									|	i[fn]
									|	select
									|	t(?:hen|ime)
									|	until
									|	while
									)\b)                                        # keywords, not to be used as identifier
									[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*            # valid character combination for identifiers
								)
								(?:\s*\([^)]*?\))?                              # parentheses and parameters optional
							|
								(?&VALID_ID)
								\s*\([^)]*?\)                                   # parentheses required, parameters optional
							)
							[^{;]*?\{                                           # no semi-colon until start of body
						"
				>
					<functionName>
						<nameExpr expr="\b(?!function\b)\w+(?:\s*\([^)]*\))?" />
						<!-- comment out the following node to display the function with its parameters -->
						<nameExpr expr="\w+(?=\b)" />
					</functionName>
				</function>
			</parser>

			<!-- ======================================================== [ NSIS ] -->
			<!-- NSIS - Nullsoft Scriptable Install System                         -->

			<parser
				displayName="NSIS"
				id         ="nsis_syntax"
			>
				<classRange
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							\b(?-i:SectionGroup)\b                              # open indicator
							(?s:.*?)
							\b(?-i:SectionGroupEnd)\b                           # close indicator
						"
				>
					<className>
						<nameExpr expr="(?x)                                    # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?m-s)
								SectionGroup\h+(?-i:/e\h+)?                     # start indicator and its optional switch
								\K                                              # keep the text matched so far, out of the overall match
								.+$                                             # whatever, till end-of-line
							"
						/>
						<nameExpr expr="[^\r\n\x22]*" />
					</className>
					<function
						mainExpr="(?x)                                          # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?m)
								^(?'INDENT'\h*)                                 # optional leading whitespace at start-of-line
								(?:
									(?-i:!macro)
									\h+                                         # required whitespace separator
									\K                                          # keep the text matched so far, out of the overall match
									[^\r\n]*$                                   # whatever, until end-of-line
								|
									(?'TAG'(?-i:Function|PageEx|Section))
									\h+                                         # required whitespace separator
									(?-i:/o\h+)?                                # optional switch
									\K                                          # keep the text matched so far, out of the overall match
									(?s:
										.*?                                     # whatever,
										(?=                                     # up till...
											^\k'INDENT'                         # ...equal indent at start-of-line for...
											\k'TAG'End\b                        # ...matching close indicator
										)
									)
								|
									\x24\x7B                                    # start-of-open-element indicator
									(?'ID'[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*)
									\x7D                                        # end-of-open-element indicator
									\h+                                         # required whitespace separator
									(?-i:/o\h+)?                                # optional switch
									\K                                          # keep the text matched so far, out of the overall match
									(?s:
										.*?                                     # whatever,
										(?=                                     # up till...
											^\k'INDENT'                         # ...equal indent at start-of-line for...
											\x24\x7B\k'ID'End\x7D               # ...matching close indicator
										)
									)
								)
							"
					>
						<functionName>
							<funcNameExpr expr="(?x)                            # Utilize inline comments (see `RegEx - Pattern Modifiers`)
									(?m)
									[^\r\n]+?                                   # whatever,
									(?=                                         # up till...
										\h*                                     # ...optional whitespace and...
										(?:
											\x2F\x2A                            # ...start of multi line comment or...
										|	[\x23;]                             # ...start of single line comment or...
										|	$                                   # ...end-of-line
										)
									)
								"
							/>
						</functionName>
					</function>
				</classRange>
				<function
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							(?m)
							^(?'INDENT'\h*)                                     # optional leading whitespace at start-of-line
							(?:
								(?-i:!macro)
								\h+                                             # required whitespace separator
								\K                                              # keep the text matched so far, out of the overall match
								[^\r\n]*$                                       # whatever, until end-of-line
							|
								(?'TAG'(?-i:Function|PageEx|Section))
								\h+                                             # required whitespace separator
								(?-i:/o\h+)?                                    # optional switch
								\K                                              # keep the text matched so far, out of the overall match
								(?s:
									.*?                                         # whatever,
									(?=                                         # up till...
										^\k'INDENT'                             # ...equal indent at start-of-line for...
										\k'TAG'End\b                            # ...matching close indicator
									)
								)
							|
								\x24\x7B                                        # start-of-open-element indicator
								(?'ID'[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*)
								\x7D                                            # end-of-open-element indicator
								\h+                                             # required whitespace separator
								(?-i:/o\h+)?                                    # optional switch
								\K                                              # keep the text matched so far, out of the overall match
								(?s:
									.*?                                         # whatever,
									(?=                                         # up till...
										^\k'INDENT'                             # ...equal indent at start-of-line for...
										\x24\x7B\k'ID'End\x7D                   # ...matching close indicator
									)
								)
							)
						"
				>
					<functionName>
						<nameExpr expr="(?x)                                    # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?m)
								[^\r\n]+?                                       # whatever,
								(?=                                             # up till...
									\h*                                         # ...optional whitespace and...
									(?:
										\x2F\x2A                                # ...start of multi line comment or...
									|	[\x23;]                                 # ...start of single line comment or...
									|	$                                       # ...end-of-line
									)
								)
							"
						/>
					</functionName>
				</function>
			</parser>

			<!-- ==================================================== [ Assembly ] -->

			<parser
				displayName="Assembly"
				id         ="assembly_subroutine"
				commentExpr="(?x)                                               # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?m-s:;.*$)                                     # Single Line Comment
							"
			>
				<function
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							(?m)^\h*                                            # optional leading whitespace
							\K                                                  # keep the text matched so far, out of the overall match
							[A-Za-z_$][\w$]*                                    # valid character combination for labels
							(?=:)                                               # up till the colon
						"
				/>
			</parser>

			<!-- ======================================================== [ Ruby ] -->

			<parser
				displayName="Ruby"
				id         ="ruby_syntax"
			>
				<!-- within a class-->
				<classRange
					mainExpr    ="(?<=^class\x20).*?(?=\n\S|\Z)"
				>
					<className>
						<nameExpr expr="\w+" />
					</className>
					<function
						mainExpr="^\s*def\s+\w+"
					>
						<functionName>
							<funcNameExpr expr="(?<=def\s)\w+" />
						</functionName>
					</function>
				</classRange>
				<!-- without class-->
				<function
					mainExpr="^\s*def\s+\w+"
				>
					<functionName>
						<nameExpr expr="(?<=def\s)\w+" />
					</functionName>
				</function>
			</parser>

			<!-- ===================================================== [ AutoIt3 ] -->

			<!--
			|   Based on:
			|       https://sourceforge.net/p/notepad-plus/discussion/331753/thread/5d9bb881/#e86e
			\-->
			<parser
				displayName="AutoIt3"
				id         ="autoit3_function"
				commentExpr="(?x)                                               # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?is:\x23cs.*?\x23ce)                           # Multi Line Comment
							|	(?m-s:^\h*;.*?$)                                # Single Line Comment
							"
			>
				<function
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							(?m)^\h*                                            # optional leading whitespace
							(?i:FUNC\s+)                                        # start-of-function indicator
							\K                                                  # keep the text matched so far, out of the overall match
							[A-Za-z_]\w*                                        # valid character combination for identifiers
							\s*\([^()]*?\)                                      # parentheses required, parameters optional
						"
				>
					<!-- comment out the following node to display the function with its parameters -->
					<functionName>
						<nameExpr expr="[A-Za-z_]\w*" />
					</functionName>
				</function>
			</parser>

			<!-- ================================================== [ Inno Setup ] -->

			<parser
				displayName="Inno Setup"
				id         ="innosetup_syntax"
			>
				<classRange
					mainExpr    ="(?x)                                          # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							(?ms)
							(?'SECTION_HEADER'
								^                                               # header starts at beginning of a line
								\[                                              # start of section header
								(?-i:Code)                                      # `Code` section name
								]                                               # end of section header
							)
							.*?                                                 # whatever, up till...
							(?=                                                 # ...next valid section header or...
								^                                               #    +-- header starts at beginning of a line
								\[                                              #    +-- start-of-header indicator
								(?-i:
									Components|(?:Custom)?Messages
								|	Dirs
								|	Files
								|	I(?:cons|nstallDelete)
								|	Languages
								|	R(?:egistry|un)
								|	Setup
								|	T(?:asks|ypes)
								|	Uninstall(?:Delete|Run)
								)                                               #    +-- valid section name
								]                                               #    \-- end-of-header indicator
							|	\Z                                              # ...end-of-file
							)
						"
				>
					<className>
						<nameExpr expr="^\[\K[^\h\]]+(?=])" />
					</className>
					<function
						mainExpr="(?x)                                          # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?m-s)^\h*                                      # optional leading whitespace
								(?i:FUNCTION\h+)
								(?'VALID_ID'
									[A-Za-z_]\w*
								)
								\s*\(                                           # start-of-parameter-list indicator
								[^()]*                                          # parameter list
								\s*\)                                           # end-of-parameter-list indicator
								\s*:                                            # type indicator
								\s*[A-Za-z_]\w*                                 # type identifier
								\s*;                                            # end-of-statement indicator
							"
					>
						<functionName>
							<funcNameExpr expr="(?i:FUNCTION\h+)\K[A-Za-z_]\w*\s*\([^()]*\)" />
							<!-- comment out the following node to display the method with its parameters -->
							<funcNameExpr expr="[A-Za-z_]\w*" />
						</functionName>
					</function>
				</classRange>
				<function
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							(?ms)
							(?'SECTION_HEADER'
								^                                               # header starts at beginning of a line
								\[                                              # start-of-header indicator
								(?-i:
									Components|(?:Custom)?Messages
								|	Dirs
								|	Files
								|	I(?:cons|nstallDelete)
								|	Languages
								|	R(?:egistry|un)
								|	Setup
								|	T(?:asks|ypes)
								|	Uninstall(?:Delete|Run)
								)                                               # valid section name
								]                                               # end-of-header indicator
							)
							.*?                                                 # whatever, up till...
							(?=
								(?&SECTION_HEADER)                          # ...next valid section header,...
							|	^\[(?-i:Code)]                                  # ...`Code` section header or...
							|	\Z                                              # ...end-of-file
							)
						"
				>
					<functionName>
						<nameExpr expr="^\[\K[^\]]+(?=])" />
					</functionName>
				</function>
			</parser>

			<!-- ================================================== [ PowerShell ] -->

			<parser
				displayName="PowerShell"
				id         ="powershell_function"
				commentExpr="(?x)                                               # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?s:\x3C\x23(?:[^\x23]|\x23[^\x3E])*\x23\x3E)   # Multi Line Comment
							|	(?m-s:\x23.*$)                                  # Single Line Comment
							"
			>
				<function
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							\b
							(?:function|filter)
							\s+
							(?:
								[A-Za-z_]\w*
								:
							)?
							[A-Za-z_][\w\-]*
							\s*
							[({]
						"
				>
					<functionName>
						<nameExpr expr="[A-Za-z_][\w\-]*(?=\s*[({])" />
					</functionName>
					<className>
						<nameExpr expr="[A-Za-z_]\w*(?=:)" />
					</className>
				</function>
			</parser>

			<!-- ================================================ [ J(ava)Script ] -->

			<parser
				displayName="JavaScript"
				id         ="javascript_function"
				commentExpr="(?s:/\*.*?\*/)|(?m-s://.*?$)"
			>
				<function
					mainExpr="((^|\s+|[;\}\.])([A-Za-z_]\w*\.)*[A-Za-z_]\w*\s*[=:]|^|[\s;\}]+)\s*function(\s+[A-Za-z_]?\w*\([^\)\(]*\)|\([^\)\(]*\))[\n\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>

			<!-- ========================================================= [ KRL ] -->
			<!-- KRL - KUKA Robot Language                                         -->

			<!--
			|   https://notepad-plus-plus.org/community/topic/12264/function-list-for-new-language
			\-->
			<parser
				displayName="KRL"
				id         ="krl_function"
				commentExpr="(?x)                                               # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?m-s:;.*$)                                     # Single Line Comment
							"
			>
				<function
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							(?i:
								(?:GLOBAL\h+)?
								DEF                                             # start-of-procedure indicator, possible extended to...
								(?:
									FCT                                         # ...start-of-function indicator
									\h+
									(?:BOOL|CHAR|INT|REAL|(?&VALID_ID))     # returning a primitive type or a user-defined-type...
									(?:                                         # ...optionally as an array
										\h*\[
										\h*(?:\d+|\x27(?:H[0-9A-Fa-f]+|B[01]+)\x27)?
										\h*\]
									)?
								)?
							)
							\h+
							\K                                                  # keep the text matched so far, out of the overall match
							(?'VALID_ID'                                        # valid identifier, use as subroutine
								\b(?!(?i:
									AN(?:D|IN|OUT)
								|	B(?:OOL|RAKE|_(?:AND|EXOR|NOT|OR))
								|	C(?:ASE|AST_(?:FROM|TO)|HAR|IRC(?:_REL)?|ON(?:ST|TINUE)|_(?:DIS|ORI|PTP|VEL))
								|	D(?:ECL|EF(?:AULT|DAT|FCT)|ELAY|O)
								|	E(?:LSE|ND(?:DAT|FCT|FOR|IF|LOOP|SWITCH|WHILE)?|NUM|X(?:IT|OR|T(?:FCT)?))
								|	F(?:ALSE|OR)
								|	G(?:LOBAL|OTO)
								|	HALT
								|	I(?:[FS]|MPORT|NT(?:ERRUPT)?)
								|	L(?:IN(?:_REL)?|OOP)
								|	M(?:AXI|INI)MUM
								|	NOT
								|	OR
								|	P(?:RIO|TP(?:_REL)?|UBLIC)
								|	RE(?:AL|PEAT|SUME|TURN)
								|	S(?:EC|IGNAL|TRUC|WITCH)
								|	T(?:HEN|O|RIGGER|RUE)
								|	UNTIL
								|	W(?:AIT|HEN|HILE)
								)\b)                                            # keywords, not to be used as identifier
								[$A-Za-z_\x7F-\xFF][$\w\x7F-\xFF]{0,23}         # valid character combination for identifiers
							)
							\h*\([^)]*\)
						"
				>
					<!-- comment out the following node to display the method with its parameters -->
					<functionName>
						<nameExpr expr="[$A-Za-z_\x7F-\xFF][$\w\x7F-\xFF]{0,23}" />
					</functionName>
				</function>
			</parser>

			<!-- =================================================== [ Sinumerik ] -->
			<!-- Sinumerik - Siemens Numeric Control                               -->

			<!--
			|   https://notepad-plus-plus.org/community/topic/12520/function-list-for-simatic
			|   20161113: Added `(?!\$PATH)` to get around restriction/bug of
			|             two characters required before comment.
			\-->
			<parser
				displayName="Sinumerik"
				id         ="sinumerik_function"
				commentExpr="(?m-s:;(?!\$PATH).*?$)"
			>
				<function
					mainExpr="(?m)^%_N_\K[A-Za-z_]\w*"
				/>
			</parser>

			<!-- ============================================== [ UniVerse BASIC ] -->

			<!--
			|   Based on:
			|       https://notepad-plus-plus.org/community/topic/12742/functionlist-different-results-with-different-line-endings
			\-->
			<parser
				displayName="UniVerse BASIC"
				id         ="universe_basic"
				commentExpr="(?x)                                               # Utilize inline comments (see `RegEx - Pattern Modifiers`)
								(?m-s:
									(?:^|;)                                     # at start-of-line or after end-of-statement
									\h*                                         # optional leading whitespace
									(?-i:REM\b|\x24\x2A|[\x21\x2A])             # Single Line Comment 1..4
									.*$                                         # whatever, until end-of-line
								)
							|	(?:\x22[^\x22\r\n]*\x22)                        # String Literal - Double Quoted
							|	(?:\x27[^\x27\r\n]*\x27)                        # String Literal - Single Quoted
							|	(?:\x5C[^\x5C\r\n]*\x5C)                        # String Literal - Backslash Quoted
							"
			>
				<function
					mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
							(?m-i)^                                             # case-sensitive, NO leading whitespace
							(?:
								\d+\b(?=:?)                                     # completely numeric label, colon optional + discarded
							|	[A-Za-z_][\w.$%]*(?=:)                          # alphanumeric label, colon required + discarded
							)
						"
				/>
			</parser>

			<!-- ================================================================= -->
		</parsers>
	</functionList>
</NotepadPlus>
It is working better, but I think, it is no perfect result.
User avatar
jNizM
Posts: 2341
Joined: 30 Sep 2013, 01:33
GitHub: jNizM
Contact:

Re: Setup Notepad++ for AutoHotkey

09 Mar 2017, 10:15

Update:
- Renew the whole first post
- Tested up to Notepad++ v7.3.3 (64-Bit)
- Added in first post Hotstrings (by Helgef)
- Added FunctionList (by ahkDustVorteX / Nightwolf85)

pm me for spelling and grammar failure
[AHK] 1.1.30.01 x64 Unicode | [WIN] 10 Pro (Version 1803) x64 | [GitHub] Profile
Donations are appreciated if I could help you
User avatar
kczx3
Posts: 691
Joined: 06 Oct 2015, 21:39

Re: Setup Notepad++ for AutoHotkey

15 Mar 2017, 09:31

Somehow my code folding has broken in NP++ with AHK. No matter what I change in the Folding in Code Style boxes the folding points do not show up. Anyone have any thoughts besides reinstalling NP++ freshly?

Code: Select all

<NotepadPlus>
    <UserLang name="CCL" ext="prg ccl inc" udlVersion="2.1">
        <Settings>
            <Global caseIgnored="yes" allowFoldOfComments="no" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
            <Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
        </Settings>
        <KeywordLists>
            <Keywords name="Comments">03/* 04*/ 00; 01 02</Keywords>
            <Keywords name="Numbers, prefix1"></Keywords>
            <Keywords name="Numbers, prefix2"></Keywords>
            <Keywords name="Numbers, extras1"></Keywords>
            <Keywords name="Numbers, extras2"></Keywords>
            <Keywords name="Numbers, suffix1"></Keywords>
            <Keywords name="Numbers, suffix2"></Keywords>
            <Keywords name="Numbers, range"></Keywords>
            <Keywords name="Operators1">- ! " ( ) , : [ ] ` + < = ></Keywords>
            <Keywords name="Operators2"></Keywords>
            <Keywords name="Folders in code1, open">{</Keywords>
            <Keywords name="Folders in code1, middle"></Keywords>
            <Keywords name="Folders in code1, close">}</Keywords>
            <Keywords name="Folders in code2, open">if for while</Keywords>
            <Keywords name="Folders in code2, middle">else elseif</Keywords>
            <Keywords name="Folders in code2, close">endif endfor endwhile</Keywords>
            <Keywords name="Folders in comment, open"></Keywords>
            <Keywords name="Folders in comment, middle"></Keywords>
            <Keywords name="Folders in comment, close"></Keywords>
            <Keywords name="Keywords1">drop create program go %i declare call set end execute if elseif else endif protect constant curqual of subroutine to noconstant record free range in is protect define macro endmacro</Keywords>
            <Keywords name="Keywords2">datetimefind cnvtdatetime format build concat findfile error alterlist initrec cnvtdate esmError echo max min avg sum count uar_get_code_meaning mod substring size trim hour day isnumeric expand locateval cnvtstring fillstring btestfindstring logical uar_get_code_display uar_get_meaning_by_codeset UAR_GET_CODE_BY sqltype cnvtreal echorecord cnvtupper cnvtlower cnvtdatetimeutc abs datetimediff year julian btest decode evaluate findstring asis replace validate nullterm parser value uar_timer_create uar_CreatePropList uar_SetPropString uar_CloseHandle uar_Timer_Destroy uar_Timer_Stop build2 patstring</Keywords>
            <Keywords name="Keywords3">select from where detail with plan and order by commit group head foot report nullreport into join rollback between like return or exists not rdbunion union all formfeed none noformfeed maxrow maxcol maxrec variable</Keywords>
            <Keywords name="Keywords4">i2 i4 f8 dq8 vc c null curdate curtime3 curqual curnode curtime rdb i1 i4 q8 c4000 c50 c100</Keywords>
            <Keywords name="Keywords5"></Keywords>
            <Keywords name="Keywords6"></Keywords>
            <Keywords name="Keywords7"></Keywords>
            <Keywords name="Keywords8"></Keywords>
            <Keywords name="Delimiters">00" 01 02" 03&apos; 04 05&apos; 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23</Keywords>
        </KeywordLists>
        <Styles>
            <WordsStyle name="DEFAULT" fgColor="FFFFFF" bgColor="FFFFFF" fontName="Consolas" fontStyle="0" nesting="0" />
            <WordsStyle name="COMMENTS" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="0" />
            <WordsStyle name="LINE COMMENTS" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="NUMBERS" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
            <WordsStyle name="KEYWORDS1" fgColor="0080FF" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
            <WordsStyle name="KEYWORDS2" fgColor="00FF40" bgColor="FFFFFF" fontName="@BatangChe" fontStyle="3" nesting="0" />
            <WordsStyle name="KEYWORDS3" fgColor="0080FF" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
            <WordsStyle name="KEYWORDS4" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
            <WordsStyle name="KEYWORDS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="OPERATORS" fgColor="FFFF00" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="10" nesting="0" />
            <WordsStyle name="FOLDER IN CODE1" fgColor="0080FF" bgColor="FFFFFF" fontName="" fontStyle="4" nesting="0" />
            <WordsStyle name="FOLDER IN CODE2" fgColor="0080FF" bgColor="FFFFFF" fontName="" fontStyle="4" nesting="0" />
            <WordsStyle name="FOLDER IN COMMENT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS1" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS2" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS3" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
        </Styles>
    </UserLang>
    <UserLang name="AHK" ext="ahk" udlVersion="2.1">
        <Settings>
            <Global caseIgnored="yes" allowFoldOfComments="yes" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
            <Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
        </Settings>
        <KeywordLists>
            <Keywords name="Comments">00; 01 02 03/* 04*/</Keywords>
            <Keywords name="Numbers, prefix1"></Keywords>
            <Keywords name="Numbers, prefix2">0x</Keywords>
            <Keywords name="Numbers, extras1">A B C D E F a b c d e f</Keywords>
            <Keywords name="Numbers, extras2"></Keywords>
            <Keywords name="Numbers, suffix1">,</Keywords>
            <Keywords name="Numbers, suffix2"></Keywords>
            <Keywords name="Numbers, range"></Keywords>
            <Keywords name="Operators1">- ! & ( ) , . ^ | ~ + < := > { } =</Keywords>
            <Keywords name="Operators2">or and</Keywords>
            <Keywords name="Folders in code1, open">{</Keywords>
            <Keywords name="Folders in code1, middle"></Keywords>
            <Keywords name="Folders in code1, close">}</Keywords>
            <Keywords name="Folders in code2, open"></Keywords>
            <Keywords name="Folders in code2, middle"></Keywords>
            <Keywords name="Folders in code2, close"></Keywords>
            <Keywords name="Folders in comment, open"></Keywords>
            <Keywords name="Folders in comment, middle"></Keywords>
            <Keywords name="Folders in comment, close"></Keywords>
            <Keywords name="Keywords1">AutoTrim&#x000D;&#x000A;BlockInput&#x000D;&#x000A;Break&#x000D;&#x000A;Click&#x000D;&#x000A;ClipWait&#x000D;&#x000A;ComObjActive&#x000D;&#x000A;ComObjArray&#x000D;&#x000A;ComObjConnect&#x000D;&#x000A;ComObjCreate&#x000D;&#x000A;ComObjEnwrap&#x000D;&#x000A;ComObjError&#x000D;&#x000A;ComObjFlags&#x000D;&#x000A;ComObjGet&#x000D;&#x000A;ComObjMissing&#x000D;&#x000A;ComObjParameter&#x000D;&#x000A;ComObjQuery&#x000D;&#x000A;ComObjType&#x000D;&#x000A;ComObjUnwrap&#x000D;&#x000A;ComObjValue&#x000D;&#x000A;Continue&#x000D;&#x000A;Control&#x000D;&#x000A;ControlClick&#x000D;&#x000A;ControlFocus&#x000D;&#x000A;ControlGet&#x000D;&#x000A;ControlGetFocus&#x000D;&#x000A;ControlGetPos&#x000D;&#x000A;ControlGetText&#x000D;&#x000A;ControlMove&#x000D;&#x000A;ControlSend&#x000D;&#x000A;ControlSendRaw&#x000D;&#x000A;ControlSetText&#x000D;&#x000A;CoordMode&#x000D;&#x000A;Critical&#x000D;&#x000A;DetectHiddenText&#x000D;&#x000A;DetectHiddenWindows&#x000D;&#x000A;DllCall&#x000D;&#x000A;Drive&#x000D;&#x000A;DriveGet&#x000D;&#x000A;DriveSpaceFree&#x000D;&#x000A;Else&#x000D;&#x000A;EndRepeat&#x000D;&#x000A;EnvAdd&#x000D;&#x000A;EnvDiv&#x000D;&#x000A;EnvGet&#x000D;&#x000A;EnvMult&#x000D;&#x000A;EnvSet&#x000D;&#x000A;EnvSub&#x000D;&#x000A;EnvUpdate&#x000D;&#x000A;Exit&#x000D;&#x000A;ExitApp&#x000D;&#x000A;FileAppend&#x000D;&#x000A;FileCopy&#x000D;&#x000A;FileCopyDir&#x000D;&#x000A;FileCreateDir&#x000D;&#x000A;FileCreateShortcut&#x000D;&#x000A;FileDelete&#x000D;&#x000A;FileGetAttrib&#x000D;&#x000A;FileGetShortcut&#x000D;&#x000A;FileGetSize&#x000D;&#x000A;FileGetTime&#x000D;&#x000A;FileGetVersion&#x000D;&#x000A;FileInstall&#x000D;&#x000A;FileMove&#x000D;&#x000A;FileMoveDir&#x000D;&#x000A;FileRead&#x000D;&#x000A;FileReadLine&#x000D;&#x000A;FileRecycle&#x000D;&#x000A;FileRecycleEmpty&#x000D;&#x000A;FileRemoveDir&#x000D;&#x000A;FileSelectFile&#x000D;&#x000A;FileSelectFolder&#x000D;&#x000A;FileSetAttrib&#x000D;&#x000A;FileSetTime&#x000D;&#x000A;FormatTime&#x000D;&#x000A;GetKeyState&#x000D;&#x000A;Gosub&#x000D;&#x000A;Goto&#x000D;&#x000A;GroupActivate&#x000D;&#x000A;GroupAdd&#x000D;&#x000A;GroupClose&#x000D;&#x000A;GroupDeactivate&#x000D;&#x000A;Gui&#x000D;&#x000A;GuiControl&#x000D;&#x000A;GuiControlGet&#x000D;&#x000A;HideAutoItWin&#x000D;&#x000A;Hotkey&#x000D;&#x000A;If&#x000D;&#x000A;IfEqual&#x000D;&#x000A;IfExist&#x000D;&#x000A;IfGreater&#x000D;&#x000A;IfGreaterOrEqual&#x000D;&#x000A;IfInString&#x000D;&#x000A;IfLess&#x000D;&#x000A;IfLessOrEqual&#x000D;&#x000A;IfMsgBox&#x000D;&#x000A;IfNotEqual&#x000D;&#x000A;IfNotExist&#x000D;&#x000A;IfNotInString&#x000D;&#x000A;IfWinActive&#x000D;&#x000A;IfWinExist&#x000D;&#x000A;IfWinNotActive&#x000D;&#x000A;IfWinNotExist&#x000D;&#x000A;ImageSearch&#x000D;&#x000A;IniDelete&#x000D;&#x000A;IniRead&#x000D;&#x000A;IniWrite&#x000D;&#x000A;Input&#x000D;&#x000A;InputBox&#x000D;&#x000A;IsLabel&#x000D;&#x000A;KeyHistory&#x000D;&#x000A;KeyWait&#x000D;&#x000A;ListHotkeys&#x000D;&#x000A;ListLines&#x000D;&#x000A;ListVars&#x000D;&#x000A;LoadPicture&#x000D;&#x000A;Loop&#x000D;&#x000A;Menu&#x000D;&#x000A;MouseClick&#x000D;&#x000A;MouseClickDrag&#x000D;&#x000A;MouseGetPos&#x000D;&#x000A;MouseMove&#x000D;&#x000A;MsgBox&#x000D;&#x000A;NumGet&#x000D;&#x000A;NumPut&#x000D;&#x000A;OnExit&#x000D;&#x000A;OnMessage&#x000D;&#x000A;OutputDebug&#x000D;&#x000A;Pause&#x000D;&#x000A;PixelGetColor&#x000D;&#x000A;PixelSearch&#x000D;&#x000A;PostMessage&#x000D;&#x000A;Process&#x000D;&#x000A;Progress&#x000D;&#x000A;Random&#x000D;&#x000A;RegDelete&#x000D;&#x000A;RegExMatch&#x000D;&#x000A;RegExReplace&#x000D;&#x000A;RegisterCallback&#x000D;&#x000A;RegRead&#x000D;&#x000A;RegWrite&#x000D;&#x000A;Reload&#x000D;&#x000A;Repeat&#x000D;&#x000A;Return&#x000D;&#x000A;Run&#x000D;&#x000A;RunAs&#x000D;&#x000A;RunWait&#x000D;&#x000A;Send&#x000D;&#x000A;SendMessage&#x000D;&#x000A;SendEvent&#x000D;&#x000A;SendInput&#x000D;&#x000A;SendMode&#x000D;&#x000A;SendPlay&#x000D;&#x000A;SendRaw&#x000D;&#x000A;SetBatchLines&#x000D;&#x000A;SetCapsLockState&#x000D;&#x000A;SetControlDelay&#x000D;&#x000A;SetDefaultMouseSpeed&#x000D;&#x000A;SetEnv&#x000D;&#x000A;SetFormat&#x000D;&#x000A;SetKeyDelay&#x000D;&#x000A;SetMouseDelay&#x000D;&#x000A;SetNumLockState&#x000D;&#x000A;SetScrollLockState&#x000D;&#x000A;SetStoreCapslockMode&#x000D;&#x000A;SetTimer&#x000D;&#x000A;SetTitleMatchMode&#x000D;&#x000A;SetWinDelay&#x000D;&#x000A;SetWorkingDir&#x000D;&#x000A;Shutdown&#x000D;&#x000A;Sleep&#x000D;&#x000A;Sort&#x000D;&#x000A;SoundBeep&#x000D;&#x000A;SoundGet&#x000D;&#x000A;SoundGetWaveVolume&#x000D;&#x000A;SoundPlay&#x000D;&#x000A;SoundSet&#x000D;&#x000A;SoundSetWaveVolume&#x000D;&#x000A;SplashImage&#x000D;&#x000A;SplashTextOff&#x000D;&#x000A;SplashTextOn&#x000D;&#x000A;SplitPath&#x000D;&#x000A;StatusBarGetText&#x000D;&#x000A;StatusBarWait&#x000D;&#x000A;StringCaseSense&#x000D;&#x000A;StringGetPos&#x000D;&#x000A;StringLeft&#x000D;&#x000A;StringLen&#x000D;&#x000A;StringLower&#x000D;&#x000A;StringMid&#x000D;&#x000A;StringReplace&#x000D;&#x000A;StringRight&#x000D;&#x000A;StringSplit&#x000D;&#x000A;StringTrimLeft&#x000D;&#x000A;StringTrimRight&#x000D;&#x000A;StringUpper&#x000D;&#x000A;StrReplace&#x000D;&#x000A;StrSplit&#x000D;&#x000A;SubStr&#x000D;&#x000A;Suspend&#x000D;&#x000A;SysGet&#x000D;&#x000A;Thread&#x000D;&#x000A;ToolTip&#x000D;&#x000A;Transform&#x000D;&#x000A;TrayTip&#x000D;&#x000A;URLDownloadToFile&#x000D;&#x000A;VarSetCapacity&#x000D;&#x000A;While&#x000D;&#x000A;WinActivate&#x000D;&#x000A;WinActivateBottom&#x000D;&#x000A;WinClose&#x000D;&#x000A;WinGet&#x000D;&#x000A;WinGetActiveStats&#x000D;&#x000A;WinGetActiveTitle&#x000D;&#x000A;WinGetClass&#x000D;&#x000A;WinGetPos&#x000D;&#x000A;WinGetText&#x000D;&#x000A;WinGetTitle&#x000D;&#x000A;WinHide&#x000D;&#x000A;WinKill&#x000D;&#x000A;WinMaximize&#x000D;&#x000A;WinMenuSelectItem&#x000D;&#x000A;WinMinimize&#x000D;&#x000A;WinMinimizeAll&#x000D;&#x000A;WinMinimizeAllUndo&#x000D;&#x000A;WinMove&#x000D;&#x000A;WinRestore&#x000D;&#x000A;WinSet&#x000D;&#x000A;WinSetTitle&#x000D;&#x000A;WinShow&#x000D;&#x000A;WinWait&#x000D;&#x000A;WinWaitActive&#x000D;&#x000A;WinWaitClose&#x000D;&#x000A;WinWaitNotActive&#x000D;&#x000A;</Keywords>
            <Keywords name="Keywords2">add&#x000D;&#x000A;font&#x000D;&#x000A;show&#x000D;&#x000A;new&#x000D;&#x000A;</Keywords>
            <Keywords name="Keywords3">%A_&#x000D;&#x000A;A_&#x000D;&#x000A;A_AhkPath&#x000D;&#x000A;A_AhkVersion&#x000D;&#x000A;A_AppData&#x000D;&#x000A;A_AppDataCommon&#x000D;&#x000A;A_AutoTrim&#x000D;&#x000A;A_BatchLines&#x000D;&#x000A;A_CaretX&#x000D;&#x000A;A_CaretY&#x000D;&#x000A;A_ComputerName&#x000D;&#x000A;A_ControlDelay&#x000D;&#x000A;A_Cursor&#x000D;&#x000A;A_DD&#x000D;&#x000A;A_DDD&#x000D;&#x000A;A_DDDD&#x000D;&#x000A;A_DefaultMouseSpeed&#x000D;&#x000A;A_Desktop&#x000D;&#x000A;A_DesktopCommon&#x000D;&#x000A;A_DetectHiddenText&#x000D;&#x000A;A_DetectHiddenWindows&#x000D;&#x000A;A_EndChar&#x000D;&#x000A;A_ExitReason&#x000D;&#x000A;A_FormatFloat&#x000D;&#x000A;A_FormatInteger&#x000D;&#x000A;A_Gui&#x000D;&#x000A;A_GuiControl&#x000D;&#x000A;A_EventInfo&#x000D;&#x000A;A_GuiX&#x000D;&#x000A;A_GuiY&#x000D;&#x000A;A_GuiEvent&#x000D;&#x000A;A_GuiControlEvent&#x000D;&#x000A;A_GuiHeight&#x000D;&#x000A;A_GuiWidth&#x000D;&#x000A;A_Hour&#x000D;&#x000A;A_IconFile&#x000D;&#x000A;A_IconHidden&#x000D;&#x000A;A_IconNumber&#x000D;&#x000A;A_IconTip&#x000D;&#x000A;A_Index&#x000D;&#x000A;A_IPAddress1&#x000D;&#x000A;A_IPAddress2&#x000D;&#x000A;A_IPAddress3&#x000D;&#x000A;A_IPAddress4&#x000D;&#x000A;A_Is64bitOS&#x000D;&#x000A;A_ISAdmin&#x000D;&#x000A;A_IsCompiled&#x000D;&#x000A;A_IsPaused&#x000D;&#x000A;A_IsCritical&#x000D;&#x000A;A_IsSuspended&#x000D;&#x000A;A_IsUnicode&#x000D;&#x000A;A_KeyDelay&#x000D;&#x000A;A_Language&#x000D;&#x000A;A_LastError&#x000D;&#x000A;A_LineNumber&#x000D;&#x000A;A_LineFile&#x000D;&#x000A;A_LoopField&#x000D;&#x000A;A_LoopFileAttrib&#x000D;&#x000A;A_LoopFileDir&#x000D;&#x000A;A_LoopFileExt&#x000D;&#x000A;A_LoopFileFullPath&#x000D;&#x000A;A_LoopFileLongPath&#x000D;&#x000A;A_LoopFileName&#x000D;&#x000A;A_LoopFileShortName&#x000D;&#x000A;A_LoopFileShortPath&#x000D;&#x000A;A_LoopFileSize&#x000D;&#x000A;A_LoopFileSizeKB&#x000D;&#x000A;A_LoopFileSizeMB&#x000D;&#x000A;A_LoopFileTimeAccessed&#x000D;&#x000A;A_LoopFileTimeCreated&#x000D;&#x000A;A_LoopFileTimeModified&#x000D;&#x000A;A_LoopReadLine&#x000D;&#x000A;A_LoopRegKey&#x000D;&#x000A;A_LoopRegName&#x000D;&#x000A;A_LoopRegSubkey&#x000D;&#x000A;A_LoopRegTimeModified&#x000D;&#x000A;A_LoopRegType&#x000D;&#x000A;A_MDAY&#x000D;&#x000A;A_Min&#x000D;&#x000A;A_MM&#x000D;&#x000A;A_MMM&#x000D;&#x000A;A_MMMM&#x000D;&#x000A;A_MON&#x000D;&#x000A;A_MouseDelay&#x000D;&#x000A;A_MyDocuments&#x000D;&#x000A;A_Now&#x000D;&#x000A;A_NowUTC&#x000D;&#x000A;A_NumBatchLines&#x000D;&#x000A;A_OSType&#x000D;&#x000A;A_OSVersion&#x000D;&#x000A;A_PriorHotkey&#x000D;&#x000A;ProgramFiles&#x000D;&#x000A;A_ProgramFiles&#x000D;&#x000A;A_Programs&#x000D;&#x000A;A_ProgramsCommon&#x000D;&#x000A;A_PtrSize&#x000D;&#x000A;A_ScreenHeight&#x000D;&#x000A;A_ScreenWidth&#x000D;&#x000A;A_ScriptDir&#x000D;&#x000A;A_ScriptFullPath&#x000D;&#x000A;A_ScriptName&#x000D;&#x000A;A_Sec&#x000D;&#x000A;A_Space&#x000D;&#x000A;A_StartMenu&#x000D;&#x000A;A_StartMenuCommon&#x000D;&#x000A;A_Startup&#x000D;&#x000A;A_StartupCommon&#x000D;&#x000A;A_StringCaseSense&#x000D;&#x000A;A_Tab&#x000D;&#x000A;A_Temp&#x000D;&#x000A;A_ThisHotkey&#x000D;&#x000A;A_ThisFunc&#x000D;&#x000A;A_ThisLabel&#x000D;&#x000A;A_ThisMenu&#x000D;&#x000A;A_ThisMenuItem&#x000D;&#x000A;A_ThisMenuItemPos&#x000D;&#x000A;A_TickCount&#x000D;&#x000A;A_TimeIdle&#x000D;&#x000A;A_TimeIdlePhysical&#x000D;&#x000A;A_TimeSincePriorHotkey&#x000D;&#x000A;A_TimeSinceThisHotkey&#x000D;&#x000A;A_TitleMatchMode&#x000D;&#x000A;A_TitleMatchModeSpeed&#x000D;&#x000A;A_UserName&#x000D;&#x000A;A_WDay&#x000D;&#x000A;A_WinDelay&#x000D;&#x000A;A_WinDir&#x000D;&#x000A;A_WorkingDir&#x000D;&#x000A;A_YDay&#x000D;&#x000A;A_YEAR&#x000D;&#x000A;A_YWeek&#x000D;&#x000A;A_YYYY&#x000D;&#x000A;Clipboard&#x000D;&#x000A;ComSpec&#x000D;&#x000A;ErrorLevel&#x000D;&#x000A;True&#x000D;&#x000A;False&#x000D;&#x000A;Off&#x000D;&#x000A;On&#x000D;&#x000A;</Keywords>
            <Keywords name="Keywords4">activeX&#x000D;&#x000A;button&#x000D;&#x000A;checkbox&#x000D;&#x000A;combobox&#x000D;&#x000A;custom&#x000D;&#x000A;datetime&#x000D;&#x000A;dropdownlist&#x000D;&#x000A;edit&#x000D;&#x000A;groupbox&#x000D;&#x000A;hotkey&#x000D;&#x000A;link&#x000D;&#x000A;listbox&#x000D;&#x000A;listview&#x000D;&#x000A;monthcal&#x000D;&#x000A;pic&#x000D;&#x000A;picture&#x000D;&#x000A;progress&#x000D;&#x000A;radio&#x000D;&#x000A;slider&#x000D;&#x000A;statusbar&#x000D;&#x000A;tab&#x000D;&#x000A;tab2&#x000D;&#x000A;tab3&#x000D;&#x000A;text&#x000D;&#x000A;treeview&#x000D;&#x000A;updown</Keywords>
            <Keywords name="Keywords5">lv_modifycol&#x000D;&#x000A;lv_add&#x000D;&#x000A;lv_insert&#x000D;&#x000A;lv_modify&#x000D;&#x000A;lv_delete&#x000D;&#x000A;lv_insertcol&#x000D;&#x000A;lv_deletecol&#x000D;&#x000A;lv_getcount&#x000D;&#x000A;lv_getnext&#x000D;&#x000A;lv_gettext&#x000D;&#x000A;il_create&#x000D;&#x000A;lv_setimagelist&#x000D;&#x000A;il_add&#x000D;&#x000A;il_destroy</Keywords>
            <Keywords name="Keywords6">#AllowSameLineComments&#x000D;&#x000A;#ClipboardTimeout&#x000D;&#x000A;#CommentFlag&#x000D;&#x000A;#ErrorStdOut&#x000D;&#x000A;#EscapeChar&#x000D;&#x000A;#HotkeyInterval&#x000D;&#x000A;#HotkeyModIfierTimeout&#x000D;&#x000A;#Hotstring&#x000D;&#x000A;#Include&#x000D;&#x000A;#IncludeAgain&#x000D;&#x000A;#IfWinActive&#x000D;&#x000A;#IfWinExist&#x000D;&#x000A;#IfWinNotActive&#x000D;&#x000A;#IfWinNotExist&#x000D;&#x000A;#InstallKeybdHook&#x000D;&#x000A;#InstallMouseHook&#x000D;&#x000A;#KeyHistory&#x000D;&#x000A;#MaxHotkeysPerInterval&#x000D;&#x000A;#MaxMem&#x000D;&#x000A;#MaxThreads&#x000D;&#x000A;#MaxThreadsBuffer&#x000D;&#x000A;#MaxThreadsPerHotkey&#x000D;&#x000A;#NoEnv&#x000D;&#x000A;#NoTrayIcon&#x000D;&#x000A;#Persistent&#x000D;&#x000A;#SingleInstance&#x000D;&#x000A;#UseHook&#x000D;&#x000A;#WinActivateForce&#x000D;&#x000A;Static</Keywords>
            <Keywords name="Keywords7">norm&#x000D;&#x000A;underline&#x000D;&#x000A;bold&#x000D;&#x000A;italic&#x000D;&#x000A;strike&#x000D;&#x000A;cDefault&#x000D;&#x000A;cBlack&#x000D;&#x000A;cSilver&#x000D;&#x000A;cGray&#x000D;&#x000A;cWhite&#x000D;&#x000A;cMaroon&#x000D;&#x000A;cRed&#x000D;&#x000A;cPurple&#x000D;&#x000A;cFuchsia&#x000D;&#x000A;cGreen&#x000D;&#x000A;cLime&#x000D;&#x000A;cOlive&#x000D;&#x000A;cYellow&#x000D;&#x000A;cNavy&#x000D;&#x000A;cBlue&#x000D;&#x000A;cTeal&#x000D;&#x000A;cAqua</Keywords>
            <Keywords name="Keywords8">Global&#x000D;&#x000A;Local</Keywords>
            <Keywords name="Delimiters">00% 01 02((% EOL)) 03" 04\" 05((" EOL)) 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23</Keywords>
        </KeywordLists>
        <Styles>
            <WordsStyle name="DEFAULT" fgColor="EAEAEA" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="COMMENTS" fgColor="00D56A" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="LINE COMMENTS" fgColor="00D56A" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="NUMBERS" fgColor="FF5959" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS1" fgColor="0080FF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS2" fgColor="60D1FD" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS3" fgColor="FF8040" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS4" fgColor="5BC1FF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS5" fgColor="D2A6A6" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS6" fgColor="FFA6FF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS7" fgColor="A4FFA4" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS8" fgColor="FF0000" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="OPERATORS" fgColor="FFFF00" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="FOLDER IN CODE1" fgColor="38B86B" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="FOLDER IN CODE2" fgColor="FFFFFF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="FOLDER IN COMMENT" fgColor="FFFFFF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS1" fgColor="FF8040" bgColor="000000" fontName="" fontStyle="0" nesting="514" />
            <WordsStyle name="DELIMITERS2" fgColor="FEC994" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS3" fgColor="FFFFFF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS4" fgColor="FF00FF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
        </Styles>
    </UserLang>
</NotepadPlus>
User avatar
hoppfrosch
Posts: 328
Joined: 07 Oct 2013, 04:05
GitHub: hoppfrosch
Location: Rhine-Maine-Area, Hesse, Germany
Contact:

Re: Setup Notepad++ for AutoHotkey

17 Mar 2017, 02:39

What also might be a worth to be mentioned on the first topic of this thread:

How to debug AHK-scripts using Notepad++?

Within Autohotkey documentation there is a special page on "Debugger Clients".
On this page there's a special section on Notepad++ DBGp Plugin. (The provided link there points to an invalid URL - I just corrected the URL and made a pull request ... - everything else there still works as described ...)
User avatar
kczx3
Posts: 691
Joined: 06 Oct 2015, 21:39

Re: Setup Notepad++ for AutoHotkey

17 Mar 2017, 06:43

kczx3 wrote:Somehow my code folding has broken in NP++ with AHK. No matter what I change in the Folding in Code Style boxes the folding points do not show up. Anyone have any thoughts besides reinstalling NP++ freshly?

Code: Select all

<NotepadPlus>
    <UserLang name="CCL" ext="prg ccl inc" udlVersion="2.1">
        <Settings>
            <Global caseIgnored="yes" allowFoldOfComments="no" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
            <Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
        </Settings>
        <KeywordLists>
            <Keywords name="Comments">03/* 04*/ 00; 01 02</Keywords>
            <Keywords name="Numbers, prefix1"></Keywords>
            <Keywords name="Numbers, prefix2"></Keywords>
            <Keywords name="Numbers, extras1"></Keywords>
            <Keywords name="Numbers, extras2"></Keywords>
            <Keywords name="Numbers, suffix1"></Keywords>
            <Keywords name="Numbers, suffix2"></Keywords>
            <Keywords name="Numbers, range"></Keywords>
            <Keywords name="Operators1">- ! " ( ) , : [ ] ` + < = ></Keywords>
            <Keywords name="Operators2"></Keywords>
            <Keywords name="Folders in code1, open">{</Keywords>
            <Keywords name="Folders in code1, middle"></Keywords>
            <Keywords name="Folders in code1, close">}</Keywords>
            <Keywords name="Folders in code2, open">if for while</Keywords>
            <Keywords name="Folders in code2, middle">else elseif</Keywords>
            <Keywords name="Folders in code2, close">endif endfor endwhile</Keywords>
            <Keywords name="Folders in comment, open"></Keywords>
            <Keywords name="Folders in comment, middle"></Keywords>
            <Keywords name="Folders in comment, close"></Keywords>
            <Keywords name="Keywords1">drop create program go %i declare call set end execute if elseif else endif protect constant curqual of subroutine to noconstant record free range in is protect define macro endmacro</Keywords>
            <Keywords name="Keywords2">datetimefind cnvtdatetime format build concat findfile error alterlist initrec cnvtdate esmError echo max min avg sum count uar_get_code_meaning mod substring size trim hour day isnumeric expand locateval cnvtstring fillstring btestfindstring logical uar_get_code_display uar_get_meaning_by_codeset UAR_GET_CODE_BY sqltype cnvtreal echorecord cnvtupper cnvtlower cnvtdatetimeutc abs datetimediff year julian btest decode evaluate findstring asis replace validate nullterm parser value uar_timer_create uar_CreatePropList uar_SetPropString uar_CloseHandle uar_Timer_Destroy uar_Timer_Stop build2 patstring</Keywords>
            <Keywords name="Keywords3">select from where detail with plan and order by commit group head foot report nullreport into join rollback between like return or exists not rdbunion union all formfeed none noformfeed maxrow maxcol maxrec variable</Keywords>
            <Keywords name="Keywords4">i2 i4 f8 dq8 vc c null curdate curtime3 curqual curnode curtime rdb i1 i4 q8 c4000 c50 c100</Keywords>
            <Keywords name="Keywords5"></Keywords>
            <Keywords name="Keywords6"></Keywords>
            <Keywords name="Keywords7"></Keywords>
            <Keywords name="Keywords8"></Keywords>
            <Keywords name="Delimiters">00" 01 02" 03&apos; 04 05&apos; 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23</Keywords>
        </KeywordLists>
        <Styles>
            <WordsStyle name="DEFAULT" fgColor="FFFFFF" bgColor="FFFFFF" fontName="Consolas" fontStyle="0" nesting="0" />
            <WordsStyle name="COMMENTS" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="0" />
            <WordsStyle name="LINE COMMENTS" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="NUMBERS" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
            <WordsStyle name="KEYWORDS1" fgColor="0080FF" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
            <WordsStyle name="KEYWORDS2" fgColor="00FF40" bgColor="FFFFFF" fontName="@BatangChe" fontStyle="3" nesting="0" />
            <WordsStyle name="KEYWORDS3" fgColor="0080FF" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
            <WordsStyle name="KEYWORDS4" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
            <WordsStyle name="KEYWORDS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="OPERATORS" fgColor="FFFF00" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="10" nesting="0" />
            <WordsStyle name="FOLDER IN CODE1" fgColor="0080FF" bgColor="FFFFFF" fontName="" fontStyle="4" nesting="0" />
            <WordsStyle name="FOLDER IN CODE2" fgColor="0080FF" bgColor="FFFFFF" fontName="" fontStyle="4" nesting="0" />
            <WordsStyle name="FOLDER IN COMMENT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS1" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS2" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS3" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
        </Styles>
    </UserLang>
    <UserLang name="AHK" ext="ahk" udlVersion="2.1">
        <Settings>
            <Global caseIgnored="yes" allowFoldOfComments="yes" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
            <Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
        </Settings>
        <KeywordLists>
            <Keywords name="Comments">00; 01 02 03/* 04*/</Keywords>
            <Keywords name="Numbers, prefix1"></Keywords>
            <Keywords name="Numbers, prefix2">0x</Keywords>
            <Keywords name="Numbers, extras1">A B C D E F a b c d e f</Keywords>
            <Keywords name="Numbers, extras2"></Keywords>
            <Keywords name="Numbers, suffix1">,</Keywords>
            <Keywords name="Numbers, suffix2"></Keywords>
            <Keywords name="Numbers, range"></Keywords>
            <Keywords name="Operators1">- ! & ( ) , . ^ | ~ + < := > { } =</Keywords>
            <Keywords name="Operators2">or and</Keywords>
            <Keywords name="Folders in code1, open">{</Keywords>
            <Keywords name="Folders in code1, middle"></Keywords>
            <Keywords name="Folders in code1, close">}</Keywords>
            <Keywords name="Folders in code2, open"></Keywords>
            <Keywords name="Folders in code2, middle"></Keywords>
            <Keywords name="Folders in code2, close"></Keywords>
            <Keywords name="Folders in comment, open"></Keywords>
            <Keywords name="Folders in comment, middle"></Keywords>
            <Keywords name="Folders in comment, close"></Keywords>
            <Keywords name="Keywords1">AutoTrim&#x000D;&#x000A;BlockInput&#x000D;&#x000A;Break&#x000D;&#x000A;Click&#x000D;&#x000A;ClipWait&#x000D;&#x000A;ComObjActive&#x000D;&#x000A;ComObjArray&#x000D;&#x000A;ComObjConnect&#x000D;&#x000A;ComObjCreate&#x000D;&#x000A;ComObjEnwrap&#x000D;&#x000A;ComObjError&#x000D;&#x000A;ComObjFlags&#x000D;&#x000A;ComObjGet&#x000D;&#x000A;ComObjMissing&#x000D;&#x000A;ComObjParameter&#x000D;&#x000A;ComObjQuery&#x000D;&#x000A;ComObjType&#x000D;&#x000A;ComObjUnwrap&#x000D;&#x000A;ComObjValue&#x000D;&#x000A;Continue&#x000D;&#x000A;Control&#x000D;&#x000A;ControlClick&#x000D;&#x000A;ControlFocus&#x000D;&#x000A;ControlGet&#x000D;&#x000A;ControlGetFocus&#x000D;&#x000A;ControlGetPos&#x000D;&#x000A;ControlGetText&#x000D;&#x000A;ControlMove&#x000D;&#x000A;ControlSend&#x000D;&#x000A;ControlSendRaw&#x000D;&#x000A;ControlSetText&#x000D;&#x000A;CoordMode&#x000D;&#x000A;Critical&#x000D;&#x000A;DetectHiddenText&#x000D;&#x000A;DetectHiddenWindows&#x000D;&#x000A;DllCall&#x000D;&#x000A;Drive&#x000D;&#x000A;DriveGet&#x000D;&#x000A;DriveSpaceFree&#x000D;&#x000A;Else&#x000D;&#x000A;EndRepeat&#x000D;&#x000A;EnvAdd&#x000D;&#x000A;EnvDiv&#x000D;&#x000A;EnvGet&#x000D;&#x000A;EnvMult&#x000D;&#x000A;EnvSet&#x000D;&#x000A;EnvSub&#x000D;&#x000A;EnvUpdate&#x000D;&#x000A;Exit&#x000D;&#x000A;ExitApp&#x000D;&#x000A;FileAppend&#x000D;&#x000A;FileCopy&#x000D;&#x000A;FileCopyDir&#x000D;&#x000A;FileCreateDir&#x000D;&#x000A;FileCreateShortcut&#x000D;&#x000A;FileDelete&#x000D;&#x000A;FileGetAttrib&#x000D;&#x000A;FileGetShortcut&#x000D;&#x000A;FileGetSize&#x000D;&#x000A;FileGetTime&#x000D;&#x000A;FileGetVersion&#x000D;&#x000A;FileInstall&#x000D;&#x000A;FileMove&#x000D;&#x000A;FileMoveDir&#x000D;&#x000A;FileRead&#x000D;&#x000A;FileReadLine&#x000D;&#x000A;FileRecycle&#x000D;&#x000A;FileRecycleEmpty&#x000D;&#x000A;FileRemoveDir&#x000D;&#x000A;FileSelectFile&#x000D;&#x000A;FileSelectFolder&#x000D;&#x000A;FileSetAttrib&#x000D;&#x000A;FileSetTime&#x000D;&#x000A;FormatTime&#x000D;&#x000A;GetKeyState&#x000D;&#x000A;Gosub&#x000D;&#x000A;Goto&#x000D;&#x000A;GroupActivate&#x000D;&#x000A;GroupAdd&#x000D;&#x000A;GroupClose&#x000D;&#x000A;GroupDeactivate&#x000D;&#x000A;Gui&#x000D;&#x000A;GuiControl&#x000D;&#x000A;GuiControlGet&#x000D;&#x000A;HideAutoItWin&#x000D;&#x000A;Hotkey&#x000D;&#x000A;If&#x000D;&#x000A;IfEqual&#x000D;&#x000A;IfExist&#x000D;&#x000A;IfGreater&#x000D;&#x000A;IfGreaterOrEqual&#x000D;&#x000A;IfInString&#x000D;&#x000A;IfLess&#x000D;&#x000A;IfLessOrEqual&#x000D;&#x000A;IfMsgBox&#x000D;&#x000A;IfNotEqual&#x000D;&#x000A;IfNotExist&#x000D;&#x000A;IfNotInString&#x000D;&#x000A;IfWinActive&#x000D;&#x000A;IfWinExist&#x000D;&#x000A;IfWinNotActive&#x000D;&#x000A;IfWinNotExist&#x000D;&#x000A;ImageSearch&#x000D;&#x000A;IniDelete&#x000D;&#x000A;IniRead&#x000D;&#x000A;IniWrite&#x000D;&#x000A;Input&#x000D;&#x000A;InputBox&#x000D;&#x000A;IsLabel&#x000D;&#x000A;KeyHistory&#x000D;&#x000A;KeyWait&#x000D;&#x000A;ListHotkeys&#x000D;&#x000A;ListLines&#x000D;&#x000A;ListVars&#x000D;&#x000A;LoadPicture&#x000D;&#x000A;Loop&#x000D;&#x000A;Menu&#x000D;&#x000A;MouseClick&#x000D;&#x000A;MouseClickDrag&#x000D;&#x000A;MouseGetPos&#x000D;&#x000A;MouseMove&#x000D;&#x000A;MsgBox&#x000D;&#x000A;NumGet&#x000D;&#x000A;NumPut&#x000D;&#x000A;OnExit&#x000D;&#x000A;OnMessage&#x000D;&#x000A;OutputDebug&#x000D;&#x000A;Pause&#x000D;&#x000A;PixelGetColor&#x000D;&#x000A;PixelSearch&#x000D;&#x000A;PostMessage&#x000D;&#x000A;Process&#x000D;&#x000A;Progress&#x000D;&#x000A;Random&#x000D;&#x000A;RegDelete&#x000D;&#x000A;RegExMatch&#x000D;&#x000A;RegExReplace&#x000D;&#x000A;RegisterCallback&#x000D;&#x000A;RegRead&#x000D;&#x000A;RegWrite&#x000D;&#x000A;Reload&#x000D;&#x000A;Repeat&#x000D;&#x000A;Return&#x000D;&#x000A;Run&#x000D;&#x000A;RunAs&#x000D;&#x000A;RunWait&#x000D;&#x000A;Send&#x000D;&#x000A;SendMessage&#x000D;&#x000A;SendEvent&#x000D;&#x000A;SendInput&#x000D;&#x000A;SendMode&#x000D;&#x000A;SendPlay&#x000D;&#x000A;SendRaw&#x000D;&#x000A;SetBatchLines&#x000D;&#x000A;SetCapsLockState&#x000D;&#x000A;SetControlDelay&#x000D;&#x000A;SetDefaultMouseSpeed&#x000D;&#x000A;SetEnv&#x000D;&#x000A;SetFormat&#x000D;&#x000A;SetKeyDelay&#x000D;&#x000A;SetMouseDelay&#x000D;&#x000A;SetNumLockState&#x000D;&#x000A;SetScrollLockState&#x000D;&#x000A;SetStoreCapslockMode&#x000D;&#x000A;SetTimer&#x000D;&#x000A;SetTitleMatchMode&#x000D;&#x000A;SetWinDelay&#x000D;&#x000A;SetWorkingDir&#x000D;&#x000A;Shutdown&#x000D;&#x000A;Sleep&#x000D;&#x000A;Sort&#x000D;&#x000A;SoundBeep&#x000D;&#x000A;SoundGet&#x000D;&#x000A;SoundGetWaveVolume&#x000D;&#x000A;SoundPlay&#x000D;&#x000A;SoundSet&#x000D;&#x000A;SoundSetWaveVolume&#x000D;&#x000A;SplashImage&#x000D;&#x000A;SplashTextOff&#x000D;&#x000A;SplashTextOn&#x000D;&#x000A;SplitPath&#x000D;&#x000A;StatusBarGetText&#x000D;&#x000A;StatusBarWait&#x000D;&#x000A;StringCaseSense&#x000D;&#x000A;StringGetPos&#x000D;&#x000A;StringLeft&#x000D;&#x000A;StringLen&#x000D;&#x000A;StringLower&#x000D;&#x000A;StringMid&#x000D;&#x000A;StringReplace&#x000D;&#x000A;StringRight&#x000D;&#x000A;StringSplit&#x000D;&#x000A;StringTrimLeft&#x000D;&#x000A;StringTrimRight&#x000D;&#x000A;StringUpper&#x000D;&#x000A;StrReplace&#x000D;&#x000A;StrSplit&#x000D;&#x000A;SubStr&#x000D;&#x000A;Suspend&#x000D;&#x000A;SysGet&#x000D;&#x000A;Thread&#x000D;&#x000A;ToolTip&#x000D;&#x000A;Transform&#x000D;&#x000A;TrayTip&#x000D;&#x000A;URLDownloadToFile&#x000D;&#x000A;VarSetCapacity&#x000D;&#x000A;While&#x000D;&#x000A;WinActivate&#x000D;&#x000A;WinActivateBottom&#x000D;&#x000A;WinClose&#x000D;&#x000A;WinGet&#x000D;&#x000A;WinGetActiveStats&#x000D;&#x000A;WinGetActiveTitle&#x000D;&#x000A;WinGetClass&#x000D;&#x000A;WinGetPos&#x000D;&#x000A;WinGetText&#x000D;&#x000A;WinGetTitle&#x000D;&#x000A;WinHide&#x000D;&#x000A;WinKill&#x000D;&#x000A;WinMaximize&#x000D;&#x000A;WinMenuSelectItem&#x000D;&#x000A;WinMinimize&#x000D;&#x000A;WinMinimizeAll&#x000D;&#x000A;WinMinimizeAllUndo&#x000D;&#x000A;WinMove&#x000D;&#x000A;WinRestore&#x000D;&#x000A;WinSet&#x000D;&#x000A;WinSetTitle&#x000D;&#x000A;WinShow&#x000D;&#x000A;WinWait&#x000D;&#x000A;WinWaitActive&#x000D;&#x000A;WinWaitClose&#x000D;&#x000A;WinWaitNotActive&#x000D;&#x000A;</Keywords>
            <Keywords name="Keywords2">add&#x000D;&#x000A;font&#x000D;&#x000A;show&#x000D;&#x000A;new&#x000D;&#x000A;</Keywords>
            <Keywords name="Keywords3">%A_&#x000D;&#x000A;A_&#x000D;&#x000A;A_AhkPath&#x000D;&#x000A;A_AhkVersion&#x000D;&#x000A;A_AppData&#x000D;&#x000A;A_AppDataCommon&#x000D;&#x000A;A_AutoTrim&#x000D;&#x000A;A_BatchLines&#x000D;&#x000A;A_CaretX&#x000D;&#x000A;A_CaretY&#x000D;&#x000A;A_ComputerName&#x000D;&#x000A;A_ControlDelay&#x000D;&#x000A;A_Cursor&#x000D;&#x000A;A_DD&#x000D;&#x000A;A_DDD&#x000D;&#x000A;A_DDDD&#x000D;&#x000A;A_DefaultMouseSpeed&#x000D;&#x000A;A_Desktop&#x000D;&#x000A;A_DesktopCommon&#x000D;&#x000A;A_DetectHiddenText&#x000D;&#x000A;A_DetectHiddenWindows&#x000D;&#x000A;A_EndChar&#x000D;&#x000A;A_ExitReason&#x000D;&#x000A;A_FormatFloat&#x000D;&#x000A;A_FormatInteger&#x000D;&#x000A;A_Gui&#x000D;&#x000A;A_GuiControl&#x000D;&#x000A;A_EventInfo&#x000D;&#x000A;A_GuiX&#x000D;&#x000A;A_GuiY&#x000D;&#x000A;A_GuiEvent&#x000D;&#x000A;A_GuiControlEvent&#x000D;&#x000A;A_GuiHeight&#x000D;&#x000A;A_GuiWidth&#x000D;&#x000A;A_Hour&#x000D;&#x000A;A_IconFile&#x000D;&#x000A;A_IconHidden&#x000D;&#x000A;A_IconNumber&#x000D;&#x000A;A_IconTip&#x000D;&#x000A;A_Index&#x000D;&#x000A;A_IPAddress1&#x000D;&#x000A;A_IPAddress2&#x000D;&#x000A;A_IPAddress3&#x000D;&#x000A;A_IPAddress4&#x000D;&#x000A;A_Is64bitOS&#x000D;&#x000A;A_ISAdmin&#x000D;&#x000A;A_IsCompiled&#x000D;&#x000A;A_IsPaused&#x000D;&#x000A;A_IsCritical&#x000D;&#x000A;A_IsSuspended&#x000D;&#x000A;A_IsUnicode&#x000D;&#x000A;A_KeyDelay&#x000D;&#x000A;A_Language&#x000D;&#x000A;A_LastError&#x000D;&#x000A;A_LineNumber&#x000D;&#x000A;A_LineFile&#x000D;&#x000A;A_LoopField&#x000D;&#x000A;A_LoopFileAttrib&#x000D;&#x000A;A_LoopFileDir&#x000D;&#x000A;A_LoopFileExt&#x000D;&#x000A;A_LoopFileFullPath&#x000D;&#x000A;A_LoopFileLongPath&#x000D;&#x000A;A_LoopFileName&#x000D;&#x000A;A_LoopFileShortName&#x000D;&#x000A;A_LoopFileShortPath&#x000D;&#x000A;A_LoopFileSize&#x000D;&#x000A;A_LoopFileSizeKB&#x000D;&#x000A;A_LoopFileSizeMB&#x000D;&#x000A;A_LoopFileTimeAccessed&#x000D;&#x000A;A_LoopFileTimeCreated&#x000D;&#x000A;A_LoopFileTimeModified&#x000D;&#x000A;A_LoopReadLine&#x000D;&#x000A;A_LoopRegKey&#x000D;&#x000A;A_LoopRegName&#x000D;&#x000A;A_LoopRegSubkey&#x000D;&#x000A;A_LoopRegTimeModified&#x000D;&#x000A;A_LoopRegType&#x000D;&#x000A;A_MDAY&#x000D;&#x000A;A_Min&#x000D;&#x000A;A_MM&#x000D;&#x000A;A_MMM&#x000D;&#x000A;A_MMMM&#x000D;&#x000A;A_MON&#x000D;&#x000A;A_MouseDelay&#x000D;&#x000A;A_MyDocuments&#x000D;&#x000A;A_Now&#x000D;&#x000A;A_NowUTC&#x000D;&#x000A;A_NumBatchLines&#x000D;&#x000A;A_OSType&#x000D;&#x000A;A_OSVersion&#x000D;&#x000A;A_PriorHotkey&#x000D;&#x000A;ProgramFiles&#x000D;&#x000A;A_ProgramFiles&#x000D;&#x000A;A_Programs&#x000D;&#x000A;A_ProgramsCommon&#x000D;&#x000A;A_PtrSize&#x000D;&#x000A;A_ScreenHeight&#x000D;&#x000A;A_ScreenWidth&#x000D;&#x000A;A_ScriptDir&#x000D;&#x000A;A_ScriptFullPath&#x000D;&#x000A;A_ScriptName&#x000D;&#x000A;A_Sec&#x000D;&#x000A;A_Space&#x000D;&#x000A;A_StartMenu&#x000D;&#x000A;A_StartMenuCommon&#x000D;&#x000A;A_Startup&#x000D;&#x000A;A_StartupCommon&#x000D;&#x000A;A_StringCaseSense&#x000D;&#x000A;A_Tab&#x000D;&#x000A;A_Temp&#x000D;&#x000A;A_ThisHotkey&#x000D;&#x000A;A_ThisFunc&#x000D;&#x000A;A_ThisLabel&#x000D;&#x000A;A_ThisMenu&#x000D;&#x000A;A_ThisMenuItem&#x000D;&#x000A;A_ThisMenuItemPos&#x000D;&#x000A;A_TickCount&#x000D;&#x000A;A_TimeIdle&#x000D;&#x000A;A_TimeIdlePhysical&#x000D;&#x000A;A_TimeSincePriorHotkey&#x000D;&#x000A;A_TimeSinceThisHotkey&#x000D;&#x000A;A_TitleMatchMode&#x000D;&#x000A;A_TitleMatchModeSpeed&#x000D;&#x000A;A_UserName&#x000D;&#x000A;A_WDay&#x000D;&#x000A;A_WinDelay&#x000D;&#x000A;A_WinDir&#x000D;&#x000A;A_WorkingDir&#x000D;&#x000A;A_YDay&#x000D;&#x000A;A_YEAR&#x000D;&#x000A;A_YWeek&#x000D;&#x000A;A_YYYY&#x000D;&#x000A;Clipboard&#x000D;&#x000A;ComSpec&#x000D;&#x000A;ErrorLevel&#x000D;&#x000A;True&#x000D;&#x000A;False&#x000D;&#x000A;Off&#x000D;&#x000A;On&#x000D;&#x000A;</Keywords>
            <Keywords name="Keywords4">activeX&#x000D;&#x000A;button&#x000D;&#x000A;checkbox&#x000D;&#x000A;combobox&#x000D;&#x000A;custom&#x000D;&#x000A;datetime&#x000D;&#x000A;dropdownlist&#x000D;&#x000A;edit&#x000D;&#x000A;groupbox&#x000D;&#x000A;hotkey&#x000D;&#x000A;link&#x000D;&#x000A;listbox&#x000D;&#x000A;listview&#x000D;&#x000A;monthcal&#x000D;&#x000A;pic&#x000D;&#x000A;picture&#x000D;&#x000A;progress&#x000D;&#x000A;radio&#x000D;&#x000A;slider&#x000D;&#x000A;statusbar&#x000D;&#x000A;tab&#x000D;&#x000A;tab2&#x000D;&#x000A;tab3&#x000D;&#x000A;text&#x000D;&#x000A;treeview&#x000D;&#x000A;updown</Keywords>
            <Keywords name="Keywords5">lv_modifycol&#x000D;&#x000A;lv_add&#x000D;&#x000A;lv_insert&#x000D;&#x000A;lv_modify&#x000D;&#x000A;lv_delete&#x000D;&#x000A;lv_insertcol&#x000D;&#x000A;lv_deletecol&#x000D;&#x000A;lv_getcount&#x000D;&#x000A;lv_getnext&#x000D;&#x000A;lv_gettext&#x000D;&#x000A;il_create&#x000D;&#x000A;lv_setimagelist&#x000D;&#x000A;il_add&#x000D;&#x000A;il_destroy</Keywords>
            <Keywords name="Keywords6">#AllowSameLineComments&#x000D;&#x000A;#ClipboardTimeout&#x000D;&#x000A;#CommentFlag&#x000D;&#x000A;#ErrorStdOut&#x000D;&#x000A;#EscapeChar&#x000D;&#x000A;#HotkeyInterval&#x000D;&#x000A;#HotkeyModIfierTimeout&#x000D;&#x000A;#Hotstring&#x000D;&#x000A;#Include&#x000D;&#x000A;#IncludeAgain&#x000D;&#x000A;#IfWinActive&#x000D;&#x000A;#IfWinExist&#x000D;&#x000A;#IfWinNotActive&#x000D;&#x000A;#IfWinNotExist&#x000D;&#x000A;#InstallKeybdHook&#x000D;&#x000A;#InstallMouseHook&#x000D;&#x000A;#KeyHistory&#x000D;&#x000A;#MaxHotkeysPerInterval&#x000D;&#x000A;#MaxMem&#x000D;&#x000A;#MaxThreads&#x000D;&#x000A;#MaxThreadsBuffer&#x000D;&#x000A;#MaxThreadsPerHotkey&#x000D;&#x000A;#NoEnv&#x000D;&#x000A;#NoTrayIcon&#x000D;&#x000A;#Persistent&#x000D;&#x000A;#SingleInstance&#x000D;&#x000A;#UseHook&#x000D;&#x000A;#WinActivateForce&#x000D;&#x000A;Static</Keywords>
            <Keywords name="Keywords7">norm&#x000D;&#x000A;underline&#x000D;&#x000A;bold&#x000D;&#x000A;italic&#x000D;&#x000A;strike&#x000D;&#x000A;cDefault&#x000D;&#x000A;cBlack&#x000D;&#x000A;cSilver&#x000D;&#x000A;cGray&#x000D;&#x000A;cWhite&#x000D;&#x000A;cMaroon&#x000D;&#x000A;cRed&#x000D;&#x000A;cPurple&#x000D;&#x000A;cFuchsia&#x000D;&#x000A;cGreen&#x000D;&#x000A;cLime&#x000D;&#x000A;cOlive&#x000D;&#x000A;cYellow&#x000D;&#x000A;cNavy&#x000D;&#x000A;cBlue&#x000D;&#x000A;cTeal&#x000D;&#x000A;cAqua</Keywords>
            <Keywords name="Keywords8">Global&#x000D;&#x000A;Local</Keywords>
            <Keywords name="Delimiters">00% 01 02((% EOL)) 03" 04\" 05((" EOL)) 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23</Keywords>
        </KeywordLists>
        <Styles>
            <WordsStyle name="DEFAULT" fgColor="EAEAEA" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="COMMENTS" fgColor="00D56A" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="LINE COMMENTS" fgColor="00D56A" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="NUMBERS" fgColor="FF5959" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS1" fgColor="0080FF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS2" fgColor="60D1FD" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS3" fgColor="FF8040" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS4" fgColor="5BC1FF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS5" fgColor="D2A6A6" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS6" fgColor="FFA6FF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS7" fgColor="A4FFA4" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS8" fgColor="FF0000" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="OPERATORS" fgColor="FFFF00" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="FOLDER IN CODE1" fgColor="38B86B" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="FOLDER IN CODE2" fgColor="FFFFFF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="FOLDER IN COMMENT" fgColor="FFFFFF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS1" fgColor="FF8040" bgColor="000000" fontName="" fontStyle="0" nesting="514" />
            <WordsStyle name="DELIMITERS2" fgColor="FEC994" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS3" fgColor="FFFFFF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS4" fgColor="FF00FF" bgColor="000000" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
        </Styles>
    </UserLang>
</NotepadPlus>
Looks like I had to remove the curly braces from delimiter 1 and move to Folding code 1.
KusochekDobra
Posts: 32
Joined: 25 Apr 2016, 18:00

Re: Setup Notepad++ for AutoHotkey

31 Mar 2017, 18:32

Thanks all for your serious approach to this business!
ry3ks3u_m4dd0ns
Posts: 18
Joined: 29 Mar 2017, 09:23

Re: Setup Notepad++ for AutoHotkey

01 Apr 2017, 17:33

Alright, this works fine on the latest version of NPP at the time I made this post, but now something wrong's happening.

At least I think it's wrong.

So, I made a script before installing the user defined language, and after I did, I restarted NPP and selected AutoHotKey on Language, to be greeted with this:

Image
azzendix
Posts: 1
Joined: 04 Apr 2017, 20:21

Re: Setup Notepad++ for AutoHotkey

04 Apr 2017, 23:35

@ry3ks3u_m4dd0ns

That's because it made for the white color theme(default theme). You can fix it by changing the background color to match your current theme.
Open userDefineLang.xml and change from bgColor="FFFFFF" to bgColor="112435".

I did it for myself already. Here is it.
jNizM AutoHotkey Syntax-Highlighting - For Ruby Blue: https://pastebin.com/BP7McfjB
User avatar
jNizM
Posts: 2341
Joined: 30 Sep 2013, 01:33
GitHub: jNizM
Contact:

Re: Setup Notepad++ for AutoHotkey

21 Apr 2017, 08:00

Update:
- Added MsgBox Creator (by boiler) into others
- Added Run script (by boiler) into others
[AHK] 1.1.30.01 x64 Unicode | [WIN] 10 Pro (Version 1803) x64 | [GitHub] Profile
Donations are appreciated if I could help you
User avatar
fischgeek
Posts: 424
Joined: 29 Jan 2014, 21:39

Re: Setup Notepad++ for AutoHotkey

04 Jul 2017, 20:25

I have this all working. I'm just wondering, has anyone been able to get parameter hints working on a comma separated command (ex. IniWrite)?
User avatar
boiler
Posts: 2372
Joined: 21 Dec 2014, 02:44

Re: Setup Notepad++ for AutoHotkey

04 Jul 2017, 20:49

No, I believe Notepad++ will only trigger that for functions (on an open parenthesis character). You might be interested these parameter expander tools that will work for functions, commands, and directives: this one from Helgef and one I made.
User avatar
fischgeek
Posts: 424
Joined: 29 Jan 2014, 21:39

Re: Setup Notepad++ for AutoHotkey

05 Jul 2017, 14:28

Thanks! Though, both solutions are nice, it's too much deletion for my liking. I'm currently implementing something like this at the moment. It seems to be doing what I want so far.

Code: Select all

:b0*:iniread`,::
{ 
	ahkDocTip(A_ThisHotkey) 
	return
}
:b0*:iniwrite`,::
{ 
	ahkDocTip(A_ThisHotkey) 
	return
}
:b0*:inidelete`,::
{ 
	ahkDocTip(A_ThisHotkey) 
	return
}

ahkDocTip(cmd) {
	ToolTip, % getParameterHint(formatCmd(cmd)), % A_CaretX, % A_CaretY+20
	Sleep, 3000
	ToolTip
}
formatCmd(cmd) {
	RegExMatch(cmd, "i):b0\*:(.*)\,", match)
	return match1
}
getParameterHint(cmd) {
	o := {"":""
		, "IniWrite"	: "IniWrite, Value, Filename, Section, Key"
		, "IniDelete"	: "IniDelete, Filename, Section [, Key]" 
		, "IniRead"		: "IniRead, OutputVar, Filename, Section, Key [, Default]" 
		, "":""}
	return o[cmd]
}
User avatar
Maestr0
Posts: 39
Joined: 05 Dec 2013, 17:43

Re: Setup Notepad++ for AutoHotkey

11 Jul 2017, 12:16

I'm using NPP 7.4.2 32-bit on a 64-bit system (for plugin reasons). I get an error message when I try to import your file: "Fail to import."

When I try importing this one, it worked just fine: http://notepad-plus.sourceforge.net/com ... hotkey.xml
Asmodeus
Posts: 55
Joined: 19 Oct 2015, 15:53

Re: Setup Notepad++ for AutoHotkey

04 Aug 2017, 18:07

I like to setup a complete portable solution, so I downloaded ahk / notepad++ portable.

I followed the setup tutorial, everything (Syntax-Highlighting, Auto-Completion, [Hotstrings]) works.

How to setup "RunMe" / "boiler Run" without registering the ahk file extension in Windows?

I have the same issue with Notepad2-mod. Execute will pop up a Dialog "Windows cannot open this file: test.ahk"
User avatar
Masonjar13
Posts: 1405
Joined: 20 Jul 2014, 10:16
GitHub: Masonjar13
Location: Не Россия

Re: Setup Notepad++ for AutoHotkey

04 Aug 2017, 19:17

Asmodeus wrote:I like to setup a complete portable solution, so I downloaded ahk / notepad++ portable.
I accomplished this by making a compiled AHK script that runs the selected script as a parameter to the AutoHotkey executable. You can set it up to work with 32/64-bit (separately or dynamically), drag-n-drop onto the compiled script (pretty much the same as dropping it onto the AutoHotkey executable itself), make a GUI for it, etc.. I used fileSelectFile myself, easy enough.
Asmodeus
Posts: 55
Joined: 19 Oct 2015, 15:53

Re: Setup Notepad++ for AutoHotkey

05 Aug 2017, 17:40

Masonjar13 wrote:I accomplished this by making a compiled AHK script that runs the selected script as a parameter to the AutoHotkey executable.
do you mind sharing the source code?

I believe this could be pretty useful for other portable apps affectionados.
User avatar
Masonjar13
Posts: 1405
Joined: 20 Jul 2014, 10:16
GitHub: Masonjar13
Location: Не Россия

Re: Setup Notepad++ for AutoHotkey

05 Aug 2017, 19:11

Sure, here you go. Made a whole UI for it, I guess. Made this quite a while ago (compiled Aug '15). Had to pull it out and re-format it, didn't have it saved anywhere. And, as I mentioned, only really useful if it's compiled. I recommend compiling it as a 32-bit so it will run on 32 and 64.

Note: I had it set up in the same directory as the AHK executables, and you can put your stdlib there as well. I also only kept the Unicode versions in, so if someone wants to use the ANSI version, they'll have to add that in.

Code: Select all

#SingleInstance Force
#Persistent
AHK_ver:=a_is64bitOS?"AutoHotkeyU64.exe":"AutoHotkeyU32.exe"
AHK_dir:=a_scriptDir

menu,lvd,add,Remove,lvRemove
gui,font,s10
gui,add,listView,vlist w400 r9 glvEvents altSubmit,AHK Scripts|Paths
LV_ModifyCol(1,150)
gui,font,s12
gui,add,button,gaddFiles section,Add Files
gui,add,button,grunFiles ys x349,Run All
gui,show,,AHK Run
return

addFiles:
fileSelectFile,aFiles,M3,,,AHK Scripts (*.ahk; *.ahkl)
if(errorlevel)
    return
loop,parse,aFiles,`n
{
    if(a_index=1){
        fileDir:=a_loopField
        continue
    }
    splitPath,a_loopField,fileName,,fileExt
    if(fileExt!="ahk"&&fileExt!="ahkl"){
        msgbox,,Error,Only AutoHotkey files may be added.
        break
    }
    LV_Add(,fileName,fileDir)
}
return

runFiles:
loop % LV_GetCount()
{
    LV_GetText(fileDir,a_index,2)
    LV_GetText(fileName,a_index,1)
    run,% """" . AHK_dir . "\" . AHK_ver . """ """ . fileDir . "\" . fileName . """",% fileDir
}
exitapp

lvEvents:
if(a_guiEvent="RightClick"){
    lvEvent:=a_eventInfo
    menu,lvd,show
}
return

lvRemove:
LV_Delete(lvEvent)
return

guiDropFiles:
loop,parse,a_guiEvent,`n
{
    splitPath,a_loopField,fileName,fileDir,fileExt
    if(fileExt!="ahk"&&fileExt!="ahkl"){
        msgbox,,Error,Only AutoHotkey files may be added.
        break
    }
    LV_Add(,fileName,fileDir)
}
return

guiClose:
exitapp
Asmodeus
Posts: 55
Joined: 19 Oct 2015, 15:53

Re: Setup Notepad++ for AutoHotkey

06 Aug 2017, 16:19

thanks for the code, i learned some things from it. though i compiled it as recommended but i still get the message "Windows can't open this file".
i've downloaded and unpacked ahk portable in C:\AutoHotkey folder and put your compiled code in the same directory.
Image
as mentioned my goal is to execute code without installing ahk using an editor like notepad++portable/notepad2-mod.
code execution should run in the background without showing any gui.

this simple code works, a script can be run without installation / registering the file extension for shell execution.

Code: Select all

#SingleInstance Force
#NoTrayIcon
run, C:\AutoHotkey\AutoHotkeyU32.exe "C:\AutoHotkey\test1.ahk"
ExitApp
it should be pretty easy, if i knew how make it generic :headwall:
User avatar
Masonjar13
Posts: 1405
Joined: 20 Jul 2014, 10:16
GitHub: Masonjar13
Location: Не Россия

Re: Setup Notepad++ for AutoHotkey

06 Aug 2017, 18:09

I'm fully aware of what you asked.. There was evidently a bug. Though, literally only one line needed to change. For user friendliness, I changed two lines: line 4, allows for easier changing of AHK directory, and line 40 (39 previously).

Return to “Editors”

Who is online

Users browsing this forum: No registered users and 3 guests