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