Cette solution ne nécessite aucun changement init.el
(avec des modifications mineures). Cela implique des évaluations locales des fichiers, mais c'est exactement ce que le PO a demandé. Les avantages de la solution sont:
- demande une confirmation pour évaluer le code
- Le code elisp peut être édité et testé dans l'environnement org-babel
- car la solution ne nécessite pas de modifications
init.el
du fichier orgmode peut être partagée entre les utilisateurs (de confiance)
Je reformule la solution ici.
Ajoutez un bloc src quelque part dans votre fichier:
#+NAME: startup
#+BEGIN_SRC emacs-lisp
(your-code-here)
#+END_SRC
Ensuite, mettez ceci à la fin de votre fichier orgmode:
# Local Variables:
# eval: (progn (org-babel-goto-named-src-block "startup") (org-babel-execute-src-block) (outline-hide-sublevels 1))
# End:
J'ai ajouté (outline-hide-sublevels 1)
parce que j'aime cacher le bloc src dans une rubrique et que les sous-niveaux soient cachés au démarrage. Sans cette déclaration, les sous-niveaux seront étendus de (org-babel-goto-named-src-block "startup")
.
Avec cette solution, emacs demandera 2 fois l'autorisation d'exécuter (1er: appliquer les variables locales; 2e: exécuter "startup" -src-block). Comme j'ai beaucoup de blocs src dans mon fichier, j'ai défini une autre variable de fichier local org-confirm-babel-evaluate
, comme ceci:
# 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:
Avertissement: Avec cet ajout, emacs ne demandera qu'une seule fois l'autorisation d'exécuter - tous les blocs src de ce fichier peuvent maintenant être exécutés sans autre confirmation. Comme d'autres l'ont déjà souligné, ce comportement peut être dangereux et vous devez être très prudent avec ce paramètre.
Cependant, je dirais que cette solution (en particulier la première version) est plus sécurisée que celle donnée par Joe Corneli car au moins il vous sera demandé de confirmer l'exécution. La solution de Joe évaluera le bloc spécial sans confirmation, s'il se trouve dans le fichier. Un attaquant devrait deviner le nom du bloc spécial, bien sûr ...
J'utilise cette approche pour écrire des documents volumineux qui nécessitent, par exemple, des adaptations aux mécanismes d'export org.