2

R に関する Stackoverflow の質問に答えるのに適したレイアウトをすばやく表示するために、小さなインタラクティブな elisp 関数を作成しようとしています。一時的な R ファイルを開き、それに関連付けられた R セッションを別のフレームで起動するというアイデアです。

これまでのところ、私はこの非常に単純なことを書きました:

(defun jb-so ()
  "Start R for StackOverflow layout"
  (interactive)
  (find-file "/tmp/so.R")
  (new-frame)
  (R))

2 つの詳細を除いて、ほとんど問題ありません。

  • で R セッションを起動することを確認するプロンプトが表示され/tmpます。自動的に受け入れる方法はありますか?
  • セッションはデフォルトで呼び出されますが、他の実行中または将来のセッションとの競合を避けるために*R*、特定の名前を付けたいと思います。*RSo*関数から直接行う方法はありますか?

前もって感謝します !

4

1 に答える 1

5

ess が起動時に考慮するオプションはたくさんあります。したがって、emacs の動的スコープはここで本当に役立ちます。

(defun jb-so ()
  "Start R for StackOverflow layout"
  (interactive)
  (find-file "/tmp/so.R")
  (let ((ess-ask-for-ess-directory nil)
        (inferior-ess-same-window nil)
        (ess-gen-proc-buffer-name-function (lambda (nm) "*RSO*")))
    (R)
    (pop-to-buffer "so.R")))

これは、プロセス バッファにカスタム名を設定する機能を提供する最近のバージョンの ESS でのみ機能することに注意してください (「 」を参照ess-gen-proc-buffer-name-function)。で下位バッファの名前を変更することもできますM-x rename-buffer

于 2013-02-01T10:37:36.213 に答える