読者です 読者をやめる 読者になる 読者になる

org-quickrun

emacs quickrun org

org-babelっていろいろ requireして面倒だし、オプションの指定を
しないと標準出力への書き出しも表示されないし、ということで
quickrunを使って org-modeのコードを実行する関数を書いて
みました。通常であれば言語を指定する部分に quickrunのコマンド
キーを指定します。(orgの内部的な関数を使っているので使い続け
られる保証はないです。)

コード

quickrun.elは最新のものを利用してください

(eval-when-compile
  (require 'cl))

(require 'ob)
(require 'quickrun)

(defgroup org-quickrun nil
  "Execute buffer quickly"
  :group 'org
  :prefix 'org-quickrun)

;;;###autoload
(defun org-quickrun ()
  (interactive)
  (let ((block-info (org-babel-get-src-block-info)))
    (unless block-info
      (error "You are not in Org source block"))
    (let ((key (first block-info))
          (code (second block-info)))
      (with-temp-buffer
        (insert code)
        (let ((quickrun-option-cmdkey key))
          (quickrun))))))

(provide 'org-quickrun)

サンプル

#+BEGIN_SRC perl
print "hello world\n";
#+END_SRC

#+BEGIN_SRC c/gcc
#include <stdio.h>

int main (void)
{
        printf("hello world\n");
        return 0;
}
#+END_SRC

#+BEGIN_SRC python
# -*- coding:utf-8 -*-
def hello():
    print("こんにちわ世界")

hello()
#+END_SRC

M-x org-quickrunの実行イメージ