Esta solução não requer alterações init.el
(com pequenas modificações). Porém, envolve avaliações locais de arquivos - mas é exatamente isso que o OP solicitou. As vantagens da solução são:
- pede confirmação para avaliar o código
- O código elisp pode ser editado e testado no ambiente org-babel
- como a solução não requer modificações
init.el
no arquivo orgmode, pode ser compartilhada entre usuários (confiáveis)
Estou reformulando a solução aqui.
Adicione um bloco src em algum lugar do seu arquivo:
#+NAME: startup
#+BEGIN_SRC emacs-lisp
(your-code-here)
#+END_SRC
Em seguida, coloque isso no final do seu arquivo orgmode:
# Local Variables:
# eval: (progn (org-babel-goto-named-src-block "startup") (org-babel-execute-src-block) (outline-hide-sublevels 1))
# End:
Eu adicionei (outline-hide-sublevels 1)
porque gosto de ocultar o bloco src dentro de um cabeçalho e quero que os subníveis estejam ocultos na inicialização. Sem essa declaração, os subníveis serão expandidos por (org-babel-goto-named-src-block "startup")
.
Com esta solução, o emacs solicitará duas vezes a permissão para executar (1º: aplicar variáveis locais; 2º: executar "startup" -src-block). Como tenho muitos blocos src no meu arquivo, configurei outro arquivo-local-variável org-confirm-babel-evaluate
, como este:
# 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:
Aviso: Com essa adição, o emacs solicitará apenas uma vez a permissão para executar - todos os blocos src nesse arquivo agora podem ser executados sem confirmação adicional. Como outros já apontaram antes, esse comportamento pode ser perigoso e você deve ter muito cuidado com essa configuração.
No entanto, eu argumentaria que esta solução (especialmente a primeira versão) é mais segura do que a fornecida por Joe Corneli, porque pelo menos você será solicitado a confirmar a execução. A solução de Joe avaliará o bloco especial sem confirmação, se ele for encontrado no arquivo. Um atacante teria que adivinhar o nome do bloco especial, é claro ...
Estou usando essa abordagem para escrever documentos grandes que requerem, por exemplo, adaptações nos mecanismos de exportação da organização.