Questa soluzione non richiede cambiamenti in init.el
(con modifiche minori). Implica però valutazioni a livello locale, ma è esattamente quello che l'OP ha richiesto. I vantaggi della soluzione sono:
- chiede conferma per valutare il codice
- il codice elisp può essere modificato e testato all'interno dell'ambiente org-babel
- poiché la soluzione non richiede modifiche al
init.el
file orgmode può essere condivisa tra utenti (attendibili)
Sto riformulando la soluzione qui.
Aggiungi un blocco src da qualche parte nel tuo file:
#+NAME: startup
#+BEGIN_SRC emacs-lisp
(your-code-here)
#+END_SRC
Quindi, inseriscilo alla fine del file orgmode:
# Local Variables:
# eval: (progn (org-babel-goto-named-src-block "startup") (org-babel-execute-src-block) (outline-hide-sublevels 1))
# End:
Ho aggiunto (outline-hide-sublevels 1)
perché mi piace nascondere il blocco src all'interno di un'intestazione e voglio che i sotto-livelli vengano nascosti all'avvio. Senza questa affermazione, i livelli secondari verranno ampliati di (org-babel-goto-named-src-block "startup")
.
Con questa soluzione, emacs chiederà 2 volte l'autorizzazione per l'esecuzione (1 °: applica variabili locali; 2 °: esegui "avvio" -src-block). Dato che ho molti blocchi src nel mio file, ho impostato un'altra variabile locale-file org-confirm-babel-evaluate
, come questa:
# 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:
Avvertenza: con questa aggiunta, emacs richiederà una sola volta l'autorizzazione per l'esecuzione: tutti i blocchi src in quel file ora possono essere eseguiti senza ulteriore conferma. Come altri hanno già sottolineato, questo comportamento potrebbe essere pericoloso e dovresti stare molto attento con questa impostazione.
Tuttavia, direi che questa soluzione (in particolare la prima versione) è più sicura di quella fornita da Joe Corneli perché almeno ti verrà chiesto di confermare l'esecuzione. La soluzione di Joe valuterà il blocco speciale senza conferma, se presente nel file. Un attaccante dovrebbe indovinare il nome del blocco speciale, ovviamente ...
Sto usando questo approccio per scrivere documenti di grandi dimensioni che richiedono, ad esempio, adattamenti ai meccanismi di esportazione dell'organizzazione.