2008-09-17 4 views

Répondre

10

Créez une fonction qui vous demandera si vous êtes sûr que le tampon a été modifié et n'est pas associé à un fichier. Ajoutez ensuite cette fonction à la liste kill-buffer-query-functions.

regardant la documentation Buffer File Name vous comprenez:

  • un tampon ne visitant pas un fichier si et seulement si la variable buffer-file-name est nulle

Utilisez cette compréhension pour écrire la fonction:

(defun maybe-kill-buffer() 
    (if (and (not buffer-file-name) 
      (buffer-modified-p)) 
     ;; buffer is not visiting a file 
     (y-or-n-p "This buffer is not visiting a file but has been edited. Kill it anyway? ") 
    t)) 

Ensuite, ajoutez la fonction au crochet comme suit:

(add-to-list 'kill-buffer-query-functions 'maybe-kill-buffer) 
+0

Cela fonctionne, sauf que je dois enlever l'argument "tampon". –

+0

De même, existe-t-il un moyen de le faire exclure d'autres tampons, tels que * Open Recent *? –

+0

Vous pourriez mettre ce qui suit à l'intérieur de 'et 'après' buffer-modified-p': (not (equal (nom-de-tampon) "* Open Recent *")) – EfForEffort

1
(defun maybe-kill-buffer() 
    (if (and (not buffer-file-name) 
      (buffer-modified-p)) 
     ;; buffer is not visiting a file 
     (y-or-n-p (format "Buffer %s has been edited. Kill it anyway? " 
         (buffer-name))) 
    t)) 

(add-to-list 'kill-buffer-query-functions 'maybe-kill-buffer) 
Questions connexes