Rouvrir * tampon * scratch *


26

Si j'ai fermé accidentellement le tampon de travail dans Emacs, comment créer un nouveau tampon de travail?


Veuillez ne pas poser de questions uniquement dans le but de répondre à vos propres questions, surtout s'il est facile d'y répondre.
Edgar Aroutiounian

8
@EdgarAroutiounian C'est ok de poser et répondre à votre propre question ! Cependant, il faut éviter de poser des questions faciles pendant la bêta privée: la bêta privée donne le ton au site.
Gilles 'SO- arrête d'être méchant'

1
@ Gilles Bien sûr, répondre à vos propres questions est bien, mais c'est plutôt suspect lorsque vous posez 3 questions consécutives, chacune avec une réponse immédiatement après avoir posé la question.
Edgar Aroutiounian

2
@EdgarAroutiounian, Jon Ericson veut que nous répondions aux simples questions AZ. Bienvenue
Luke

2
Je pense qu'il est assez juste de - pour un nouveau-ish utilisateur , il est souvent pas évident qu'il n'y a rien particulièrement spécial sur le zéro tampon et @ la réponse de Sigma est tout à fait propre.
Mark Aufflick du

Réponses:


29

Il suffit de recréer le tampon en passant à elle: C-x b *scratch* RET. Depuis Emacs 21.2, si vous créez un tampon appelé *scratch*, il est automatiquement mis en mode d'interaction Lisp .


Pourquoi avez-vous besoin d'une fonction spéciale? Pour moi, si je tue *scratch*puis y reviens, il passe automatiquement en mode d'interaction lisp.
Tikhon Jelvis

@TikhonJelvis Ah, en effet. J'ai cette fonction car elle ne le faisait pas dans les anciennes versions (le changement est de 21.2, qui n'est pas récent en termes absolus mais plus récent que la majeure partie de la mienne .emacs).
Gilles 'SO- arrête d'être méchant'

Ouais. Emacs 21.2 est sorti au moment où j'ai utilisé un ordinateur pour la première fois . C'est une assez grande différence absolue;).
Tikhon Jelvis

7

Il est sans doute préférable de recréer le *scratch*tampon automatiquement chaque fois qu'il est supprimé et d'éviter d'avoir à retaper son nom.

(defun prepare-scratch-for-kill ()
  (save-excursion
    (set-buffer (get-buffer-create "*scratch*"))
    (add-hook 'kill-buffer-query-functions 'kill-scratch-buffer t)))

(defun kill-scratch-buffer ()
  (let (kill-buffer-query-functions)
    (kill-buffer (current-buffer)))
  ;; no way, *scratch* shall live
  (prepare-scratch-for-kill)
  ;; Since we "killed" it, don't let caller try too
  nil)

(prepare-scratch-for-kill)

4

Liaisons par défaut de GNU Emacs:

C-xb*scratch*

ou, plus verbeusement

  1. M-xswitch-to-buffer
  2. Dactylographie: *scratch*
  3. Et puis en appuyant sur la RETtouche.

Le *scratch*tampon est le tampon sélectionné au démarrage et a le mode majeur d' interaction Lisp . Remarque: le mode du *scratch*tampon est contrôlé par la variable initial-major-mode.


En général, vous pouvez créer autant de tampons "scratch" que vous le souhaitez et les nommer comme vous le souhaitez.

C-x bNAME

passe en tampon NAME, le créant s'il n'existe pas. Un nouveau tampon n'est pas associé à un fichier sur disque tant que vous n'avez pas utilisé C-xC-w(ou M-xwrite-file) pour choisir un fichier où il doit être enregistré.


M-xtext-mode change le mode principal du tampon actuel en mode texte.

Pour trouver tous les modes disponibles (c'est-à-dire sans nécessiter de nouveaux packages), vous pouvez obtenir une liste en tapant:

  1. M-xapropos-command
  2. Tapez ensuite: -mode$
  3. Et puis appuyez sur RET

2

J'aime utiliser des tampons de travail pour les trucs jetables. Cependant, en avoir un seul est quelque peu limitant, j'ai donc scratchune commande interactive pour ouvrir un nouveau tampon de travail (peu importe le nombre déjà existant):

(defun scratch ()
  "create a new scratch buffer to work in. (could be *scratch* - *scratchX*)"
  (interactive)
  (let ((n 0)
        bufname)
    (while (progn
             (setq bufname (concat "*scratch"
                                   (if (= n 0) "" (int-to-string n))
                                   "*"))
             (setq n (1+ n))
             (get-buffer bufname)))
  (switch-to-buffer (get-buffer-create bufname))
  (if (= n 1) initial-major-mode))) ; 1, because n was incremented

adopté à partir de: http://everything2.com/index.pl?node_id=1038451


Je l'utilise depuis six semaines. C'est super, merci! Mais ... Hier soir, mon ordinateur Windows s'est redémarré. J'ai perdu des données de mes tampons de travail, car M-x recover-sessionne les récupère pas. Quelqu'un at-il modifié cela pour utiliser quelque chose comme make-temp-file?
daveloyall

1

Puis-je suggérer de créer un tampon vide? La chose intéressante étant que, vous créez d'abord le tampon, et vous l'enregistrez ensuite, si vous le voulez vraiment.

(defun my-empty-buffer () 
  "Open a new empty buffer."
  (interactive)
  (let ((buf (generate-new-buffer "untitled")))
    (switch-to-buffer buf)
    (funcall (and initial-major-mode))
    (setq buffer-offer-save t)))

Vous devrez définir initial-major-mode sur lisp dans votre fichier init et vous devez lier le tampon my-empty-buffer à un raccourci comme C-n.

Avec l'aimable autorisation d' ergoemacs

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.