org-mode – ¿Cómo mostrar un bloque de código fuente enredado de babel en modo org?

Pregunta:

Tengo bloques de código simples para los que me gustaría mostrar la fuente generada por noweb dentro del mismo archivo en modo org. p.ej:

#+NAME: example
#+BEGIN_SRC java :classname Test :results code  :exports both :tangle yes :noweb yes

<<preface>>
String result = "hello world";
<<end>>

#+END_SRC

donde el preface y el end son algo como esto:

#+NAME: teststart
#+BEGIN_SRC java  +n :results none :exports code :tangle yes :noweb yes
public class Test {
  public static void main(String[] args)
  {
#+END_SRC

#+NAME: testend
#+BEGIN_SRC java +n :classname Test :results none :exports code :tangle yes :noweb yes
      System.out.print(result);
    }
  }
#+END_SRC

Puedo incluir un archivo, por ejemplo:

#+INCLUDE: "./Test.java" src java

y verlo en las exportaciones, pero no en el archivo org-mode en sí.

Respuesta:

La función org-babel-expand-noweb-referenes expandirá las entradas <<noweb>> . Puede llamar a esta función desde otro bloque fuente (use un argumento de encabezado :wrap para hacer que la fuente la salida esté envuelta en un bloque fuente apropiado):

#+NAME: expand-noweb
#+BEGIN_SRC elisp :exports none
  (save-excursion
    (org-babel-goto-named-src-block name)
    (org-babel-expand-noweb-references))

#+END_SRC

#+CALL: expand-noweb(name="example") :wrap source javascript

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım