Diese Lösung erfordert keine Änderung init.el
(mit geringfügigen Änderungen). Es handelt sich zwar um dateilokale Auswertungen - aber genau darum hat das OP gebeten. Vorteile der Lösung sind:
- bittet um Bestätigung zur Auswertung des Codes
- Elisp-Code kann in der org-babel-Umgebung bearbeitet und getestet werden
init.el
Da für die Lösung keine Änderungen an der Organisationsmodusdatei erforderlich sind, können diese von (vertrauenswürdigen) Benutzern gemeinsam genutzt werden
Ich formuliere die Lösung hier neu.
Fügen Sie irgendwo in Ihrer Datei einen src-Block hinzu:
#+NAME: startup
#+BEGIN_SRC emacs-lisp
(your-code-here)
#+END_SRC
Dann setzen Sie dies am Ende Ihrer orgmode-Datei:
# Local Variables:
# eval: (progn (org-babel-goto-named-src-block "startup") (org-babel-execute-src-block) (outline-hide-sublevels 1))
# End:
Ich habe hinzugefügt, (outline-hide-sublevels 1)
weil ich den src-Block gerne in einer Überschrift ausblenden möchte und möchte, dass die Unterebenen beim Start ausgeblendet werden. Ohne diese Aussage werden die Unterebenen um erweitert (org-babel-goto-named-src-block "startup")
.
Bei dieser Lösung werden emacs zweimal um die Erlaubnis zur Ausführung gebeten (1. lokale Variablen anwenden; 2. "Startup" -src-Block ausführen). Da ich viele src-Blöcke in meiner Datei habe, habe ich eine andere dateilokale Variable festgelegt org-confirm-babel-evaluate
, wie folgt:
# 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:
Warnung: Mit diesem Zusatz fordert emacs nur einmal zur Ausführung auf - alle src-Blöcke in dieser Datei können jetzt ohne weitere Bestätigung ausgeführt werden. Wie andere bereits erwähnt haben, kann dieses Verhalten gefährlich sein, und Sie sollten mit dieser Einstellung sehr vorsichtig sein.
Ich würde jedoch argumentieren , dass diese Lösung (vor allem der erste Version) ist sicherer als die von Joe Corneli gegeben , weil zumindest Sie werden zur Bestätigung aufgefordert werden , auszuführen. Joes Lösung wertet den speziellen Block ohne Bestätigung aus, wenn er in der Datei gefunden wird. Ein Angreifer müsste natürlich den Namen des Spezialblocks erraten ...
Ich verwende diesen Ansatz, um große Dokumente zu schreiben, die beispielsweise Anpassungen an den Organ-Export-Mechanismen erfordern.