2014-04-18 105 views
3

我正在使用组织模式的识字程序。我在我的.emacs中有几个函数用于为程序设置repl,是否可以将这些函数移动到组织模式文件,并且每次打开文件时都会对它们进行评估(如缓冲区局部变量但与功能)组织模式文件特定功能

回答

5

你应该能够做到这一点使用特殊evalfile-local variable(重点煤矿):

一些“变量名”有一个局部变量列表特殊含义:

  • mode启用指定的主模式。
  • eval计算指定的Lisp表达式(忽略该表达式返回的值)。
  • coding指定此文件字符码转换的编码系统。见Coding Systems
  • unibyte表示在unibyte模式下加载或编译Emacs Lisp文件,如果值为t。见Disabling Multibyte

因此,例如,具有该文件的最后3000个字符中该第一线

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

或嵌段这样一个组织文件

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

将评价打开文件时打开(message "foo")

这是一个安全风险,所以当您打开文件时会提示您。您可以使用y评估一次或!将其保存为自定义文件中的安全评估,并避免以后出现提示。

编辑:

这是一个有点尴尬,但这里是评估其对文件加载一个名为源块的方式:

# -*- 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

是否可以通过组织文件评估指定的源代码块? –

+0

@HamzaYerlikaya,我找不到一个很干净的方式来做到这一点,但我已经用似乎有效的东西更新了我的答案。 – Chris