Le buffer scratch sert pour les notes qui n’ont pas besoin d’être sauvegardées et pour évaluer du code Lisp.
Le buffer scratch est bien pratique mais on a souvent tendance à le tuer pour effacer son contenu.
Pour le recréer on peut utiliser une fonction simple:
(defun create-scratch-buffer nil
"créer un buffer scratch"
(interactive)
(switch-to-buffer (get-buffer-create "*scratch*"))
(lisp-interaction-mode)) Une autre solution consiste à le recréer automatiquement chaque fois qu’il est tué. Pour cela ajouter le code suivant dans le .emacs:
;; If the *scratch* buffer is killed, recreate it automatically
;; FROM: Morten Welind
;;http://www.geocrawler.com/archives/3/338/1994/6/0/1877802/
(save-excursion
(set-buffer (get-buffer-create "*scratch*"))
(lisp-interaction-mode)
(make-local-variable 'kill-buffer-query-functions)
(add-hook 'kill-buffer-query-functions 'kill-scratch-buffer))
(defun kill-scratch-buffer ()
;; The next line is just in case someone calls this manually
(set-buffer (get-buffer-create "*scratch*"))
;; Kill the current (*scratch*) buffer
(remove-hook 'kill-buffer-query-functions 'kill-scratch-buffer)
(kill-buffer (current-buffer))
;; Make a brand new *scratch* buffer
(set-buffer (get-buffer-create "*scratch*"))
(lisp-interaction-mode)
(make-local-variable 'kill-buffer-query-functions)
(add-hook 'kill-buffer-query-functions 'kill-scratch-buffer)
;; Since we killed it, don't let caller do that.
nil)
Si vous voulez un buffer scratch exactement comme au départ vous pouvez toujours ajouter :
(insert initial-scratch-message)
dans les fonctions ci-dessus 
Enfin M-x customize-option RET initial-scratch-message RET permet de modifier le message initial.
This page is also available in english : English:RecreateScratchBuffer