forked from mirrors/org-mode
integrating ob-plantuml -- Thanks to Zhang Weize for this contribution!
* Makefile (LISPF): now compiling and installing ob-plantuml.el * contrib/scripts/.gitignore : ignores the plantuml.jar file, so that it can be located next to ditaa.jar * lisp/ob-plantuml.el: adding copyright notice and FSF attribution (org-plantuml-jar-path): now a defcustom (org-babel-execute:plantuml): now using org-babel-eval which displays error messages * lisp/org.el (org-babel-load-languages): ob-plantuml is now part of org-babel-load-languages
This commit is contained in:
parent
810bb09ef3
commit
a89dc43e83
5
Makefile
5
Makefile
|
@ -147,7 +147,8 @@ LISPF = org.el \
|
||||||
ob-css.el \
|
ob-css.el \
|
||||||
ob-gnuplot.el \
|
ob-gnuplot.el \
|
||||||
ob-octave.el \
|
ob-octave.el \
|
||||||
ob-screen.el
|
ob-screen.el \
|
||||||
|
ob-plantuml.el
|
||||||
|
|
||||||
LISPFILES0 = $(LISPF:%=lisp/%)
|
LISPFILES0 = $(LISPF:%=lisp/%)
|
||||||
LISPFILES = $(LISPFILES0) lisp/org-install.el
|
LISPFILES = $(LISPFILES0) lisp/org-install.el
|
||||||
|
@ -444,4 +445,4 @@ lisp/org-timer.elc: lisp/org.el
|
||||||
lisp/org-vm.elc: lisp/org.el
|
lisp/org-vm.elc: lisp/org.el
|
||||||
lisp/org-w3m.elc: lisp/org.el
|
lisp/org-w3m.elc: lisp/org.el
|
||||||
lisp/org-wl.elc: lisp/org.el
|
lisp/org-wl.elc: lisp/org.el
|
||||||
lisp/org-xoxo.elc: lisp/org-exp.el
|
lisp/org-xoxo.elc: lisp/org-exp.el
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
plantuml.jar
|
|
@ -1,6 +1,26 @@
|
||||||
;;; ob-plantuml.el --- org-babel functions for plantuml evaluation
|
;;; ob-plantuml.el --- org-babel functions for plantuml evaluation
|
||||||
|
|
||||||
|
;; Copyright (C) 2010 Free Software Foundation, Inc.
|
||||||
|
|
||||||
;; Author: Zhang Weize
|
;; Author: Zhang Weize
|
||||||
|
;; Keywords: literate programming, reproducible research
|
||||||
|
;; Homepage: http://orgmode.org
|
||||||
|
;; Version: 7.01trans
|
||||||
|
|
||||||
|
;; This file is part of GNU Emacs.
|
||||||
|
|
||||||
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||||
|
;; it under the terms of the GNU General Public License as published by
|
||||||
|
;; the Free Software Foundation, either version 3 of the License, or
|
||||||
|
;; (at your option) any later version.
|
||||||
|
|
||||||
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;; GNU General Public License for more details.
|
||||||
|
|
||||||
|
;; You should have received a copy of the GNU General Public License
|
||||||
|
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
|
|
||||||
|
@ -9,8 +29,14 @@
|
||||||
;; Inspired by Ian Yang's org-export-blocks-format-plantuml
|
;; Inspired by Ian Yang's org-export-blocks-format-plantuml
|
||||||
;; http://www.emacswiki.org/emacs/org-export-blocks-format-plantuml.el
|
;; http://www.emacswiki.org/emacs/org-export-blocks-format-plantuml.el
|
||||||
|
|
||||||
|
;;; Requirements:
|
||||||
|
|
||||||
|
;; plantuml | http://plantuml.sourceforge.net/
|
||||||
|
;; plantuml.jar | `org-plantuml-jar-path' should point to the jar file
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
(require 'ob)
|
(require 'ob)
|
||||||
|
(require 'ob-eval)
|
||||||
|
|
||||||
(defvar org-babel-default-header-args:plantuml
|
(defvar org-babel-default-header-args:plantuml
|
||||||
'((:results . "file") (:exports . "results"))
|
'((:results . "file") (:exports . "results"))
|
||||||
|
@ -19,28 +45,25 @@
|
||||||
(defun org-babel-expand-body:plantuml (body params &optional processed-params)
|
(defun org-babel-expand-body:plantuml (body params &optional processed-params)
|
||||||
"Expand BODY according to PARAMS, return the expanded body." body)
|
"Expand BODY according to PARAMS, return the expanded body." body)
|
||||||
|
|
||||||
(defvar org-plantuml-jar-path)
|
(defcustom org-plantuml-jar-path nil
|
||||||
|
"Path to the plantuml.jar file."
|
||||||
|
:group 'org-babel
|
||||||
|
:type 'string)
|
||||||
|
|
||||||
(defun org-babel-execute:plantuml (body params)
|
(defun org-babel-execute:plantuml (body params)
|
||||||
"Execute a block of plantuml code with org-babel.
|
"Execute a block of plantuml code with org-babel.
|
||||||
This function is called by `org-babel-execute-src-block'."
|
This function is called by `org-babel-execute-src-block'."
|
||||||
(let ((result-params (split-string (or (cdr (assoc :results params)) "")))
|
(let* ((result-params (split-string (or (cdr (assoc :results params)) "")))
|
||||||
(out-file (cdr (assoc :file params)))
|
(out-file (cdr (assoc :file params)))
|
||||||
(cmdline (cdr (assoc :cmdline params)))
|
(cmdline (cdr (assoc :cmdline params)))
|
||||||
(in-file (make-temp-file "org-babel-plantuml")))
|
(in-file (org-babel-temp-file "plantuml-"))
|
||||||
|
(cmd (concat "java -jar "
|
||||||
|
(shell-quote-argument org-plantuml-jar-path)
|
||||||
|
" -p " cmdline " < " in-file " > " out-file)))
|
||||||
(unless (file-exists-p org-plantuml-jar-path)
|
(unless (file-exists-p org-plantuml-jar-path)
|
||||||
(error "Could not find plantuml.jar at %s" org-plantuml-jar-path))
|
(error "Could not find plantuml.jar at %s" org-plantuml-jar-path))
|
||||||
(with-temp-file in-file (insert (concat "@startuml\n" body "\n@enduml")))
|
(with-temp-file in-file (insert (concat "@startuml\n" body "\n@enduml")))
|
||||||
(message (concat "java -jar " org-plantuml-jar-path
|
(message "%s" cmd) (org-babel-eval cmd "")
|
||||||
" -p " cmdline " < " in-file " > " out-file))
|
|
||||||
(shell-command (concat "java -jar " (shell-quote-argument org-plantuml-jar-path)
|
|
||||||
" -p " cmdline " < " in-file " > " out-file))
|
|
||||||
; The method below will produce error when exporting the buffer.
|
|
||||||
;; (with-temp-buffer
|
|
||||||
;; (call-process-shell-command
|
|
||||||
;; (concat "java -jar " org-plantuml-jar-path " -p " cmdline)
|
|
||||||
;; in-file
|
|
||||||
;; '(t nil))
|
|
||||||
;; (write-region nil nil out-file))
|
|
||||||
out-file))
|
out-file))
|
||||||
|
|
||||||
(defun org-babel-prep-session:plantuml (session params)
|
(defun org-babel-prep-session:plantuml (session params)
|
||||||
|
@ -49,4 +72,6 @@ This function is called by `org-babel-execute-src-block'."
|
||||||
|
|
||||||
(provide 'ob-plantuml)
|
(provide 'ob-plantuml)
|
||||||
|
|
||||||
|
;; arch-tag: 451f50c5-e779-407e-ad64-70e0e8f161d1
|
||||||
|
|
||||||
;;; ob-plantuml.el ends here
|
;;; ob-plantuml.el ends here
|
||||||
|
|
|
@ -161,6 +161,7 @@ requirements) is loaded."
|
||||||
(const :tag "Ocaml" ocaml)
|
(const :tag "Ocaml" ocaml)
|
||||||
(const :tag "Octave" octave)
|
(const :tag "Octave" octave)
|
||||||
(const :tag "Perl" perl)
|
(const :tag "Perl" perl)
|
||||||
|
(const :tag "PlantUML" plantuml)
|
||||||
(const :tag "Python" python)
|
(const :tag "Python" python)
|
||||||
(const :tag "Ruby" ruby)
|
(const :tag "Ruby" ruby)
|
||||||
(const :tag "Sass" sass)
|
(const :tag "Sass" sass)
|
||||||
|
|
Loading…
Reference in New Issue