Como faço para receber um aviso antes de matar um buffer temporário no Emacs?

StackOverflow https://stackoverflow.com/questions/86963

  •  01-07-2019
  •  | 
  •  

Pergunta

Mais de uma vez eu tenho trabalho perdido por matar acidentalmente um buffer temporário no Emacs. Posso configurar Emacs para me dar um aviso quando eu matar um buffer não associado a um arquivo?

Foi útil?

Solução

Faça uma função que lhe perguntará se você tem certeza de quando o buffer foi editado e não está associado a um arquivo. Em seguida, adicione essa função à lista kill-buffer-query-functions.

Olhando para a documentação para arquivo de buffer nome você entende:

  • um buffer não é uma visita a um arquivo, se e somente se o buffer-file-name variável é nulo

Use esse conhecimento para escrever a função:

(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))

E, em seguida, adicionar a função para o gancho assim:

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

Outras dicas

(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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top