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 			/*
1113 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUST:
1114 				return false;
1115 			*/
1116 
1117 			/*
1118 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SPICE:
1119 				return false;
1120 			*/
1121 
1122 			/*
1123 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TXT2TAGS:
1124 				return false;
1125 			*/
1126 
1127 			/*
1128 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VISUALPROLOG:
1129 				return false;
1130 			*/
1131 
1132 			/*
1133 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_EXTERNAL:
1134 				return false;
1135 			*/
1136 
1137 			default:
1138 				return false;
1139 		}
1140 	}
1141 
1142 /**
1143  * Whether Windows \\?\ path is supported
1144  *
1145  * Params:
1146  *      ext = lang file extension
1147  *
1148  * Returns: true is supported
1149  */
1150 pragma(inline, true)
1151 pure nothrow @safe @nogc
1152 bool is_extended_path_supported(S)(S ext)
1153 	if (std.traits.isSomeString!(S))
1154 
1155 	do
1156 	{
1157 		switch (ext) {
1158 			case ".d":
1159 			case ".go":
1160 				return true;
1161 
1162 			//case ".php":
1163 			default:
1164 				return false;
1165 		}
1166 	}
1167 
1168 /**
1169  * Convert LangType to extension
1170  *
1171  * Params:
1172  *      lang = LangType
1173  *
1174  * Returns: file extension or null
1175  * ToDo:
1176  */
1177 pure nothrow @safe @nogc
1178 S lang_to_ext(S)(npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang)
1179 
1180 	do
1181 	{
1182 		static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
1183 
1184 		switch (lang) {
1185 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEXT:
1186 				return ".txt";
1187 
1188 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP:
1189 				return ".php";
1190 
1191 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_C:
1192 				return ".c";
1193 
1194 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CPP:
1195 				return ".cpp";
1196 
1197 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CS:
1198 				return ".cs";
1199 
1200 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OBJC:
1201 				return null;
1202 
1203 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVA:
1204 				return null;
1205 
1206 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RC:
1207 				return null;
1208 
1209 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HTML:
1210 				return ".html";
1211 
1212 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_XML:
1213 				return ".xml";
1214 
1215 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MAKEFILE:
1216 				return null;
1217 
1218 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PASCAL:
1219 				return null;
1220 
1221 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BATCH:
1222 				return null;
1223 
1224 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INI:
1225 				return ".ini";
1226 
1227 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASCII:
1228 				return null;
1229 
1230 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_USER:
1231 				return null;
1232 
1233 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASP:
1234 				return null;
1235 
1236 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SQL:
1237 				return null;
1238 
1239 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VB:
1240 				return ".vb";
1241 
1242 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JS:
1243 				return null;
1244 
1245 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSS:
1246 				return null;
1247 
1248 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PERL:
1249 				return null;
1250 
1251 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PYTHON:
1252 				return ".py";
1253 
1254 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LUA:
1255 				return null;
1256 
1257 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEX:
1258 				return null;
1259 
1260 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN:
1261 				return null;
1262 
1263 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BASH:
1264 				return null;
1265 
1266 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FLASH:
1267 				return null;
1268 
1269 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NSIS:
1270 				return null;
1271 
1272 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TCL:
1273 				return null;
1274 
1275 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LISP:
1276 				return null;
1277 
1278 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SCHEME:
1279 				return null;
1280 
1281 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASM:
1282 				return ".asm";
1283 
1284 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_DIFF:
1285 				return null;
1286 
1287 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PROPS:
1288 				return null;
1289 
1290 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PS:
1291 				return null;
1292 
1293 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUBY:
1294 				return ".rb";
1295 
1296 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SMALLTALK:
1297 				return null;
1298 
1299 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VHDL:
1300 				return null;
1301 
1302 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_KIX:
1303 				return null;
1304 
1305 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AU3:
1306 				return null;
1307 
1308 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CAML:
1309 				return null;
1310 
1311 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ADA:
1312 				return null;
1313 
1314 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VERILOG:
1315 				return null;
1316 
1317 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MATLAB:
1318 				return null;
1319 
1320 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HASKELL:
1321 				return null;
1322 
1323 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INNO:
1324 				return null;
1325 
1326 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SEARCHRESULT:
1327 				return null;
1328 
1329 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CMAKE:
1330 				return null;
1331 
1332 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_YAML:
1333 				return null;
1334 
1335 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COBOL:
1336 				return null;
1337 
1338 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_GUI4CLI:
1339 				return null;
1340 
1341 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_D:
1342 				return ".d";
1343 
1344 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_POWERSHELL:
1345 				return null;
1346 
1347 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_R:
1348 				return null;
1349 
1350 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSP:
1351 				return null;
1352 
1353 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COFFEESCRIPT:
1354 				return null;
1355 
1356 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSON:
1357 				return ".json";
1358 
1359 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVASCRIPT:
1360 				return null;
1361 
1362 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN_77:
1363 				return null;
1364 
1365 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BAANC:
1366 				return null;
1367 
1368 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SREC:
1369 				return null;
1370 
1371 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_IHEX:
1372 				return null;
1373 
1374 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEHEX:
1375 				return null;
1376 
1377 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SWIFT:
1378 				return null;
1379 
1380 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASN1:
1381 				return null;
1382 
1383 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AVS:
1384 				return null;
1385 
1386 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BLITZBASIC:
1387 				return null;
1388 
1389 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PUREBASIC:
1390 				return null;
1391 
1392 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FREEBASIC:
1393 				return null;
1394 
1395 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSOUND:
1396 				return null;
1397 
1398 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ERLANG:
1399 				return null;
1400 
1401 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ESCRIPT:
1402 				return null;
1403 
1404 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTH:
1405 				return null;
1406 
1407 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LATEX:
1408 				return null;
1409 
1410 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MMIXAL:
1411 				return null;
1412 
1413 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NIMROD:
1414 				return null;
1415 
1416 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NNCRONTAB:
1417 				return null;
1418 
1419 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OSCRIPT:
1420 				return null;
1421 
1422 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REBOL:
1423 				return null;
1424 
1425 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REGISTRY:
1426 				return null;
1427 
1428 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUST:
1429 				return null;
1430 
1431 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SPICE:
1432 				return null;
1433 
1434 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TXT2TAGS:
1435 				return null;
1436 
1437 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VISUALPROLOG:
1438 				return null;
1439 
1440 			case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_EXTERNAL:
1441 				return null;
1442 
1443 			default:
1444 				return null;
1445 		}
1446 }
1447 
1448 /**
1449  * Contert extension to LangType
1450  *
1451  * Params:
1452  *      extension = file extension
1453  *
1454  * Returns: LangType, default is L_EXTERNAL
1455  * ToDo: 
1456  */
1457 pure nothrow @safe @nogc
1458 npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType ext_to_lang(C)(const (C)[] extension)
1459 	if (std.traits.isSomeChar!(C))
1460 
1461 	in
1462 	{
1463 		if (extension.length != 0) {
1464 			assert(extension.length >= 2);
1465 			assert(extension[0] == '.');
1466 		}
1467 	}
1468 
1469 	do
1470 	{
1471 		static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
1472 
1473 		switch (extension) {
1474 			case ".txt":
1475 			case ".log":
1476 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEXT;
1477 
1478 			case ".php":
1479 			case ".php3":
1480 			case ".php4":
1481 			case ".php5":
1482 			case ".phps":
1483 			case ".phpt":
1484 			case ".phtml":
1485 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP;
1486 
1487 			case ".h":
1488 			case ".c":
1489 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_C;
1490 
1491 			case ".hh":
1492 			case ".hpp":
1493 			case ".hxx":
1494 			case ".cc":
1495 			case ".cpp":
1496 			case ".cxx":
1497 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CPP;
1498 
1499 			case ".cs":
1500 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CS;
1501 
1502 			/*
1503 			case ".":
1504 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OBJC;
1505 			*/
1506 
1507 			/*
1508 			case ".":
1509 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVA;
1510 			*/
1511 
1512 			/*
1513 			case ".":
1514 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RC;
1515 			*/
1516 
1517 			case ".html":
1518 			case ".htm":
1519 			case ".shtml":
1520 			case ".shtm":
1521 			case ".hta":
1522 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HTML;
1523 
1524 			case ".xml":
1525 			case ".xhtml":
1526 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_XML;
1527 
1528 			/*
1529 			case ".":
1530 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MAKEFILE;
1531 			*/
1532 
1533 			/*
1534 			case ".":
1535 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PASCAL;
1536 			*/
1537 
1538 			/*
1539 			case ".":
1540 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BATCH;
1541 			*/
1542 
1543 			case ".ini":
1544 			case ".inf":
1545 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INI;
1546 
1547 			/*
1548 			case ".":
1549 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASCII;
1550 			*/
1551 
1552 			/*
1553 			case ".":
1554 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_USER;
1555 			*/
1556 
1557 			case ".asp":
1558 			case ".aspx":
1559 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASP;
1560 
1561 			case ".sql":
1562 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SQL;
1563 
1564 			case ".vb":
1565 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VB;
1566 
1567 			/*
1568 			case ".js":
1569 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JS;
1570 			*/
1571 
1572 			case ".css":
1573 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSS;
1574 
1575 			case ".pl":
1576 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PERL;
1577 
1578 			case ".py":
1579 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PYTHON;
1580 
1581 			case ".lua":
1582 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LUA;
1583 
1584 			/*
1585 			case ".":
1586 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEX;
1587 			*/
1588 
1589 			/*
1590 			case ".":
1591 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN;
1592 			*/
1593 
1594 			/*
1595 			case ".":
1596 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BASH;
1597 			*/
1598 
1599 			/*
1600 			case ".":
1601 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FLASH;
1602 			*/
1603 
1604 			/*
1605 			case ".":
1606 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NSIS;
1607 			*/
1608 
1609 			/*
1610 			case ".":
1611 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TCL;
1612 			*/
1613 
1614 			/*
1615 			case ".":
1616 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LISP;
1617 			*/
1618 
1619 			/*
1620 			case ".":
1621 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SCHEME;
1622 			*/
1623 
1624 			/*
1625 			case ".":
1626 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASM;
1627 			*/
1628 
1629 			/*
1630 			case ".":
1631 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_DIFF;
1632 			*/
1633 
1634 			/*
1635 			case ".":
1636 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PROPS;
1637 			*/
1638 
1639 			/*
1640 			case ".":
1641 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PS;
1642 			*/
1643 
1644 			case ".rb":
1645 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUBY;
1646 
1647 			/*
1648 			case ".":
1649 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SMALLTALK;
1650 			*/
1651 
1652 			/*
1653 			case ".":
1654 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VHDL;
1655 			*/
1656 
1657 			/*
1658 			case ".":
1659 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_KIX;
1660 			*/
1661 
1662 			/*
1663 			case ".":
1664 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AU3;
1665 			*/
1666 
1667 			/*
1668 			case ".":
1669 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CAML;
1670 			*/
1671 
1672 			/*
1673 			case ".":
1674 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ADA;
1675 			*/
1676 
1677 			/*
1678 			case ".":
1679 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VERILOG;
1680 			*/
1681 
1682 			/*
1683 			case ".":
1684 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MATLAB;
1685 			*/
1686 
1687 			/*
1688 			case ".":
1689 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HASKELL;
1690 			*/
1691 
1692 			/*
1693 			case ".":
1694 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INNO;
1695 			*/
1696 
1697 			/*
1698 			case ".":
1699 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SEARCHRESULT;
1700 			*/
1701 
1702 			/*
1703 			case ".":
1704 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CMAKE;
1705 			*/
1706 
1707 			/*
1708 			case ".":
1709 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_YAML;
1710 			*/
1711 
1712 			/*
1713 			case ".":
1714 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COBOL;
1715 			*/
1716 
1717 			/*
1718 			case ".":
1719 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_GUI4CLI;
1720 			*/
1721 
1722 			case ".d":
1723 			case ".dd":
1724 			case ".di":
1725 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_D;
1726 
1727 			case ".ps":
1728 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_POWERSHELL;
1729 
1730 			case ".r":
1731 			case ".rda":
1732 			case ".rdata":
1733 			case ".rds":
1734 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_R;
1735 
1736 			/*
1737 			case ".":
1738 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSP;
1739 			*/
1740 
1741 			/*
1742 			case ".":
1743 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COFFEESCRIPT;
1744 			*/
1745 
1746 			case ".json":
1747 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSON;
1748 
1749 			/*
1750 			case ".js":
1751 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVASCRIPT;
1752 			*/
1753 
1754 			/*
1755 			case ".":
1756 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN_77;
1757 			*/
1758 
1759 			/*
1760 			case ".":
1761 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BAANC;
1762 			*/
1763 
1764 			/*
1765 			case ".":
1766 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SREC;
1767 			*/
1768 
1769 			/*
1770 			case ".":
1771 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_IHEX;
1772 			*/
1773 
1774 			/*
1775 			case ".":
1776 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEHEX;
1777 			*/
1778 
1779 			/*
1780 			case ".":
1781 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SWIFT;
1782 			*/
1783 
1784 			/*
1785 			case ".":
1786 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASN1;
1787 			*/
1788 
1789 			/*
1790 			case ".":
1791 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AVS;
1792 			*/
1793 
1794 			/*
1795 			case ".":
1796 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BLITZBASIC;
1797 			*/
1798 
1799 			/*
1800 			case ".":
1801 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PUREBASIC;
1802 			*/
1803 
1804 			/*
1805 			case ".":
1806 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FREEBASIC;
1807 			*/
1808 
1809 			/*
1810 			case ".":
1811 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSOUND;
1812 			*/
1813 
1814 			/*
1815 			case ".":
1816 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ERLANG;
1817 			*/
1818 
1819 			/*
1820 			case ".":
1821 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ESCRIPT;
1822 			*/
1823 
1824 			/*
1825 			case ".":
1826 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTH;
1827 			*/
1828 
1829 			/*
1830 			case ".":
1831 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LATEX;
1832 			*/
1833 
1834 			/*
1835 			case ".":
1836 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MMIXAL;
1837 			*/
1838 
1839 			/*
1840 			case ".":
1841 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NIMROD;
1842 			*/
1843 
1844 			/*
1845 			case ".":
1846 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NNCRONTAB;
1847 			*/
1848 
1849 			/*
1850 			case ".":
1851 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OSCRIPT;
1852 			*/
1853 
1854 			/*
1855 			case ".":
1856 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REBOL;
1857 			*/
1858 
1859 			/*
1860 			case ".":
1861 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REGISTRY;
1862 			*/
1863 
1864 			/*
1865 			case ".":
1866 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUST;
1867 			*/
1868 
1869 			/*
1870 			case ".":
1871 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SPICE;
1872 			*/
1873 
1874 			/*
1875 			case ".":
1876 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TXT2TAGS;
1877 			*/
1878 
1879 			/*
1880 			case ".":
1881 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VISUALPROLOG;
1882 			*/
1883 
1884 			default:
1885 				return npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_EXTERNAL;
1886 		}
1887 	}
1888 
1889 	unittest
1890 	{
1891 		static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
1892 		static import npp_api.pluginfunc.lang;
1893 
1894 		assert(npp_api.pluginfunc.lang.ext_to_lang(".php") == npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP);
1895 		assert(npp_api.pluginfunc.lang.ext_to_lang(".php"w) == npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP);
1896 		assert(npp_api.pluginfunc.lang.ext_to_lang(".php"d) == npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP);
1897 		assert(npp_api.pluginfunc.lang.ext_to_lang(".php\0") != npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP);
1898 		assert(npp_api.pluginfunc.lang.ext_to_lang(".PHP") != npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP);
1899 	}
1900 
1901 version (Windows) {
1902 	/**
1903 	 * プログラミング言語のデフォルトのファイルパスを返す。
1904 	 *
1905 	 * Params:
1906 	 *      lang = 
1907 	 *
1908 	 * Returns: そのプログラミング言語の実行ファイルへのPATHが決まっていたらそのPATH。決まっていないなら実行ファイル名のみ。見つからないならnull。
1909 	 * ToDo:
1910 	 */
1911 	pure nothrow @safe @nogc
1912 	immutable (C)[] default_lang_path(C)(npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang)
1913 		if (std.traits.isSomeChar!(C))
1914 
1915 		do
1916 		{
1917 			static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
1918 
1919 			switch (lang) {
1920 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEXT:
1921 					return null;
1922 
1923 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PHP:
1924 					return "php.exe";
1925 
1926 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_C:
1927 					return null;
1928 
1929 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CPP:
1930 					return null;
1931 
1932 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CS:
1933 					return "csc.exe";
1934 
1935 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OBJC:
1936 					return null;
1937 
1938 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVA:
1939 					return null;
1940 
1941 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RC:
1942 					return null;
1943 
1944 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HTML:
1945 					return null;
1946 
1947 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_XML:
1948 					return null;
1949 
1950 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MAKEFILE:
1951 					return null;
1952 
1953 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PASCAL:
1954 					return null;
1955 
1956 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BATCH:
1957 					return null;
1958 
1959 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INI:
1960 					return null;
1961 
1962 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASCII:
1963 					return null;
1964 
1965 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_USER:
1966 					return null;
1967 
1968 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASP:
1969 					return null;
1970 
1971 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SQL:
1972 					return null;
1973 
1974 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VB:
1975 					return null;
1976 
1977 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JS:
1978 					return null;
1979 
1980 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSS:
1981 					return null;
1982 
1983 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PERL:
1984 					return null;
1985 
1986 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PYTHON:
1987 					return "python.exe";
1988 
1989 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LUA:
1990 					return null;
1991 
1992 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEX:
1993 					return null;
1994 
1995 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN:
1996 					return null;
1997 
1998 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BASH:
1999 					return null;
2000 
2001 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FLASH:
2002 					return null;
2003 
2004 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NSIS:
2005 					return null;
2006 
2007 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TCL:
2008 					return null;
2009 
2010 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LISP:
2011 					return null;
2012 
2013 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SCHEME:
2014 					return null;
2015 
2016 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASM:
2017 					return null;
2018 
2019 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_DIFF:
2020 					return null;
2021 
2022 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PROPS:
2023 					return null;
2024 
2025 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PS:
2026 					return null;
2027 
2028 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUBY:
2029 					return "ruby.exe";
2030 
2031 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SMALLTALK:
2032 					return null;
2033 
2034 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VHDL:
2035 					return null;
2036 
2037 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_KIX:
2038 					return null;
2039 
2040 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AU3:
2041 					return null;
2042 
2043 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CAML:
2044 					return null;
2045 
2046 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ADA:
2047 					return null;
2048 
2049 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VERILOG:
2050 					return null;
2051 
2052 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MATLAB:
2053 					return null;
2054 
2055 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_HASKELL:
2056 					return null;
2057 
2058 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_INNO:
2059 					return null;
2060 
2061 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SEARCHRESULT:
2062 					return null;
2063 
2064 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CMAKE:
2065 					return null;
2066 
2067 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_YAML:
2068 					return null;
2069 
2070 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COBOL:
2071 					return null;
2072 
2073 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_GUI4CLI:
2074 					return null;
2075 
2076 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_D:
2077 					return "%HOMEDRIVE%\\D\\dmd2\\windows\\bin\\dmd.exe";
2078 
2079 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_POWERSHELL:
2080 					return null;
2081 
2082 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_R:
2083 					return null;
2084 
2085 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSP:
2086 					return null;
2087 
2088 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_COFFEESCRIPT:
2089 					return null;
2090 
2091 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JSON:
2092 					return null;
2093 
2094 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_JAVASCRIPT:
2095 					return null;
2096 
2097 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTRAN_77:
2098 					return null;
2099 
2100 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BAANC:
2101 					return null;
2102 
2103 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SREC:
2104 					return null;
2105 
2106 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_IHEX:
2107 					return null;
2108 
2109 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TEHEX:
2110 					return null;
2111 
2112 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SWIFT:
2113 					return null;
2114 
2115 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ASN1:
2116 					return null;
2117 
2118 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_AVS:
2119 					return null;
2120 
2121 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_BLITZBASIC:
2122 					return null;
2123 
2124 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_PUREBASIC:
2125 					return null;
2126 
2127 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FREEBASIC:
2128 					return null;
2129 
2130 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_CSOUND:
2131 					return null;
2132 
2133 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ERLANG:
2134 					return null;
2135 
2136 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_ESCRIPT:
2137 					return null;
2138 
2139 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_FORTH:
2140 					return null;
2141 
2142 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_LATEX:
2143 					return null;
2144 
2145 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_MMIXAL:
2146 					return null;
2147 
2148 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NIMROD:
2149 					return null;
2150 
2151 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_NNCRONTAB:
2152 					return null;
2153 
2154 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_OSCRIPT:
2155 					return null;
2156 
2157 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REBOL:
2158 					return null;
2159 
2160 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_REGISTRY:
2161 					return null;
2162 
2163 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_RUST:
2164 					return null;
2165 
2166 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_SPICE:
2167 					return null;
2168 
2169 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_TXT2TAGS:
2170 					return null;
2171 
2172 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_VISUALPROLOG:
2173 					return null;
2174 
2175 				case npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType.L_EXTERNAL:
2176 				default:
2177 					return null;
2178 			}
2179 		}
2180 
2181 	/**
2182 	 * 拡張子からデフォルトの実行ファイル名のPATHを返す
2183 	 * ToDo:
2184 	 */
2185 	pure nothrow @safe @nogc
2186 	immutable (C)[] default_lang_path(C)(const (C)[] extension)
2187 		if (std.traits.isSomeChar!(C))
2188 
2189 		do
2190 		{
2191 			static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
2192 
2193 			npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang_type = .ext_to_lang(extension);
2194 
2195 			if (is_known_lang(lang_type)) {
2196 				return .default_lang_path!(C)(lang_type);
2197 			}
2198 
2199 			switch (extension) {
2200 				case ".dub":
2201 				case ".sdl":
2202 					return "%HOMEDRIVE%\\D\\dmd2\\windows\\bin\\dub.exe";
2203 
2204 				case ".go":
2205 					return "%HOMEDRIVE%\\Go\\bin\\go.exe";
2206 
2207 				default:
2208 					break;
2209 			}
2210 
2211 			return null;
2212 		}
2213 
2214 	template L_EXE_PATH(S, npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang)
2215 		if (std.traits.isSomeString!(S))
2216 	{
2217 		static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
2218 
2219 		enum S L_EXE_PATH = default_lang_path!(S)(lang);
2220 		static assert(L_EXE_PATH.length != 0);
2221 	}
2222 
2223 	pragma(inline, true)
2224 	nothrow @nogc
2225 	void set_lang(core.sys.windows.windef.HWND _nppHandle, npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang)
2226 
2227 		do
2228 		{
2229 			static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
2230 			static import npp_api.pluginfunc.npp_msgs;
2231 
2232 			if (is_known_lang(lang)) {
2233 				npp_api.pluginfunc.npp_msgs.send_NPPM_SETCURRENTLANGTYPE(_nppHandle, lang);
2234 			}
2235 		}
2236 
2237 	pragma(inline, true)
2238 	nothrow @nogc
2239 	void set_lang(C)(core.sys.windows.windef.HWND _nppHandle, const (C)[] extension)
2240 		if (std.traits.isSomeChar!(C))
2241 
2242 		do
2243 		{
2244 			static import npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs;
2245 			static import npp_api.pluginfunc.npp_msgs;
2246 
2247 			npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType lang_type = .ext_to_lang(extension);
2248 
2249 			if (is_known_lang(lang_type)) {
2250 				npp_api.pluginfunc.npp_msgs.send_NPPM_SETCURRENTLANGTYPE(_nppHandle, lang_type);
2251 			}
2252 		}
2253 
2254 	version (Not_betterC) {
2255 		wstring replace_lang_variable(wstring path)
2256 
2257 		do
2258 		{
2259 			static import core.sys.windows.winbase;
2260 			static import std.algorithm;
2261 			static import std.array;
2262 			static import npp_api.pluginfunc.string;
2263 			static import npp_api.pluginfunc.path;
2264 
2265 			if ((path == null) || (!std.algorithm.canFind(path, '%'))) {
2266 				return path;
2267 			}
2268 
2269 			core.sys.windows.winnt.WCHAR[npp_api.pluginfunc.path.OS_MAX_PATH] buf = '\0';
2270 
2271 			if (core.sys.windows.winbase.GetEnvironmentVariableW(&(npp_api.pluginfunc..string.c_wstring!("HOMEDRIVE"w)[0]), &(buf[0]), buf.length) == 0) {
2272 				return path;
2273 			}
2274 
2275 			return std.array.replace(path, "%HOMEDRIVE%"w, npp_api.pluginfunc..string.from_stringz(buf)).idup;
2276 		}
2277 
2278 		nothrow
2279 		wstring lang_path(lang_identifier)(lang_identifier lang)
2280 			if (is(lang_identifier : npp_api.powereditor.misc.pluginsmanager.notepad_plus_msgs.LangType) || is(lang_identifier : const wchar[]))
2281 
2282 			do
2283 			{
2284 				static import std.algorithm;
2285 				static import std.path;
2286 				static import npp_api.pluginfunc.path;
2287 
2288 				wstring path = default_lang_path!(wchar)(lang);
2289 
2290 				if (path == null) {
2291 					return null;
2292 				}
2293 
2294 				try {
2295 					if (std.algorithm.canFind(path, '%')) {
2296 						path = replace_lang_variable(path);
2297 						assert(!std.algorithm.canFind(path, '%'));
2298 					}
2299 
2300 					if (!std.path.isAbsolute(path)) {
2301 						path = npp_api.pluginfunc.path.search_exe(path);
2302 					}
2303 				} catch (Exception e) {
2304 				}
2305 
2306 				return path.idup;
2307 			}
2308 	}
2309 }