emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Dan Davison <davison@stats.ox.ac.uk>
To: Eric Schulte <schulte.eric@gmail.com>
Cc: chrismgray@gmail.com, emacs-orgmode@gnu.org
Subject: Re: org-babel-tangle indentation
Date: Thu, 08 Oct 2009 13:36:34 -0400	[thread overview]
Message-ID: <87ljjl3hzx.fsf@stats.ox.ac.uk> (raw)
In-Reply-To: <m263aqx8i5.fsf@gmail.com> (Eric Schulte's message of "Thu, 08 Oct 2009 08:31:14 -0600")

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" <schulte.eric@gmail.com> 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.
>> Emacs-orgmode@gnu.org
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

      reply	other threads:[~2009-10-08 17:36 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-08 13:51 org-babel-tangle indentation Chris Gray
2009-10-08 14:31 ` Eric Schulte
2009-10-08 17:36   ` Dan Davison [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ljjl3hzx.fsf@stats.ox.ac.uk \
    --to=davison@stats.ox.ac.uk \
    --cc=chrismgray@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=schulte.eric@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).