| 
					
				 | 
			
			
				@@ -20,9 +20,13 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;;; Commentary: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; This library implements an Org back-end for Org exporter.  Since 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; its usage is mainly internal, it doesn't provide any interactive 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; function. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;; This library implements an Org back-end for Org exporter. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;; It introduces two interactive functions, `org-org-export-as-org' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;; and `org-org-export-to-org', which export, respectively, to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;; a temporary buffer and to a file. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;; A publishing function is also provided: `org-org-publish-to-org'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;;; Code: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (require 'ox) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -102,7 +106,15 @@ setting of `org-html-htmlize-output-type' is 'css." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (timestamp . org-org-identity) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (underline . org-org-identity) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (verbatim . org-org-identity) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (verse-block . org-org-identity))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (verse-block . org-org-identity)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  :menu-entry 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  '(?O "Export to Org" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       ((?O "As Org buffer" org-org-export-as-org) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(?o "As Org file" org-org-export-to-org) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(?v "As Org file and open" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (lambda (a s v b) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (if a (org-org-export-to-org t s v b) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(org-open-file (org-org-export-to-org nil s v b)))))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-org-identity (blob contents info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Transcode BLOB element or object back into Org syntax." 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -131,6 +143,86 @@ Ignore keywords targeted at other export back-ends." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		   org-element-block-name-alist)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (org-element-keyword-interpreter keyword nil))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;;;###autoload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(defun org-org-export-as-org (&optional async subtreep visible-only ext-plist) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  "Export current buffer to an Org buffer. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+If narrowing is active in the current buffer, only export its 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+narrowed part. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+If a region is active, export that region. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+A non-nil optional argument ASYNC means the process should happen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+asynchronously.  The resulting buffer should be accessible 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+through the `org-export-stack' interface. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+When optional argument SUBTREEP is non-nil, export the sub-tree 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+at point, extracting information from the headline properties 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+first. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+When optional argument VISIBLE-ONLY is non-nil, don't export 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+contents of hidden elements. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+EXT-PLIST, when provided, is a property list with external 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+parameters overriding Org default settings, but still inferior to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+file-local settings. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Export is done in a buffer named \"*Org ORG Export*\", which will 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+be displayed when `org-export-show-temporary-export-buffer' is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+non-nil." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (interactive) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (if async 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (org-export-async-start 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (lambda (output) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (with-current-buffer (get-buffer-create "*Org ORG Export*") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (erase-buffer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (insert output) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (goto-char (point-min)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (org-mode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (org-export-add-to-stack (current-buffer) 'org))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	`(org-export-as 'org ,subtreep ,visible-only nil ',ext-plist)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (let ((outbuf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   (org-export-to-buffer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    'org "*Org ORG Export*" subtreep visible-only nil ext-plist))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (with-current-buffer outbuf (org-mode)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (when org-export-show-temporary-export-buffer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(switch-to-buffer-other-window outbuf))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;;;###autoload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(defun org-org-export-to-org (&optional async subtreep visible-only ext-plist) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  "Export current buffer to an org file. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+If narrowing is active in the current buffer, only export its 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+narrowed part. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+If a region is active, export that region. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+A non-nil optional argument ASYNC means the process should happen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+asynchronously.  The resulting file should be accessible through 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+the `org-export-stack' interface. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+When optional argument SUBTREEP is non-nil, export the sub-tree 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+at point, extracting information from the headline properties 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+first. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+When optional argument VISIBLE-ONLY is non-nil, don't export 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+contents of hidden elements. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+EXT-PLIST, when provided, is a property list with external 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+parameters overriding Org default settings, but still inferior to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+file-local settings. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Return output file name." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (interactive) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (let ((outfile (org-export-output-file-name ".org" subtreep))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (if async 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(org-export-async-start 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (lambda (f) (org-export-add-to-stack f 'org)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  `(expand-file-name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (org-export-to-file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     'org ,outfile ,subtreep ,visible-only nil ',ext-plist))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (org-export-to-file 'org outfile subtreep visible-only nil ext-plist)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;;;###autoload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-org-publish-to-org (plist filename pub-dir) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Publish an org file to org. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -167,6 +259,7 @@ Return output file name." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (unless visitingp (kill-buffer work-buffer))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (set-buffer-modified-p nil))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (provide 'ox-org) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;; Local variables: 
			 |