From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Thorsten Jolitz Newsgroups: gmane.emacs.help Subject: `print' inside Emacs vs `print' to stdout (with Emacsclient) Date: Wed, 23 Oct 2013 09:49:08 +0200 Message-ID: <87vc0o2zrf.fsf@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1382514582 6294 80.91.229.3 (23 Oct 2013 07:49:42 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 23 Oct 2013 07:49:42 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed Oct 23 09:49:46 2013 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1VYtCM-00085r-0n for geh-help-gnu-emacs@m.gmane.org; Wed, 23 Oct 2013 09:49:46 +0200 Original-Received: from localhost ([::1]:48091 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VYtCL-00063E-I6 for geh-help-gnu-emacs@m.gmane.org; Wed, 23 Oct 2013 03:49:45 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:57828) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VYtC5-000635-J3 for help-gnu-emacs@gnu.org; Wed, 23 Oct 2013 03:49:35 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VYtBz-0003lW-D7 for help-gnu-emacs@gnu.org; Wed, 23 Oct 2013 03:49:29 -0400 Original-Received: from plane.gmane.org ([80.91.229.3]:33976) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VYtBz-0003lP-6K for help-gnu-emacs@gnu.org; Wed, 23 Oct 2013 03:49:23 -0400 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1VYtBw-0007pu-5m for help-gnu-emacs@gnu.org; Wed, 23 Oct 2013 09:49:20 +0200 Original-Received: from e178191122.adsl.alicedsl.de ([85.178.191.122]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 23 Oct 2013 09:49:20 +0200 Original-Received: from tjolitz by e178191122.adsl.alicedsl.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 23 Oct 2013 09:49:20 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 101 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: e178191122.adsl.alicedsl.de User-Agent: Gnus/5.130002 (Ma Gnus v0.2) Emacs/24.3 (gnu/linux) Cancel-Lock: sha1:ePXfTO1WZHH+tdFmkTfDe9m9JHU= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:94163 Archived-At: Hi List, this is the parse-tree of a minimal Org file #+begin_src org * A B #+end_src as found in the *Messages* buffer after printing with #+begin_src emacs-lisp (let ((org-cycle-silently t) (print-escape-newlines t) (print-circle t)) (with-temp-buffer (insert-file-contents-literally "/path/to/tmp.org") (org-mode) (print (org-element-parse-buffer)))) #+end_src #+begin_src emacs-lisp #2=(org-data nil #1=(headline (:raw-value "A" :begin 1 :end 7 :pre-blank 0 :hiddenp outline :contents-begin 5 :contents-end 7 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :quotedp nil :CATEGORY nil :title (#("A" 0 1 (:parent #1#))) :parent #2#) #3=(section (:begin 5 :end 7 :contents-begin 5 :contents-end 7 :post-blank 0 :parent #1#) #4=(paragraph (:begin 5 :end 7 :contents-begin 5 :contents-end 7 :post-blank 0 :post-affiliated 5 :parent #3#) #("B\n" 0 2 (:parent #4#)))))) #+end_src Now when I use the exactly same print commands as arguments for an emacsclient call #+begin_src sh $ emacsclient -s my-server -e "(let ((org-cycle-silently t)(print-escape-newlines t)(print-circle t)) (with-temp-buffer (insert-file-contents-literally \"/path/to/tmp.org\") (org-mode) (print (org-element-parse-buffer))))" #+end_src I see this output on the console, i.e. (print-circle t) does not seem in effect anymore. #+begin_src emacs-lisp (org-data nil (headline (:raw-value "A" :begin 1 :end 7 :pre-blank 0 :hiddenp outline :contents-begin 5 :contents-end 7 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :quotedp nil :CATEGORY nil :title (#("A" 0 1 (:parent #1))) :parent #0) (section (:begin 5 :end 7 :contents-begin 5 :contents-end 7 :post-blank 0 :parent #1) (paragraph (:begin 5 :end 7 :contents-begin 5 :contents-end 7 :post-blank 0 :post-affiliated 5 :parent #2) #("B\n" 0 2 (:parent #3)))))) #+end_src Actually, what I really see is this #+begin_src sh (org-data nil (headline (:raw-value "A" :begin 1 :end 7 :pre-blank 0 :hiddenp outline :contents-begin 5 :contents-end 7 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :quotedp nil :CATEGORY nil :title (#("A" 0 1 (:parent #1))) :parent #0) (section (:begin 5 :end 7 :contents-begin 5 :contents-end 7 :post-blank 0 :parent #1) (paragraph (:begin 5 :end 7 :contents-begin 5 :contents-end 7 :post-blank 0 :post-affiliated 5 :parent #2) #("B\n" 0 2 (:parent #3)))))) #+end_src and it seems, when this output is received as input by another program, that not only the 'circular list' print-syntax is lost, but new redundant line-breaks are introduced that are not related to the original Org file. But I need those 'circular' labels and references, and would rather not have those random linebreaks. The only way to get the 'circular' labels seems converting the whole structure to a string while or before printing (with `(print (format ...))' or `prin1-to-string' e.g.), but that causes other problems w.r.t. escaping special chars and (unwanted) surrounding double quotes. What I would really need is being able to just `print' a structure to stdout in an emacsclient call and receive as input of another program on stdin exactly what would be printed in the Emacs *Messages* buffer when evaluating the print commands in an emacs-lisp-mode buffer. Is there any way to achieve this? -- cheers, Thorsten