2014-04-18 4 views
3

Я работаю над грамотной программой в org-режиме. У меня есть несколько функций в моих .emacs, которые я использую для настройки реплики для программы, возможно ли переместить эти функции в файл org-mode, и они оцениваются каждый раз, когда файл открывается (например, буферные локальные вары, но с функции)org-mode Специфичные функции файла

ответ

5

Вы должны быть в состоянии сделать это с помощью специального evalfile-local variable (курсив мой.): ​​

некоторых «имена переменных» имеют особое значение в локальном списке переменных:

  • mode включает указанный основной режим.
  • eval оценивает указанное выражение Lisp (значение, возвращаемое этим выражением, игнорируется).
  • coding определяет систему кодирования для преобразования кода символа этого файла. См. Coding Systems.
  • unibyte говорит, что загружает или компилирует файл Emacs Lisp в режиме unibyte, если значение равно t. См. Disabling Multibyte.

Так, например, файл Org, который имеет первую строку

# -*- eval: (message "foo"); -*- 

или блок, как это в течение последних 3000 символов файла

# Local Variables: 
# eval: (message "foo") 
# End: 

оценит (message "foo"), когда файл открыт.

Это угроза безопасности, поэтому вам будет предложено открыть файл. Вы можете использовать y, чтобы оценить его один раз или !, чтобы сохранить его как безопасную оценку в своем пользовательском файле и избежать будущих запросов.

Edit:

Это немного неудобно, но вот способ оценить блок с именем исходного файла на нагрузке:

# -*- eval: (progn (org-babel-goto-named-src-block "foo") (org-babel-execute-src-block-maybe)) -*- 

#+NAME: foo 
#+BEGIN_SRC emacs-lisp :results silent 
    (message "Yes, it worked") 
#+END_SRC 

К сожалению, я не вижу какой-либо способ позвонить и так вы получите запрос для обеспечения безопасности два раза: один раз для eval и один раз для кодового блока foo.

+0

Можно ли оценить именованный исходный блок из файла org? –

+0

@HamzaYerlikaya, я не могу найти очень чистый способ сделать это, но я обновил свой ответ с чем-то, что кажется сработавшим. – Chris