Пробовал с Elisp, но не сработало -говорит неправильное количество аргументов. Если вы знакомы с Elips, вероятно, это можно было бы сделать элегантно, без усилий. Но я включаю свои тяжелые -руки, чтобы вы сразу поняли, что я пытаюсь сделать.
(defun copy-all ()
"Copy entire buffer to clipboard"
(interactive)
(let ((pos (point)))
(progn
(mark-whole-buffer)
(clipboard-kill-ring-save)
(keyboard-quit)
(goto-char pos)
(message "Copy done."))))