2014-04-18 100 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