Bläddra i källkod

ob-tangle.el: Handle non-string arguments more gracefully

* lisp/ob-tangle.el (org-babel-tangle-single-block): If the
  argument to :tangle is nil (e.g. when parsing conditional
  tangling such as (when condition "yes") the current code
  throws an error in `file-name-directory'.  This commit
  checks if the argument is a string before calling the fun

TINYCHANGE
Jacopo De Simoi 3 år sedan
förälder
incheckning
2bd34edb64
1 ändrade filer med 5 tillägg och 4 borttagningar
  1. 5 4
      lisp/ob-tangle.el

+ 5 - 4
lisp/ob-tangle.el

@@ -529,6 +529,7 @@ non-nil, return the full association list to be used by
 			 (match-end 0)
 		       (point-min))))
 	      (point)))))
+         (src-tfile (cdr (assq :tangle params)))
 	 (result
 	  (list start-line
 		(if org-babel-tangle-use-relative-file-links
@@ -536,11 +537,12 @@ non-nil, return the full association list to be used by
 		  file)
 		(if (and org-babel-tangle-use-relative-file-links
 			 (string-match org-link-types-re link)
-			 (string= (match-string 1 link) "file"))
+			 (string= (match-string 1 link) "file")
+                         (stringp src-tfile))
 		    (concat "file:"
 			    (file-relative-name (substring link (match-end 0))
 						(file-name-directory
-						 (cdr (assq :tangle params)))))
+						 src-tfile)))
 		  link)
 		source-name
 		params
@@ -549,8 +551,7 @@ non-nil, return the full association list to be used by
 		  (org-trim (org-remove-indentation body)))
 		comment)))
     (if only-this-block
-        (let* ((src-tfile (cdr (assq :tangle (nth 4 result))))
-               (file-name (org-babel-effective-tangled-filename
+        (let* ((file-name (org-babel-effective-tangled-filename
                            (nth 1 result) src-lang src-tfile)))
           (list (cons file-name (list (cons src-lang result)))))
       result)))