2011-12-05 9 views
9

.Rnw文書にコードチャンクを使用すると、emacsバッファーはカーソルがコードチャンク内にあることを自動的に検出します(つまり<<>>@)。これはESSを得ることができるため、ESSモードに切り替わりますコードチャンク内のコードベースのコードフォーマットであり、より有用には、コードライン/領域を下位の*R*プロセスバッファに送ることができる。私はEmacsが自動的にそれはRコードのコード・ブロック内だ認識し、ESSをオンにしたい - 私はRコードブロック(すなわち#+begin_src R#+end_src間)内の組織モードのファイルで同じ機能を取得するにはどうすればよいEmacs、R、Org-mode:Rコードブロック内で自動的にESSモードに切り替える方法は?

-modeので、コードのスニペットを*R*プロセスに送信できます。 Ctl-C 'を実行し、別のESSモードバッファに切り替えてコードを編集し、他のESSモードの利便性(コードの送信を含めてR)を取得できることを知っています。しかし、にはが必要です。つまり、同じorg-modeバッファーのRコードブロックからコードスニペットを送信できるようにしたいとします。

+0

[mmm-mode](http://www.emacswiki.org/emacs/MmmMode)がありますが、それはあなたに役立つかもしれません。私はそれを自分で使ったことはありません。 – Adobe

答えて

4

1年ほど前、私はsame questionにorg-mode-listを尋ねました。 @ cm2はすでにorg-modeでESS機能を使用することはできません。私が知る限り、Emacsは2つの主要なモードを扱うことができず、mmmモードでさえ、いくつかの困難があるようです。

Dan DavisonはESS機能のいくつかを模倣したelispコードを親切に投稿しました。だから、ダンの返事を私の質問にチェックしたいかもしれない。

+0

ありがとうございます@Bernd。あなたが言及した電子メールスレッドは、私が必要としていたほとんどの機能に対処しているようです。私は "shift-enter"がRコードブロックからRプロセスにコードを送ることを可能にする方法を調べなければなりません。それから私はすべてセットになります。ほぼ完全なソリューションを使って実際の電子メールスレッドを指していたので、私はあなたの答えを受け入れられた答えとして選択しています。 –

4

AFAIKこれは、Org-modeの現在の実装では実行できません。

これは、elispコードを掘り下げることなく、Org-mode内で実行可能であるかどうかはわかりません。 Org-modeのC-c 'コマンドの主なポイントは、特定の言語で必要とする/必要とするすべての構文が強調されたバッファを追加することです。

あなたは#+begin_src R ... #+end_src Rブロック内にあるかどうかを確認するために最初にチェックするいくつかの組織モードのフックを書いて、その後、コードチャンクをチェックすることによってR固有のコードのために、これを回避ハックする方法はおそらくあります。私はこれが厄介で、他の組織モードの機能と矛盾していると思われます。さらに、現在のコードブロックを取得し、Org-modeのRインタープリタと、srcブロックに追加したすべてのオプションに渡すための別の関数を記述する必要があります。

+0

お返事ありがとうございます。あなたのお答えは最高の答えです。そこに私が欠けている解決策がないことを知っているのは良いことです。そして今のところ私はそれをあきらめて、私のワークフローに 'Ctl-C ''を含めます。 –

0

ポリモードパッケージのpoly-org.elは、org-modeでの複数モード編集に対応するように設計されています。私は試しましたが、Emacsは間接バッファーのjit-lockを有効にしないためにフリーズします。

0

回避策は、必要に応じてモード間で手動で切り替えることです。たとえば、.emacsに次のコードを追加し、F6を使用します。

;; Toggle between org & R modes. 
(defun toggle-org-R-mode() 
    (interactive) 
    "Toggle mode between org-R modes" 
    (cond 
    ((string= major-mode "org-mode") 
    (R-mode)) 
    ((string= major-mode "ess-mode") 
    (org-mode)) 
    ) 
) 
(global-set-key [f6] 'toggle-org-R-mode) 
関連する問題