概要
みなさんこんにちはcandleです。今回はplantUMLをサポートするemacsのplantuml-modeを導入して使ってみましょう。
plantuml-modeは以下の3つの機能があります。
- シンタックスハイライト
- 自動補完
- プレビューの表示
結構設定することがあるので根気よくやって来ましょう。
前提
plantumlコマンドがある
私はbrewでplantumlを入れましたが、jarファイルを用意してもOKです。
まだの人はこちらを参照してください。
MacにPlantUML環境をbrewを使って構築する
plantuml-modeをインストールする
plantuml-modeの最新版はel-getにまだ登録されておらず、古い方のplantuml-modeが入ってしまうので直接githubから持って来ます。
Melpaを使っている人は公式サイトをみてインストールしてください。
https://github.com/skuro/plantuml-mode
el-getの方は~/.emacs.d/init.elを開きます。
emacs ~/.emacs.d/init.el
以下を書き込みます。
[lisp]
(el-get-bundle plantuml-mode
:type github
:name plantuml-mode
:pkgname "skuro/plantuml-mode"
:branch "master")
[/lisp]
そしたら、emacsを再起動してplantuml-modeをインストールします。
ちゃんとインストールできたか確認します。
以下を実行してみましょう。
M-x plantuml-mode
brewで入れたplantumlのjarファイルのパスを確認する
もしもbrewでplantumlコマンドを入れた場合は少し準備が必要です。
plantuml-modeはjarファイルを実行しようとするとので、そのエイリアスであるplantumlコマンドは使えません。
plantuml.jarのパスを確認します。
まず、/usr/local/binに移動します。
cd /usr/local/bin
そして、以下のコマンドでplantumlを表示します。
cat ./plantuml
するとjarファイルのパスが表示されます。
私の場合はこれになります。
これを控えておきましょう。
plantuml-modeの設定
では設定をやっていきます。
~/.emacs.d/init.elを開きます。
以下を記述します。
plantuml-jar-path はplantuml.jarの絶対パスを指定します。
[lisp]
;; .pu拡張子のファイルをplantuml-modeで開く
(add-to-list ‘auto-mode-alist ‘("\.pu$" . plantuml-mode))
;; あなたのplantuml.jarファイルの絶対パスをかく
(setq plantuml-jar-path "Here your plantuml.jar file path")
;; javaにオプションを渡したい場合はここにかく
(setq plantuml-java-options "")
;; plantumlのプレビューをsvg, pngにしたい場合はここをコメントイン
;; デフォルトでアスキーアート
;;(setq plantuml-output-type "svg")
;; 日本語を含むUMLを書く場合はUTF-8を指定
(setq plantuml-options "-charset UTF-8")
[/lisp]
設定は以上です。
実際に使って見る
適当なフォルダを作り、ファイルを作成します
mkdir test touch test/new.pu emacs test/new.pu
以下を書き込みましょう。
@startuml developer -> emacs: "Draw me a diagram" emacs -> developer: "Here you are, sir" developer -> world: "Woooooohooooo" @enduml
ここで、C-c C-c を押してみましょう。
アスキーアートでplantumlのプレビューが表示されます。
他にも以下のキーバインドでプレビューを開くことができます。
C-u C-c C-c plantuml-preview in other window
C-u C-u C-c C-c plantuml-preview in other frame
基本的な使い方は以上です。
plantuml-modeでpng画像を保存する
上の方法では.puファイルからプレビューは表示できるものの、pngで保存ができません。
ちなみに、githubのissueを見た所、画像を保存できるようにしようという取り組みが進行中なので、そのうちここの辺は必要なくなるかもです。
~/.emacs.d/init.elを編集してpng保存できるようにしましょう。
コードは以下のサイトのものを参考にさせてもらい、少し改造しました。
https://abicky.net/2012/10/16/093737/
~/.emacs.d/init.elを開いて以下を記述します。
[lisp]
;; plantuml-modeの時にC-c C-sでplantuml-save-png関数を実行
(add-hook ‘plantuml-mode-hook
(lambda () (local-set-key (kbd "C-c C-s") ‘plantuml-save-png)))
;; もしも.puファイルを保存した時にpngファイルを保存したい場合はこちらをコメントイン
;; (add-hook ‘plantuml-mode-hook
;; (lambda () (add-hook ‘after-save-hook ‘plantuml-save-png)))
;; plantumlをpngで保存する関数
(defun plantuml-save-png ()
(interactive)
(when (buffer-modified-p)
(map-y-or-n-p "Save this buffer before executing PlantUML?"
‘save-buffer (list (current-buffer))))
(let ((code (buffer-string))
out-file
cmd)
(when (string-match "^\\s-*@startuml\\s-+\\(\\S-+\\)\\s*$" code)
(setq out-file (match-string 1 code)))
(setq cmd (concat
"java -Djava.awt.headless=true -jar " plantuml-java-options " "
(shell-quote-argument plantuml-jar-path) " "
(and out-file (concat "-t" (file-name-extension out-file))) " "
plantuml-options " "
(buffer-file-name)))
(message cmd)
(call-process-shell-command cmd nil 0)))
[/lisp]
これでplantuml-modeとの時にC-c C-sでpngが保存できるようになりました。
先ほどのnew.puを開き直して、C-c C-sを実行しましょう
同じ場所にnew.pngが作成されるので、開いてみましょう。
いい感じです。
まとめ
emacsでplantumlが使えるよになりました。