emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] org-babel-tangle indentation


From: Dan Davison
Subject: Re: [Orgmode] org-babel-tangle indentation
Date: Thu, 08 Oct 2009 13:36:34 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.91 (gnu/linux)

Chris, Eric --

Coincidentally, I think the email I just sent to the list provides a
solution to these issues. I've also been using org-babel-tangle to write
a python program this week. I've been finding it very helpful merely
using basic org mode features such as folding and restructuring to
organise and navgigate the code (same with my emacs config files). See
below for notes on tangling your python example.

"Eric Schulte" <address@hidden> writes:

> Hi Chris,
>
> You have touched upon a true limitation in the current tangle
> functionality.  I think this issue has two parts (one of which you
> address below).
>
> 1) it is impossible to specify a piece of heavily indented code in a
>    source-code block.  For example
>
> #+begin_src python
>           9
> #+end_src
>
>    will always be exported as 
>
> 9
>
>    because Org-babel strips off any leading spaces.  This problem is
>    exacerbated by the fact that C-' org-edit-special also strips off
>    leading spaces.

With org-src-preserve-indentation set to t, the leading spaces are
removed neither by C-c ' nor during
org-babel-tangle. org-src-preserve-indentation can be set globally or as
a buffer local variable.

>
> 2) There is no way to specify the level at which the contents of a
>    source block should be indented.  You provided a good solution to
>    this second issue below, and I'm adding it to the org-babel task
>    stack.

With org-src-preserve-indentation, as long as the indentation is correct
in the org file, it will be correct in the tangled output. So in order
to produce correct python code from Chris's example, it has to have the
correct indentation in the org buffer, i.e.

--8<---------------cut here---------------start------------->8---
* Introduction

  This is some intro text.

#+srcname: the first block
#+begin_src python :tangle foo :exports none
print '1 + 1'
if 1 + 1 == 2:
      print 'oh no'
else:
      # <<do the other thing>>
#+end_src

  Some more text.

#+srcname: do the other thing
#+begin_src python :tangle no :exports none
      print 'oh yes'
#+end_src
--8<---------------cut here---------------end--------------->8---

Chris, I have not implemented your suggestion regarding the indentation
of noweb referenced blocks, but I think it would be sensible behaviour
when org-src-preserve-indentation is nil.

Dan

>> For example, the following bit of python does not compile when tangled. 
>>
>> * Introduction
>>
>>   This is some intro text.
>>
>> #+srcname: the first block
>> #+begin_src python :tangle foo :exports none
>>   print '1 + 1'
>>   if 1 + 1 == 2:
>>       print 'oh no'
>>   else:
>>       # <<do the other thing>>
>> #+end_src
>>
>>   Some more text.
>>
>> #+srcname: do the other thing
>> #+begin_src python :tangle no :exports none
>>   print 'oh yes'
>> #+end_src
>>
>> My preference would be for source blocks to be indented to the level of
>> the comment that caused them to be inserted.
>>
>> Cheers,
>> Chris
>>
>>
>>
>> _______________________________________________
>> Emacs-orgmode mailing list
>> Remember: use `Reply All' to send replies to the list.
>> address@hidden
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> address@hidden
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode




reply via email to

[Prev in Thread] Current Thread [Next in Thread]