이 솔루션은 변경 이 필요하지 않습니다 init.el
(사소한 수정). 파일 로컬 평가가 필요하지만 OP가 요청한 것과 정확히 같습니다. 솔루션의 장점은 다음과 같습니다.
- 코드를 확인하기 위해 확인을 요청합니다
- org-babel 환경에서 elisp 코드를 편집하고 테스트 할 수 있습니다
- 솔루션이
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을 숨기고 시작할 때 하위 수준을 숨기고 싶기 때문에 추가했습니다 . 이 문장이 없으면 하위 수준이로 확장됩니다 (org-babel-goto-named-src-block "startup")
.
이 솔루션을 사용하면 emacs는 실행 권한을 두 번 요청합니다 (첫 번째 : 로컬 변수 적용; 두 번째 : "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 블록 을 추가 확인없이 실행할 수 있습니다. 다른 사람들이 이전에 지적했듯이이 동작은 위험 할 수 있으므로이 설정에 매우주의해야합니다.
그러나, 나는이 솔루션 (특히 첫 번째 버전)이보다 더 안전하다고 주장 거라고 조 Corneli에 의해 주어진 하나 적어도 당신이 있기 때문에 것입니다 실행 확인을 묻는 메시지가. Joe의 솔루션은 파일에서 발견 된 경우 확인없이 특수 블록을 평가합니다. 공격자는 물론 특수 블록의 이름을 추측해야합니다.
이 접근 방식을 사용하여 조직 내보내기 메커니즘에 대한 적응과 같은 큰 문서를 작성하고 있습니다.