From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thibault Marin Subject: Tangling org file with nested org source block Date: Wed, 27 Sep 2017 21:49:49 -0500 Message-ID: <87ing3h702.fsf@dell-desktop.WORKGROUP> Reply-To: thibault.marin@gmx.com Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:43496) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dxOtl-0004c2-Qw for emacs-orgmode@gnu.org; Wed, 27 Sep 2017 22:50:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dxOtg-0005yw-D7 for emacs-orgmode@gnu.org; Wed, 27 Sep 2017 22:50:01 -0400 Received: from mout.gmx.net ([212.227.15.18]:51649) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dxOtg-0005wX-3G for emacs-orgmode@gnu.org; Wed, 27 Sep 2017 22:49:56 -0400 Received: from dell-desktop ([99.47.196.62]) by mail.gmx.com (mrgmx001 [212.227.17.184]) with ESMTPSA (Nemesis) id 0LjaEi-1dM9Kz1NkG-00bbYt for ; Thu, 28 Sep 2017 04:49:53 +0200 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" To: "emacs-orgmode@gnu.org" Hi list, I am trying to tangle the following org file: ,---- | #+PROPERTY: header-args :tangle output.org | | #+BEGIN_SRC org | | ,* Test | | ,#+BEGIN_SRC org | ,,#+BEGIN_SRC emacs-lisp | '(1 2 3) | ,,#+END_SRC | ,#+END_SRC | | #+END_SRC `---- (note the double commas at the beginning of the inner-most block). I am working on master (Org mode version 9.1.1 (release_9.1.1-79-g731e1c.dirty @ .../org-mode/lisp/)), and I get the following: ,---- output.org | * Test | | #+BEGIN_SRC org | #+BEGIN_SRC emacs-lisp | '(1 2 3) | #+END_SRC | #+END_SRC `---- The inner block does not get escaped which causes issues when exporting. Trying to investigate this, I ended up in the ~org-babel-tangle-single-block~ function in =ob-tangle.el=. The second comma is removed by a call to ~org-unescape-code-in-string~ (l. 497). Since the incoming string has already been cleaned-up (i.e. the first comma removed) at that point I wonder why this call is necessary. When I remove that call to ~org-unescape-code-in-string~, tangling produces the output I expect: ,---- output.org | * Test | | #+BEGIN_SRC org | ,#+BEGIN_SRC emacs-lisp | '(1 2 3) | ,#+END_SRC | #+END_SRC `---- where the inner source block is properly escaped. So, is the call to ~org-unescape-code-in-string~ required? Does anyone know if there is a way to get the desired output? Thanks in advance, thibault