3

私は組織モードで読み書き可能なプログラムに取り組んでいます。プログラムのreplをセットアップするために使用する関数が.emacsにいくつかあります。これらの関数をorg-modeファイルに移動することは可能ですか?ファイルが開かれるたびに評価されます(バッファローカル変数のようですが、機能。)

4

1 に答える 1

5

eval これは、特別なファイルローカル変数(強調鉱山)を使用して実行できるはずです。

一部の「変数名」は、ローカル変数リストで特別な意味を持ちます。

  • mode指定されたメジャー モードを有効にします。
  • eval指定された Lisp 式を評価します(その式によって返される値は無視されます)。
  • codingこのファイルの文字コード変換のコーディング システムを指定します。コーディング システムを参照してください。
  • unibyte値がt. マルチバイトの無効化を参照してください。

たとえば、この最初の行を含む Org ファイル

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

または、ファイルの最後の 3000 文字内のこのようなブロック

# 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

残念ながら、名前付きブロックを直接呼び出す方法はありません。この方法では、セキュリティのプロンプトが2 回表示されます。1 回はコード ブロック用eval、もう 1 回はコード ブロック用fooです。

于 2014-04-18T14:17:06.257 に答える