โซลูชันนี้ไม่จำเป็นต้องเปลี่ยนแปลงinit.el
(ด้วยการแก้ไขเล็กน้อย) มันเกี่ยวข้องกับการประเมินแบบโลคอลไฟล์ - แต่นั่นคือสิ่งที่ OP ต้องการ ข้อดีของการแก้ปัญหาคือ:
- ขอให้ยืนยันการประเมินรหัส
- รหัส elisp สามารถแก้ไขและทดสอบภายในสภาพแวดล้อม org-babel
- เนื่องจากโซลูชันไม่ต้องการการแก้ไข
init.el
ไฟล์ orgmode อาจถูกแชร์กับผู้ใช้ (ที่เชื่อถือได้)
ฉันกำลังปรับปรุงคำแก้ปัญหาที่นี่
เพิ่ม src-block บางแห่งในไฟล์ของคุณ:
#+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-block ภายในส่วนหัวและต้องการให้ระดับย่อยถูกซ่อนเมื่อเริ่มต้น โดยไม่ต้องคำสั่งนี้ sublevels (org-babel-goto-named-src-block "startup")
จะกลายเป็นขยายตัว
ด้วยโซลูชันนี้ emacs จะขอสิทธิ์ในการดำเนินการ 2 ครั้ง (วันที่ 1: ใช้ตัวแปรท้องถิ่นอันดับที่ 2: เรียกใช้ "startup" -src-block) เนื่องจากฉันมีบล็อก src จำนวนมากในไฟล์ของฉันฉันได้ตั้งค่าตัวแปรไฟล์ท้องถิ่นอีกไฟล์หนึ่ง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 ทั้งหมดในไฟล์นั้นอาจถูกเรียกใช้งานโดยไม่ต้องมีการยืนยันเพิ่มเติม ดังที่คนอื่น ๆ ชี้ไว้ก่อนหน้านี้พฤติกรรมนี้อาจเป็นอันตรายและคุณควรระมัดระวังในการตั้งค่านี้
อย่างไรก็ตามฉันขอยืนยันว่าโซลูชันนี้ (โดยเฉพาะรุ่นแรก) มีความปลอดภัยมากกว่าโซลูชันที่โจคอร์เนลีมอบให้เพราะอย่างน้อยคุณจะถูกขอให้ยืนยันการดำเนินการ ทางออกของโจจะประเมินบล็อกพิเศษโดยไม่มีการยืนยันถ้าพบในไฟล์ ผู้โจมตีจะต้องเดาชื่อของบล็อคพิเศษแน่นอน ...
ฉันใช้วิธีนี้เพื่อเขียนเอกสารขนาดใหญ่ที่ต้องการเช่นการปรับตัวให้เข้ากับกลไกการส่งออกองค์กร