TL; DR: Usar una biblioteca persistente de babel almacenada en un archivo puede ser una configuración simple de 3 pasos:
- Crea un
org
archivo de modo ~/.emacs.d/library-of-babel.org
.
- Agregue una línea
(org-babel-lob-ingest "~/.emacs.d/library-of-babel.org")
a su conf Emacs.
- Recopile funciones útiles en ese archivo, se leerán durante el inicio de emacs.
El archivo Library-Of-Babel es donde, por ejemplo aggregatebycol1
, se guardaría el bloque de @mutbuerger.
Otro caso de uso de ejemplo simple sería tener un bloque de código, que genera datos de tabla con una fila de encabezado, pero no marca el encabezado con un 'hline
. Esto no es trágico para una visualización simple, pero puede hacer que el procesamiento automatizado posterior sea más complicado. La solución aquí podría ser utilizar un pequeño bloque de código para el procesamiento posterior desde algún lugar de Internet:
#+name: addhdr
#+begin_src emacs-lisp :var tbl=""
(cons (car tbl) (cons 'hline (cdr tbl)))
#+end_src
Esto simplemente canalizará los datos mientras se empalma en 'hline
una segunda fila.
Para usar este bloque más adelante en otros archivos de organización, simplemente agregue una :post
sección de procesamiento a su bloque de fuente de organización generadora de datos:
#+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 |
También puede asignar fácilmente tablas preexistentes a funciones en su LOB:
#+NAME: ExData
| h1 | h2 |
| dh1r1 | dh2r1 |
| dh1r2 | dh2r2 |
#+CALL: addhdr(ExData)
En mi biblioteca tengo capítulos para organizar diferentes tipos de funcionalidad: generación de datos, filtrado, PrettyPrinting, ... Solo recuerde ingest
nuevamente después de agregar nuevos bloques.
org-babel-library-of-babel
. Al buscar bloques de origen, org-babel busca en el archivo actual y en la lista almacenada en la variable anterior. La respuesta de @mutbuerger describe muy bien los detalles, creo.