1 //this file is part of notepad++
2 //Copyright (C)2003 Don HO <donho@altern.org>
3 //
4 //This program is free software; you can redistribute it and/or
5 //modify it under the terms of the GNU General Public License
6 //as published by the Free Software Foundation; either
7 //version 2 of the License, or (at your option) any later version.
8 //
9 //This program is distributed in the hope that it will be useful,
10 //but WITHOUT ANY WARRANTY; without even the implied warranty of
11 //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 //GNU General Public License for more details.
13 //
14 //You should have received a copy of the GNU General Public License
15 //along with this program; if not, write to the Free Software
16 //Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 /**
18  * Notepad++ lang
19  *
20  * Author: dokutoku, https://twitter.com/dokutoku3
21  * License: GPL-2.0 or later
22  */
23 module npp_api.pluginfunc.lang;
24 
25 
26 private static import core.sys.windows.winbase;
27 private static import core.sys.windows.windef;
28 private static import std.algorithm;
29 private static import std.array;
30 private static import std.path;
31 private static import std.traits;
32 private static import npp_api.powereditor.menucmdid;
33 private static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
34 private static import npp_api.pluginfunc.npp_msgs;
35 private static import npp_api.pluginfunc.string;
36 private static import npp_api.pluginfunc.path;
37 
38 pragma(inline, true)
39 pure nothrow @safe @nogc
40 bool is_known_lang(npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang)
41 
42 	do
43 	{
44 		return (lang != npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_EXTERNAL) && (lang != npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JS);
45 	}
46 
47 /**
48  * is programming language
49  * ToDo:
50  */
51 pragma(inline, true)
52 pure nothrow @safe @nogc
53 bool is_p_lang(npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang)
54 
55 	do
56 	{
57 		switch (lang) {
58 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEXT:
59 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP:
60 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_C:
61 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CPP:
62 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CS:
63 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OBJC:
64 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVA:
65 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RC:
66 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HTML:
67 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_XML:
68 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MAKEFILE:
69 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PASCAL:
70 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BATCH:
71 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INI:
72 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASCII:
73 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_USER:
74 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASP:
75 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SQL:
76 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VB:
77 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JS:
78 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSS:
79 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PERL:
80 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PYTHON:
81 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LUA:
82 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEX:
83 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN:
84 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BASH:
85 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FLASH:
86 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NSIS:
87 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TCL:
88 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LISP:
89 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SCHEME:
90 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASM:
91 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_DIFF:
92 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PROPS:
93 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PS:
94 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUBY:
95 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SMALLTALK:
96 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VHDL:
97 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_KIX:
98 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AU3:
99 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CAML:
100 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ADA:
101 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VERILOG:
102 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MATLAB:
103 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HASKELL:
104 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INNO:
105 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SEARCHRESULT:
106 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CMAKE:
107 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_YAML:
108 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COBOL:
109 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_GUI4CLI:
110 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_D:
111 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_POWERSHELL:
112 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_R:
113 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSP:
114 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COFFEESCRIPT:
115 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSON:
116 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVASCRIPT:
117 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN_77:
118 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BAANC:
119 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SREC:
120 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_IHEX:
121 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEHEX:
122 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SWIFT:
123 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASN1:
124 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AVS:
125 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BLITZBASIC:
126 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PUREBASIC:
127 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FREEBASIC:
128 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSOUND:
129 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ERLANG:
130 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ESCRIPT:
131 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTH:
132 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LATEX:
133 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MMIXAL:
134 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NIMROD:
135 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NNCRONTAB:
136 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OSCRIPT:
137 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REBOL:
138 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REGISTRY:
139 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUST:
140 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SPICE:
141 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TXT2TAGS:
142 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VISUALPROLOG:
143 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_EXTERNAL:
144 				return true;
145 
146 			default:
147 				return false;
148 		}
149 	}
150 
151 /**
152  * Convert IDM_LANG_* to LangType
153  *
154  * Params:
155  *      IDM_LANG = IDM_LANG_*
156  *
157  * Returns: LangType or LangType.L_EXTERNAL
158  */
159 pragma(inline, true)
160 pure nothrow @safe @nogc
161 npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType from_IDM_LANG(int IDM_LANG)
162 
163 	do
164 	{
165 		static import npp_api.powereditor.menucmdid;
166 		static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
167 
168 		switch (IDM_LANG) {
169 			case npp_api.powereditor.menucmdid.IDM_LANG_C:
170 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_C;
171 
172 			case npp_api.powereditor.menucmdid.IDM_LANG_CPP:
173 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CPP;
174 
175 			case npp_api.powereditor.menucmdid.IDM_LANG_JAVA:
176 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVA;
177 
178 			case npp_api.powereditor.menucmdid.IDM_LANG_HTML:
179 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HTML;
180 
181 			case npp_api.powereditor.menucmdid.IDM_LANG_XML:
182 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_XML;
183 
184 			case npp_api.powereditor.menucmdid.IDM_LANG_JS:
185 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JS;
186 
187 			case npp_api.powereditor.menucmdid.IDM_LANG_PHP:
188 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP;
189 
190 			case npp_api.powereditor.menucmdid.IDM_LANG_ASP:
191 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASP;
192 
193 			case npp_api.powereditor.menucmdid.IDM_LANG_CSS:
194 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSS;
195 
196 			case npp_api.powereditor.menucmdid.IDM_LANG_PASCAL:
197 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PASCAL;
198 
199 			case npp_api.powereditor.menucmdid.IDM_LANG_PYTHON:
200 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PYTHON;
201 
202 			case npp_api.powereditor.menucmdid.IDM_LANG_PERL:
203 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PERL;
204 
205 			case npp_api.powereditor.menucmdid.IDM_LANG_OBJC:
206 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OBJC;
207 
208 			case npp_api.powereditor.menucmdid.IDM_LANG_ASCII:
209 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASCII;
210 
211 			case npp_api.powereditor.menucmdid.IDM_LANG_TEXT:
212 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEXT;
213 
214 			case npp_api.powereditor.menucmdid.IDM_LANG_RC:
215 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RC;
216 
217 			case npp_api.powereditor.menucmdid.IDM_LANG_MAKEFILE:
218 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MAKEFILE;
219 
220 			case npp_api.powereditor.menucmdid.IDM_LANG_INI:
221 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INI;
222 
223 			case npp_api.powereditor.menucmdid.IDM_LANG_SQL:
224 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SQL;
225 
226 			case npp_api.powereditor.menucmdid.IDM_LANG_VB:
227 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VB;
228 
229 			case npp_api.powereditor.menucmdid.IDM_LANG_BATCH:
230 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BATCH;
231 
232 			case npp_api.powereditor.menucmdid.IDM_LANG_CS:
233 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CS;
234 
235 			case npp_api.powereditor.menucmdid.IDM_LANG_LUA:
236 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LUA;
237 
238 			case npp_api.powereditor.menucmdid.IDM_LANG_TEX:
239 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEX;
240 
241 			case npp_api.powereditor.menucmdid.IDM_LANG_FORTRAN:
242 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN;
243 
244 			case npp_api.powereditor.menucmdid.IDM_LANG_BASH:
245 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BASH;
246 
247 			case npp_api.powereditor.menucmdid.IDM_LANG_FLASH:
248 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FLASH;
249 
250 			case npp_api.powereditor.menucmdid.IDM_LANG_NSIS:
251 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NSIS;
252 
253 			case npp_api.powereditor.menucmdid.IDM_LANG_TCL:
254 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TCL;
255 
256 			case npp_api.powereditor.menucmdid.IDM_LANG_LISP:
257 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LISP;
258 
259 			case npp_api.powereditor.menucmdid.IDM_LANG_SCHEME:
260 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SCHEME;
261 
262 			case npp_api.powereditor.menucmdid.IDM_LANG_ASM:
263 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASM;
264 
265 			case npp_api.powereditor.menucmdid.IDM_LANG_DIFF:
266 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_DIFF;
267 
268 			case npp_api.powereditor.menucmdid.IDM_LANG_PROPS:
269 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PROPS;
270 
271 			case npp_api.powereditor.menucmdid.IDM_LANG_PS:
272 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PS;
273 
274 			case npp_api.powereditor.menucmdid.IDM_LANG_RUBY:
275 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUBY;
276 
277 			case npp_api.powereditor.menucmdid.IDM_LANG_SMALLTALK:
278 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SMALLTALK;
279 
280 			case npp_api.powereditor.menucmdid.IDM_LANG_VHDL:
281 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VHDL;
282 
283 			case npp_api.powereditor.menucmdid.IDM_LANG_CAML:
284 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CAML;
285 
286 			case npp_api.powereditor.menucmdid.IDM_LANG_KIX:
287 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_KIX;
288 
289 			case npp_api.powereditor.menucmdid.IDM_LANG_ADA:
290 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ADA;
291 
292 			case npp_api.powereditor.menucmdid.IDM_LANG_VERILOG:
293 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VERILOG;
294 
295 			case npp_api.powereditor.menucmdid.IDM_LANG_AU3:
296 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AU3;
297 
298 			case npp_api.powereditor.menucmdid.IDM_LANG_MATLAB:
299 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MATLAB;
300 
301 			case npp_api.powereditor.menucmdid.IDM_LANG_HASKELL:
302 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HASKELL;
303 
304 			case npp_api.powereditor.menucmdid.IDM_LANG_INNO:
305 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INNO;
306 
307 			case npp_api.powereditor.menucmdid.IDM_LANG_CMAKE:
308 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CMAKE;
309 
310 			case npp_api.powereditor.menucmdid.IDM_LANG_YAML:
311 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_YAML;
312 
313 			case npp_api.powereditor.menucmdid.IDM_LANG_COBOL:
314 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COBOL;
315 
316 			case npp_api.powereditor.menucmdid.IDM_LANG_D:
317 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_D;
318 
319 			case npp_api.powereditor.menucmdid.IDM_LANG_GUI4CLI:
320 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_GUI4CLI;
321 
322 			case npp_api.powereditor.menucmdid.IDM_LANG_POWERSHELL:
323 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_POWERSHELL;
324 
325 			case npp_api.powereditor.menucmdid.IDM_LANG_R:
326 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_R;
327 
328 			case npp_api.powereditor.menucmdid.IDM_LANG_JSP:
329 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSP;
330 
331 			case npp_api.powereditor.menucmdid.IDM_LANG_COFFEESCRIPT:
332 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COFFEESCRIPT;
333 
334 			case npp_api.powereditor.menucmdid.IDM_LANG_JSON:
335 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSON;
336 
337 			case npp_api.powereditor.menucmdid.IDM_LANG_FORTRAN_77:
338 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN_77;
339 
340 			case npp_api.powereditor.menucmdid.IDM_LANG_BAANC:
341 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BAANC;
342 
343 			case npp_api.powereditor.menucmdid.IDM_LANG_SREC:
344 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SREC;
345 
346 			case npp_api.powereditor.menucmdid.IDM_LANG_IHEX:
347 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_IHEX;
348 
349 			case npp_api.powereditor.menucmdid.IDM_LANG_TEHEX:
350 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEHEX;
351 
352 			case npp_api.powereditor.menucmdid.IDM_LANG_SWIFT:
353 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SWIFT;
354 
355 			case npp_api.powereditor.menucmdid.IDM_LANG_ASN1:
356 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASN1;
357 
358 			case npp_api.powereditor.menucmdid.IDM_LANG_AVS:
359 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AVS;
360 
361 			case npp_api.powereditor.menucmdid.IDM_LANG_BLITZBASIC:
362 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BLITZBASIC;
363 
364 			case npp_api.powereditor.menucmdid.IDM_LANG_PUREBASIC:
365 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PUREBASIC;
366 
367 			case npp_api.powereditor.menucmdid.IDM_LANG_FREEBASIC:
368 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FREEBASIC;
369 
370 			case npp_api.powereditor.menucmdid.IDM_LANG_CSOUND:
371 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSOUND;
372 
373 			case npp_api.powereditor.menucmdid.IDM_LANG_ERLANG:
374 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ERLANG;
375 
376 			case npp_api.powereditor.menucmdid.IDM_LANG_ESCRIPT:
377 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ESCRIPT;
378 
379 			case npp_api.powereditor.menucmdid.IDM_LANG_FORTH:
380 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTH;
381 
382 			case npp_api.powereditor.menucmdid.IDM_LANG_LATEX:
383 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LATEX;
384 
385 			case npp_api.powereditor.menucmdid.IDM_LANG_MMIXAL:
386 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MMIXAL;
387 
388 			case npp_api.powereditor.menucmdid.IDM_LANG_NIMROD:
389 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NIMROD;
390 
391 			case npp_api.powereditor.menucmdid.IDM_LANG_NNCRONTAB:
392 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NNCRONTAB;
393 
394 			case npp_api.powereditor.menucmdid.IDM_LANG_OSCRIPT:
395 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OSCRIPT;
396 
397 			case npp_api.powereditor.menucmdid.IDM_LANG_REBOL:
398 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REBOL;
399 
400 			case npp_api.powereditor.menucmdid.IDM_LANG_REGISTRY:
401 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REGISTRY;
402 
403 			case npp_api.powereditor.menucmdid.IDM_LANG_RUST:
404 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUST;
405 
406 			case npp_api.powereditor.menucmdid.IDM_LANG_SPICE:
407 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SPICE;
408 
409 			case npp_api.powereditor.menucmdid.IDM_LANG_TXT2TAGS:
410 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TXT2TAGS;
411 
412 			case npp_api.powereditor.menucmdid.IDM_LANG_VISUALPROLOG:
413 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VISUALPROLOG;
414 
415 			case npp_api.powereditor.menucmdid.IDM_LANG_EXTERNAL:
416 			case npp_api.powereditor.menucmdid.IDM_LANG_EXTERNAL_LIMIT:
417 			default:
418 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_EXTERNAL;
419 		}
420 	}
421 
422 /**
423  * Convert LangType to IDM_LANG_*
424  *
425  * Params:
426  *      lang = LangType
427  *
428  * Returns: IDM_LANG_* or IDM_LANG_EXTERNAL_LIMIT on error.
429  */
430 pragma(inline, true)
431 pure nothrow @safe @nogc
432 int to_IDM_LANG(npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang)
433 
434 	do
435 	{
436 		static import npp_api.powereditor.menucmdid;
437 		static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
438 
439 		switch (lang) {
440 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEXT:
441 				return npp_api.powereditor.menucmdid.IDM_LANG_TEXT;
442 
443 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP:
444 				return npp_api.powereditor.menucmdid.IDM_LANG_PHP;
445 
446 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_C:
447 				return npp_api.powereditor.menucmdid.IDM_LANG_C;
448 
449 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CPP:
450 				return npp_api.powereditor.menucmdid.IDM_LANG_CPP;
451 
452 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CS:
453 				return npp_api.powereditor.menucmdid.IDM_LANG_CS;
454 
455 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OBJC:
456 				return npp_api.powereditor.menucmdid.IDM_LANG_OBJC;
457 
458 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVA:
459 				return npp_api.powereditor.menucmdid.IDM_LANG_JAVA;
460 
461 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RC:
462 				return npp_api.powereditor.menucmdid.IDM_LANG_RC;
463 
464 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HTML:
465 				return npp_api.powereditor.menucmdid.IDM_LANG_HTML;
466 
467 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_XML:
468 				return npp_api.powereditor.menucmdid.IDM_LANG_XML;
469 
470 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MAKEFILE:
471 				return npp_api.powereditor.menucmdid.IDM_LANG_MAKEFILE;
472 
473 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PASCAL:
474 				return npp_api.powereditor.menucmdid.IDM_LANG_PASCAL;
475 
476 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BATCH:
477 				return npp_api.powereditor.menucmdid.IDM_LANG_BATCH;
478 
479 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INI:
480 				return npp_api.powereditor.menucmdid.IDM_LANG_INI;
481 
482 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASCII:
483 				return npp_api.powereditor.menucmdid.IDM_LANG_ASCII;
484 
485 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASP:
486 				return npp_api.powereditor.menucmdid.IDM_LANG_ASP;
487 
488 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SQL:
489 				return npp_api.powereditor.menucmdid.IDM_LANG_SQL;
490 
491 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VB:
492 				return npp_api.powereditor.menucmdid.IDM_LANG_VB;
493 
494 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JS:
495 				return npp_api.powereditor.menucmdid.IDM_LANG_JS;
496 
497 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSS:
498 				return npp_api.powereditor.menucmdid.IDM_LANG_CSS;
499 
500 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PERL:
501 				return npp_api.powereditor.menucmdid.IDM_LANG_PERL;
502 
503 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PYTHON:
504 				return npp_api.powereditor.menucmdid.IDM_LANG_PYTHON;
505 
506 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LUA:
507 				return npp_api.powereditor.menucmdid.IDM_LANG_LUA;
508 
509 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEX:
510 				return npp_api.powereditor.menucmdid.IDM_LANG_TEX;
511 
512 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN:
513 				return npp_api.powereditor.menucmdid.IDM_LANG_FORTRAN;
514 
515 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BASH:
516 				return npp_api.powereditor.menucmdid.IDM_LANG_BASH;
517 
518 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FLASH:
519 				return npp_api.powereditor.menucmdid.IDM_LANG_FLASH;
520 
521 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NSIS:
522 				return npp_api.powereditor.menucmdid.IDM_LANG_NSIS;
523 
524 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TCL:
525 				return npp_api.powereditor.menucmdid.IDM_LANG_TCL;
526 
527 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LISP:
528 				return npp_api.powereditor.menucmdid.IDM_LANG_LISP;
529 
530 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SCHEME:
531 				return npp_api.powereditor.menucmdid.IDM_LANG_SCHEME;
532 
533 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASM:
534 				return npp_api.powereditor.menucmdid.IDM_LANG_ASM;
535 
536 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_DIFF:
537 				return npp_api.powereditor.menucmdid.IDM_LANG_DIFF;
538 
539 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PROPS:
540 				return npp_api.powereditor.menucmdid.IDM_LANG_PROPS;
541 
542 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PS:
543 				return npp_api.powereditor.menucmdid.IDM_LANG_PS;
544 
545 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUBY:
546 				return npp_api.powereditor.menucmdid.IDM_LANG_RUBY;
547 
548 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SMALLTALK:
549 				return npp_api.powereditor.menucmdid.IDM_LANG_SMALLTALK;
550 
551 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VHDL:
552 				return npp_api.powereditor.menucmdid.IDM_LANG_VHDL;
553 
554 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_KIX:
555 				return npp_api.powereditor.menucmdid.IDM_LANG_KIX;
556 
557 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AU3:
558 				return npp_api.powereditor.menucmdid.IDM_LANG_AU3;
559 
560 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CAML:
561 				return npp_api.powereditor.menucmdid.IDM_LANG_CAML;
562 
563 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ADA:
564 				return npp_api.powereditor.menucmdid.IDM_LANG_ADA;
565 
566 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VERILOG:
567 				return npp_api.powereditor.menucmdid.IDM_LANG_VERILOG;
568 
569 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MATLAB:
570 				return npp_api.powereditor.menucmdid.IDM_LANG_MATLAB;
571 
572 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HASKELL:
573 				return npp_api.powereditor.menucmdid.IDM_LANG_HASKELL;
574 
575 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INNO:
576 				return npp_api.powereditor.menucmdid.IDM_LANG_INNO;
577 
578 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CMAKE:
579 				return npp_api.powereditor.menucmdid.IDM_LANG_CMAKE;
580 
581 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_YAML:
582 				return npp_api.powereditor.menucmdid.IDM_LANG_YAML;
583 
584 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COBOL:
585 				return npp_api.powereditor.menucmdid.IDM_LANG_COBOL;
586 
587 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_GUI4CLI:
588 				return npp_api.powereditor.menucmdid.IDM_LANG_GUI4CLI;
589 
590 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_D:
591 				return npp_api.powereditor.menucmdid.IDM_LANG_D;
592 
593 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_POWERSHELL:
594 				return npp_api.powereditor.menucmdid.IDM_LANG_POWERSHELL;
595 
596 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_R:
597 				return npp_api.powereditor.menucmdid.IDM_LANG_R;
598 
599 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSP:
600 				return npp_api.powereditor.menucmdid.IDM_LANG_JSP;
601 
602 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COFFEESCRIPT:
603 				return npp_api.powereditor.menucmdid.IDM_LANG_COFFEESCRIPT;
604 
605 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSON:
606 				return npp_api.powereditor.menucmdid.IDM_LANG_JSON;
607 
608 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN_77:
609 				return npp_api.powereditor.menucmdid.IDM_LANG_FORTRAN_77;
610 
611 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BAANC:
612 				return npp_api.powereditor.menucmdid.IDM_LANG_BAANC;
613 
614 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SREC:
615 				return npp_api.powereditor.menucmdid.IDM_LANG_SREC;
616 
617 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_IHEX:
618 				return npp_api.powereditor.menucmdid.IDM_LANG_IHEX;
619 
620 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEHEX:
621 				return npp_api.powereditor.menucmdid.IDM_LANG_TEHEX;
622 
623 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SWIFT:
624 				return npp_api.powereditor.menucmdid.IDM_LANG_SWIFT;
625 
626 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASN1:
627 				return npp_api.powereditor.menucmdid.IDM_LANG_ASN1;
628 
629 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AVS:
630 				return npp_api.powereditor.menucmdid.IDM_LANG_AVS;
631 
632 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BLITZBASIC:
633 				return npp_api.powereditor.menucmdid.IDM_LANG_BLITZBASIC;
634 
635 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PUREBASIC:
636 				return npp_api.powereditor.menucmdid.IDM_LANG_PUREBASIC;
637 
638 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FREEBASIC:
639 				return npp_api.powereditor.menucmdid.IDM_LANG_FREEBASIC;
640 
641 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSOUND:
642 				return npp_api.powereditor.menucmdid.IDM_LANG_CSOUND;
643 
644 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ERLANG:
645 				return npp_api.powereditor.menucmdid.IDM_LANG_ERLANG;
646 
647 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ESCRIPT:
648 				return npp_api.powereditor.menucmdid.IDM_LANG_ESCRIPT;
649 
650 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTH:
651 				return npp_api.powereditor.menucmdid.IDM_LANG_FORTH;
652 
653 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LATEX:
654 				return npp_api.powereditor.menucmdid.IDM_LANG_LATEX;
655 
656 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MMIXAL:
657 				return npp_api.powereditor.menucmdid.IDM_LANG_MMIXAL;
658 
659 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NIMROD:
660 				return npp_api.powereditor.menucmdid.IDM_LANG_NIMROD;
661 
662 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NNCRONTAB:
663 				return npp_api.powereditor.menucmdid.IDM_LANG_NNCRONTAB;
664 
665 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OSCRIPT:
666 				return npp_api.powereditor.menucmdid.IDM_LANG_OSCRIPT;
667 
668 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REBOL:
669 				return npp_api.powereditor.menucmdid.IDM_LANG_REBOL;
670 
671 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REGISTRY:
672 				return npp_api.powereditor.menucmdid.IDM_LANG_REGISTRY;
673 
674 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUST:
675 				return npp_api.powereditor.menucmdid.IDM_LANG_RUST;
676 
677 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SPICE:
678 				return npp_api.powereditor.menucmdid.IDM_LANG_SPICE;
679 
680 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TXT2TAGS:
681 				return npp_api.powereditor.menucmdid.IDM_LANG_TXT2TAGS;
682 
683 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VISUALPROLOG:
684 				return npp_api.powereditor.menucmdid.IDM_LANG_VISUALPROLOG;
685 
686 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_EXTERNAL:
687 				return npp_api.powereditor.menucmdid.IDM_LANG_EXTERNAL;
688 
689 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_USER:
690 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SEARCHRESULT:
691 			//case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVASCRIPT:
692 			default:
693 				return npp_api.powereditor.menucmdid.IDM_LANG_EXTERNAL_LIMIT;
694 		}
695 	}
696 
697 /**
698  * Whether Windows \\?\ path is supported
699  *
700  * Params:
701  *      lang = LangType
702  *
703  * Returns: true is supported
704  * ToDo:
705  */
706 pragma(inline, true)
707 pure nothrow @safe @nogc
708 bool is_extended_path_supported(npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang)
709 
710 	do
711 	{
712 		static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
713 
714 		switch (lang) {
715 			/*
716 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEXT:
717 				return false;
718 			*/
719 
720 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP:
721 				return false;
722 
723 			/*
724 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_C:
725 				return false;
726 			*/
727 
728 			/*
729 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CPP:
730 				return false;
731 			*/
732 
733 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CS:
734 				return false;
735 
736 			/*
737 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OBJC:
738 				return false;
739 			*/
740 
741 			/*
742 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVA:
743 				return false;
744 			*/
745 
746 			/*
747 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RC:
748 				return false;
749 			*/
750 
751 			/*
752 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HTML:
753 				return false;
754 			*/
755 
756 			/*
757 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_XML:
758 				return false;
759 			*/
760 
761 			/*
762 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MAKEFILE:
763 				return false;
764 			*/
765 
766 			/*
767 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PASCAL:
768 				return false;
769 			*/
770 
771 			/*
772 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BATCH:
773 				return false;
774 			*/
775 
776 			/*
777 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INI:
778 				return false;
779 			*/
780 
781 			/*
782 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASCII:
783 				return false;
784 			*/
785 
786 			/*
787 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_USER:
788 				return false;
789 			*/
790 
791 			/*
792 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASP:
793 				return false;
794 			*/
795 
796 			/*
797 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SQL:
798 				return false;
799 			*/
800 
801 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VB:
802 				return true;
803 
804 			/*
805 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JS:
806 				return false;
807 			*/
808 
809 			/*
810 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSS:
811 				return false;
812 			*/
813 
814 			/*
815 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PERL:
816 				return false;
817 			*/
818 
819 			/*
820 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PYTHON:
821 				return false;
822 			*/
823 
824 			/*
825 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LUA:
826 				return false;
827 			*/
828 
829 			/*
830 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEX:
831 				return false;
832 			*/
833 
834 			/*
835 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN:
836 				return false;
837 			*/
838 
839 			/*
840 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BASH:
841 				return false;
842 			*/
843 
844 			/*
845 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FLASH:
846 				return false;
847 			*/
848 
849 			/*
850 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NSIS:
851 				return false;
852 			*/
853 
854 			/*
855 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TCL:
856 				return false;
857 			*/
858 
859 			/*
860 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LISP:
861 				return false;
862 			*/
863 
864 			/*
865 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SCHEME:
866 				return false;
867 			*/
868 
869 			/*
870 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASM:
871 				return false;
872 			*/
873 
874 			/*
875 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_DIFF:
876 				return false;
877 			*/
878 
879 			/*
880 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PROPS:
881 				return false;
882 			*/
883 
884 			/*
885 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PS:
886 				return false;
887 			*/
888 
889 			/*
890 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUBY:
891 				return false;
892 			*/
893 
894 			/*
895 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SMALLTALK:
896 				return false;
897 			*/
898 
899 			/*
900 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VHDL:
901 				return false;
902 			*/
903 
904 			/*
905 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_KIX:
906 				return false;
907 			*/
908 
909 			/*
910 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AU3:
911 				return false;
912 			*/
913 
914 			/*
915 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CAML:
916 				return false;
917 			*/
918 
919 			/*
920 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ADA:
921 				return false;
922 			*/
923 
924 			/*
925 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VERILOG:
926 				return false;
927 			*/
928 
929 			/*
930 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MATLAB:
931 				return false;
932 			*/
933 
934 			/*
935 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HASKELL:
936 				return false;
937 			*/
938 
939 			/*
940 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INNO:
941 				return false;
942 			*/
943 
944 			/*
945 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SEARCHRESULT:
946 				return false;
947 			*/
948 
949 			/*
950 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CMAKE:
951 				return false;
952 			*/
953 
954 			/*
955 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_YAML:
956 				return false;
957 			*/
958 
959 			/*
960 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COBOL:
961 				return false;
962 			*/
963 
964 			/*
965 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_GUI4CLI:
966 				return false;
967 			*/
968 
969 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_D:
970 				return true;
971 
972 			/*
973 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_POWERSHELL:
974 				return false;
975 			*/
976 
977 			/*
978 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_R:
979 				return false;
980 			*/
981 
982 			/*
983 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSP:
984 				return false;
985 			*/
986 
987 			/*
988 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COFFEESCRIPT:
989 				return false;
990 			*/
991 
992 			/*
993 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSON:
994 				return false;
995 			*/
996 
997 			/*
998 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVASCRIPT:
999 				return false;
1000 			*/
1001 
1002 			/*
1003 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN_77:
1004 				return false;
1005 			*/
1006 
1007 			/*
1008 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BAANC:
1009 				return false;
1010 			*/
1011 
1012 			/*
1013 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SREC:
1014 				return false;
1015 			*/
1016 
1017 			/*
1018 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_IHEX:
1019 				return false;
1020 			*/
1021 
1022 			/*
1023 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEHEX:
1024 				return false;
1025 			*/
1026 
1027 			/*
1028 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SWIFT:
1029 				return false;
1030 			*/
1031 
1032 			/*
1033 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASN1:
1034 				return false;
1035 			*/
1036 
1037 			/*
1038 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AVS:
1039 				return false;
1040 			*/
1041 
1042 			/*
1043 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BLITZBASIC:
1044 				return false;
1045 			*/
1046 
1047 			/*
1048 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PUREBASIC:
1049 				return false;
1050 			*/
1051 
1052 			/*
1053 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FREEBASIC:
1054 				return false;
1055 			*/
1056 
1057 			/*
1058 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSOUND:
1059 				return false;
1060 			*/
1061 
1062 			/*
1063 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ERLANG:
1064 				return false;
1065 			*/
1066 
1067 			/*
1068 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ESCRIPT:
1069 				return false;
1070 			*/
1071 
1072 			/*
1073 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTH:
1074 				return false;
1075 			*/
1076 
1077 			/*
1078 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LATEX:
1079 				return false;
1080 			*/
1081 
1082 			/*
1083 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MMIXAL:
1084 				return false;
1085 			*/
1086 
1087 			/*
1088 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NIMROD:
1089 				return false;
1090 			*/
1091 
1092 			/*
1093 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NNCRONTAB:
1094 				return false;
1095 			*/
1096 
1097 			/*
1098 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OSCRIPT:
1099 				return false;
1100 			*/
1101 
1102 			/*
1103 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REBOL:
1104 				return false;
1105 			*/
1106 
1107 			/*
1108 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REGISTRY:
1109 				return false;
1110 			*/
1111 
1112 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUST:
1113 				return true;
1114 
1115 			/*
1116 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SPICE:
1117 				return false;
1118 			*/
1119 
1120 			/*
1121 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TXT2TAGS:
1122 				return false;
1123 			*/
1124 
1125 			/*
1126 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VISUALPROLOG:
1127 				return false;
1128 			*/
1129 
1130 			/*
1131 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_EXTERNAL:
1132 				return false;
1133 			*/
1134 
1135 			default:
1136 				return false;
1137 		}
1138 	}
1139 
1140 /**
1141  * Whether Windows \\?\ path is supported
1142  *
1143  * Params:
1144  *      ext = lang file extension
1145  *
1146  * Returns: true is supported
1147  */
1148 pragma(inline, true)
1149 pure nothrow @safe @nogc
1150 bool is_extended_path_supported(S)(S ext)
1151 	if (std.traits.isSomeString!(S))
1152 
1153 	do
1154 	{
1155 		switch (ext) {
1156 			case ".d":
1157 			case ".go":
1158 			case ".rs":
1159 				return true;
1160 
1161 			//case ".php":
1162 			default:
1163 				return false;
1164 		}
1165 	}
1166 
1167 /**
1168  * Convert LangType to extension
1169  *
1170  * Params:
1171  *      lang = LangType
1172  *
1173  * Returns: file extension or null
1174  * ToDo:
1175  */
1176 pure nothrow @safe @nogc
1177 S lang_to_ext(S)(npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang)
1178 
1179 	do
1180 	{
1181 		static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
1182 
1183 		switch (lang) {
1184 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEXT:
1185 				return ".txt";
1186 
1187 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP:
1188 				return ".php";
1189 
1190 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_C:
1191 				return ".c";
1192 
1193 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CPP:
1194 				return ".cpp";
1195 
1196 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CS:
1197 				return ".cs";
1198 
1199 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OBJC:
1200 				return null;
1201 
1202 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVA:
1203 				return null;
1204 
1205 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RC:
1206 				return null;
1207 
1208 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HTML:
1209 				return ".html";
1210 
1211 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_XML:
1212 				return ".xml";
1213 
1214 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MAKEFILE:
1215 				return null;
1216 
1217 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PASCAL:
1218 				return null;
1219 
1220 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BATCH:
1221 				return null;
1222 
1223 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INI:
1224 				return ".ini";
1225 
1226 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASCII:
1227 				return null;
1228 
1229 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_USER:
1230 				return null;
1231 
1232 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASP:
1233 				return null;
1234 
1235 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SQL:
1236 				return null;
1237 
1238 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VB:
1239 				return ".vb";
1240 
1241 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JS:
1242 				return null;
1243 
1244 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSS:
1245 				return null;
1246 
1247 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PERL:
1248 				return null;
1249 
1250 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PYTHON:
1251 				return ".py";
1252 
1253 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LUA:
1254 				return null;
1255 
1256 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEX:
1257 				return null;
1258 
1259 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN:
1260 				return null;
1261 
1262 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BASH:
1263 				return null;
1264 
1265 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FLASH:
1266 				return null;
1267 
1268 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NSIS:
1269 				return null;
1270 
1271 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TCL:
1272 				return null;
1273 
1274 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LISP:
1275 				return null;
1276 
1277 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SCHEME:
1278 				return null;
1279 
1280 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASM:
1281 				return ".asm";
1282 
1283 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_DIFF:
1284 				return null;
1285 
1286 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PROPS:
1287 				return null;
1288 
1289 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PS:
1290 				return null;
1291 
1292 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUBY:
1293 				return ".rb";
1294 
1295 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SMALLTALK:
1296 				return null;
1297 
1298 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VHDL:
1299 				return null;
1300 
1301 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_KIX:
1302 				return null;
1303 
1304 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AU3:
1305 				return null;
1306 
1307 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CAML:
1308 				return null;
1309 
1310 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ADA:
1311 				return null;
1312 
1313 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VERILOG:
1314 				return null;
1315 
1316 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MATLAB:
1317 				return null;
1318 
1319 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HASKELL:
1320 				return null;
1321 
1322 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INNO:
1323 				return null;
1324 
1325 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SEARCHRESULT:
1326 				return null;
1327 
1328 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CMAKE:
1329 				return null;
1330 
1331 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_YAML:
1332 				return null;
1333 
1334 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COBOL:
1335 				return null;
1336 
1337 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_GUI4CLI:
1338 				return null;
1339 
1340 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_D:
1341 				return ".d";
1342 
1343 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_POWERSHELL:
1344 				return null;
1345 
1346 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_R:
1347 				return null;
1348 
1349 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSP:
1350 				return null;
1351 
1352 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COFFEESCRIPT:
1353 				return null;
1354 
1355 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSON:
1356 				return ".json";
1357 
1358 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVASCRIPT:
1359 				return null;
1360 
1361 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN_77:
1362 				return null;
1363 
1364 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BAANC:
1365 				return null;
1366 
1367 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SREC:
1368 				return null;
1369 
1370 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_IHEX:
1371 				return null;
1372 
1373 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEHEX:
1374 				return null;
1375 
1376 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SWIFT:
1377 				return null;
1378 
1379 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASN1:
1380 				return null;
1381 
1382 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AVS:
1383 				return null;
1384 
1385 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BLITZBASIC:
1386 				return null;
1387 
1388 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PUREBASIC:
1389 				return null;
1390 
1391 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FREEBASIC:
1392 				return null;
1393 
1394 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSOUND:
1395 				return null;
1396 
1397 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ERLANG:
1398 				return null;
1399 
1400 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ESCRIPT:
1401 				return null;
1402 
1403 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTH:
1404 				return null;
1405 
1406 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LATEX:
1407 				return null;
1408 
1409 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MMIXAL:
1410 				return null;
1411 
1412 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NIMROD:
1413 				return null;
1414 
1415 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NNCRONTAB:
1416 				return null;
1417 
1418 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OSCRIPT:
1419 				return null;
1420 
1421 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REBOL:
1422 				return null;
1423 
1424 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REGISTRY:
1425 				return null;
1426 
1427 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUST:
1428 				return ".rs";
1429 
1430 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SPICE:
1431 				return null;
1432 
1433 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TXT2TAGS:
1434 				return null;
1435 
1436 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VISUALPROLOG:
1437 				return null;
1438 
1439 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_EXTERNAL:
1440 				return null;
1441 
1442 			default:
1443 				return null;
1444 		}
1445 }
1446 
1447 /**
1448  * Contert extension to LangType
1449  *
1450  * Params:
1451  *      extension = file extension
1452  *
1453  * Returns: LangType, default is L_EXTERNAL
1454  * ToDo: 
1455  */
1456 pure nothrow @safe @nogc
1457 npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType ext_to_lang(C)(const (C)[] extension)
1458 	if (std.traits.isSomeChar!(C))
1459 
1460 	in
1461 	{
1462 		if (extension.length != 0) {
1463 			assert(extension.length >= 2);
1464 			assert(extension[0] == '.');
1465 		}
1466 	}
1467 
1468 	do
1469 	{
1470 		static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
1471 
1472 		switch (extension) {
1473 			case ".txt":
1474 			case ".log":
1475 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEXT;
1476 
1477 			case ".php":
1478 			case ".php3":
1479 			case ".php4":
1480 			case ".php5":
1481 			case ".phps":
1482 			case ".phpt":
1483 			case ".phtml":
1484 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP;
1485 
1486 			case ".h":
1487 			case ".c":
1488 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_C;
1489 
1490 			case ".hh":
1491 			case ".hpp":
1492 			case ".hxx":
1493 			case ".cc":
1494 			case ".cpp":
1495 			case ".cxx":
1496 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CPP;
1497 
1498 			case ".cs":
1499 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CS;
1500 
1501 			/*
1502 			case ".":
1503 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OBJC;
1504 			*/
1505 
1506 			/*
1507 			case ".":
1508 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVA;
1509 			*/
1510 
1511 			/*
1512 			case ".":
1513 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RC;
1514 			*/
1515 
1516 			case ".html":
1517 			case ".htm":
1518 			case ".shtml":
1519 			case ".shtm":
1520 			case ".hta":
1521 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HTML;
1522 
1523 			case ".xml":
1524 			case ".xhtml":
1525 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_XML;
1526 
1527 			/*
1528 			case ".":
1529 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MAKEFILE;
1530 			*/
1531 
1532 			/*
1533 			case ".":
1534 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PASCAL;
1535 			*/
1536 
1537 			/*
1538 			case ".":
1539 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BATCH;
1540 			*/
1541 
1542 			case ".ini":
1543 			case ".inf":
1544 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INI;
1545 
1546 			/*
1547 			case ".":
1548 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASCII;
1549 			*/
1550 
1551 			/*
1552 			case ".":
1553 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_USER;
1554 			*/
1555 
1556 			case ".asp":
1557 			case ".aspx":
1558 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASP;
1559 
1560 			case ".sql":
1561 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SQL;
1562 
1563 			case ".vb":
1564 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VB;
1565 
1566 			/*
1567 			case ".js":
1568 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JS;
1569 			*/
1570 
1571 			case ".css":
1572 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSS;
1573 
1574 			case ".pl":
1575 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PERL;
1576 
1577 			case ".py":
1578 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PYTHON;
1579 
1580 			case ".lua":
1581 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LUA;
1582 
1583 			/*
1584 			case ".":
1585 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEX;
1586 			*/
1587 
1588 			/*
1589 			case ".":
1590 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN;
1591 			*/
1592 
1593 			/*
1594 			case ".":
1595 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BASH;
1596 			*/
1597 
1598 			/*
1599 			case ".":
1600 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FLASH;
1601 			*/
1602 
1603 			/*
1604 			case ".":
1605 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NSIS;
1606 			*/
1607 
1608 			/*
1609 			case ".":
1610 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TCL;
1611 			*/
1612 
1613 			/*
1614 			case ".":
1615 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LISP;
1616 			*/
1617 
1618 			/*
1619 			case ".":
1620 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SCHEME;
1621 			*/
1622 
1623 			/*
1624 			case ".":
1625 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASM;
1626 			*/
1627 
1628 			/*
1629 			case ".":
1630 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_DIFF;
1631 			*/
1632 
1633 			/*
1634 			case ".":
1635 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PROPS;
1636 			*/
1637 
1638 			/*
1639 			case ".":
1640 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PS;
1641 			*/
1642 
1643 			case ".rb":
1644 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUBY;
1645 
1646 			/*
1647 			case ".":
1648 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SMALLTALK;
1649 			*/
1650 
1651 			/*
1652 			case ".":
1653 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VHDL;
1654 			*/
1655 
1656 			/*
1657 			case ".":
1658 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_KIX;
1659 			*/
1660 
1661 			/*
1662 			case ".":
1663 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AU3;
1664 			*/
1665 
1666 			/*
1667 			case ".":
1668 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CAML;
1669 			*/
1670 
1671 			/*
1672 			case ".":
1673 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ADA;
1674 			*/
1675 
1676 			/*
1677 			case ".":
1678 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VERILOG;
1679 			*/
1680 
1681 			/*
1682 			case ".":
1683 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MATLAB;
1684 			*/
1685 
1686 			/*
1687 			case ".":
1688 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HASKELL;
1689 			*/
1690 
1691 			/*
1692 			case ".":
1693 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INNO;
1694 			*/
1695 
1696 			/*
1697 			case ".":
1698 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SEARCHRESULT;
1699 			*/
1700 
1701 			/*
1702 			case ".":
1703 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CMAKE;
1704 			*/
1705 
1706 			/*
1707 			case ".":
1708 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_YAML;
1709 			*/
1710 
1711 			/*
1712 			case ".":
1713 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COBOL;
1714 			*/
1715 
1716 			/*
1717 			case ".":
1718 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_GUI4CLI;
1719 			*/
1720 
1721 			case ".d":
1722 			case ".dd":
1723 			case ".di":
1724 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_D;
1725 
1726 			case ".ps":
1727 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_POWERSHELL;
1728 
1729 			case ".r":
1730 			case ".rda":
1731 			case ".rdata":
1732 			case ".rds":
1733 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_R;
1734 
1735 			/*
1736 			case ".":
1737 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSP;
1738 			*/
1739 
1740 			/*
1741 			case ".":
1742 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COFFEESCRIPT;
1743 			*/
1744 
1745 			case ".json":
1746 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSON;
1747 
1748 			/*
1749 			case ".js":
1750 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVASCRIPT;
1751 			*/
1752 
1753 			/*
1754 			case ".":
1755 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN_77;
1756 			*/
1757 
1758 			/*
1759 			case ".":
1760 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BAANC;
1761 			*/
1762 
1763 			/*
1764 			case ".":
1765 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SREC;
1766 			*/
1767 
1768 			/*
1769 			case ".":
1770 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_IHEX;
1771 			*/
1772 
1773 			/*
1774 			case ".":
1775 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEHEX;
1776 			*/
1777 
1778 			/*
1779 			case ".":
1780 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SWIFT;
1781 			*/
1782 
1783 			/*
1784 			case ".":
1785 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASN1;
1786 			*/
1787 
1788 			/*
1789 			case ".":
1790 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AVS;
1791 			*/
1792 
1793 			/*
1794 			case ".":
1795 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BLITZBASIC;
1796 			*/
1797 
1798 			/*
1799 			case ".":
1800 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PUREBASIC;
1801 			*/
1802 
1803 			/*
1804 			case ".":
1805 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FREEBASIC;
1806 			*/
1807 
1808 			/*
1809 			case ".":
1810 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSOUND;
1811 			*/
1812 
1813 			/*
1814 			case ".":
1815 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ERLANG;
1816 			*/
1817 
1818 			/*
1819 			case ".":
1820 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ESCRIPT;
1821 			*/
1822 
1823 			/*
1824 			case ".":
1825 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTH;
1826 			*/
1827 
1828 			/*
1829 			case ".":
1830 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LATEX;
1831 			*/
1832 
1833 			/*
1834 			case ".":
1835 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MMIXAL;
1836 			*/
1837 
1838 			/*
1839 			case ".":
1840 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NIMROD;
1841 			*/
1842 
1843 			/*
1844 			case ".":
1845 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NNCRONTAB;
1846 			*/
1847 
1848 			/*
1849 			case ".":
1850 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OSCRIPT;
1851 			*/
1852 
1853 			/*
1854 			case ".":
1855 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REBOL;
1856 			*/
1857 
1858 			/*
1859 			case ".":
1860 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REGISTRY;
1861 			*/
1862 
1863 			case ".rs":
1864 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUST;
1865 
1866 			/*
1867 			case ".":
1868 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SPICE;
1869 			*/
1870 
1871 			/*
1872 			case ".":
1873 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TXT2TAGS;
1874 			*/
1875 
1876 			/*
1877 			case ".":
1878 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VISUALPROLOG;
1879 			*/
1880 
1881 			default:
1882 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_EXTERNAL;
1883 		}
1884 	}
1885 
1886 	unittest
1887 	{
1888 		static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
1889 		static import npp_api.pluginfunc.lang;
1890 
1891 		assert(npp_api.pluginfunc.lang.ext_to_lang(".php") == npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP);
1892 		assert(npp_api.pluginfunc.lang.ext_to_lang(".php"w) == npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP);
1893 		assert(npp_api.pluginfunc.lang.ext_to_lang(".php"d) == npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP);
1894 		assert(npp_api.pluginfunc.lang.ext_to_lang(".php\0") != npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP);
1895 		assert(npp_api.pluginfunc.lang.ext_to_lang(".PHP") != npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP);
1896 	}
1897 
1898 version (Windows) {
1899 	/**
1900 	 * プログラミング言語のデフォルトのファイルパスを返す。
1901 	 *
1902 	 * Params:
1903 	 *      lang = 
1904 	 *
1905 	 * Returns: そのプログラミング言語の実行ファイルへのPATHが決まっていたらそのPATH。決まっていないなら実行ファイル名のみ。見つからないならnull。
1906 	 * ToDo:
1907 	 */
1908 	pure nothrow @safe @nogc
1909 	immutable (C)[] default_lang_path(C)(npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang)
1910 		if (std.traits.isSomeChar!(C))
1911 
1912 		do
1913 		{
1914 			static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
1915 
1916 			switch (lang) {
1917 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEXT:
1918 					return null;
1919 
1920 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP:
1921 					return "php.exe";
1922 
1923 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_C:
1924 					return null;
1925 
1926 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CPP:
1927 					return null;
1928 
1929 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CS:
1930 					return "csc.exe";
1931 
1932 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OBJC:
1933 					return null;
1934 
1935 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVA:
1936 					return null;
1937 
1938 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RC:
1939 					return null;
1940 
1941 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HTML:
1942 					return null;
1943 
1944 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_XML:
1945 					return null;
1946 
1947 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MAKEFILE:
1948 					return null;
1949 
1950 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PASCAL:
1951 					return null;
1952 
1953 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BATCH:
1954 					return null;
1955 
1956 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INI:
1957 					return null;
1958 
1959 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASCII:
1960 					return null;
1961 
1962 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_USER:
1963 					return null;
1964 
1965 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASP:
1966 					return null;
1967 
1968 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SQL:
1969 					return null;
1970 
1971 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VB:
1972 					return null;
1973 
1974 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JS:
1975 					return null;
1976 
1977 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSS:
1978 					return null;
1979 
1980 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PERL:
1981 					return null;
1982 
1983 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PYTHON:
1984 					return "python.exe";
1985 
1986 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LUA:
1987 					return null;
1988 
1989 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEX:
1990 					return null;
1991 
1992 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN:
1993 					return null;
1994 
1995 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BASH:
1996 					return null;
1997 
1998 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FLASH:
1999 					return null;
2000 
2001 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NSIS:
2002 					return null;
2003 
2004 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TCL:
2005 					return null;
2006 
2007 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LISP:
2008 					return null;
2009 
2010 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SCHEME:
2011 					return null;
2012 
2013 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASM:
2014 					return null;
2015 
2016 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_DIFF:
2017 					return null;
2018 
2019 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PROPS:
2020 					return null;
2021 
2022 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PS:
2023 					return null;
2024 
2025 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUBY:
2026 					return "ruby.exe";
2027 
2028 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SMALLTALK:
2029 					return null;
2030 
2031 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VHDL:
2032 					return null;
2033 
2034 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_KIX:
2035 					return null;
2036 
2037 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AU3:
2038 					return null;
2039 
2040 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CAML:
2041 					return null;
2042 
2043 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ADA:
2044 					return null;
2045 
2046 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VERILOG:
2047 					return null;
2048 
2049 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MATLAB:
2050 					return null;
2051 
2052 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HASKELL:
2053 					return null;
2054 
2055 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INNO:
2056 					return null;
2057 
2058 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SEARCHRESULT:
2059 					return null;
2060 
2061 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CMAKE:
2062 					return null;
2063 
2064 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_YAML:
2065 					return null;
2066 
2067 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COBOL:
2068 					return null;
2069 
2070 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_GUI4CLI:
2071 					return null;
2072 
2073 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_D:
2074 					return "%HOMEDRIVE%\\D\\dmd2\\windows\\bin\\dmd.exe";
2075 
2076 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_POWERSHELL:
2077 					return null;
2078 
2079 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_R:
2080 					return null;
2081 
2082 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSP:
2083 					return null;
2084 
2085 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COFFEESCRIPT:
2086 					return null;
2087 
2088 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSON:
2089 					return null;
2090 
2091 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVASCRIPT:
2092 					return null;
2093 
2094 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN_77:
2095 					return null;
2096 
2097 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BAANC:
2098 					return null;
2099 
2100 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SREC:
2101 					return null;
2102 
2103 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_IHEX:
2104 					return null;
2105 
2106 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEHEX:
2107 					return null;
2108 
2109 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SWIFT:
2110 					return null;
2111 
2112 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASN1:
2113 					return null;
2114 
2115 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AVS:
2116 					return null;
2117 
2118 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BLITZBASIC:
2119 					return null;
2120 
2121 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PUREBASIC:
2122 					return null;
2123 
2124 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FREEBASIC:
2125 					return null;
2126 
2127 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSOUND:
2128 					return null;
2129 
2130 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ERLANG:
2131 					return null;
2132 
2133 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ESCRIPT:
2134 					return null;
2135 
2136 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTH:
2137 					return null;
2138 
2139 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LATEX:
2140 					return null;
2141 
2142 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MMIXAL:
2143 					return null;
2144 
2145 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NIMROD:
2146 					return null;
2147 
2148 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NNCRONTAB:
2149 					return null;
2150 
2151 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OSCRIPT:
2152 					return null;
2153 
2154 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REBOL:
2155 					return null;
2156 
2157 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REGISTRY:
2158 					return null;
2159 
2160 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUST:
2161 					return "rustc.exe";
2162 
2163 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SPICE:
2164 					return null;
2165 
2166 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TXT2TAGS:
2167 					return null;
2168 
2169 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VISUALPROLOG:
2170 					return null;
2171 
2172 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_EXTERNAL:
2173 				default:
2174 					return null;
2175 			}
2176 		}
2177 
2178 	/**
2179 	 * 拡張子からデフォルトの実行ファイル名のPATHを返す
2180 	 * ToDo:
2181 	 */
2182 	pure nothrow @safe @nogc
2183 	immutable (C)[] default_lang_path(C)(const (C)[] extension)
2184 		if (std.traits.isSomeChar!(C))
2185 
2186 		do
2187 		{
2188 			static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
2189 
2190 			npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang_type = .ext_to_lang(extension);
2191 
2192 			if (is_known_lang(lang_type)) {
2193 				return .default_lang_path!(C)(lang_type);
2194 			}
2195 
2196 			switch (extension) {
2197 				case ".dub":
2198 				case ".sdl":
2199 					return "%HOMEDRIVE%\\D\\dmd2\\windows\\bin\\dub.exe";
2200 
2201 				case ".go":
2202 					return "%HOMEDRIVE%\\Go\\bin\\go.exe";
2203 
2204 				default:
2205 					break;
2206 			}
2207 
2208 			return null;
2209 		}
2210 
2211 	template L_EXE_PATH(S, npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang)
2212 		if (std.traits.isSomeString!(S))
2213 	{
2214 		static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
2215 
2216 		enum S L_EXE_PATH = default_lang_path!(S)(lang);
2217 		static assert(L_EXE_PATH.length != 0);
2218 	}
2219 
2220 	pragma(inline, true)
2221 	nothrow @nogc
2222 	void set_lang(core.sys.windows.windef.HWND _nppHandle, npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang)
2223 
2224 		do
2225 		{
2226 			static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
2227 			static import npp_api.pluginfunc.npp_msgs;
2228 
2229 			if (is_known_lang(lang)) {
2230 				npp_api.pluginfunc.npp_msgs.send_NPPM_SETCURRENTLANGTYPE(_nppHandle, lang);
2231 			}
2232 		}
2233 
2234 	pragma(inline, true)
2235 	nothrow @nogc
2236 	void set_lang(C)(core.sys.windows.windef.HWND _nppHandle, const (C)[] extension)
2237 		if (std.traits.isSomeChar!(C))
2238 
2239 		do
2240 		{
2241 			static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
2242 			static import npp_api.pluginfunc.npp_msgs;
2243 
2244 			npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang_type = .ext_to_lang(extension);
2245 
2246 			if (is_known_lang(lang_type)) {
2247 				npp_api.pluginfunc.npp_msgs.send_NPPM_SETCURRENTLANGTYPE(_nppHandle, lang_type);
2248 			}
2249 		}
2250 
2251 	version (Not_betterC) {
2252 		wstring replace_lang_variable(wstring path)
2253 
2254 		do
2255 		{
2256 			static import core.sys.windows.winbase;
2257 			static import std.algorithm;
2258 			static import std.array;
2259 			static import npp_api.pluginfunc.string;
2260 			static import npp_api.pluginfunc.path;
2261 
2262 			if ((path == null) || (!std.algorithm.canFind(path, '%'))) {
2263 				return path;
2264 			}
2265 
2266 			core.sys.windows.winnt.WCHAR[npp_api.pluginfunc.path.OS_MAX_PATH] buf = '\0';
2267 
2268 			if (core.sys.windows.winbase.GetEnvironmentVariableW(&(npp_api.pluginfunc..string.c_wstring!("HOMEDRIVE"w)[0]), &(buf[0]), buf.length) == 0) {
2269 				return path;
2270 			}
2271 
2272 			return std.array.replace(path, "%HOMEDRIVE%"w, npp_api.pluginfunc..string.from_stringz(buf)).idup;
2273 		}
2274 
2275 		nothrow
2276 		wstring lang_path(lang_id)(lang_id lang)
2277 			if (is(lang_id : npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType) || is(lang_id : const wchar[]))
2278 
2279 			do
2280 			{
2281 				static import std.algorithm;
2282 				static import std.path;
2283 				static import npp_api.pluginfunc.path;
2284 
2285 				wstring path = default_lang_path!(wchar)(lang);
2286 
2287 				if (path == null) {
2288 					return null;
2289 				}
2290 
2291 				try {
2292 					if (std.algorithm.canFind(path, '%')) {
2293 						path = replace_lang_variable(path);
2294 						assert(!std.algorithm.canFind(path, '%'));
2295 					}
2296 
2297 					if (!std.path.isAbsolute(path)) {
2298 						path = npp_api.pluginfunc.path.search_exe(path);
2299 					}
2300 				} catch (Exception e) {
2301 				}
2302 
2303 				return path.idup;
2304 			}
2305 	}
2306 }