Notepad++ » History » Version 4
  iri, 12/11/2013 03:56 PM 
  
| 1 | 1 | iri | h1. Notepad++ | 
|---|---|---|---|
| 2 | |||
| 3 | "Notepad++":http://notepad-plus.sourceforge.net/ is a free text editor on MS Windows only. | ||
| 4 | |||
| 5 | h2. Syntax highlighting | ||
| 6 | |||
| 7 | For the packages files (pkg). | ||
| 8 | 3 | iri | Edit the _%AppData%\Notepad++\userDefineLang.xml_ file (create it if it does'nt exist). By default, this file is in @C:\Users\your_login\AppData\Roaming\Notepad++\@ | 
| 9 | 1 | iri | Add it this at the end : | 
| 10 | |||
| 11 | <pre> | ||
| 12 | <NotepadPlus> | ||
| 13 | 2 | iri | <UserLang name="Scol" ext="pkg" udlVersion="2.1"> | 
| 14 | <Settings> | ||
| 15 | <Global caseIgnored="no" allowFoldOfComments="no" foldCompact="no" forcePureLC="0" decimalSeparator="0" /> | ||
| 16 | <Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" /> | ||
| 17 | </Settings> | ||
| 18 | <KeywordLists> | ||
| 19 | <Keywords name="Comments">03/* 04*/ 00// 01 02</Keywords> | ||
| 20 | <Keywords name="Numbers, prefix1"></Keywords> | ||
| 21 | <Keywords name="Numbers, prefix2"></Keywords> | ||
| 22 | <Keywords name="Numbers, extras1"></Keywords> | ||
| 23 | <Keywords name="Numbers, extras2"></Keywords> | ||
| 24 | <Keywords name="Numbers, suffix1"></Keywords> | ||
| 25 | <Keywords name="Numbers, suffix2"></Keywords> | ||
| 26 | <Keywords name="Numbers, range"></Keywords> | ||
| 27 | <Keywords name="Operators1"></Keywords> | ||
| 28 | <Keywords name="Operators2"></Keywords> | ||
| 29 | <Keywords name="Folders in code1, open"></Keywords> | ||
| 30 | <Keywords name="Folders in code1, middle"></Keywords> | ||
| 31 | <Keywords name="Folders in code1, close"></Keywords> | ||
| 32 | <Keywords name="Folders in code2, open"></Keywords> | ||
| 33 | <Keywords name="Folders in code2, middle"></Keywords> | ||
| 34 | <Keywords name="Folders in code2, close"></Keywords> | ||
| 35 | <Keywords name="Folders in comment, open"></Keywords> | ||
| 36 | <Keywords name="Folders in comment, middle"></Keywords> | ||
| 37 | <Keywords name="Folders in comment, close"></Keywords> | ||
| 38 | <Keywords name="Keywords1">fun typeof typedef var struct proto defcom defcomvar ;;</Keywords> | ||
| 39 | <Keywords name="Keywords2">set let -> <- mutate in</Keywords> | ||
| 40 | <Keywords name="Keywords3">if else then while do</Keywords> | ||
| 41 | <Keywords name="Keywords4"></Keywords> | ||
| 42 | <Keywords name="Keywords5"></Keywords> | ||
| 43 | <Keywords name="Keywords6"></Keywords> | ||
| 44 | <Keywords name="Keywords7"></Keywords> | ||
| 45 | <Keywords name="Keywords8"></Keywords> | ||
| 46 | <Keywords name="Delimiters">00' 01 02' 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23</Keywords> | ||
| 47 | </KeywordLists> | ||
| 48 | <Styles> | ||
| 49 | <WordsStyle name="DEFAULT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 50 | <WordsStyle name="COMMENTS" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 51 | <WordsStyle name="LINE COMMENTS" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 52 | <WordsStyle name="NUMBERS" fgColor="FF8040" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" /> | ||
| 53 | <WordsStyle name="KEYWORDS1" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" /> | ||
| 54 | <WordsStyle name="KEYWORDS2" fgColor="800000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" /> | ||
| 55 | <WordsStyle name="KEYWORDS3" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 56 | <WordsStyle name="KEYWORDS4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 57 | <WordsStyle name="KEYWORDS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 58 | <WordsStyle name="KEYWORDS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 59 | <WordsStyle name="KEYWORDS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 60 | <WordsStyle name="KEYWORDS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 61 | <WordsStyle name="OPERATORS" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 62 | <WordsStyle name="FOLDER IN CODE1" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 63 | <WordsStyle name="FOLDER IN CODE2" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 64 | <WordsStyle name="FOLDER IN COMMENT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 65 | <WordsStyle name="DELIMITERS1" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 66 | <WordsStyle name="DELIMITERS2" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 67 | <WordsStyle name="DELIMITERS3" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 68 | <WordsStyle name="DELIMITERS4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 69 | <WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 70 | <WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 71 | <WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 72 | <WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" /> | ||
| 73 | </Styles> | ||
| 74 | </UserLang> | ||
| 75 | </NotepadPlus> | ||
| 76 | </pre> | ||
| 77 | |||
| 78 | or, for an old NPP version : | ||
| 79 | |||
| 80 | <pre> | ||
| 81 | <NotepadPlus> | ||
| 82 | 1 | iri | <UserLang name='Scol' ext='pkg'> | 
| 83 | <Settings> | ||
| 84 | <Global caseIgnored='no' /> | ||
| 85 | <TreatAsSymbol comment='no' commentLine='no' /> | ||
| 86 | <Prefix words1='no' words2='no' words3='no' words4='no' /> | ||
| 87 | </Settings> | ||
| 88 | |||
| 89 | <KeywordLists> | ||
| 90 | <Keywords name='Delimiters'>'00'00</Keywords> | ||
| 91 | <Keywords name='Folder+'></Keywords> | ||
| 92 | <Keywords name='Folder-'></Keywords> | ||
| 93 | <Keywords name='Operators'></Keywords> | ||
| 94 | <Keywords name='Comment'>1/* 2*/ 0//</Keywords> | ||
| 95 | <Keywords name='Words1'>fun typeof typedef var struct proto defcom exec match with ;;</Keywords> | ||
| 96 | <Keywords name='Words2'>set let -> <- mutate in</Keywords> | ||
| 97 | <Keywords name='Words3'>if else then while do</Keywords> | ||
| 98 | <Keywords name='Words4'></Keywords> | ||
| 99 | </KeywordLists> | ||
| 100 | <Styles> | ||
| 101 | <WordsStyle name='DEFAULT' styleID='11' fgColor='000000' bgColor='FFFFFF' fontName='' fontStyle='0' /> | ||
| 102 | <WordsStyle name='FOLDEROPEN' styleID='12' fgColor='000000' bgColor='FFFFFF' fontName='' fontStyle='0' /> | ||
| 103 | <WordsStyle name='FOLDERCLOSE' styleID='13' fgColor='000000' bgColor='FFFFFF' fontName='' fontStyle='0' /> | ||
| 104 | <WordsStyle name='KEYWORD1' styleID='5' fgColor='FF0000' bgColor='FFFFFF' fontName='' fontStyle='1' /> | ||
| 105 | <WordsStyle name='KEYWORD2' styleID='6' fgColor='800000' bgColor='FFFFFF' fontName='' fontStyle='1' /> | ||
| 106 | <WordsStyle name='KEYWORD3' styleID='7' fgColor='0000FF' bgColor='FFFFFF' fontName='' fontStyle='0' /> | ||
| 107 | <WordsStyle name='KEYWORD4' styleID='8' fgColor='000000' bgColor='FFFFFF' fontName='' fontStyle='0' /> | ||
| 108 | <WordsStyle name='COMMENT' styleID='1' fgColor='008000' bgColor='FFFFFF' fontName='' fontStyle='0' /> | ||
| 109 | <WordsStyle name='COMMENT LINE' styleID='2' fgColor='008000' bgColor='FFFFFF' fontName='' fontStyle='0' /> | ||
| 110 | <WordsStyle name='NUMBER' styleID='4' fgColor='FF8040' bgColor='FFFFFF' fontName='' fontStyle='1' /> | ||
| 111 | <WordsStyle name='OPERATOR' styleID='10' fgColor='000000' bgColor='FFFFFF' fontName='' fontStyle='0' /> | ||
| 112 | <WordsStyle name='DELIMINER1' styleID='14' fgColor='808080' bgColor='FFFFFF' fontName='' fontStyle='0' /> | ||
| 113 | <WordsStyle name='DELIMINER2' styleID='15' fgColor='000000' bgColor='FFFFFF' fontName='' fontStyle='0' /> | ||
| 114 | <WordsStyle name='DELIMINER3' styleID='16' fgColor='000000' bgColor='FFFFFF' fontName='' fontStyle='0' /> | ||
| 115 | </Styles> | ||
| 116 | </UserLang> | ||
| 117 | </NotepadPlus> | ||
| 118 | </pre> | ||
| 119 | |||
| 120 | Relaunch Notepad++ if any. | ||
| 121 | |||
| 122 | h2. The code completion | ||
| 123 | |||
| 124 | Download the "scol_api_notepadpp.7z":http://www.irizone.net/dl/others/notepadpp/scol_api_notepadpp.7z file and extract the content in the _plugins/api_ subdirectory of the installation folder (by default C:\Program Files\Notepad++ or C:\Programs\Notepad++) | ||
| 125 | |||
| 126 | Go to Settings menu, next Preferences and choose Save / Completion tab. Configure it at your convenience. Validate and relaunch Notepad++. | ||
| 127 | |||
| 128 | h2. The FunctionList plugin | ||
| 129 | |||
| 130 | This plugin displays and sorts functions, types, constructors and variables in the side panel. | ||
| 131 | |||
| 132 | 3 | iri | Download the lastest plugin named "FunctionList" from "SourceForge":http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Plugin_Central#F | 
| 133 | In the most case, you should get the UNICODE version. | ||
| 134 | 1 | iri | Copy the dll in the _Plugins_ subfolder of the installation directory. Perform a backup if any. | 
| 135 | Copy all other files in %AppData%\Notepad++\Plugins\Config or in %AppInstall%\Notepad++\plugins\config\, especially _FunctionListRules.xml_ | ||
| 136 | Edit the _FunctionListRules.xml_ file and add it these line before just the last \"\" | ||
| 137 | |||
| 138 | <pre> | ||
| 139 | <Language name='Scol' imagelistpath=''> | ||
| 140 | <CommList param1='//' param2='' /> | ||
| 141 | <CommList param1='/\*' param2='\*/' /> | ||
| 142 | <Group name='FUNCTION' subgroup='' icon='0' child='0' autoexp='0' matchcase='1' fendtobbeg='' bbegtobend=''> | ||
| 143 | <Rules regexbeg='^[ \t]*fun[ \t]+' regexfunc='[a-zA-Z0-9_]+' regexend='' bodybegin='\=' bodyend=';;' sep='' /> | ||
| 144 | </Group> | ||
| 145 | <Group name='TYPEOF' subgroup='' icon='0' child='0' autoexp='0' matchcase='1' fendtobbeg='' bbegtobend=''> | ||
| 146 | <Rules regexbeg='^[ \t]*typeof[ \t]+' regexfunc='[a-zA-Z0-9_]+' regexend='' bodybegin='\=' bodyend=';;' sep='' /> | ||
| 147 | </Group> | ||
| 148 | <Group name='VAR' subgroup='' icon='0' child='0' autoexp='0' matchcase='1' fendtobbeg='' bbegtobend=''> | ||
| 149 | <Rules regexbeg='^[ \t]*var[ \t]+' regexfunc='[a-zA-Z0-9_]+' regexend='' bodybegin='\=' bodyend=';;' sep='' /> | ||
| 150 | </Group> | ||
| 151 | <Group name='PROTO' subgroup='' icon='0' child='0' autoexp='0' matchcase='1' fendtobbeg='' bbegtobend=''> | ||
| 152 | <Rules regexbeg='^[ \t]*proto[ \t]+' regexfunc='[a-zA-Z0-9_]+' regexend='' bodybegin='\=' bodyend=';;' sep='' /> | ||
| 153 | </Group> | ||
| 154 | <Group name='STRUCT' subgroup='' icon='0' child='0' autoexp='0' matchcase='1' fendtobbeg='' bbegtobend=''> | ||
| 155 | <Rules regexbeg='^[ \t]*struct[ \t]+' regexfunc='[a-zA-Z0-9_]+' regexend='' bodybegin='\=' bodyend=';;' sep='' /> | ||
| 156 | </Group> | ||
| 157 | <Group name='TYPEDEF' subgroup='' icon='0' child='0' autoexp='0' matchcase='1' fendtobbeg='' bbegtobend=''> | ||
| 158 | <Rules regexbeg='^[ \t]*typedef[ \t]+' regexfunc='[a-zA-Z0-9_]+' regexend='' bodybegin='\=' bodyend=';;' sep='' /> | ||
| 159 | </Group> | ||
| 160 | <Group name='DEFCOM' subgroup='' icon='0' child='0' autoexp='0' matchcase='1' fendtobbeg='' bbegtobend=''> | ||
| 161 | <Rules regexbeg='^[ \t]*defcom[ \t]+' regexfunc='[a-zA-Z0-9_]+' regexend='' bodybegin='\=' bodyend=';;' sep='' /> | ||
| 162 | </Group> | ||
| 163 | <Group name='DEFCOMVAR' subgroup='' icon='0' child='0' autoexp='0' matchcase='1' fendtobbeg='' bbegtobend=''> | ||
| 164 | <Rules regexbeg='^[ \t]*defcomvar[ \t]+' regexfunc='[a-zA-Z0-9_]+' regexend='' bodybegin='\=' bodyend=';;' sep='' /> | ||
| 165 | </Group> | ||
| 166 | </Language> | ||
| 167 | </pre> | ||
| 168 | |||
| 169 | 3 | iri | If the plugin doesn't work, try to uncheck "Make language Menu compact" in the menu Settings > Preferences > Language Menu. | 
| 170 | |||
| 171 | 4 | iri | You can edit too the file _%AppData%\Notepad++\functionList.xml (the same directory then the syntax highlighting above) to configure a parser for Scol : | 
| 172 | 3 | iri | |
| 173 | * In the *associationMap* section, add the item : | ||
| 174 | <pre><association userDefinedLangName="Scol" id="scol_function"/></pre> | ||
| 175 | |||
| 176 | * In the *parsers* section, add this block : | ||
| 177 | <pre> | ||
| 178 | <parser id="scol_function" displayName="Scol_source" commentExpr="((/\*.*?\*)/|(//.*?$))"> | ||
| 179 | <function | ||
| 180 | 				    mainExpr="^[\t ]*fun[\s]+\w+\(" | ||
| 181 | displayMode="$functionName"> | ||
| 182 | <functionName> | ||
| 183 | 						<nameExpr expr="(?!(if|whille))[\w_]+[\s]*\("/> | ||
| 184 | <nameExpr expr="(?!(if|while))[\w_]+"/> | ||
| 185 | </functionName> | ||
| 186 | </function> | ||
| 187 | </parser> | ||
| 188 | </pre> | ||
| 189 | |||
| 190 | So, you should obtain something like this : | ||
| 191 | |||
| 192 | <pre> | ||
| 193 | <?xml version="1.0" encoding="UTF-8" ?> | ||
| 194 | <!-- | ||
| 195 | For learning making your language parser, please check the following link: | ||
| 196 | http://notepad-plus-plus.org/features/function-list.html | ||
| 197 | --> | ||
| 198 | <NotepadPlus> | ||
| 199 | <functionList> | ||
| 200 | <associationMap> | ||
| 201 | <!-- langID: | ||
| 202 | L_TEXT: 0 L_PHP: 1 L_C: 2 L_CPP: 3 L_CS: 4 L_OBJC: 5 | ||
| 203 | L_JAVA: 6 L_RC: 7 L_HTML: 8 L_XML: 9 L_MAKEFILE: 10 L_PASCAL: 11 | ||
| 204 | L_BATCH:12 L_INI: 13 L_ASCII: 14 L_USER: 15 L_ASP: 16 L_SQL: 17 | ||
| 205 | L_VB: 18 L_JS: 19 L_CSS: 20 L_PERL: 21 L_PYTHON: 22 L_LUA: 23 | ||
| 206 | L_TEX: 24 L_FORTRAN: 25 L_BASH: 26 L_FLASH: 27 L_NSIS: 28 L_TCL: 29 | ||
| 207 | L_LISP: 30 L_SCHEME: 31 L_ASM: 32 L_DIFF: 33 L_PROPS: 34 L_PS: 35 | ||
| 208 | L_RUBY: 36 L_SMALLTALK:37 L_VHDL: 38 L_KIX: 39 L_AU3: 40 L_CAML: 41 | ||
| 209 | L_ADA: 42 L_VERILOG: 43 L_MATLAB: 44 L_HASKELL: 45 L_INNO: 46 L_SEARCHRESULT: 47 | ||
| 210 | L_CMAKE: 48 L_YAML: 49 L_COBOL 50 L_GUI4CLI: 51 L_D: 52 L_POWERSHELL: 53 | ||
| 211 | L_R: 54 L_JSP: 55 | ||
| 212 | --> | ||
| 213 | <association langID="1" id="php_function"/> | ||
| 214 | <association langID="2" id="c_function"/> | ||
| 215 | <association langID="3" id="c_cpp_function"/> | ||
| 216 | <association langID="6" id="java"/> | ||
| 217 | <association langID="9" id="xml_node"/> | ||
| 218 | <association langID="12" id="batch_label"/> | ||
| 219 | <association langID="13" id="ini_section"/> | ||
| 220 | <association langID="19" id="js_function"/> | ||
| 221 | <association langID="21" id="perl_function"/> | ||
| 222 | <association langID="28" id="nsis_syntax"/> | ||
| 223 | <association userDefinedLangName="Scol" id="scol_function"/> | ||
| 224 | <!-- | ||
| 225 | if langID cannot be found above, you can still set the file extensions | ||
| 226 | <association ext=".my_passer_ext1" id="my_passer_id"/> | ||
| 227 | <association ext=".my_passer_ext2" id="my_passer_id"/> | ||
| 228 | |||
| 229 | for User Defined Languages: | ||
| 230 | <association userDefinedLangName="my user defined language" id="my_udl_passer_id"/> | ||
| 231 | <association userDefinedLangName="Autocad" id="my_autocad_passer_id"/> | ||
| 232 | --> | ||
| 233 | |||
| 234 | </associationMap> | ||
| 235 | <parsers> | ||
| 236 | |||
| 237 | <parser id="xml_node" displayName="XML Node" commentExpr="<!--([^-]|-(?!->))*-->"> | ||
| 238 | <!-- Only match nodes with at least one attribute --> | ||
| 239 | <function | ||
| 240 | mainExpr="<[\w\?]+[\t ]+\w+[\t ]*=[\t ]*"[^"]+"" | ||
| 241 | displayMode="$functionName"> | ||
| 242 | <functionName> | ||
| 243 | <nameExpr expr="[^<]*"/> | ||
| 244 | </functionName> | ||
| 245 | </function> | ||
| 246 | </parser> | ||
| 247 | |||
| 248 | <parser id="batch_label" displayName="BAT Label" commentExpr="((::.*?$)|(REM.*?$))"> | ||
| 249 | <function | ||
| 250 | mainExpr="^[\t ]*:\w+" | ||
| 251 | displayMode="$functionName"> | ||
| 252 | <functionName> | ||
| 253 | <nameExpr expr="[^\t :]*"/> | ||
| 254 | </functionName> | ||
| 255 | </function> | ||
| 256 | </parser> | ||
| 257 | |||
| 258 | <parser id="ini_section" displayName="INI Section" commentExpr="((#.*?$)|(;.*?$))"> | ||
| 259 | <function | ||
| 260 | mainExpr="^[\t ]*[\["][\w_.; \(\)-]+[\]"]" | ||
| 261 | displayMode="$functionName"> | ||
| 262 | <functionName> | ||
| 263 | <nameExpr expr="[^\[\]"]*"/> | ||
| 264 | </functionName> | ||
| 265 | </function> | ||
| 266 | </parser> | ||
| 267 | |||
| 268 | <parser id="java" displayName="Java" commentExpr="((/\*.*?\*)/|(//.**$))"> | ||
| 269 | 				<classRange mainExpr="^[\t ]*((public|protected|private|static|final|abstract|synchronized|@(\w)+)\s+)*(class|enum|interface|@interface)\s+\w+(<\s*\w+(,\s*\w+)*\s*>)?(\s+extends\s+\w+)?(\s+implements\s+\w+(,\s*\w+)*)?\s*\{" openSymbole="\{" closeSymbole="\}"> | ||
| 270 | <className> | ||
| 271 | <nameExpr expr="(class|enum|interface|@interface)\s+\w+(<\s*\w+(,\s*\w+)*\s*>)?"></nameExpr> | ||
| 272 | <nameExpr expr="\s+\w+(<\s*\w+(,\s*\w+)*\s*>)?"></nameExpr> | ||
| 273 | <nameExpr expr="\w+(<\s*\w+(,\s*\w+)*\s*>)?"></nameExpr> | ||
| 274 | </className> | ||
| 275 | 					<function mainExpr="^[\t ]*((public|protected|private|static|final|abstract|synchronized|@(\w)+)\s+)*(\w*(\[\s*])*\s+)?(?!(if|while|for|switch|catch|synchronized)\b)\w+(\[\s*])*(<\s*\w+(,\s*\w+)*\s*>)?\s*\([^\)\(]*\)(\s+throws\s+\w+)?\s*\{"> | ||
| 276 | <functionName> | ||
| 277 | 							<funcNameExpr expr="(?!(if|while|for|switch|catch|synchronized)\b)\w+(\[\s*])*(<\s*\w+(,\s*\w+)*\s*>)?\s*\("></funcNameExpr> | ||
| 278 | <funcNameExpr expr="(?!(if|while|for|switch|catch|synchronized)\b)\w+(\[\s*])*(<\s*\w+(,\s*\w+)*\s*>)?"></funcNameExpr> | ||
| 279 | </functionName> | ||
| 280 | </function> | ||
| 281 | </classRange> | ||
| 282 | </parser> | ||
| 283 | |||
| 284 | <parser id="c_function" displayName="C source" commentExpr="((/\*.*?\*)/|(//.*?$))"> | ||
| 285 | <function | ||
| 286 | 				    mainExpr="^[\t ]*((static|const|virtual)[\s]+)?[\w:]+([\s]+[\w]+)?([\s]+|\*[\s]+|[\s]+\*|[\s]+\*[\s]+)([\w_]+[\s]*::)?(?!(if|while|for))[\w_]+[\s]*\([^\)\(]*\)([\s]*const[\s]*)?[\n\s]*\{" | ||
| 287 | displayMode="$functionName"> | ||
| 288 | <functionName> | ||
| 289 | 						<nameExpr expr="(?!(if|while|for))[\w_~]+[\s]*\("/> | ||
| 290 | <nameExpr expr="(?!(if|while|for))[\w_~]+"/> | ||
| 291 | </functionName> | ||
| 292 | </function> | ||
| 293 | </parser> | ||
| 294 | |||
| 295 | |||
| 296 | <parser id="js_function" displayName="Javascript" commentExpr="((/\*.*?\*)/|(//.*?$))"> | ||
| 297 | <function | ||
| 298 | 				    mainExpr="((^|[\s]+|[;\}\.])([_A-Za-z][\w_]*\.)*[_A-Za-z][\w_]*[\s]*=|^|[\s;\}]+)[\s]*function([\s]+[_A-Za-z]?[\w_]*\([^\)\(]*\)|\([^\)\(]*\))[\n\s]*\{" | ||
| 299 | displayMode="$className->$functionName"> | ||
| 300 | <functionName> | ||
| 301 | 						<nameExpr expr="[_A-Za-z][\w_]*[\s]*=|[_A-Za-z]?[\w_]*[\s]*\("/> | ||
| 302 | <nameExpr expr="[_A-Za-z]?[\w_]*"/> | ||
| 303 | </functionName> | ||
| 304 | <className> | ||
| 305 | <nameExpr expr="([_A-Za-z][\w_]*\.)*[_A-Za-z][\w_]*\."/> | ||
| 306 | <nameExpr expr="([_A-Za-z][\w_]*\.)*[_A-Za-z][\w_]*"/> | ||
| 307 | </className> | ||
| 308 | </function> | ||
| 309 | </parser> | ||
| 310 | |||
| 311 | |||
| 312 | <parser id="c_cpp_function" displayName="C++ Class" commentExpr="((/\*.*?\*)/|(//.*?$))"> | ||
| 313 | <classRange | ||
| 314 | 					mainExpr="^[\t ]*(class|struct)[\t ]+[\w]+[\s]*(:[\s]*(public|protected|private)[\s]+[\w]+[\s]*)?\{" | ||
| 315 | 					openSymbole = "\{" | ||
| 316 | closeSymbole = "\}" | ||
| 317 | displayMode="node"> | ||
| 318 | <className> | ||
| 319 | <nameExpr expr="(class|struct)[\t ]+[\w]+"/> | ||
| 320 | <nameExpr expr="[\t ]+[\w]+"/> | ||
| 321 | <nameExpr expr="[\w]+"/> | ||
| 322 | </className> | ||
| 323 | <function | ||
| 324 | 						mainExpr="^[\t ]*((static|const|virtual)[\s]+)?([\w]+([\s]+[\w]+)?([\s]+|\*[\s]+|[\s]+\*|[\s]+\*[\s]+))?([\w_]+[\s]*::)?(?!(if|while|for|switch))[\w_~]+[\s]*\([^\)\(]*\)([\s]*const[\s]*)?[\n\s]*\{"> | ||
| 325 | <functionName> | ||
| 326 | 							<funcNameExpr expr="(?!(if|while|for|switch))[\w_~]+[\s]*\("/> | ||
| 327 | <funcNameExpr expr="(?!(if|while|for|switch))[\w_~]+"/> | ||
| 328 | </functionName> | ||
| 329 | </function> | ||
| 330 | </classRange> | ||
| 331 | <function | ||
| 332 | 				    mainExpr="^[\t ]*((static|const|virtual)[\s]+)?[\w]+([\s]+[\w]+)?([\s]+|\*[\s]+|[\s]+\*|[\s]+\*[\s]+)([\w_]+[\s]*::)?(?!(if|while|for))[\w_]+[\s]*\([^\)\(]*\)([\s]*const[\s]*)?[\n\s]*\{" | ||
| 333 | displayMode="$className->$functionName"> | ||
| 334 | <functionName> | ||
| 335 | 						<nameExpr expr="(?!(if|while|for))[\w_]+[\s]*\("/> | ||
| 336 | <nameExpr expr="(?!(if|while|for))[\w_]+"/> | ||
| 337 | </functionName> | ||
| 338 | <className> | ||
| 339 | <nameExpr expr="[\w_]+(?=[\s]*::)"/> | ||
| 340 | </className> | ||
| 341 | </function> | ||
| 342 | </parser> | ||
| 343 | |||
| 344 | <parser id="nsis_syntax" displayName="NSIS Syntax" commentExpr="((/\*.*?\*)/|(#.*?$)|(;.*?$))"> | ||
| 345 | <function | ||
| 346 | mainExpr="^[\t ]*(!macro|Function|Section|SectionGroup)[\t ]+[^\r\n]*$" | ||
| 347 | displayMode="$functionName"> | ||
| 348 | <functionName> | ||
| 349 | <nameExpr expr="(?(?=[\t ]*!macro)[\t ]*!macro[\t ]+[^\s]+|[^\r\n]*)"/> | ||
| 350 | </functionName> | ||
| 351 | </function> | ||
| 352 | </parser> | ||
| 353 | |||
| 354 | <parser id="perl_function" displayName="Perl"> | ||
| 355 | 				<function mainExpr="sub[\s]+[\w]+[\s]*\([^\)\(]*\)[\n\s]*\{" displayMode="$className->$functionName"> | ||
| 356 | <functionName> | ||
| 357 | <nameExpr expr="(sub[\s]+)?\K[\w]+"/> | ||
| 358 | </functionName> | ||
| 359 | <className> | ||
| 360 | <nameExpr expr="[\w]+(?=[\s]*::)"/> | ||
| 361 | </className> | ||
| 362 | </function> | ||
| 363 | </parser> | ||
| 364 | |||
| 365 | <parser id="php_function" displayName="PHP" commentExpr="((/\*.*?\*)/|(//.*?$))"> | ||
| 366 | <classRange | ||
| 367 | 					mainExpr="^[\t ]*(class|struct|abstract[\t ]+class)[\t ]+[\w]+([\s]*|[\s\t]*(extends|implement)[\t ]+[\w]+[\s]*)?\{" | ||
| 368 | 					openSymbole = "\{" | ||
| 369 | closeSymbole = "\}" | ||
| 370 | displayMode="node"> | ||
| 371 | <className> | ||
| 372 | <nameExpr expr="(class|struct|abstract[\t ]+class)[\t ]+[\w]+"/> | ||
| 373 | <nameExpr expr="[\t ]+[\w]+\Z"/> | ||
| 374 | <nameExpr expr="[\w]+\Z"/> | ||
| 375 | </className> | ||
| 376 | <function | ||
| 377 | 						mainExpr="^[\t ]*((static|public|protected|abstract|private|private[\s]+static|public[\s]+static|protected[\s]+static)[\s]+)?(function[\s]+)+([\w]+([\s]+[\w]+)?([\s]+|\*[\s]+|[\s]+\*|[\s]+\*[\s]+))?([\w_]+[\s]*::)?(?!(if|while|for|switch))[\w_~]+[\s]*\([^\{]*\{"> | ||
| 378 | <functionName> | ||
| 379 | 							<funcNameExpr expr="(?!(if|while|for|switch))[\w_~]+[\s]*\([^\{]*"/> | ||
| 380 | <!-- comment below node if want display method with parmas --> | ||
| 381 | <funcNameExpr expr="(?!(if|while|for|switch))[\w_~]+"/> | ||
| 382 | </functionName> | ||
| 383 | </function> | ||
| 384 | </classRange> | ||
| 385 | <function | ||
| 386 | 				    mainExpr="^[\t ]*function[\s]+\w+\(" | ||
| 387 | |||
| 388 | displayMode="$className->$functionName"> | ||
| 389 | <functionName> | ||
| 390 | 						<nameExpr expr="(?!(if|while|for))[\w_]+[\s]*\("/> | ||
| 391 | <nameExpr expr="(?!(if|while|for))[\w_]+"/> | ||
| 392 | </functionName> | ||
| 393 | <className> | ||
| 394 | <nameExpr expr="[\w_]+(?=[\s]*::)"/> | ||
| 395 | </className> | ||
| 396 | </function> | ||
| 397 | </parser> | ||
| 398 | |||
| 399 | <parser id="scol_function" displayName="Scol_source" commentExpr="((/\*.*?\*)/|(//.*?$))"> | ||
| 400 | <function | ||
| 401 | 				    mainExpr="^[\t ]*fun[\s]+\w+\(" | ||
| 402 | displayMode="$functionName"> | ||
| 403 | <functionName> | ||
| 404 | 						<nameExpr expr="(?!(if|whille))[\w_]+[\s]*\("/> | ||
| 405 | <nameExpr expr="(?!(if|while))[\w_]+"/> | ||
| 406 | </functionName> | ||
| 407 | </function> | ||
| 408 | </parser> | ||
| 409 | |||
| 410 | </parsers> | ||
| 411 | </functionList> | ||
| 412 | </NotepadPlus> | ||
| 413 | </pre> | ||
| 414 | |||
| 415 | Save an relaunch NPP. | ||
| 416 | Note : NPP can be slower with the FunctionList plugin. | ||
| 417 | 1 | iri | |
| 418 | !http://www.irizone.net/sites/default/files/styles/large/public/field/image/app_notepad_img1.png! |