Browse Source

babel: ob-emacs-lisp and ob-clojure now only wrap bodies in `let' forms when variables are present

Eric Schulte 15 years ago
parent
commit
b8adc74894

+ 3 - 2
contrib/babel/lisp/langs/org-babel-clojure.el

@@ -127,8 +127,9 @@ specifying a var of the same value."
   (let ((vars-forms (mapconcat ;; define any variables
                       (lambda (pair)
                         (format "%s %s" (car pair) (org-babel-clojure-var-to-clojure (cdr pair))))
-                      vars "\n      ")))
-    (format "(let [%s]\n  %s)" vars-forms (org-babel-trim body))))
+                      vars "\n      "))
+	(body (org-babel-trim body)))
+    (if (> (length vars-forms) 0) (format "(let [%s]\n  %s)" vars-forms body) body)))
 
 (defun org-babel-prep-session:clojure (session params)
   "Prepare SESSION according to the header arguments specified in PARAMS."

+ 10 - 9
contrib/babel/lisp/langs/org-babel-emacs-lisp.el

@@ -45,15 +45,16 @@
          (processed-params (org-babel-process-params params))
          (result-params (third processed-params))
          (print-level nil) (print-length nil)
-         (body (concat "(let ("
-                       (mapconcat
-                        (lambda (var) (format "%S" (print `(,(car var) ',(cdr var)))))
-                        vars "\n      ")
-                       ")\n"
-                       (if (or (member "code" result-params)
-                               (member "pp" result-params))
-                           (concat "(pp " body ")") body) ")")))
-    body))
+         (body (if (> (length vars) 0)
+		   (concat "(let ("
+			 (mapconcat
+			  (lambda (var) (format "%S" (print `(,(car var) ',(cdr var)))))
+			  vars "\n      ")
+			 ")\n" body ")")
+		 body)))
+    (if (or (member "code" result-params)
+	    (member "pp" result-params))
+	(concat "(pp " body ")") body)))
 
 (defun org-babel-execute:emacs-lisp (body params)
   "Execute a block of emacs-lisp code with org-babel."