|
@@ -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)
|