cygwinのemacsのラッパーをwshを使って書いてみました。
cygwinのemacsのラッパーをwshを使って書いてみました。
emacs-w32.exeを直接使うと、dos窓が出てしまったり、
ドラッグ&ドロップでwindowsのパスが渡されてきて読めなかったりするので
wshでそのあたりを解決してみました。
このスクリプトのファイル名は、emacs.wsfとしています。
ダブルクリックやドラッグ&ドロップで起動することを考えると
.jsよりも、多少ゴミがついても.wsfの方がよさそうです。
<job id="main"> <script language="JavaScript"> var ws = WScript.CreateObject("Wscript.Shell"); var cmd = "C:/cygwin64/bin/emacs-w32.exe"; run(cmd, args2Cygpath()); function args2Cygpath() { var files = []; for(var i = 0, n = WScript.Arguments.Count(); i < n; i++) { files.push(cygpath(WScript.Arguments(i))); } return files; } function cygpath(winpath) { return execute("C:/cygwin64/bin/cygpath.exe " + winpath); } function run(cmd, args) { var cmdLine = cmd + " " + args.join(" "); ws.Run(cmdLine, 0); } function execute(cmdLine) { var proc = ws.Exec(cmdLine); var result = ""; while(!proc.StdOut.AtEndOfStream) { result += proc.StdOut.Read(1); } while(proc.Status === 0) { WScript.Sleep(100); } if(proc.ExitCode !== 0) { throw new Error("fail: " + cmdLine); } return result; } </script> </job>