Запускать команды в Emacs асинхронно, но отображать вывод постепенно

У меня есть функция полезности:

(defun execute-in-buffer (command-with-args buffer)
  "Execute a string COMMAND-WITH-ARGS representing a shell command with arguments,
inserting the results in BUFFER."
  (switch-to-buffer buffer)
  (insert (format ">>> %s\n" command-with-args))
  (let* ((command-args-list (s-split " " command-with-args))
         (command (car command-args-list))
         (args (cdr command-args-list)))
    (apply 'call-process command nil buffer t args)))

Это позволяет мне делать такие вещи, как(execute-in-buffer "ls /" (get-buffer-create "*my-output*"), Тем не менее, он не очень подходит для медленных команд. Если я вызываю серию медленных команд, я не получаю вывод до самого конца:

(let ((buf (get-buffer-create "*my-output")))
  (execute-in-buffer "sleep 10" buf)
  (execute-in-buffer "ls /" buf))

Я хочу иметь возможность вызывать синхронно, поэтому следующая команда запускается только после завершения предыдущей. Тем не менее, я хочу видеть вывод моих команд во время их выполнения. Как бы я это сделал?

(Пример кода просто для галочки, я с радостью опущу его в пользу чего-то другого.)

Ответы на вопрос(2)

Ваш ответ на вопрос