このソリューションでは、変更は必要ありませんinit.el
(わずかな変更を加えます)。ただし、ファイルローカルの評価が含まれますが、それはまさにOPが求めていたものです。ソリューションの利点は次のとおりです。
- コードを評価するために確認を求めます
- elispコードは、org-babel環境内で編集およびテストできます
- ソリューションは
init.el
orgmodeファイルへの変更を必要としないため、(信頼できる)ユーザー間で共有できます。
ここで解決策を言い換えます。
ファイルのどこかにsrc-blockを追加します。
#+NAME: startup
#+BEGIN_SRC emacs-lisp
(your-code-here)
#+END_SRC
次に、これをorgmode-fileの最後に追加します。
# 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は実行の許可を2回要求します(1番目:ローカル変数の適用、2番目: "startup" -src-blockの実行)。私のファイルには多くのsrc-blocksがあるのでorg-confirm-babel-evaluate
、次のように別のfile-local-variableを設定しました:
# 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は実行の許可を1回だけ要求します- そのファイル内のすべてのsrc-block は、これ以上の確認なしに実行される可能性があります。他の人が以前に指摘したように、この動作は危険である可能性があり、この設定には十分注意する必要があります。
しかし、私は、このソリューション(特に最初のバージョンが)よりも安全であることを主張したいジョーCorneliによって与えられた1、少なくともあなたがいるためでしょう実行するための確認を求められます。Joeのソリューションは、ファイルに見つかった場合、確認なしで特殊ブロックを評価します。もちろん、攻撃者は特別なブロックの名前を推測する必要があります...
私はこのアプローチを使用して、たとえばorg-exportメカニズムへの適応を必要とする大きなドキュメントを記述しています。