Explorar o código

babel: greatly simplified block exportation

Eric Schulte %!s(int64=15) %!d(string=hai) anos
pai
achega
db1fe2a619
Modificáronse 2 ficheiros con 11 adicións e 19 borrados
  1. 4 14
      contrib/babel/lisp/org-babel-exp.el
  2. 7 5
      lisp/org-exp-blocks.el

+ 4 - 14
contrib/babel/lisp/org-babel-exp.el

@@ -73,20 +73,10 @@ results - just like none only the block is run on export ensuring
 none ----- do not display either code or results upon export"
   (interactive)
   (message "org-babel-exp processing...")
-  (flet ((cond-progress-marker () (when (and progress-marker (< progress-marker (point)))
-                                   progress-marker)))
-    (or (and (re-search-backward org-babel-src-block-regexp (cond-progress-marker) t)
-             (setq progress-marker (match-end 0))
-             (org-babel-exp-do-export (org-babel-get-src-block-info) 'block))
-        (save-excursion
-          (forward-line 0)
-          (and (org-babel-where-is-src-block-head)
-               (goto-char (org-babel-where-is-src-block-head))
-               (org-babel-exp-do-export (org-babel-get-src-block-info) 'block)))
-        (and (re-search-backward org-block-regexp (cond-progress-marker) t)
-             (setq progress-marker (match-end 0))
-             (match-string 0))
-        (error "Unmatched block [bug in `org-babel-exp-src-blocks']."))))
+  (when (member (first headers) org-babel-interpreters)
+    (save-excursion
+      (goto-char (match-beginning 0))
+      (org-babel-exp-do-export (org-babel-get-src-block-info) 'block))))
 
 (defun org-babel-exp-inline-src-blocks (start end)
   "Process inline src blocks between START and END for export.

+ 7 - 5
lisp/org-exp-blocks.el

@@ -183,13 +183,15 @@ specified in BLOCKS which default to the value of
 	    (setq body (save-match-data (org-remove-indentation body))))
 	  (unless (memq type types) (setq types (cons type types)))
 	  (save-match-data (interblock start (match-beginning 0)))
-	  (if (setq func (cadr (assoc type org-export-blocks)))
-	      (progn
-                (replace-match (save-match-data
+	  (when (setq func (cadr (assoc type org-export-blocks)))
+            (let ((replacement (save-match-data
                                  (if (memq type org-export-blocks-witheld) ""
-                                   (apply func body headers))) t t)
+                                   (apply func body headers)))))
+              (when replacement
+                (replace-match replacement t t)
                 (unless preserve-indent
-		  (indent-code-rigidly (match-beginning 0) (match-end 0) indentation))))
+                  (indent-code-rigidly
+                   (match-beginning 0) (match-end 0) indentation)))))
 	  (setq start (match-end 0)))
 	(interblock start (point-max))))))