RecréerLeBufferScratch

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


CatégoriePointEmacs