Costumo fazer algo como:
Cx b foobarbaz RET
para obter um novo buffer para anotações, etc. Adoraria que o emacs apenas fizesse snapshots e despejasse todos os buffers abertos no disco ocasionalmente. Existe muita documentação disponível para melhorar a funcionalidade de salvamento automático e backup, mas todas estão relacionadas aos buffers que estão visitando um arquivo.
Eu gostaria que o emacs periodicamente capturasse / salve TODOS os buffers no disco. Isso certamente fará com que alguns buffers ruidosos de 'saída' sejam gravados no disco, mas quem se importa? O espaço em disco é barato.
Existe algo embutido para fazer isso? No momento, se meu computador (ou emacs) travar, geralmente perco muitas anotações que fiz em vários buffers.
save-some-buffers
possui uma opção para buffers que não visitam arquivos - talvez você possa se casar com isso com um timer e uma função personalizada, quesave-some-buffers
aceita como argumento - consulte a string de documento. Provavelmente já existe algo que faz isso - por exemplo, Google"save-some-buffers" auto save
etc .; e veja a funçãoauto-save-mode
emsimple.el
para algumas idéias. Minha lembrança é que auto-save-buffers aprimorado pode ter feito algo assim: github.com/kentaro/auto-save-buffers-enhanced/blob/master/...deft
pacote.Respostas:
Isso não responde à sua pergunta conforme a proposta, portanto, sinta-se à vontade para ignorar ou reduzir o voto.
Duvido que você realmente queira que o Emacs salve todos os buffers em disco, incluindo todos os buffers internos, normalmente invisíveis. Porque você iria querer aquilo?
Não se trata do espaço em disco. É sobre o barulho. Deseja realmente extrair coisas de um diretório em que seus arquivos importantes possam ser misturados com essas coisas? Ou você deseja pescar pérolas ocasionais em um diretório temporário (cujo objetivo é esconder o ruído)?
Buffers que possuem nomes como
*...*
(não iniciando com um caractere de espaço) geralmente são apenas de saída (por exemplo,*info*
) ou para interação temporária (por exemplo*scratch*
). Para esses buffers, minha recomendação seria deixar as coisas como estão. Você sempre pode salvar qualquer buffer sob demanda usandoC-x C-w
, se realmente precisar.O que me leva ao que suspeito ser o seu caso de uso real: " buffer [s] para fazer anotações etc. ". A resposta aqui é usar em
C-x C-f
vez deC-x b
. IOW, sim, visite-os como buffers de arquivo. Se você nunca salvar o buffer, não haverá arquivo criado - exceto um arquivo de salvamento automático , que provavelmente é exatamente o que você deseja e precisa.Ao visitar um buffer como um arquivo, você controla automaticamente qual modo principal é usado por padrão (usando
auto-mode-alist
). Isso é tão importante para anotações quanto para código de programação.Em particular, eu sugeriria que, se você usar
*scratch*
para interação temporária com Lisp, poderá reconsiderar. Muitos usuários (inclusive eu) descobriram que isso ajuda a usarC-x C-f foo.el
(ou qualquer outro*.el
nome de arquivo). Uma razão é que você obtém arquivos de salvamento automático gratuitamente (e arquivos de backup, se você salvar o buffer). Outro motivo é que você obtém o modo Emacs-Lisp em vez do modo de interação Lisp. Uma terceira razão é que sim, você pode querer salvar seu trabalho "temporário". E como você diz, o espaço em disco é barato.E o # 4 conflitante com o que eu disse no # 1? Você não deseja misturar arquivos de rabiscos temporários com arquivos importantes e não deseja retirar a pérola ocasional de um diretório de arquivos temporários. A resposta aqui é que depende de você organizar as coisas para que esse efeito seja minimizado. Trabalhar com esses arquivos de rascunho em um diretório específico pode ajudar, assim como o uso de uma convenção de nomenclatura (especialmente um prefixo) que ajuda a distinguir esses arquivos.
Outra coisa que pode ajudar: Dired . Você pode usar
~
e#
para marcar arquivos de backup e salvamento automático para exclusão (depoisx
para excluí-los). E se você usar uma convenção de nomenclatura para seus arquivos temporários presumivelmente temporários, poderá usar%
ou semelhante para marcar todos eles para exclusão. Você pode até executar uma função periodicamente para limpar esses arquivos. E você pode renomear facilmente qualquer um que realmente queira manter por mais tempo.Portanto, meu conselho é talvez reconsiderar como você está interagindo com esses buffers temporários e para anotações. Considere usar buffers de arquivo, que são salvos automaticamente. Em suma, use
C-x C-f foobarbaz.txt RET
(.el
ou qualquer outra coisa) em vez deC-x b foobarbaz RET
.fonte
C-x C-f
" em vez de "Em suma, useC-x b
" no último parágrafo. (Eu não posso sugerir uma edição diretamente porque essa mudança é menos de 6 caracteres.)