2

我正在尝试创建一个小型交互式 elisp 函数,以便快速显示适合回答有关 R 的 Stackoverflow 问题的布局。这个想法是打开一个临时 R 文件,并在另一个框架中启动与其关联的 R 会话。

到目前为止,我写了这个非常简单的东西:

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

几乎没问题,除了两个细节:

  • 有一个提示确认我要在/tmp. 有没有办法自动接受它?
  • 默认情况下会调用会话*R*,但我想给它一个特定的名称,例如*RSo*为了避免与其他正在运行或将来的会话发生冲突。有没有办法直接从函数中做到这一点?

提前致谢 !

4

1 回答 1

5

启动时有很多选择值得尊重。所以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 回答