Przeglądaj źródła

ob-calc: recursively resolve variables in nested parenthesis

* lisp/ob-calc.el (org-babel-execute:calc): Call out to new function
  for variables resolution.
  (ob-calc-maybe-resolve-var): Resolve (possibly recursively)
  variables in calc expressions.
Eric Schulte 14 lat temu
rodzic
commit
4bbe31118f
1 zmienionych plików z 11 dodań i 8 usunięć
  1. 11 8
      lisp/ob-calc.el

+ 11 - 8
lisp/ob-calc.el

@@ -73,14 +73,7 @@
 			   ;; resolve user variables, calc built in
 			   ;; variables are handled automatically
 			   ;; upstream by calc
-			   (mapcar (lambda (el)
-				     (if (and (consp el) (equal 'var (car el))
-					      (member (cadr el) var-syms))
-					 (progn
-					   (calc-recall (cadr el))
-					   (prog1 (calc-top 1)
-					     (calc-pop 1)))
-				       el))
+			   (mapcar #'ob-calc-maybe-resolve-var
 				   ;; parse line into calc objects
 				   (car (math-read-exprs line))))))))
 		   (calc-eval line))))))))
@@ -90,6 +83,16 @@
     (with-current-buffer (get-buffer "*Calculator*")
       (calc-eval (calc-top 1)))))
 
+(defun ob-calc-maybe-resolve-var (el)
+  (if (consp el)
+      (if (and (equal 'var (car el)) (member (cadr el) var-syms))
+	  (progn
+	    (calc-recall (cadr el))
+	    (prog1 (calc-top 1)
+	      (calc-pop 1)))
+	(mapcar #'ob-calc-maybe-resolve-var el))
+    el))
+
 (provide 'ob-calc)
 
 ;; arch-tag: 5c57a3b7-5818-4c6c-acda-7a94831a6449