在劣质ESS过程中执行命令后刷新* R dired *缓冲区

时间:2014-08-04 04:42:26

标签: r emacs hook ess comint-mode

我想建议inferior-ess-send-input交互式函数调用我的函数来自动刷新*R dired*缓冲区。我已尝试使用afteraround作为类。例如:

(defadvice inferior-ess-send-input (around ess-revert-rdired-after-send activate)
    ad-do-it
    (call-interactively 'ess-revert-rdired-buffer))

我也尝试过使用after甚至更改了ESS的源代码来创建一个运行后挂钩。所有人都有同样的问题。我甚至定义了一个接一个调用的新函数。

但我不断收到消息:

  

ess-error:ESS流程尚未就绪。在再次尝试之前完成命令。

来自ess-command。出于某种原因,添加此建议会使sprocess忙碌。有什么想法吗?

P.S。

这里的功能是(正在进行中):

(defun ess-revert-rdired-buffer ()
  "If the buffer is live, update it. If it isn't start it."
  (interactive)
  (save-selected-window
     (if (buffer-live-p (get-buffer "*R dired*"))
    (save-excursion
      (with-current-buffer "*R dired*"
        (revert-buffer)))
      (ess-rdired))))

1 个答案:

答案 0 :(得分:1)

我发现等待0.05秒就足以让流程做好准备。