Tenho o seguinte na minha documentação:
#+INCLUDE: "code/basic.sv" :src systemverilog :lines "14-117"
Aqui a linha 14 é onde eu tenho class basic extends ..
e a linha 116 é onde eu tenho endclass
.
Existe uma maneira de inserir automaticamente os números 14 e 117 (= 116 + 1) para que eu não precise atualizá-los manualmente toda vez que modificar o code/basic.sv
?
org-include-src(FILE, LANGUAGE, REGEX_BEGIN, REGEX_END)
org-export-before-processing-hook
ao pré-processamento dos números de linha. Outra maneira é simplesmente enviar um e-mail pedido de recurso à lista de discussão org :)Respostas:
Aqui está outra opção. Neste exemplo, vamos personalizar as expressões regulares por inclusão. Ele deve se encaixar melhor em alguns fluxos de trabalho, pois você não está limitado a definições baseadas em extensões.
Usar
Faça algo como o seguinte em seu arquivo organizacional. (A
:lines
palavra-chave é opcional)A função visitará "my-class.sv" e procurará esses dois regexps e, em seguida, atualizará a
:lines
palavra - chave de acordo com o resultado da correspondência.Se
:range-begin
estiver faltando, o intervalo será "-80".Se
:range-end
estiver faltando, o intervalo será "14-".O código
fonte
#+INCLUDE: "code/basic.sv" :src systemverilog :range-begin "// Example 1" :range-end "// End of Example 1"
. Trecho 2:#+INCLUDE: "code/basic.sv" :src systemverilog :range-begin "// Example 2" :range-end "// End of Example 2"
. A execução é impecável! Obrigado por implementar isso tão rápido!A melhor maneira de pensar é atualizar esses números imediatamente antes de exportar ou antes de avaliar.
O Atualizador
Essa é a função que passa pelo buffer. Você pode vinculá-lo a uma chave ou adicioná-lo a um gancho. O código a seguir atualiza as linhas sempre que você salva o arquivo , mas se o seu caso de uso for diferente, basta descobrir qual gancho você precisa! (o modo organizacional está cheio de ganchos)
The Regexps
É aqui que você define os regexps que serão usados como a primeira e a última linha a serem incluídas. Você pode fornecer uma lista de regexps para cada extensão de arquivo.
O trabalhador em segundo plano
Esse é o cara que faz a maior parte do trabalho.
fonte
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 não estamos passando nenhum argumento, obtemos o errorun-hook-with-args: Wrong number of arguments
. Agora não tenho certeza de qual argumento adicionar aendless/update-includes
...(&optional dummy)
?(&optional dummy)
realmente funcionou! Mas um efeito colateral interessante de chamar a função via gancho. Se eu chamar a função usandoM-x
, ela modifica o.org
arquivo com os números de linha atualizados. Mas se eu simplesmente exportar para html e permitir que o gancho chame a função, os números de linha atualizados serão refletidos apenas no arquivo exportado, NÃO no.org
arquivo.