org-babel – ¿Soporte para refactorizar / convertir código fuente en programación alfabetizada con org-mode / babel?

Pregunta:

Estoy pensando en usar programación alfabetizada para investigar una gran cantidad de código fuente o difícil de entender. Para este propósito, me gustaría refactorizar el código fuente en texto de programación alfabetizado con org-mode / babel, de modo que pueda agregar anotaciones de mi estudio, preguntas y comentarios libremente, mientras puedo volver a enredar para obtener el código fuente original .

Me pregunto si algún alma amable ya ha hecho algo similar. Por el momento, podría ser tan simple como:

  1. Ingrese el código fuente en el búfer org-mode / babel y envuelva todo el código fuente en un fragmento de código inicial;
  2. Proporcionar un comando para extraer una región o una subexpresión en un fragmento de código separado con la disposición adecuada en términos de nombre del fragmento, encabezados, etc. para que la relación en el código fuente se pueda expresar y conservar, como tener otro código. marque para agregar esos fragmentos de código separados. (el nombre del fragmento de código extraído puede automatizarse como la primera expresión en la región, o algo que tenga sentido semánticamente y sea factible)
  3. Para una aplicación más avanzada, la herramienta puede escanear el directorio de código fuente y generar un archivo en modo org inicial con el código fuente siendo analizado en fragmentos de programación alfabetizados para cada construcción de programación principal, para cada archivo, la declaración de encabezado y cada función / subrutina, etc., con la disposición adecuada para enredar los directorios y archivos del código fuente original.

La esencia es automatizar las operaciones manuales en la refactorización tanto como sea posible.

Creo que esto podría ser de gran ayuda para estudiar el código fuente.

Comparta sugerencias, pensamientos y contribuciones.

Gracias, Yu

Respuesta:

Tus pasos iniciales son un buen punto de partida. Puede implementar el n. ° 2 utilizando plantillas y sesiones de Babel. Tener todos los bloques de origen ejecutados en una sesión significa que puede dividirlos fácilmente en múltiples partes con el mismo resultado. Solo asegúrese de que cuando lo divida, no esté dentro de un bucle. Eso estaría bien para cuando te enredes, pero no te permitiría ejecutar los bloques dentro del archivo Org.

Aquí hay dos plantillas de Python Babel que utilizo para este tipo de trabajo:

(add-to-list 'org-structure-template-alist
             '("p" "#+BEGIN_SRC python :results output :exports none\n?\n#+END_SRC\n#+RESULTS:" "<src lang=\"python\">\n?\n</src>"))
(add-to-list 'org-structure-template-alist
             '("pe" "#+END_SRC\n#+RESULTS:\n?\n#+BEGIN_SRC python :results output :exports none\n" "</src>\n<src lang=\"python\">"))

El primero me permite escribir <pTAB y se expande a la configuración predeterminada de Python que quiero, y coloca el cursor entre los #+BEGIN_SRC y #+END_SRC . El segundo te resultará más útil. En lugar de comenzar y terminar un bloque fuente, termina y luego comienza (es decir, divide un bloque en dos) y coloca el cursor entre los dos bloques donde puede ingresar sus pensamientos sobre el código arriba y abajo.

Debe expandir las plantillas para incluir el nombre de la sesión en el encabezado y el posible texto que no sea de Babel, como los encabezados y subtítulos de las secciones ( ** ) asumiendo que desea cada bloque en una subsección …

Leave a Comment

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

Scroll to Top

web tasarım