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