From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Kitchin Subject: Re: How does org mode write to a file? Date: Sat, 21 Nov 2015 16:22:40 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:56980) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a0FcM-00068g-3d for emacs-orgmode@gnu.org; Sat, 21 Nov 2015 16:22:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a0FcI-0001bv-5w for emacs-orgmode@gnu.org; Sat, 21 Nov 2015 16:22:46 -0500 Received: from mail-qg0-x22a.google.com ([2607:f8b0:400d:c04::22a]:36299) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a0FcI-0001bn-0v for emacs-orgmode@gnu.org; Sat, 21 Nov 2015 16:22:42 -0500 Received: by qgcc31 with SMTP id c31so51251817qgc.3 for ; Sat, 21 Nov 2015 13:22:41 -0800 (PST) In-reply-to: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Lawrence Bottorff Cc: org-mode mailing list Your method doesn't work because you parse an empty buffer (the temp one). Try: (let ((data (org-element-parse-buffer))) (with-temp-file "test.txt" (insert (format "%s" data)))) or, if you like you could try: (eval `(with-temp-file "test.txt" (insert (format "%s" (quote ,(org-element-parse-buffer)))))) Lawrence Bottorff writes: > I tracked down the ob-core.el code that also used the `with-temp-file. . .` > method. Yes, thanks, your code works, e.g., > > (write-file "test2015-11-21T20:51:59.ast" (org-element-parse-buffer)) > > but my stab in the dark didn't > > (with-temp-file "test.txt" > (insert (format "%s" (org-element-parse-buffer)))) > > The file created only contains > > (org-data nil) > > Not sure why. > > BTW, thanks for your org-babel-load-file tip from before. However, it seems > to tangle everything in the file, then does load-file. I do want the > finer-grained control of LOB where I can specify which code blocks to make > live. But then maybe I should just roll my own.. . . . > > LB > > > > > On Sat, Nov 21, 2015 at 6:16 PM, John Kitchin > wrote: > >> You do work with buffers, e.g. >> >> (defun write-file (fname data &optional append) >> "Open FNAME and write DATA to it. If APPEND is non-nil, append DATA to >> the end of the file" >> (with-temp-file fname >> (when append >> (insert-file-contents fname) >> (goto-char (point-max)) >> (insert "\n")) >> (insert (format "%s" data)))) >> >> (defun read-file (fname) >> "Return the contents of FNAME in a string." >> (with-temp-buffer >> (insert-file-contents fname) >> (buffer-string))) >> >> (write-file "test-ast.txt" "test4" t) >> >> (read-file "test-ast.txt") >> >> I don't know a better way to do it. >> >> Lawrence Bottorff writes: >> >> > Excuse my elisp ignorance, but I've got this: >> > >> > #+name: elisp-unordered-ast >> > #+begin_src emacs-lisp :file myastfile.ast >> > (org-element-parse-buffer) >> > #+end_src >> > >> > which works fine. Question: Where is the elisp code that does this >> writing >> > of `org-element-parse-buffer` output to file? I'm stumped on how to do >> just >> > simple file read-write in elisp. It seems to only want to work with live >> > buffers. For example, how would I redirect `(org-element-parse-buffer)` >> > into, say, `(append-to-file 1 (buffer-size) "test-ast.txt")` >> > >> > LB >> >> -- >> Professor John Kitchin >> Doherty Hall A207F >> Department of Chemical Engineering >> Carnegie Mellon University >> Pittsburgh, PA 15213 >> 412-268-7803 >> @johnkitchin >> http://kitchingroup.cheme.cmu.edu >> -- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu