Это решение не требует изменений init.el
(с незначительными изменениями). Это включает в себя локальные оценки файлов - но это именно то, о чем просил OP. Преимущества решения:
- запрашивает подтверждение для оценки кода
- код elisp можно редактировать и тестировать в среде org-babel
- поскольку решение не требует изменений в
init.el
файле orgmode, оно может быть передано (доверенным) пользователям
Я перефразирую решение здесь.
Добавьте src-блок где-нибудь в вашем файле:
#+NAME: startup
#+BEGIN_SRC emacs-lisp
(your-code-here)
#+END_SRC
Затем поместите это в конец вашего файла orgmode:
# Local Variables:
# eval: (progn (org-babel-goto-named-src-block "startup") (org-babel-execute-src-block) (outline-hide-sublevels 1))
# End:
Я добавил, (outline-hide-sublevels 1)
потому что мне нравится скрывать блок src внутри заголовка и хочу, чтобы подуровни были скрыты при запуске. Без этого утверждения подуровни будут расширяться (org-babel-goto-named-src-block "startup")
.
В этом решении emacs дважды запросит разрешение на выполнение (1-е: применить локальные переменные; 2-е: выполнить «startup» -src-block). Поскольку в моем файле много блоков src, я установил другую переменную file-local-variable org-confirm-babel-evaluate
, например так:
# 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:
Предупреждение: с этим дополнением, emacs будет запрашивать разрешение на выполнение только один раз - все src-блоки в этом файле теперь могут выполняться без дальнейшего подтверждения. Как уже отмечали другие, такое поведение может быть опасным, и вы должны быть очень осторожны с этим параметром.
Тем не менее, я бы утверждать , что это решение (особенно первая версия) является более безопасным , чем один данным Джо Corneli , потому что по крайней мере у вас будет предложены для подтверждения для выполнения. Решение Джо оценит специальный блок без подтверждения, если он найден в файле. Злоумышленник, конечно, должен угадать название специального блока ...
Я использую этот подход для написания больших документов, которые требуют, например, адаптации к механизмам экспорта в орг.