Solusi ini tidak memerlukan perubahan init.el
(dengan modifikasi kecil). Ini melibatkan evaluasi file-lokal, tetapi - itulah yang diminta OP. Keuntungan dari solusi ini adalah:
- meminta konfirmasi untuk mengevaluasi kode
- kode elisp dapat diedit dan diuji dalam lingkungan org-babel
- karena solusinya tidak memerlukan modifikasi
init.el
pada file orgmode dapat dibagikan di antara pengguna (tepercaya)
Saya ulangi solusinya di sini.
Tambahkan src-block di suatu tempat di file Anda:
#+NAME: startup
#+BEGIN_SRC emacs-lisp
(your-code-here)
#+END_SRC
Kemudian, letakkan ini di akhir file-orgmode Anda:
# Local Variables:
# eval: (progn (org-babel-goto-named-src-block "startup") (org-babel-execute-src-block) (outline-hide-sublevels 1))
# End:
Saya telah menambahkan (outline-hide-sublevels 1)
karena saya suka menyembunyikan src-block di dalam heading dan ingin agar sublevel disembunyikan saat startup. Tanpa pernyataan ini, sublevel akan diperluas oleh (org-babel-goto-named-src-block "startup")
.
Dengan solusi ini, emacs akan meminta izin untuk mengeksekusi 2 kali (pertama: terapkan Variabel Lokal; 2: jalankan "startup" -src-block). Karena saya memiliki banyak blok-src di file saya, saya telah menetapkan variabel-file-lokal lain org-confirm-babel-evaluate
,, seperti ini:
# 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:
Peringatan: Dengan tambahan ini, emacs hanya akan meminta izin sekali untuk mengeksekusi - semua src-blok dalam file itu sekarang dapat dieksekusi tanpa konfirmasi lebih lanjut. Seperti yang telah ditunjukkan orang lain sebelumnya, perilaku ini bisa berbahaya dan Anda harus sangat berhati-hati dengan pengaturan ini.
Namun, saya berpendapat bahwa solusi ini (terutama versi pertama) lebih aman daripada yang diberikan oleh Joe Corneli karena setidaknya Anda akan diminta untuk melakukan konfirmasi. Solusi Joe akan mengevaluasi blok khusus tanpa konfirmasi, jika ditemukan dalam file. Seorang penyerang harus menebak nama blok khusus, tentu saja ...
Saya menggunakan pendekatan ini untuk menulis dokumen besar yang memerlukan, misalnya, adaptasi terhadap mekanisme ekspor-org.