Browse Source

fix output handling of lisp blocks

  previously we were conflating results/output with scalar/vector

* lisp/ob-lisp.el (org-babel-execute:lisp): Fix output handling of
  lisp blocks.
Eric Schulte 11 years ago
parent
commit
5b397e8917
1 changed files with 16 additions and 14 deletions
  1. 16 14
      lisp/ob-lisp.el

+ 16 - 14
lisp/ob-lisp.el

@@ -77,21 +77,23 @@ current directory string."
   (org-babel-reassemble-table
    ((lambda (result)
       (org-babel-result-cond (cdr (assoc :result-params params))
-	(car result)
+	result
 	(condition-case nil
-	    (read (org-babel-lisp-vector-to-list (cadr result)))
-	  (error (cadr result)))))
-    (with-temp-buffer
-      (insert (org-babel-expand-body:lisp body params))
-      (slime-eval `(swank:eval-and-grab-output
-		    ,(let ((dir (if (assoc :dir params)
-				    (cdr (assoc :dir params))
-				  default-directory)))
-		       (format
-			(if dir (format org-babel-lisp-dir-fmt dir) "(progn %s)")
-			(buffer-substring-no-properties
-			 (point-min) (point-max)))))
-		  (cdr (assoc :package params)))))
+	    (read (org-babel-lisp-vector-to-list result))
+	  (error result))))
+    (funcall (if (member "output" (cdr (assoc :result-params params)))
+		 #'car #'cadr)
+	     (with-temp-buffer
+	       (insert (org-babel-expand-body:lisp body params))
+	       (slime-eval `(swank:eval-and-grab-output
+			     ,(let ((dir (if (assoc :dir params)
+					     (cdr (assoc :dir params))
+					   default-directory)))
+				(format
+				 (if dir (format org-babel-lisp-dir-fmt dir) "(progn %s)")
+				 (buffer-substring-no-properties
+				  (point-min) (point-max)))))
+			   (cdr (assoc :package params))))))
    (org-babel-pick-name (cdr (assoc :colname-names params))
 			(cdr (assoc :colnames params)))
    (org-babel-pick-name (cdr (assoc :rowname-names params))