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

Reply via email to