3

ESS バッファーで多数の R プロセスが実行されていることがよくあります。ess-request-a-processR プロセスを要求し、それを前面に出す便利な Lisp 関数があります。唯一の欠点は、どういうわけかデフォルトでSになることです。そのため、切り替えようとするたびに、うんざりしてRと入力する必要があります。

変数をカスタマイズしてみましたess-languageが、値を「R」に設定した場合、つまり現在のセッションで 4 を設定した場合、または将来のセッションのために設定を保存した場合でも、入力するとすぐC-c C-kに自動的にSが再び表示されます。C-x C-bそれは非常に面倒です。そしてC-s、目的の R セッションに行き着きたくはありません。=)

私も設定しようとし(setq-default ess-language "R")まし.emacsたが、うまくいきませんでした...

ところで、私は Linux Mint で Emacs v. 23.1.1 を、Arch Linux で Emacs v. 23.2 を ESS v. 5.12 で実行しています。それが関係する場合は、引数を指定して端末から Emacs を実行し-nwます。これが私のもの.emacsです:

;; start server
(server-start)

;; load ESS
(require 'ess-site)
(require 'ess-rutils)

;; set HTML help as default
(setq inferior-ess-r-help-command "help(\"%s\", help_type = \"html\")\n")

(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(ess-help-kill-bogus-buffers t)
 '(ess-rutils-keys nil)
 '(show-paren-mode t))
(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 )
(put 'upcase-region 'disabled nil)

それで... Rを一度だけ設定する方法は?(S/S+/SASは使っていません)

4

1 に答える 1

3

今までこの機能を知りませんでした。ESS バッファーにC-c C-kバインドされます。ess-force-buffer-current

[編集: C-c C-k iESS では ess-request-a-process にバインドされていますが、ESS ではess-force-buffer-current]

いずれにせよ、カスタマイズする必要がある変数はess-dialect

(setq-default ess-dialect "R")

これはバッファローカル変数であり、他のいくつかのものによってess-mode-hook異なる値が設定される場合があります。

各バッファで確認してください C-h v ess-dialect

さらに、すでに複数のプロセスを実行している場合は、ess-switch-process( C-c C-s) が適切な方法である可能性があります。[編集: プロセスにジャンプするのではなく、現在の ESS バッファーの関連するプロセスをリセットするだけです]

[編集: この問題を深く掘り下げた後、変数をess-request-a-process使用する方が適切であることが判明しました。問題は、ess-inferior プロセスが開始されるたびに、グローバル値の がリセットされることです。これが、あなたのケースで設定してもうまくいかなかった理由です。ess-languageess-dialectess-language

ここに簡単な修正があります:

(defun ess-set-language ()
  (setq-default ess-language "R")
  (setq ess-language "R")
  )

(add-hook 'ess-post-run-hook 'ess-set-language t)

]

于 2010-12-08T08:53:18.703 に答える