Я хотел бы иметь возможность сохранить копию (или снимок) буфера в файл. Поведение будет аналогичным write-file
, за исключением того, что он не будет устанавливать буфер для посещения этого файла.
Для примера использования представьте, что у вас есть сеанс оболочки, и вы хотите быстро сохранить все это в файл журнала. Буфер не следует переименовывать (чтобы функции, зависящие от имени буфера, все еще работали), и он не должен посещать файл (чтобы файл не был случайно перезаписан и при выходе из emacs не было предупреждений).
Я могу представить несколько грязных способов сделать это, я опубликую один в качестве самоответа, но, читая из руководства, вся система «посещенных файлов» сложнее, чем кажется, и я предполагаю, что легко составить неправильное решение Есть ли скрытый, встроенный способ достижения этого?
write-region
из Lisp (например, в вашей собственной команде). Просто передайте его(point-min)
и(point-max)
вместе с именем файла.C-x h
M-x write-region
M-x write-region
команду.Грязно
elisp
делать то, что я хочу сделать:Это выглядит намного сложнее, чем нужно, так как мы должны позаботиться как о посещаемом файле, так и об имени буфера, и мы не можем быть уверены, что ничего не забыли.
Другие решения, включающие копирование текста буфера в новый буфер, а затем сохранение и уничтожение этого буфера, вероятно, будут работать лучше, но тогда я буду беспокоиться о проблемах производительности с большими буферами.
источник