I recently found a method that works great. I'm sure there other, (possibly more elegant) solutions, but this gets the job done.
There are two functions to define for this solution; the best place for them is probably your .emacs file.
The first function, beginning-of-buffer(), from rattlesnake.com simply moves the point to the beginning of the buffer, leaving the mark wherever it happens to currently be.
(defun beginning-of-buffer()
"Move point to the beginning of the buffer."
(interactive)
(push-mark)
(goto-char (point-min))
The second function, clear-buffer(), from Audacity Init-Nyquist, deletes everything in the buffer and moves the point to the beginning of the buffer.
(defun clear-buffer()
"Kill all of the text in the current buffer."
(interactive)
(clipboard-kill-region 1 (point-max))
(beginning-of-buffer)
It is of course possible to combine these two functions together if there is no reason to re-use beginning-of-buffer(). Once this is in your .emacs file, or has been run in Emacs, you can type M-x clear-buffer to clear the current buffer. It can also be mapped to a key combination like any other function.
