Gostaria de poder salvar uma cópia (ou um instantâneo) de um buffer em um arquivo. O comportamento seria semelhante a write-file
, exceto que ele não configuraria o buffer para visitar este arquivo.
Para um caso de uso, imagine que você tenha uma sessão de shell e deseje salvar tudo rapidamente em um arquivo de log. O buffer não deve ser renomeado (para que as funções que dependem do nome do buffer ainda funcionem) e não deve estar visitando um arquivo (para que o arquivo não seja substituído acidentalmente e não haja aviso ao sair do emacs).
Posso imaginar algumas maneiras sujas de fazer isso, postarei uma como resposta automática, mas, lendo o manual, todo o sistema "arquivo visitado" é mais complicado do que parece, e acho que é fácil redigir uma solução errada. Existe uma maneira oculta e integrada de conseguir isso?
write-region
Lisp (por exemplo, em seu próprio comando). Apenas passe(point-min)
e(point-max)
, junto com o nome do arquivo.C-x h
M-x write-region
M-x write-region
comando real .Sujo
elisp
fazendo o que eu quero fazer:Isso parece muito mais complicado do que seria necessário, pois precisamos cuidar do arquivo visitado e do nome do buffer, e não podemos ter certeza de que não esquecemos mais nada.
Outras soluções que envolvem copiar o texto do buffer em um novo buffer e salvá-lo e eliminá-lo provavelmente funcionariam melhor, mas eu ficaria preocupado com problemas de desempenho com buffers grandes.
fonte