Refresh *R dired* buffer after executing command in inferior ESS process

1k Views Asked by At

I'd like to advise the inferior-ess-send-input interactive function to call my function which refreshes the *R dired* buffer automatically. I've tried using after and around as classes. For example:

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

I've also tried using after and even changed the source code of ESS to create a post-run hook. All of them had the same issue. I've even defined a new function which calls one after the other.

But I keep getting the message:

ess-error: ESS process not ready. Finish your command before trying again.

comming from ess-command. For some reason, adding this advice makes sprocess busy. Any ideas?

P.S.

Here the function is (work in progress):

(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

There are 1 best solutions below

3
On

I discovered that waiting 0.05 seconds was enough time for the process to get ready.