| 
					
				 | 
			
			
				@@ -739,7 +739,8 @@ block." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	    (forward-line) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	    (skip-chars-forward " \t") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	    (let ((result (org-babel-read-result))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	      (message (replace-regexp-in-string "%" "%%" (format "%S" result))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (message (format "Cached: %s" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               (replace-regexp-in-string "%" "%%" (format "%S" result)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	      result))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 ((org-babel-confirm-evaluate info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (let* ((lang (nth 0 info)) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3155,6 +3156,22 @@ additionally processed by `shell-quote-argument'." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Used by `org-babel-temp-file'.  This directory will be removed on 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Emacs shutdown.")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(defvar org-babel-temporary-stable-directory) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(unless (or noninteractive (boundp 'org-babel-temporary-stable-directory)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (defvar org-babel-temporary-stable-directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (or (and (boundp 'org-babel-temporary-stable-directory) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     (file-exists-p org-babel-temporary-stable-directory) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     org-babel-temporary-stable-directory) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        (condition-case nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            (make-directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     (expand-file-name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              "babel-stable" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              (temporary-file-directory))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (t nil))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "Directory to hold temporary files created to execute code blocks. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Used by `org-babel-temp-file'.  This directory will be removed on 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Emacs shutdown.")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defcustom org-babel-remote-temporary-directory "/tmp/" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Directory to hold temporary files on remote hosts." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   :group 'org-babel 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3198,6 +3215,30 @@ of `org-babel-temporary-directory'." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	       temporary-file-directory))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (make-temp-file prefix nil suffix)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(defun org-babel-temp-stable-file (data prefix &optional suffix) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  "Create a temporary file in the `org-babel-remove-temporary-stable-directory'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The file name is stable with respect to DATA.  The file name is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+constructed like the following: PREFIXDATAhashSUFFIX." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (if (file-remote-p default-directory) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (let* ((prefix 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              (concat (file-remote-p default-directory) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      (expand-file-name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		       prefix org-babel-temporary-stable-directory))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             (path (concat prefix (format "%s" (sxhash data)) (or suffix "")))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        (with-temp-file path) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        path) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (let* ((temporary-file-directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (or (and (boundp 'org-babel-temporary-stable-directory) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     (file-exists-p org-babel-temporary-stable-directory) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     org-babel-temporary-stable-directory) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	        temporary-file-directory)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           (path (concat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  (expand-file-name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		   prefix org-babel-temporary-stable-directory) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  (format "%s" (sxhash data)) (or suffix "")))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (with-temp-file path) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      path))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-babel-remove-temporary-directory () 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Remove `org-babel-temporary-directory' on Emacs shutdown." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (when (and (boundp 'org-babel-temporary-directory) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3221,7 +3262,16 @@ of `org-babel-temporary-directory'." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		    org-babel-temporary-directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		  "[directory not defined]")))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(defun org-babel-remove-temporary-stable-directory () 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  "Remove `org-babel-temporary-stable-directory' and on Emacs shutdown." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (when (and (boundp 'org-babel-temporary-stable-directory) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     (file-exists-p org-babel-temporary-stable-directory)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (let ((org-babel-temporary-directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           org-babel-temporary-stable-directory)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (org-babel-remove-temporary-directory)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (add-hook 'kill-emacs-hook #'org-babel-remove-temporary-directory) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(add-hook 'kill-emacs-hook #'org-babel-remove-temporary-stable-directory) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-babel-one-header-arg-safe-p (pair safe-list) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Determine if the PAIR is a safe babel header arg according to SAFE-LIST. 
			 |