Esta solución no requiere cambios en init.el
(con modificaciones menores). Sin embargo, implica evaluaciones locales de archivo, pero eso es exactamente lo que solicitó el OP. Las ventajas de la solución son:
- pide confirmación para evaluar el código
- El código elisp se puede editar y probar dentro del entorno org-babel
- como la solución no requiere modificaciones en
init.el
el archivo orgmode, puede compartirse entre usuarios (de confianza)
Estoy reformulando la solución aquí.
Agregue un bloque src en algún lugar de su archivo:
#+NAME: startup
#+BEGIN_SRC emacs-lisp
(your-code-here)
#+END_SRC
Luego, coloque esto al final de su orgmode-file:
# Local Variables:
# eval: (progn (org-babel-goto-named-src-block "startup") (org-babel-execute-src-block) (outline-hide-sublevels 1))
# End:
Agregué (outline-hide-sublevels 1)
porque me gusta ocultar el bloque src dentro de un encabezado y quiero que los subniveles se oculten en el inicio. Sin esta declaración, los subniveles se expandirán por (org-babel-goto-named-src-block "startup")
.
Con esta solución, emacs pedirá 2 veces permiso para ejecutar (primero: aplicar variables locales; segundo: ejecutar "inicio" -src-block). Como tengo muchos bloques src en mi archivo, configuré otra variable local de archivo org-confirm-babel-evaluate
, como esta:
# Local Variables:
# org-confirm-babel-evaluate: nil
# eval: (progn (org-babel-goto-named-src-block "startup") (org-babel-execute-src-block) (outline-hide-sublevels 1))
# End:
Advertencia: con esta adición, emacs solicitará solo una vez permiso para ejecutar; todos los bloques src en ese archivo ahora se pueden ejecutar sin más confirmación. Como otros han señalado antes, este comportamiento podría ser peligroso y debe tener mucho cuidado con esta configuración.
Sin embargo, argumentaría que esta solución (especialmente la primera versión) es más segura que la que ofrece Joe Corneli porque al menos se le pedirá confirmación para ejecutar. La solución de Joe evaluará el bloque especial sin confirmación, si se encuentra en el archivo. Un atacante tendría que adivinar el nombre del bloque especial, por supuesto ...
Estoy usando este enfoque para escribir documentos grandes que requieren, por ejemplo, adaptaciones a los mecanismos de exportación de la organización.