Specifically, in the no output case, you have:
(let ((lines (save-excursion
(set-buffer buffer)
(if (= (buffer-size) 0)
0
(count-lines (point-min) (point-max))))))
(cond ((= lines 0)
(if success
(display-message
'command
(if (eql exit-status 0)
"(Shell command succeeded with no output)"
"(Shell command failed with no output)")))
(kill-buffer buffer))
[...]
What is the reason for that kill-buffer? I see nothing in the
documentation telling that the no output case is special...
OG.