10

Rドキュメントでコード チャンクを使用する場合.Rnw、emacs バッファーはカーソルがコード チャンク内 (つまり<<>>と内@) にあることを自動的に検出し、ESS モードに切り替えます。コードチャンク、さらに便利なことに、コード行/領域を下位の*R*プロセスバッファに送信できます。

Rコード ブロック内 (つまり#+begin_src Rとの間)の組織モード ファイルで同じ機能を取得するにはどうすればよいですか? #+end_srcemacs が R コード コード ブロック内にあることを自動的に認識し、ESS モードをオンにしてスニペットを送信できるようにしたいと考えています。プロセスへのコードの*R*Ctl-C '別の ESS モード バッファに切り替えて、コードを編集し、他のすべての ESS モードの便利な機能を取得できることを認識しています (へのコードの送信を含むR)。ただし、これを行う必要はありません。つまり、同じ組織モード バッファー内の R コード ブロックからコード スニペットを送信できるようにしたいのです。

4

5 に答える 5

5

私の知る限り、これは Org-mode の現在の実装では実行できません。

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

最初に...ブロック内にいるかどうかを確認し、次にコードチャンクを確認するROrg-mode フックを作成することにより、特定のコードに対してこれを回避する方法がおそらくあります。これは厄介で、他の Org-mode 機能と競合すると思います。さらに、現在のコード ブロックを取得し、ブロックに追加したすべてのオプションと共に Org-mode のインタープリターに渡す別の関数を作成する必要があります。 #+begin_src R#+end_src RRsrc

于 2011-12-05T17:45:30.793 に答える
4

1 年ほど前に、org-mode-list で同じ質問をしました。@cm2 は、組織モード内で ESS 機能を使用することはできないと既に述べています。私の知る限り、Emacs は 2 つの主要なモードを処理できず、mmm-mode を使用しても、いくつかの問題があるようです。

Dan Davison は、ESS 機能の一部を模倣した elisp コードを投稿してくれました。ですから、私の質問に対するダンの回答をチェックしてみてください。

于 2011-12-05T23:24:21.290 に答える
0

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

于 2014-11-26T20:56:39.537 に答える
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)
于 2015-03-06T15:31:12.460 に答える