Chciałbym móc zapisać kopię (lub migawkę) bufora w pliku. Zachowanie byłoby podobne write-file
, z wyjątkiem tego, że nie ustawiłby bufora na odwiedzanie tego pliku.
Na przykład wyobraź sobie, że masz sesję powłoki i chcesz szybko zapisać wszystko w pliku dziennika. Nie należy zmieniać nazwy bufora (aby funkcje zależne od nazwy bufora nadal działały) i nie powinien odwiedzać pliku (aby plik nie został przypadkowo nadpisany i nie było ostrzeżenia przy wychodzeniu z emacsa).
Mogę sobie wyobrazić kilka nieprzyzwoitych sposobów zrobienia tego, podam jeden jako odpowiedź na pytanie, ale czytając instrukcję, cały system „odwiedzanych plików” jest bardziej skomplikowany niż się wydaje i wydaje mi się, że łatwo jest napisać złe rozwiązanie. Czy istnieje ukryty, wbudowany sposób na osiągnięcie tego?
write-region
z Lisp (np. We własnym poleceniu). Wystarczy przekazać go(point-min)
i(point-max)
wraz z nazwą pliku.C-x h
M-x write-region
M-x write-region
polecenie.Brudne
elisp
robienie tego, co chcę robić:Wygląda na to, że jest o wiele więcej kłopotów, niż powinno być potrzebne, ponieważ musimy zadbać zarówno o odwiedzany plik, jak i nazwę bufora, i nie możemy być pewni, że nie zapomnieliśmy nic więcej.
Inne rozwiązania polegające na skopiowaniu tekstu bufora do nowego bufora, a następnie zapisaniu i zabiciu tego bufora prawdopodobnie działałyby lepiej, ale martwiłbym się problemami z wydajnością dużych buforów.
źródło