Tengo lo siguiente en mi documentación:
#+INCLUDE: "code/basic.sv" :src systemverilog :lines "14-117"
Aquí la línea 14 es donde tengo class basic extends ..
y la línea 116 es donde tengo endclass
.
¿Hay alguna manera de insertar automáticamente los números 14 y 117 (= 116 + 1) para que no tenga que actualizarlos manualmente cada vez que modifique el code/basic.sv
?
org-include-src(FILE, LANGUAGE, REGEX_BEGIN, REGEX_END)
org-export-before-processing-hook
al preprocesamiento de los números de línea. Otra forma es simplemente enviar un correo de solicitud de función a la lista de correo org :)Respuestas:
Aquí hay otra opción. Este es le permite personalizar las expresiones regulares en función de cada inclusión. Debería encajar mejor con algunos flujos de trabajo, ya que no está limitado a definiciones basadas en extensiones.
Usar
Haga algo como lo siguiente en su archivo org. (La
:lines
palabra clave es opcional)La función visitará "my-class.sv" y buscará esas dos expresiones regulares, y luego actualizará la
:lines
palabra clave de acuerdo con el resultado de la coincidencia.Si
:range-begin
falta, el rango será "-80".Si
:range-end
falta, el rango será "14-".El código
fuente
#+INCLUDE: "code/basic.sv" :src systemverilog :range-begin "// Example 1" :range-end "// End of Example 1"
. Fragmento 2:#+INCLUDE: "code/basic.sv" :src systemverilog :range-begin "// Example 2" :range-end "// End of Example 2"
. ¡La ejecución es perfecta! ¡Gracias por implementar esto tan rápido!La mejor manera en que puedo pensar es actualizar estos números inmediatamente antes de exportar o antes de evaluar.
El actualizador
Esta es la función que pasa por el búfer. Puede vincularlo a una clave o agregarlo a un gancho. El siguiente código actualiza las líneas cada vez que guarda el archivo , pero si su caso de uso es diferente, ¡descubra qué gancho necesita! (el modo org está lleno de ganchos)
Las expresiones regulares
Aquí es donde define las expresiones regulares que se utilizarán como la primera y la última línea que se incluirán. Puede dar una lista de expresiones regulares para cada extensión de archivo.
El trabajador de fondo
Este es el tipo que hace la mayor parte del trabajo.
fuente
org-export-before-processing-hook
,Every function in this hook will be called with one argument: the back-end currently used, as a symbol
. Como no estamos pasando ningún argumento, obtenemos el errorrun-hook-with-args: Wrong number of arguments
. Ahora no estoy seguro de qué argumento agregar aendless/update-includes
...(&optional dummy)
?(&optional dummy)
realmente funcionó! Pero un efecto secundario interesante de llamar a la función a través del gancho. Si llamo a la función usandoM-x
, modifica el.org
archivo con los números de línea actualizados. Pero si simplemente exporto a html y dejo que el enlace llame a la función, los números de línea actualizados se reflejan solo en el archivo exportado, NO en el.org
archivo.