Antti Kaihola <akaih...@gmail.com> 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 _______________________________________________ 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