From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Davison Subject: Re: [babel] [BUG] incorrect indentation when tangling with org-src-preserve-indentation Date: Tue, 12 Oct 2010 15:54:34 +0100 Message-ID: <87bp6z8nrp.fsf@stats.ox.ac.uk> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from [140.186.70.92] (port=53843 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1P5gFY-00045P-67 for emacs-orgmode@gnu.org; Tue, 12 Oct 2010 10:54:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1P5gFW-0008Jw-55 for emacs-orgmode@gnu.org; Tue, 12 Oct 2010 10:54:43 -0400 Received: from markov.stats.ox.ac.uk ([163.1.210.1]:32940) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1P5gFV-0008Is-UR for emacs-orgmode@gnu.org; Tue, 12 Oct 2010 10:54:42 -0400 Received: from blackcap.stats.ox.ac.uk (blackcap.stats [163.1.210.5]) by markov.stats.ox.ac.uk (8.13.6/8.13.6) with ESMTP id o9CEsZds011102 for ; Tue, 12 Oct 2010 15:54:36 +0100 (BST) In-Reply-To: (Antti Kaihola's message of "Sat, 9 Oct 2010 18:36:10 +0300") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Cc: emacs-orgmode@gnu.org Antti Kaihola writes: > Here's another stab at fixing the problem. This one enhances the > existing trimming algorithm by preserving any leading whitespace on > the first non-blank line of a block. This probably breaks tangling of > other languages than Python, but someone more familiar with the babel > codebase will be able to come up with a saner solution. Hi Antti, Thanks for the report and patches. I've just pushed a modification of your patch, along the lines of - "\n" (org-babel-trim body) "\n")) + "\n" (org-babel-trim body (if org-src-preserve-indentation "[\f\n\r\v]")) "\n")) Thus spaces and tabs should no longer be trimmed when `org-src-preserve-indentation' is non-nil. Hopefully this fixes things. Dan > > > diff --git a/lisp/ob-python.el b/lisp/ob-python.el > index c172756..39665c2 100644 > --- a/lisp/ob-python.el > +++ b/lisp/ob-python.el > @@ -58,3 +58,3 @@ > (nth 1 (or processed-params (org-babel-process-params params))) "\n") > - "\n" (org-babel-trim body) "\n")) > + "\n" (org-babel-indent-safe-trim body) "\n")) > > diff --git a/lisp/ob-tangle.el b/lisp/ob-tangle.el > index 3a0426a..e619e90 100644 > --- a/lisp/ob-tangle.el > +++ b/lisp/ob-tangle.el > @@ -368,3 +368,3 @@ form > (insert (format "%s\n" (replace-regexp-in-string > - "^," "" (org-babel-trim body)))) > + "^," "" (org-babel-indent-safe-trim body)))) > (when link-p > diff --git a/lisp/ob.el b/lisp/ob.el > index b05100c..9d750e7 100644 > --- a/lisp/ob.el > +++ b/lisp/ob.el > @@ -1723,2 +1723,9 @@ overwritten by specifying a regexp as a second argument." > > +(defun org-babel-indent-safe-trim (string) > + "Strip leading and trailing spaces and carriage returns from STRING. > +Like `org-babel-chomp' only it runs on both the front and back > +of the string. Preserves leading tabs and spaces on first non-blank line." > + (string-match "\\`\\(?:[ \f\t\n\r\v]*\n\\)?\\(\\(?:\n?.*?\\)*?\\)[ > \f\t\n\r\v]*\\'" string) > + (match-string 1 string)) > + > (defun org-babel-trim (string &optional regexp) > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode