org-mode: resaltar líneas en bloques src cuando se exporta

7

Github tiene una forma conveniente de mostrar algunas líneas como se destaca en el código, como tal .

Me gustaría saber si hay una manera de configurar algo similar con los bloques de código del modo org al exportar (en mi caso de uso, a HTML), para poder mostrar un bloque de código más largo para el contexto y, sin embargo, apuntar al lector rápidamente hacia las líneas que fueron agregados o modificados.

No he encontrado nada obvio en la documentación. No sé dónde comenzaría la investigación para implementar esto yo mismo.

Se puede hacer esto? ¿Ya ha sido implementado? Si no, ¿puedo implementar esto yo mismo? ¿Por dónde empezaría?

Descubrí que el modo org se exporta a HTML y proporciona una .code-highlightedclase, pero parece ser solo para las (ref:xx)herramientas: al pasar el mouse sobre una referencia, se resalta el código correspondiente.

Trevoke
fuente
No hay forma sin escribir un código, creo. Probablemente necesite marcar su bloque de código con algo que parezca un comentario, y luego usar un filtro de organización para modificar la salida con el marcado html requerido para resaltar.
John Kitchin

Respuestas:

2

Basado en la sintaxis de la etiqueta coderef, uso una (hl:line)pseudo etiqueta que se reemplaza por una función org-export-filter. Las líneas referenciadas se envuelven en un divatributo de estilo:

(defun org-html-hl-line (src backend info)
  (when (org-export-derived-backend-p backend 'html)
    (replace-regexp-in-string
     "\\([^\n]+\\)(hl:line)\n"
     "<div style=\"background-color: rgb(248, 238, 199);\">\\1\n</div>" src)))

(add-to-list 'org-export-filter-src-block-functions
             'org-html-hl-line)

Tenga en cuenta que las etiquetas deben estar al final de la línea como se muestra en el siguiente ejemplo:

(functionp &rest form)           (hl:line)
mutbuerger
fuente