2014-06-19 1 views
2

emmêlement ceci:N'importe quelle façon de rendre l'org-babel indent correctement le code de noweb?

#+BEGIN_SRC C :tangle no :noweb-ref begin 
int main() { 
    printf("Line 1\n"); 
#+END_SRC 

#+BEGIN_SRC C :tangle no :noweb-ref middle 
printf("Second\n"); 
#+END_SRC 

#+BEGIN_SRC C :tangle no :noweb-ref end 
} 
#+END_SRC 

#+BEGIN_SRC C :tangle ~/test.c :noweb no-export 
<<begin>> 
<<middle>> 
<<end>> 
#+END_SRC 

Donne ceci:

int main() { 
    printf("Line 1\n"); 
printf("Second\n"); 
} 

Je org-src-preserve-indentation activée, mais il ne peut pas préserver ce qui est pas là. Les fenêtres d'édition de code ne peuvent pas le définir correctement s'il ne voit pas les parties des blocs de code source précédents. Enfin, je ne veux pas avoir à parcourir tous les extraits précédents pour comprendre ce que l'indentation devrait commencer à chaque fois que je commence un nouveau bloc de code source.

bidouille actuelle est emmêler le code source, ouvrez le fichier emmêlés dans un nouveau tampon, tout sélectionner et exécuter c-indent ligne ou région, mais j'espère qu'il ya quelque chose de mieux que ça.

Version Org-mode: Comme mentionné 8.2.5h

+0

Vous pourriez appeler 'indent-region' ou similaire comme un crochet de post-tangle, je pense. –

Répondre

0

, accrochage dans le org-babel-post-tangle-hook est le chemin à parcourir. J'utilise ce qui suit:

(defun tnez/src-cleanup() 
    (indent-region (point-min) (point-max))) 

(add-hook 'org-babel-post-tangle-hook 'tnez/src-cleanup) 
Questions connexes