Como faço para receber um aviso antes de matar um buffer temporário no Emacs?
-
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?
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