拡張子からコンソール実行

提供: MeryWiki
移動先: 案内検索

拡張子でコンソール実行.png 概要[編集]

コンソール実行をVBSに移植して、1ファイルのみで多言語対応出来るように機能強化したものです。
拡張子からコマンドを判別するため、以前のように呼び出す時に設定する必要はありません。
足りない言語についても、Caseを追加して実行コマンドを設定することで使用できるようになります。
不具合要望などは以下のリンクまで。

もう少しリファレンス

拡張子でコンソール実行.png 対応済み言語処理系一覧[編集]

C、C++(VC++、BCC32、GCC、G++)、D、C#(Mono)、C#Script(Mono、scriptcs)、Java、Scala、Groovy、Perl、PHP(Phalanger)、
Go、Dart、R言語、JavaScript(Node.js、JScript、JScript.NET、Rhino)、TypeScript、Fortran(G)、
VBScript、VB.NET(Mono)、BASIC(FreeBasic)、Pascal(FPC)、Ada(GNAT)、Ruby(JRuby、IR)、Lua(JIT)、
Matlab(Octave)、Scilab、Python(PyPy、Jython、IPy)、なでしこ、CoffeeScript、
CommonLisp(CLISP、SBCL、MKCL、CCL)、EmacsLisp、Scheme(Gauche)、Clojure(JVM、CLR)、
F#、Haskell(GHC)、CASL II、NASM、.NetIL(ilasm)、BAT、WSF、PowerShell

※ただし、基本的にはパスが通っていることが前提。
HSPはコマンドラインコンパイラが標準で用意されていないため断念。
公式プラグインのHSPコンパイル実行プラグインをご利用ください。

※2 処理系ではないけどjs系はUglify.jsがコメント追記で呼べるようになりました。

拡張子でコンソール実行.png ZIP[編集]

ダウンロード【2016/12/11版】
旧版
変換済みicoファイル込

拡張子でコンソール実行.png アイコン[編集]

  拡張子でコンソール実行.png 拡張子でコンソール実行2.png

拡張子でコンソール実行.png ソース[編集]

  1 #icon="exec_cmd.ico"
  2 #title="コンソール実行"
  3 ' exec_cmd.vbs
  4 
  5 'ファイルの保存
  6 Document.Save()
  7 
  8 '保存してなければ終了。
  9 If Document.Name="" Then
 10 	MsgBox "ファイルが保存されてません。"
 11 	Quit
 12 End If
 13 
 14 'タイトル名
 15 Dim TITLE
 16 '実行コマンド
 17 Dim EXEC_COMMAND
 18 
 19 '使用エンジン選択
 20 Function ENGINE(file_format)
 21 	Select Case LCase(file_format)
 22 		'C言語
 23 		Case "c"
 24 			'ENGINE="bcc32"
 25 			ENGINE="gcc"
 26 		'C++
 27 		Case "cpp"
 28 			ENGINE="cl"
 29 			'ENGINE="bcc32"
 30 			'ENGINE="g++"
 31 		'C#
 32 		Case "cs"
 33 			ENGINE="csc"
 34 			'ENGINE="mcs"
 35 		'C#Script
 36 		Case "csx"
 37 			ENGINE="csi"
 38 			'ENGINE="csharp"
 39 			'ENGINE="scriptcs"
 40 		'Perl
 41 		Case "pl"
 42 			ENGINE="perl"
 43 			'ENGINE="perl6"
 44 		'PHP
 45 		Case "php"
 46 			ENGINE="php"
 47 			'ENGINE="phpc"
 48 		'JavaScript
 49 		Case "js"
 50 			ENGINE="node"
 51 			'ENGINE="jscript"
 52 			'ENGINE="jsc"
 53 			'ENGINE="rhino"
 54 		'VB.NET
 55 		Case "vb"
 56 			ENGINE="vbc"
 57 			'ENGINE="vbnc"
 58 		'Ruby
 59 		Case "rb"
 60 			ENGINE="ruby"
 61 			'ENGINE="jruby"
 62 			'ENGINE="ir"
 63 		'Lua
 64 		Case "lua"
 65 			ENGINE="lua"
 66 			'ENGINE="luajit"
 67 		'MATLAB
 68 		Case "m"
 69 			'ENGINE="matlab"
 70 			ENGINE="octave"
 71 		'Python
 72 		Case "py"
 73 			'ENGINE="python"
 74 			'ENGINE="python2"
 75 			ENGINE="python3"
 76 			'ENGINE="pypy"
 77 			'ENGINE="jython"
 78 			'ENGINE="ipy"
 79 			'ENGINE="ipy64"
 80 		'LISP, CommonLisp
 81 		Case "l","lisp","lsp","cl"
 82 			'ENGINE="clisp"
 83 			ENGINE="sbcl"
 84 			'ENGINE="ccl"
 85 			'ENGINE="ccl64"
 86 			'ENGINE="mkcl"
 87 		'Clojure
 88 		Case "clj"
 89 			'ENGINE="clojure"
 90 			ENGINE="clojure-clr"
 91 	End Select
 92 End Function
 93 
 94 '使用するエンジンのパス	パスが通しにくかったり通らないものを記述
 95 Function ENGINE_PATH(file_format)
 96 	Select Case LCase(file_format)
 97 		'VC++
 98 		Case "cl"
 99 			'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 14.0\VC\bin"
100 			'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\bin"
101 			ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 14.0\VC\bin"
102 			'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\bin"
103 		'C#, VB.NET
104 		Case "csc","vbc"
105 			'ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319"
106 			'ENGINE_PATH="%ProgramFiles%\MSBuild\12.0\Bin"
107 			'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\12.0\Bin"
108 			ENGINE_PATH="%ProgramFiles%\MSBuild\14.0\Bin"
109 			'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\14.0\Bin"
110 		'Mono C#, Mono VB.NET
111 		Case "mcs","vbnc"
112 			ENGINE_PATH="%ProgramFiles%\Mono\lib\mono\4.5"
113 			'ENGINE_PATH="%ProgramFiles(x86)%\Mono\lib\mono\4.5"
114 		'C#Script
115 		Case "csi"
116 			ENGINE_PATH="%ProgramFiles%\MSBuild\14.0\Bin"
117 			'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\14.0\Bin"
118 		'Mono C#Script
119 		Case "csharp"
120 			ENGINE_PATH="%ProgramFiles%\Mono\lib\mono\4.5"
121 			'ENGINE_PATH="%ProgramFiles(x86)%\Mono\lib\mono\4.5"
122 		'JScript.NET
123 		Case "jsc"
124 			ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727"
125 		'Rhino
126 		Case "rhino"
127 			ENGINE_PATH="%HOMEDRIVE%\rhino"
128 		'TypeScript
129 		Case "ts"
130 			'ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\TypeScript\1.0"
131 			'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\TypeScript\1.0"
132 			ENGINE_PATH="%APPDATA%\npm"
133 		'CoffeeScript
134 		Case "coffee"
135 			ENGINE_PATH="%APPDATA%\npm"
136 		'Clojure(JVM)
137 		Case "clojure"
138 			'clojure-x.x.xのバージョン表記"-x.x.x"を消すと動かなくなる。
139 			ENGINE_PATH="%HOMEDRIVE%\clojure-1.8.0"
140 		'F#
141 		Case "fs","ml","mli"
142 			ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\F#\3.1\Framework\v4.0"
143 			'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\F#\3.1\Framework\v4.0"
144 		'CASL II
145 		Case "cas"
146 			ENGINE_PATH="%HOMEDRIVE%\javaCASL2"
147 		'NASM LINK用(VC++必須)
148 			Case "link"
149 				ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 12.0\VC\bin"
150 				'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\bin"
151 			Case "msvcrt"
152 				ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 12.0\VC\lib"
153 				'ENGINE_PATH="%ProgramFiles(x86)%Microsoft Visual Studio 12.0\VC\lib"
154 			Case "kernel32"
155 				ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\Windows\v7.1A\Lib"
156 				'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Lib"
157 			Case "addlib"
158 				'ライブラリが他に必要であれば空白区切りで与えてください。
159 				'(ファイルパスに空白を含む時は注意)
160 				ENGINE_PATH=""
161 		'NASM LINK用ここまで
162 		'.NetILアセンブラ
163 		Case "il"
164 			ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319"
165 	End Select
166 End Function
167 
168 'js圧縮コマンド(uglifyjs)
169 Function COMP_JS()
170 	COMP_JS=Join(Array("uglifyjs -m -o ",DOC_NAME,".min.js ",DOC_NAME,".js"),"")
171 End Function
172 
173 'パッケージファイル
174 Dim PKG_FILES
175 'コマンドオプション
176 Dim CMD_OPTION
177 'ビルドメッセージ
178 '頭の&は何も無い所に付け加えるため必須とする。
179 Dim BUILDED
180 BUILDED=" & Echo Complited."
181 
182 Dim br:br=" & " '改行用
183 
184 'Document.Name:現在のファイル名
185 Dim doc_names:doc_names=Split(Document.Name,".")
186 
187 '拡張子
188 Dim file_format:file_format=doc_names(UBound(doc_names))
189 doc_names(UBound(doc_names))=""
190 
191 '拡張子を除いたファイル名
192 Dim DOC_NAME
193 DOC_NAME=Join(doc_names,".")
194 DOC_NAME=Mid(DOC_NAME,1,Len(DOC_NAME)-1)
195 
196 '実行時exe、class、obj、js、min.jsにコンパイルする形式の場合は一行目にコメントで
197 ' delexe, delclass, delobj, deljs, delmin を含めることで
198 '事前にexe, class, obj, js, min.jsを削除することができます。
199 
200 'タイトル、実行コマンド
201 If load_option("cmd:") Then
202 	'一行目に"cmd:"を含めるとそれ以降が実行コマンドになる。
203 	'ただし、既定の実行エンジンも指定されないため、
204 	'そこを含めてのコマンド設定が必要。
205 	EXEC_COMMAND=Split(LCase(Document.GetLine(1)),"cmd:")(1)
206 
207 Else
208 	Select Case LCase(file_format)
209 		Case "c","cpp"	'C, C++
210 			Select Case ENGINE(file_format)
211 				Case "cl"		'Visual C++ 
212 					TITLE="Visual C++ " & Document.Name
213 					EXEC_COMMAND=Join(Array( _
214 						"""",Replace(ENGINE_PATH(ENGINE(file_format)),"\bin",""),"\vcvarsall"" & ",_
215 						"""",ENGINE_PATH(ENGINE(file_format)),"\cl"" /nologo /EHsc ",Document.Name,br, _
216 						DOC_NAME,".exe" _
217 					),"")
218 				Case "bcc32"	'Borland C++
219 					TITLE="Borland C++ " & Document.Name
220 					EXEC_COMMAND=Join(Array( _
221 						"bcc32 ",Document.Name,br, _
222 						DOC_NAME,".exe" _
223 					),"")
224 
225 				Case "gcc"		'GCC C
226 					TITLE="GCC C " & Document.Name
227 					EXEC_COMMAND=Join(Array( _
228 						"gcc -o ",DOC_NAME,".exe ",Document.Name,br, _
229 						DOC_NAME,".exe" _
230 					),"")
231 
232 				Case "g++"		'GCC C++
233 					'コンパイルオプション
234 					'一行目に //not11 と入力するとC++11以前のコンパイルを行う。
235 					If load_option("//not11") Then
236 						CMD_OPTION=""
237 					Else
238 						CMD_OPTION="-std=c++11 "
239 					End If
240 					TITLE="GCC C++ " & Document.Name
241 					EXEC_COMMAND=Join(Array( _
242 						"g++ ",CMD_OPTION,"-o ",DOC_NAME,".exe ",Document.Name,br, _
243 						DOC_NAME,".exe" _
244 					),"")
245 			End Select
246 
247 		Case "d"		'D言語
248 			TITLE="D言語 " & Document.Name
249 			EXEC_COMMAND="dmd " & Document.Name & br & DOC_NAME & ".exe"
250 
251 		Case "cs"		'C#
252 			'コンパイルファイル選択
253 			'デフォルトでフォルダ内全てをコンパイル。
254 			'一行目に //only と加えることでそのファイルのみコンパイルを行う。
255 			If load_option("//only") Then
256 				PKG_FILES=Document.Name
257 			Else
258 				PKG_FILES="*.cs"
259 			End If
260 
261 			Select Case ENGINE(file_format)
262 				Case "csc"		'C#
263 					TITLE="C# "+ Document.Name
264 					EXEC_COMMAND=Join(Array( _
265 						"""",ENGINE_PATH(ENGINE(file_format)),"\csc"" ", _
266 						"/nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
267 						DOC_NAME,".exe" _
268 					),"")
269 
270 				Case "mcs"		'Mono C#
271 					TITLE="Mono C# "+ Document.Name
272 					EXEC_COMMAND=Join(Array( _
273 						"""",ENGINE_PATH(ENGINE(file_format)),"\mcs"" ", _
274 						"-out:",DOC_NAME,".exe ",PKG_FILES," -optimize+",br, _
275 						DOC_NAME,".exe" _
276 					),"")
277 			End Select
278 
279 		Case "csx"		'C#Script
280 			Select Case ENGINE(file_format)
281 				Case "csi"			'C#Script
282 					TITLE="C#Script "+ Document.Name
283 					EXEC_COMMAND=Join(Array( _
284 						"""",ENGINE_PATH(ENGINE(file_format)),"\csi"" ",Document.Name _
285 					),"")
286 				Case "csharp"		'Mono C#Script
287 					TITLE="Mono C#Script "+ Document.Name
288 					EXEC_COMMAND=Join(Array( _
289 						"""",ENGINE_PATH(ENGINE(file_format)),"\csharp"" ",Document.Name _
290 					),"")
291 				Case "scriptcs"		'ScriptCS
292 					TITLE="scriptcs "+ Document.Name
293 					EXEC_COMMAND="scriptcs " & Document.Name
294 			End Select
295 
296 		Case "java"		'Java
297 			'jar化は手順が面倒そうなので保留
298 			TITLE="Java " & Document.Name
299 			EXEC_COMMAND=Join(Array( _
300 				"javac ",Document.Name,br, _
301 				"java ",DOC_NAME _
302 			),"")
303 
304 		Case "scala"		'Scala
305 			'コンパイルオプション
306 			'一行目に //class と加えることでclassファイルにコンパイルを行う。
307 			TITLE="Scala " & Document.Name
308 			If load_option("//class") Then
309 				EXEC_COMMAND="scalac " & Document.Name
310 			Else
311 				EXEC_COMMAND="scala " & Document.Name
312 			End If
313 
314 		Case "groovy"		'Groovy
315 			'コンパイルオプション
316 			'一行目に //class と加えることでclassファイルにコンパイルを行う。
317 			TITLE="Groovy " & Document.Name
318 			If load_option("//class") Then
319 				EXEC_COMMAND="groovyc " & Document.Name
320 			Else
321 				EXEC_COMMAND="groovy " & Document.Name
322 			End If
323 
324 		Case "pl"		'Perl
325 			Select Case ENGINE(file_format)
326 				Case "perl"
327 					TITLE="Perl " & Document.Name
328 					EXEC_COMMAND="perl " & Document.Name
329 
330 				Case "perl6"
331 					TITLE="Perl6 " & Document.Name
332 					EXEC_COMMAND="perl6 " & Document.Name
333 			End Select
334 
335 		Case "php"		'PHP
336 			Select Case ENGINE(file_format)
337 				Case "php"		'PHP
338 					TITLE="PHP " & Document.Name
339 					EXEC_COMMAND="php " & Document.Name
340 
341 				Case "phpc"		'Phalanger
342 					TITLE="Phalanger " & Document.Name
343 					EXEC_COMMAND=Join(Array( _
344 						"phpc /debug- /quiet ",Document.Name,br, _
345 						"bin\",DOC_NAME,".exe" _
346 					),"")
347 			End Select
348 
349 		Case "go"		'Go
350 			'コンパイルオプション
351 			'一行目に//buildでビルドを行う。
352 			If load_option("//build") Then
353 				CMD_OPTION="build "
354 			Else
355 				CMD_OPTION="run "
356 			End If
357 			TITLE="GO " & Document.Name
358 			EXEC_COMMAND=Join(Array( _
359 				"go ",CMD_OPTION,Document.Name _
360 			),"")
361 
362 		Case "dart"		'Dart
363 			TITLE="Dart " & Document.Name
364 			EXEC_COMMAND="dart " & Document.Name _
365 
366 		Case "r","q","s"	'R言語
367 			TITLE="R言語 " & Document.Name
368 			EXEC_COMMAND="rscript " & Document.Name
369 
370 		Case "js"		'JavaScript
371 			If load_option("//comp") Then
372 				'js圧縮モード
373 				'一行目にコメントで //compと加える。
374 				TITLE="Uglify.js " & Document.Name
375 				EXEC_COMMAND=COMP_JS & BUILDED
376 			Else
377 				Select Case ENGINE(file_format)
378 					Case "node"		'Node.js
379 						'デバッグオプション
380 						'一行目に、
381 						' //debug と加えることでデバッグモードでの実行を行う。
382 						If load_option("//debug") Then
383 							CMD_OPTION="debug"
384 						Else
385 							CMD_OPTION=""
386 						End If
387 
388 						TITLE="Node.js " & Document.Name
389 						EXEC_COMMAND=Join(Array("node ",CMD_OPTION," ",Document.Name),"")
390 
391 					Case "jscript"	'JScript
392 						TITLE="JScript " & Document.Name
393 						EXEC_COMMAND="cscript //nologo //E:JScript " & Document.Name
394 
395 					Case "jsc"		'JScript.NET
396 						PKG_FILES=Document.Name
397 						TITLE="JScript.NET "+ Document.Name
398 						EXEC_COMMAND=Join(Array( _
399 							"""",ENGINE_PATH(ENGINE(file_format)),"\jsc"" /nologo /out:", _
400 								DOC_NAME,".exe ",PKG_FILES,br, _
401 							DOC_NAME,".exe" _
402 						),"")
403 
404 					Case "rhino"	'Rhino
405 						TITLE="Rhino " & Document.Name
406 						EXEC_COMMAND=Join(Array("java -jar ",ENGINE_PATH(ENGINE(file_format)),"\js.jar ",Document.Name),"")
407 				End Select
408 			End If
409 
410 		Case "ts"		'TypeScript
411 			TITLE="TypeScript to " & ENGINE("js") & " " & Document.Name
412 			EXEC_COMMAND=Join(Array("""",ENGINE_PATH(file_format),"\tsc"" -t ES6 ",Document.Name,br),"")
413 			
414 			If load_option("//comp") Then
415 				'js圧縮モード
416 				'一行目にコメントで //compと加える。
417 				TITLE="Uglify.js + " & TITLE
418 				EXEC_COMMAND=EXEC_COMMAND & COMP_JS & BUILDED
419 			Else
420 				'JavaScript実行
421 				Select Case ENGINE("js")
422 					Case "node"	'Node.js
423 						EXEC_COMMAND=Join(Array(EXEC_COMMAND, _
424 							"node ",DOC_NAME,".js" _
425 						),"")
426 
427 					Case "jscript"	'JScript
428 						EXEC_COMMAND=Join(Array(EXEC_COMMAND, _
429 							"cscript //nologo //E:JScript ",DOC_NAME,".js" _
430 						),"")
431 				End Select
432 			End If
433 
434 		Case "f","f90","f95","f03"	'Fortran
435 			TITLE="GFortran " & Document.Name
436 			EXEC_COMMAND=Join(Array( _
437 				"gfortran -o ",DOC_NAME," ",Document.Name,br, _
438 				DOC_NAME,".exe" _
439 			),"")
440 
441 		Case "vbs"		'VBScript
442 			TITLE="VBScript " & Document.Name
443 			EXEC_COMMAND="cscript  //nologo //E:VBScript " & Document.Name
444 
445 		Case "vb"		'VB.NET
446 			'コンパイルファイル選択
447 			'デフォルトでフォルダ内全てをコンパイル。
448 			'一行目に 'only と加えることでそのファイルのみコンパイルを行う。
449 			If load_option("'only") Then
450 				PKG_FILES=Document.Name
451 			Else
452 				PKG_FILES="*.vb"
453 			End If
454 
455 			Select Case ENGINE(file_format)
456 				Case "vbc"		'VB.NET
457 					TITLE="VB.NET "+ Document.Name
458 					EXEC_COMMAND=Join(Array( _
459 						"""",ENGINE_PATH(ENGINE(file_format)),"\vbc""", _
460 						" /nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
461 						DOC_NAME,".exe" _
462 					),"")
463 
464 				Case "vbnc"		'Mono VB.NET
465 					TITLE="Mono VB.NET"
466 					EXEC_COMMAND=Join(Array( _
467 						"""",ENGINE_PATH(ENGINE(file_format)),"\vbnc""", _
468 						" /quiet /nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
469 						DOC_NAME,".exe" _
470 					),"")
471 			End Select
472 
473 		Case "bas"		'BASIC
474 			TITLE="FreeBasic " & Document.Name
475 			EXEC_COMMAND=Join(Array( _
476 				"fbc -lang deprecated ",Document.Name,br _
477 				,DOC_NAME,".exe" _
478 			),"")
479 
480 		Case "pas","pp"	'PASCAL
481 			TITLE="FreePascal " & Document.Name
482 			EXEC_COMMAND=Join(Array( _
483 				"fpc ",Document.Name,br, _
484 				DOC_NAME,".exe" _
485 			),"")
486 
487 		Case "adb"		'Ada
488 			TITLE="GNAT Ada " & Document.Name
489 			EXEC_COMMAND=Join(Array( _
490 				"gnatmake ",Document.Name,br _
491 				,DOC_NAME,".exe" _
492 			),"")
493 
494 		Case "rb"		'Ruby
495 			Select Case ENGINE(file_format)
496 				Case "ruby"		'Ruby
497 					TITLE="Ruby " & Document.Name
498 					EXEC_COMMAND="ruby " & Document.Name
499 
500 				Case "jruby"	'JRuby
501 					TITLE="JRuby " & Document.Name
502 					EXEC_COMMAND="jruby " & Document.Name
503 
504 				Case "ir"		'IronRuby
505 					TITLE="IronRuby " & Document.Name
506 					EXEC_COMMAND="ir " & Document.Name
507 			End Select
508 
509 		Case "lua"		'Lua
510 			Select Case ENGINE(file_format)
511 				Case "lua"		'Lua
512 					TITLE="Lua " & Document.Name
513 					EXEC_COMMAND="lua " & Document.Name
514 
515 				Case "luajit"	'LuaJIT
516 					TITLE="LuaJIT " & Document.Name
517 					EXEC_COMMAND="luajit " & Document.Name
518 			End Select
519 
520 		Case "m"		'MATLAB
521 			Select Case ENGINE(file_format)
522 				Case "matlab"	'MATLAB
523 					'環境不所持により、動作未確認。
524 					TITLE="Matlab " & Document.Name
525 					EXEC_COMMAND="matlab -nodisplay " & Document.Name
526 
527 				Case "octave"	'GNU Octave
528 					TITLE="GNU Octave " & Document.Name
529 					EXEC_COMMAND="octave-cli " & Document.Name
530 			End Select
531 
532 		Case "sce"		'Scilab
533 			'最後にexitを実行しないとreplに移行します。
534 			'また、日本語で文字化け注意。
535 			TITLE="Scilab " & Document.Name
536 			EXEC_COMMAND="Scilex -nwni -nb -l ja -f " & Document.Name
537 
538 		Case "py"		'Python
539 			Select Case ENGINE(file_format)
540 				Case "python"	'Python
541 					'コンパイルオプション
542 					'一行目に #pyc と加えることでコンパイルを行う。
543 					If load_option("#pyc") Then
544 						CMD_OPTION="-m compileall"
545 					Else
546 						CMD_OPTION=""
547 					End If
548 
549 					TITLE="Python " & Document.Name
550 					EXEC_COMMAND=Join(Array( _
551 						"python ",CMD_OPTION," ",Document.Name _
552 					),"")
553 
554 				Case "python2"		'Python2
555 					TITLE="Python2 " & Document.Name
556 					EXEC_COMMAND="py -2 " & Document.Name
557 
558 				Case "python3"		'Python3
559 					TITLE="Python3 " & Document.Name
560 					EXEC_COMMAND="py -3 " & Document.Name
561 
562 				Case "pypy"		'PyPy
563 					TITLE="PyPy " & Document.Name
564 					EXEC_COMMAND="pypy " & Document.Name
565 
566 				Case "jython"	'Jython
567 					TITLE="Jython " & Document.Name
568 					EXEC_COMMAND="jython " & Document.Name
569 
570 				Case "ipy"		'IronPython
571 					TITLE="IronPython " & Document.Name
572 					EXEC_COMMAND="ipy " & Document.Name
573 
574 				Case "ipy64"		'IronPython
575 					TITLE="IronPython64 " & Document.Name
576 					EXEC_COMMAND="ipy64 " & Document.Name
577 			End Select
578 
579 		Case "coffee"	'CoffeeScript
580 			'コンパイルオプション
581 			'一行目に #js と加えることでjsファイルにコンパイルを行う。
582 			If load_option("#js") Then
583 				CMD_OPTION="--compile"
584 			Else
585 				CMD_OPTION=""
586 				BUILDED=""
587 			End If
588 
589 			TITLE="CoffeeScript " & Document.Name
590 			EXEC_COMMAND=Join(Array( _
591 				"""",ENGINE_PATH(file_format),"\coffee"" ",CMD_OPTION," ",Document.Name, _
592 				BUILDED _
593 			),"")
594 			If load_option("#js") And load_option("comp") Then
595 				'js圧縮モード
596 				'一行目にコメントで #comp と加える。
597 				TITLE="Uglify.js + " & TITLE
598 				EXEC_COMMAND=Join(Array(EXEC_COMMAND,br,COMP_JS,BUILDED),"")
599 			End If
600 
601 		Case "nako"		'なでしこ
602 			'起動オプション
603 			'一行目にコメントで下記を含める。なしでコンソール実行
604 			'	vnako: 標準GUI
605 			'	gnako: 簡易GUI
606 			'	pad:   なでしこエディタ起動(コンパイルはエディタから行う)
607 			TITLE="なでしこ " & Document.Name
608 			If load_option("vnako") Then
609 				EXEC_COMMAND="vnako " & Document.Name
610 			ElseIf load_option("gnako") Then
611 				EXEC_COMMAND="gnako " & Document.Name
612 			ElseIf load_option("pad") Then
613 				EXEC_COMMAND="nakopad " & Document.Name
614 			Else
615 				EXEC_COMMAND="cnako " & Document.Name
616 			End If
617 
618 		Case "l","lisp","lsp","cl"	'LISP, CommonLisp
619 			Select Case ENGINE(file_format)
620 				Case "clisp"	'CLISP
621 					'コンパイルオプション
622 					'一行目に ;fas と加えることでfasファイルにコンパイルを行う。
623 					If load_option(";fas") Then
624 						CMD_OPTION="-c"
625 					Else
626 						CMD_OPTION=""
627 					End If
628 
629 					TITLE="CLISP " & Document.Name
630 					EXEC_COMMAND=Join(Array("clisp ",CMD_OPTION," ",Document.Name),"")
631 
632 				Case "sbcl"		'SteelBankCommonLisp
633 					'コンパイルオプション
634 					'一行目に ;fasl と加えることでfaslファイルにコンパイルを行う。
635 					'(Macros\exec_cmdフォルダにexec_sbcl_comp.lisp 必須)
636 
637 					'なお、SBCLのEXE化は以下の設定文をlispファイルに書き加えることで可能となる。
638 					'(sb-ext:save-lisp-and-die "Hello.exe"	;ファイル名
639 					'	:toplevel #'main					;初期起動関数
640 					'	:executable t)
641 
642 					If load_option(";fasl") Then
643 						Dim me_paths:me_paths=Split(Editor.FullName,"\")
644 						me_paths(UBound(me_paths))=""
645 						'Macrosフォルダのパス取得
646 						Dim me_path:me_path=Join(me_paths,"\") & "Macros\exec_cmd\"
647 
648 						CMD_OPTION=me_path & "exec_sbcl_comp.lisp"
649 					Else
650 						CMD_OPTION=""
651 					End If
652 
653 					TITLE="SBCL " & Document.Name
654 					EXEC_COMMAND=Join(Array( _
655 						"sbcl --script ",CMD_OPTION," ",Document.Name _
656 					),"")
657 
658 				Case "ccl"		'ClozureLisp
659 					'オプション無し。コンパイルはlispファイルに以下のような設定文を書き加える。
660 					'(ccl:save-application "hello.exe"	;ファイル名
661 					'	:toplevel-function #'main		;初期起動関数
662 					'	:prepend-kernel t)
663 					TITLE="ClozureLisp " & Document.Name
664 					EXEC_COMMAND="wx86cl --load " & Document.Name
665 
666 				Case "ccl64"	'ClozureLisp64
667 					TITLE="ClozureLisp64 " & Document.Name
668 					EXEC_COMMAND="wx86cl64 --load " & Document.Name
669 
670 				Case "mkcl"		'ManKaiCommonLisp
671 					'コンパイルオプション
672 					'一行目に ;fas でfasファイル生成。
673 					' ;exe でexeファイル生成
674 					If load_option(";fas") Then
675 						CMD_OPTION="-compile " & Document.Name
676 					ElseIf load_option(";exe") Then
677 						TITLE="MKCL " & Document.Name
678 						CMD_OPTION=Join(Array( _
679 							"-not-fasl-p -compile ",Document.Name,br, _
680 							"timeout /t 1 > nul",br, _
681 							"mkcl -o ",DOC_NAME,".exe -link ",DOC_NAME,".o", _
682 							BUILDED _
683 						),"")
684 						'mkcl -not-fasl-p -compile a.lisp & mkcl -o a.exe -link a.o
685 						'exe化失敗を防ぐためにwaitの小細工
686 					Else
687 						CMD_OPTION="-shell " & Document.Name
688 					End If
689 
690 					TITLE="MKCL " & Document.Name
691 					EXEC_COMMAND="mkcl " & CMD_OPTION
692 			End Select
693 
694 		Case "el"		'EmacsLisp
695 			'コンパイルオプション
696 			'一行目に ;elc でelcファイル生成。
697 			If load_option(";elc") Then
698 				CMD_OPTION="-batch -f batch-byte-compile"
699 			Else
700 				CMD_OPTION="-Q --script"
701 			End If
702 			TITLE="EmacsLisp " & Document.Name
703 			EXEC_COMMAND=Join(Array( _
704 				"emacs ",CMD_OPTION," ",Document.Name _
705 			),"")
706 
707 		Case "scm"		'Scheme
708 			TITLE="Gauche " & Document.Name
709 			EXEC_COMMAND="gosh " & Document.Name
710 
711 		Case "clj"		'Clojure
712 			Select Case ENGINE(file_format)
713 				Case "clojure"		'Clojure(JVM)
714 					Dim version
715 					version=Split(ENGINE_PATH(ENGINE(file_format)),"-")
716 					TITLE="Clojure " & Document.Name
717 					EXEC_COMMAND=Join(Array( _
718 						"java -jar """,ENGINE_PATH(ENGINE(file_format)), _
719 						"\clojure-",version(UBound(version)),".jar"" ",Document.Name _
720 					),"")
721 
722 				Case "clojure-clr"	'ClojureCLR
723 					TITLE="ClojureCLR " & Document.Name
724 					EXEC_COMMAND="Clojure.Main " & Document.Name
725 			End Select
726 
727 		Case "fs","ml","mli"		'F#
728 			PKG_FILES=Document.Name
729 			
730 			TITLE="F# "+ Document.Name
731 			EXEC_COMMAND=Join(Array( _
732 				"""",ENGINE_PATH(file_format),"\fsc""", _
733 				" --nologo --out:",DOC_NAME,".exe ",PKG_FILES," --optimize+",br, _
734 				DOC_NAME,".exe" _
735 			),"")
736 
737 		Case "hs"		'Haskell
738 			TITLE="GHC " & Document.Name
739 			EXEC_COMMAND=Join(Array( _
740 				"ghc --make ",Document.Name,br, _
741 				DOC_NAME,".exe" _
742 			),"")
743 
744 		Case "cas"		'CASL II
745 			TITLE="Java CASL II " & Document.Name
746 			EXEC_COMMAND=Join(Array( _
747 				"java -jar """,ENGINE_PATH(file_format),"\casl2.jar"" ",Document.Name,br, _
748 				"java -jar ",ENGINE(file_format),"\run.jar ",DOC_NAME,".obj" _
749 			),"")
750 			'java -jar casl2.jar aaa.cas
751 			'java -jar run.jar aaa.obj
752 
753 		Case "asm"		'NASM
754 			TITLE="NAST " & Document.Name
755 			EXEC_COMMAND=Join(Array("nasm -f win32 ",Document.Name,br, _
756 				"""",ENGINE_PATH("link"),"\link"" /nologo /out:",DOC_NAME,".exe ",DOC_NAME,".obj ", _
757 				"""",ENGINE_PATH("msvcrt"),"\msvcrt.lib"" """,ENGINE_PATH("kernel32"),"\Kernel32.lib"" ", _
758 				ENGINE_PATH("addlib"),br, _
759 				DOC_NAME,".exe" _
760 			),"")
761 			'nasm -f win32 aaa.asm
762 			'link /nologo /out:aaa.exe aaa.obj msvcrt.lib Kernel32.lib
763 			'aaa.exe
764 
765 		Case "il"		'.NetILアセンブラ
766 			TITLE=".NetIL " & Document.Name
767 			EXEC_COMMAND=Join(Array( _
768 				"""",ENGINE_PATH(file_format),"\ilasm"" /nologo /quiet ",Document.Name,br, _
769 				DOC_NAME,".exe" _
770 			),"")
771 
772 		Case "bat"		'BAT
773 			TITLE="BAT " & Document.Name
774 			EXEC_COMMAND=Document.Name
775 
776 		Case "wsf"		'WSF
777 			TITLE="WSF " & Document.Name
778 			EXEC_COMMAND="cscript  //nologo " & Document.Name
779 
780 		Case "ps1"		'PowerShell
781 			TITLE="PowerShell " & Document.Name
782 			EXEC_COMMAND="powershell " & Document.Name
783 
784 		Case Else
785 			TITLE=Document.Name
786 			EXEC_COMMAND=Document.Name
787 	End Select
788 End If
789 
790 'コマンドライン起動
791 Dim cmd:Set cmd = CreateObject("WScript.Shell")
792 cmd.Run Join(Array( _
793 	"cmd /C """, _
794 	"title ",TITLE,br, _
795 	"cd/d ",Document.Path,br, _
796 	DEL_BINARY(), _
797 	EXEC_COMMAND,br, _
798 	"pause > nul",br, _
799 	"exit"""),""),1
800 
801 Set cmd=Nothing
802 
803 'コマンドラインオプションの読込
804 Function load_option(opt)
805 	load_option=Instr(LCase(Document.GetLine(1)),opt)
806 End Function
807 
808 'exe、class、obj、min.js、jsファイルを削除するかどうか
809 Function DEL_BINARY()
810 	If load_option("delexe") Then
811 		DEL_BINARY=Join(Array("del ",DOC_NAME,".exe",br),"")
812 	ElseIf load_option("delclass") Then
813 		DEL_BINARY=Join(Array("del ",DOC_NAME,".class",br),"")
814 	ElseIf load_option("delobj") Then
815 		DEL_BINARY=Join(Array("del ",DOC_NAME,".obj",br),"")
816 	ElseIf load_option("deljs") And file_format<>"js" Then
817 		DEL_BINARY=Join(Array("del ",DOC_NAME,".js",br),"")
818 	Else
819 		DEL_BINARY=""
820 	End IF
821 
822 	If load_option("delmin") Then
823 		DEL_BINARY=Join(Array("del ",DOC_NAME,".min.js",br),"")
824 	End If
825 End Function


exec_sbcl_comp.lisp
1 ;exec_sbcl_comp.lisp
2 ;exec_cmd.vbs SBCLコンパイル用
3 ;Mery以下のMacro\exec_cmd\に配置してください。
4 (compile-file (elt *posix-argv* 1))
スポンサーリンク