Hello, Göktuğ Kayaalp <s...@gkayaalp.com> writes:
> I was trying to have spurious indentation removed from Python source > blocks before execution so that such blocks can be indented in Org mode > buffers. Removing indentation from Python blocks sounds like a bad idea. Do you have an example demonstrating what you need? > I think the cause is the modifications to the code blocks body (deletion > of spurious indentation from an indented src block), but I’m not sure > how exactly. > > This is weird because the in-buffer text doesn’t change. Do you have a reproducer for this? Ideally, using Emacs Lisp instead of Python. > In any case I’m also proposing the attached patch as a new feature. > Could start a new thread for it if necessary. > +(defun org-babel-python--clean-spurious-indentation (body) > + (let* ((extra-indentation > + (save-match-data > + (string-match "\\`\\([ \t]+\\)" body) > + (match-string 1 body))) > + (xlen (length extra-indentation))) > + (if (zerop xlen) > + body > + (mapconcat > + (lambda (line) (if (<= (length line) xlen) > + line > + (if (string= extra-indentation > + (substring line 0 xlen)) > + (substring line xlen) > + line))) > + (split-string body "\n") > + "\n")))) I think `org-remove-indentation' does about the same. It does not systematically use first line as reference, though. Regards, -- Nicolas Goaziou