Uruchom komendy w Emacs asynchronicznie, ale wyświetlaj dane wyjściowe stopniowo

Mam funkcję użytkową:

(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)))

To pozwala mi robić takie rzeczy jak(execute-in-buffer "ls /" (get-buffer-create "*my-output*"). Nie nadaje się jednak do powolnych poleceń. Jeśli wywołam serię powolnych poleceń, nie otrzymam żadnego wyjścia do samego końca:

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

Chcę móc wywoływać synchronicznie, więc następne polecenie działa tylko po zakończeniu poprzedniego. Jednak chcę zobaczyć dane wyjściowe z moich poleceń podczas ich uruchamiania. Jak bym to zrobił?

(Przykładowy kod jest tylko na pokaz, cieszę się, że upuściłem go na rzecz czegoś innego.)

questionAnswers(2)

yourAnswerToTheQuestion