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

提供: 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))