Обновить *R dired* буфер после выполнения команды в подчиненном процессе ESS

Я хотел бы посоветовать inferior-ess-send-input интерактивная функция для вызова моей функции, которая обновляет *R dired* буфер автоматически. Я пытался использовать after а также around как классы. Например:

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

Я также пытался использовать after и даже изменил исходный код ESS, чтобы создать хук после запуска. У всех них была одна и та же проблема. Я даже определил новую функцию, которая вызывает одну за другой.

Но я продолжаю получать сообщение:

Ошибка ess: процесс ESS не готов. Завершите свою команду, прежде чем пытаться снова.

приходит из ess-command, По какой-то причине добавление этого совета делает sprocess занятый. Есть идеи?

PS

Здесь функция (работа в процессе):

(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,05 секунды было достаточно для подготовки процесса.

Другие вопросы по тегам