浏览代码

revert "ob-tangle: more sophisticated block combination during tangling"

Eric Schulte 14 年之前
父节点
当前提交
e001901234
共有 1 个文件被更改,包括 24 次插入38 次删除
  1. 24 38
      lisp/ob-tangle.el

+ 24 - 38
lisp/ob-tangle.el

@@ -96,14 +96,10 @@ controlled by the :comments header argument."
   :group 'org-babel
   :group 'org-babel
   :type 'string)
   :type 'string)
 
 
-(defcustom org-babel-tangle-named-block-combination nil
+(defcustom org-babel-tangle-do-combine-named-blocks nil
   "Combine blocks of the same name during tangling."
   "Combine blocks of the same name during tangling."
   :group 'org-babel
   :group 'org-babel
-  :type '(choice
-	  (const :tag "Default: no special handling" nil)
-	  (const :tag "Append all blocks of the same name" append)
-	  (const :tag "Only keep the first block of the same name" first)
-	  (const :tag "Only keep the last block of the same name" last)))
+  :type 'bool)
 
 
 (defun org-babel-find-file-noselect-refresh (file)
 (defun org-babel-find-file-noselect-refresh (file)
   "Find file ensuring that the latest changes on disk are
   "Find file ensuring that the latest changes on disk are
@@ -249,7 +245,9 @@ exported source code blocks by language."
                     (setq block-counter (+ 1 block-counter))
                     (setq block-counter (+ 1 block-counter))
                     (add-to-list 'path-collector file-name)))))
                     (add-to-list 'path-collector file-name)))))
             specs)))
             specs)))
-       (org-babel-tangle-combine-named-blocks
+       (funcall (if org-babel-tangle-do-combine-named-blocks
+		    #'org-babel-tangle-combine-named-blocks
+		  #'identity)
 	(org-babel-tangle-collect-blocks lang)))
 	(org-babel-tangle-collect-blocks lang)))
       (message "tangled %d code block%s from %s" block-counter
       (message "tangled %d code block%s from %s" block-counter
                (if (= block-counter 1) "" "s")
                (if (= block-counter 1) "" "s")
@@ -376,37 +374,25 @@ code blocks by language."
   "Combine blocks of the same name.
   "Combine blocks of the same name.
 This function follows noweb behavior of appending blocks of the
 This function follows noweb behavior of appending blocks of the
 same name in the order they appear in the file."
 same name in the order they appear in the file."
-  (if org-babel-tangle-named-block-combination
-      (let (tangled-names)
-	(mapcar
-	 (lambda (by-lang)
-	   (cons
-	    (car by-lang)
-	    (mapcar (lambda (spec)
-		      (let ((name (nth 3 spec)))
-			(unless (member name tangled-names)
-			  (when name
-			    (setf
-			     (nth 5 spec)
-			     (let ((named (mapcar
-					   (lambda (el) (nth 5 el))
-					   (delq
-					    nil
-					    (mapcar
-					     (lambda (el)
-					       (when (equal name (nth 3 el))
-						 el))
-					     (cdr by-lang))))))
-			       (case org-babel-tangle-named-block-combination
-				 (append (mapconcat #'identity
-						    named "\n"))
-				 (first  (first named))
-				 (last   (car (last  named))))))
-			    (add-to-list 'tangled-names name))
-			  spec)))
-		    (cdr by-lang))))
-	 blocks))
-    blocks))
+  (let (tangled-names)
+    (mapcar
+     (lambda (by-lang)
+       (cons
+	(car by-lang)
+	(mapcar (lambda (spec)
+		  (let ((name (nth 3 spec)))
+		    (unless (member name tangled-names)
+		      (when name
+			(setf (nth 5 spec)
+			      (mapconcat
+			       (lambda (el) (nth 5 el))
+			       (remove-if (lambda (el) (not (equal name (nth 3 el))))
+					  (cdr by-lang))
+			       "\n"))
+			(add-to-list 'tangled-names name))
+		      spec)))
+		(cdr by-lang))))
+     blocks)))
 
 
 (defun org-babel-spec-to-string (spec)
 (defun org-babel-spec-to-string (spec)
   "Insert SPEC into the current file.
   "Insert SPEC into the current file.