Browse Source

now working with multiple source-blocks

Eric Schulte 16 years ago
parent
commit
6518065f28
1 changed files with 9 additions and 6 deletions
  1. 9 6
      lisp/org-babel-tangle.el

+ 9 - 6
lisp/org-babel-tangle.el

@@ -44,17 +44,18 @@ file into their own source-specific files."
   (interactive)
   (save-excursion
     (let ((base-name (file-name-sans-extension (buffer-file-name)))
+          (block-counter 0)
           blocks)
       ;; blocks will be two nested association lists, first grouped by
       ;; language, then by session, the contents of the second a-list
       ;; will be source-code blocks
       (org-babel-map-source-blocks (buffer-file-name)
+        (setq block-counter (+ 1 block-counter))
         (let* ((link (progn (call-interactively 'org-store-link)
                             (org-babel-clean-text-properties (car (pop org-stored-links)))))
-               (counter 0)
+               
                (source-name (intern (or (org-babel-get-src-block-name)
-                                        (progn (setq counter (+ 1 counter))
-                                               (format "block-%d" counter)))))
+                                        (format "block-%d" block-counter))))
                (info (org-babel-get-src-block-info))
                (lang (first info))
                (body (second info))
@@ -63,8 +64,10 @@ file into their own source-specific files."
                (session (cdr (assoc :session params)))
                by-lang by-session)
           ;; add the spec for this block to blocks under it's lang and session
-          (setq by-lang (cdr (org-babel-alist-pop lang blocks)))
-          (setq by-session (cdr (org-babel-alist-pop session by-lang)))
+          (setq by-lang (cdr (assoc lang blocks)))
+          (setq blocks (delq (assoc lang blocks) blocks))
+          (setq by-session (cdr (assoc session by-lang)))
+          (setq by-lang (delq (assoc session by-lang) by-lang))
           (setq blocks (cons ;; by-language
                         (cons lang (cons ;; by-session
                                     (cons session (cons spec by-session)) by-lang))
@@ -85,7 +88,7 @@ file into their own source-specific files."
                              (funcall lang-f)
                              (when she-bang (insert (concat she-bang "\n")))
                              (comment-region (point) (progn (insert "generated by org-babel-tangle") (point)))
-                             (mapc #'org-babel-spec-to-string specs))))
+                             (mapc #'org-babel-spec-to-string (reverse specs)))))
              ;; if there are multiple sessions then break out by session
              (if (> (length by-session) 1)
                  (mapc (lambda (session-pair)