Emacsで blockdiagをプレビューする

http://meme.efcl.info/2011/09/quickrunvimblockdiag.html


上記の Emacs版を書いてみた。

コード

(defun blockdiag-buffer ()
  (interactive)
  (let ((blockdiag-output "/tmp/blockdiag-buffer.png")
        (current-file (buffer-file-name (current-buffer))))
    (call-process "blockdiag" nil nil t "-o" blockdiag-output current-file)
    (switch-to-buffer-other-window
     (get-buffer-create "*blockdiag*"))
    (erase-buffer)
    (insert-file blockdiag-output)
    (image-mode)))
  
(push '("*blockdiag*") popwin:special-display-config)

call-processで使うプログラムは, exec-pathが通っている必要があるので,
virtualenv等を利用している方は若干注意が必要です。


popwinを使えば、簡単に C-gとか qとかで簡単に元に戻れます。

実行

blockdiag形式のファイルで blockdiag-bufferとすれば画像に変換され、
そのバッファに移動します。

イメージ

こんな感じです。黒背景だと見づらかったので白にしました。

送信者 blog

おわりに

Emacsで blockdiagをプレビューする方法について示しました。
大きいグラフになる場合は、非同期処理等をした方がよいかも
しれないです。


Emacsだとそのまま画像が見れるので(configureしだいですが),
いちいちプレビューを開かなくてもそのまま見れます。画像の
移動も Emacsキーバインドなので楽ですね。
Vimでも直接画像見れそうだけど、ないのだろうか・・・?
全然知らないのでわからないですが・・・。