ESS にバッファー (Cc、Cb など) から以下を評価するように要求する場合
par(ask=TRUE)
plot(1,1)
plot(2,1)
ESS が引数 --no-readline で R セッションを開始するため、インタープリターは無限ループに入ります。ループは Cg で中断できますが、インタープリターに実際にユーザー入力を要求させる方法はありますか?
ess-r-d.el
解決策は、 に指定されたハードコードされ--no-runtime
たオプションを編集して削除するR
ことです。これは、最新の実装の 127 行目です。
変化する
(let* ((r-always-arg
(if (or ess-microsoft-p (eq system-type 'cygwin))
"--ess "
"--no-readline "))
に
(let* ((r-always-arg
(if (or ess-microsoft-p (eq system-type 'cygwin))
"--ess "))
コンパイル済みのバージョンがある場合は、それをコンパイルし.el
てバイナリ.elc
ファイルを生成および置換する必要があります。
ファイルは(ディレクトリの場所はOSによって異なります)
site-lisp
ディレクトリで。.el
ファイルを emacs (^X^F) で編集してM-x byte-compile-file
から、.elc
.
zip/tar ソース パッケージ全体からインストールした場合は、lisp
ディレクトリに。この場合、変更後に を実行し、make
その後に を実行しmake install
ます。
もちろん、およびファイルwrite
にアクセスできる必要があります。.el
.elc
ファイルのコンパイルに慣れていない場合は、.el
単純に削除して ( .elc
)、.el
バージョンのみを使用できます (パフォーマンスの違いはわずかです)。
(GoogleとRSiteSearchesから収集された戦略):
いずれかのセッションウィンドウで「Returnキーを押してください」というプロンプトが表示されますか?もしそうなら...ヒット。
そうでない場合は、プロットウィンドウをクリックしてみてください。
それが失敗した場合は、cGで制御を取り戻す必要があります。
編集:確かにESS-非対話性の問題を解決しないさらなる戦略:ユーザー入力を保持したい場合は、readLinesを使用できます:
input=file("stdin")
print(readLines(input,1))