summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Schulte <schulte.eric@gmail.com>2010-08-26 09:36:08 -0600
committerEric Schulte <schulte.eric@gmail.com>2010-08-26 09:36:08 -0600
commita89dc43e835515eff9dd6bd864e015a3729cd63c (patch)
treebc6d3cda7a406d8fa4af68313aafc4094061380b
parent810bb09ef32b37bf51bc6da83716090ee2108b57 (diff)
downloadorg-mode-a89dc43e835515eff9dd6bd864e015a3729cd63c.tar.gz
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
-rw-r--r--Makefile5
-rw-r--r--contrib/scripts/.gitignore1
-rw-r--r--lisp/ob-plantuml.el57
-rw-r--r--lisp/org.el1
4 files changed, 46 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index 3229f46..e5e51b2 100644
--- a/Makefile
+++ b/Makefile
@@ -147,7 +147,8 @@ LISPF = org.el \
ob-css.el \
ob-gnuplot.el \
ob-octave.el \
- ob-screen.el
+ ob-screen.el \
+ ob-plantuml.el
LISPFILES0 = $(LISPF:%=lisp/%)
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-w3m.elc: lisp/org.el
lisp/org-wl.elc: lisp/org.el
-lisp/org-xoxo.elc: lisp/org-exp.el \ No newline at end of file
+lisp/org-xoxo.elc: lisp/org-exp.el
diff --git a/contrib/scripts/.gitignore b/contrib/scripts/.gitignore
new file mode 100644
index 0000000..20d5925
--- /dev/null
+++ b/contrib/scripts/.gitignore
@@ -0,0 +1 @@
+plantuml.jar
diff --git a/lisp/ob-plantuml.el b/lisp/ob-plantuml.el
index 889fa96..9959f40 100644
--- a/lisp/ob-plantuml.el
+++ b/lisp/ob-plantuml.el
@@ -1,6 +1,26 @@
;;; ob-plantuml.el --- org-babel functions for plantuml evaluation
+;; Copyright (C) 2010 Free Software Foundation, Inc.
+
;; 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:
@@ -9,8 +29,14 @@
;; Inspired by Ian Yang's org-export-blocks-format-plantuml
;; 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:
(require 'ob)
+(require 'ob-eval)
(defvar org-babel-default-header-args:plantuml
'((:results . "file") (:exports . "results"))
@@ -19,28 +45,25 @@
(defun org-babel-expand-body:plantuml (body params &optional processed-params)
"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)
"Execute a block of plantuml code with org-babel.
This function is called by `org-babel-execute-src-block'."
- (let ((result-params (split-string (or (cdr (assoc :results params)) "")))
- (out-file (cdr (assoc :file params)))
- (cmdline (cdr (assoc :cmdline params)))
- (in-file (make-temp-file "org-babel-plantuml")))
+ (let* ((result-params (split-string (or (cdr (assoc :results params)) "")))
+ (out-file (cdr (assoc :file params)))
+ (cmdline (cdr (assoc :cmdline params)))
+ (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)
(error "Could not find plantuml.jar at %s" org-plantuml-jar-path))
(with-temp-file in-file (insert (concat "@startuml\n" body "\n@enduml")))
- (message (concat "java -jar " org-plantuml-jar-path
- " -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))
+ (message "%s" cmd) (org-babel-eval cmd "")
out-file))
(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)
+;; arch-tag: 451f50c5-e779-407e-ad64-70e0e8f161d1
+
;;; ob-plantuml.el ends here
diff --git a/lisp/org.el b/lisp/org.el
index 6a62787..89fcdae 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -161,6 +161,7 @@ requirements) is loaded."
(const :tag "Ocaml" ocaml)
(const :tag "Octave" octave)
(const :tag "Perl" perl)
+ (const :tag "PlantUML" plantuml)
(const :tag "Python" python)
(const :tag "Ruby" ruby)
(const :tag "Sass" sass)