2014年1月13日月曜日

WandboxをEmacsから操作するライブラリを作った

遅めの年始のご挨拶。あけましておめでとうございます。

オンラインコンパイラ Wandbox を Emacs から操作するライブラリを作ってみました。最初のコードを書いたのは11月なのですが、修正するうちにだいぶ使い勝手が良くなってきたので、gist から GitHub に移動しました。
インストールすることで、各種コンパイラをインストールせずに、Emacs 上でコード片を実行することができるようになります。当然ですがネット環境が必要です。

インタラクティブな操作 (M-x) もできますが、*scratch* バッファなどで wandbox-compile 関数を使った方が細かいコンパイル指定ができるのでオススメです。使い方は付属の README を参照してください。

おまけ機能として、引数を Common Lisp (CLISP) の S 式として実行するためのマクロ wandbox-eval-with なんてものも用意しています。wandbox-eval-region と似たような機能ですが、最後の S 式の結果も出力されるようになっています。:stdin などの追加オプションも指定可能です。ただし Elisp にない構文など(文字リテラル #\a とか)は引数に使えません(出力はOK)。

;;; *scratch*
(wandbox-eval-with (:stdin "HELLO\nWorld")
  (do ((c #1=(read-char nil nil :eof) #1#))
      ((eq c :eof))
    (format t "~s " c))
  )

;;; *Wandbox Output*
<<< program_message >>>
#\H #\E #\L #\L #\O #\Newline #\W #\o #\r #\l #\d
NIL

<<< status >>>
0