TL; DR: o uso de uma biblioteca persistente de babel armazenada em um arquivo pode ser uma configuração simples em três etapas:
- Crie um
org
arquivo -mode ~/.emacs.d/library-of-babel.org
.
- Adicione uma linha
(org-babel-lob-ingest "~/.emacs.d/library-of-babel.org")
ao seu Emacs conf.
- Colete funções úteis nesse arquivo, elas serão lidas durante a inicialização do emacs.
O arquivo Library-Of-Babel é onde, por exemplo, o aggregatebycol1
bloco de @mutbuerger seria salvo.
Outro exemplo simples de caso de uso seria ter um bloco de código, que gera dados da tabela com uma linha de cabeçalho, mas não marca a lista de espera com um 'hline
. Isso não é trágico para a exibição simples, mas pode envolver ainda mais o processamento automatizado. A solução aqui pode estar usando um pequeno bloco de código para pós-processamento de algum lugar da Internet:
#+name: addhdr
#+begin_src emacs-lisp :var tbl=""
(cons (car tbl) (cons 'hline (cdr tbl)))
#+end_src
Isso simplesmente percorrerá os dados enquanto emenda em uma 'hline
segunda linha.
Para usar esse bloco posteriormente em outros arquivos organizacionais, basta adicionar uma :post
sub-rotina de processamento ao seu bloco de origem organizacional gerador de dados:
#+NAME: Example
#+BEGIN_SRC elisp :post addhdr(*this*)
'(("Header1" "Column2" "Three")("R1C1V" "2" "C3R1")("4" "5" "6"))
#+END_SRC
#+RESULTS: Example
| Header1 | Column2 | Three |
|---------+---------+-------|
| R1C1V | 2 | C3R1 |
| 4 | 5 | 6 |
Você também pode atribuir facilmente tabelas preexistentes a funções no seu LOB:
#+NAME: ExData
| h1 | h2 |
| dh1r1 | dh2r1 |
| dh1r2 | dh2r2 |
#+CALL: addhdr(ExData)
Na minha biblioteca, tenho capítulos para organizar diferentes tipos de funcionalidade: geração de dados, filtragem, impressão bonita, ... Lembre-se ingest
novamente após adicionar novos blocos.
org-babel-library-of-babel
. Ao procurar por blocos de origem, o org-babel procura no arquivo atual, bem como na lista armazenada na variável acima. A resposta de @mutbuerger descreve os detalhes muito bem, eu acho.