Hey Ian!
Happy to see you as the maintainer of the ob-java!
I would like to propose a feature to ob-java. The feature allows a
source code block to write and compile only, without executing.
Here is a common use case for me.
Class without a entry point have an :compile-only header.
#+HEADER: :classname se/my_test_package/Hey
#+HEADER: :dir src
#+HEADER: :compile-only t
#+HEADER: :results none
#+BEGIN_SRC java
package se.my_test_package;
public class Hey {
public static String hey(String name) {
return "Hey " + name;
}
}
#+END_SRC
The provided diff works for my small use case. What do you think?
--
Best regards
John
diff --git a/lisp/ob-java.el b/lisp/ob-java.el
index fee695bb9..5c98a0417 100644
--- a/lisp/ob-java.el
+++ b/lisp/ob-java.el
@@ -60,6 +60,7 @@ parameters may be used, like javac -verbose"
(cmpflag (or (cdr (assq :cmpflag params)) ""))
(cmdline (or (cdr (assq :cmdline params)) ""))
(cmdargs (or (cdr (assq :cmdargs params)) ""))
+ (compile-only (assq :compile-only params))
(full-body (org-babel-expand-body:generic body params)))
;; created package-name directories if missing
(unless (or (not packagename) (file-exists-p packagename))
@@ -67,18 +68,19 @@ parameters may be used, like javac -verbose"
(with-temp-file src-file (insert full-body))
(org-babel-eval
(concat org-babel-java-compiler " " cmpflag " " src-file) "")
- (let ((results (org-babel-eval (concat org-babel-java-command
- " " cmdline " " classname " " cmdargs) "")))
- (org-babel-reassemble-table
- (org-babel-result-cond (cdr (assq :result-params params))
- (org-babel-read results t)
- (let ((tmp-file (org-babel-temp-file "c-")))
- (with-temp-file tmp-file (insert results))
- (org-babel-import-elisp-from-file tmp-file)))
- (org-babel-pick-name
- (cdr (assq :colname-names params)) (cdr (assq :colnames params)))
- (org-babel-pick-name
- (cdr (assq :rowname-names params)) (cdr (assq :rownames params)))))))
+ (unless compile-only
+ (let ((results (org-babel-eval (concat org-babel-java-command
+ " " cmdline " " classname " " cmdargs) "")))
+ (org-babel-reassemble-table
+ (org-babel-result-cond (cdr (assq :result-params params))
+ (org-babel-read results t)
+ (let ((tmp-file (org-babel-temp-file "c-")))
+ (with-temp-file tmp-file (insert results))
+ (org-babel-import-elisp-from-file tmp-file)))
+ (org-babel-pick-name
+ (cdr (assq :colname-names params)) (cdr (assq :colnames params)))
+ (org-babel-pick-name
+ (cdr (assq :rowname-names params)) (cdr (assq :rownames params))))))))
(provide 'ob-java)