org-mode: destaque linhas em blocos src quando exportados


7

O Github tem uma maneira conveniente de mostrar algumas linhas conforme destacadas no código, assim .

Gostaria de saber se existe uma maneira de configurar algo semelhante aos blocos de código do modo organizacional ao exportar (no meu caso de uso, para HTML), para que eu possa mostrar um bloco de código mais longo para o contexto e ainda apontar o leitor rapidamente para as linhas que foram adicionados ou modificados.

Não encontrei nada óbvio na documentação. Não sei por onde começaria a pesquisa para implementar isso pessoalmente.

Isso pode ser feito? Já foi implementado? Caso contrário, posso implementar isso sozinho? Por onde eu começaria?

Descobri que o modo organizacional exporta para HTML e fornece uma .code-highlightedclasse, mas isso parece ser apenas para as (ref:xx)ferramentas: passe o mouse sobre uma referência, o código correspondente é destacado.


Não há como escrever algum código, eu acho. Você provavelmente precisará marcar seu bloco de código com algo parecido com um comentário e, em seguida, usar um filtro organizacional para modificar a saída com a marcação html necessária para o destaque.
John Kitchin 23/02

Respostas:


2

Com base na sintaxe do rótulo coderef, uso um (hl:line)pseudo rótulo que é substituído por uma função de filtro de exportação de organização. As linhas referenciadas são agrupadas em um divcom um atributo 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)

Observe que os rótulos devem estar no final da linha, como mostrado no exemplo a seguir:

(functionp &rest form)           (hl:line)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.