1

У меня есть буфер *shell* в Emacs, где я получаю интерфейс командной строки Linux. Иногда я хочу сохранить содержимое буфера на диск для последующего использования в моем сеансе, и после этого Emacs помечает буфер как измененный * перед его именем, когда в этом сеансе происходят дальнейшие взаимодействия с оболочкой, далее, когда собираясь скомпилировать файлы, меня спрашивают, нужно ли сохранять буфер перед продолжением компиляции, так как они отображаются как несохраненные изменения, которые могут повлиять на компиляцию.

Мой вопрос заключается в том, существует ли в Emacs какой-либо способ отсоединить буфер с файлом на диске или каким-либо образом пометить его как никогда не измененный, чтобы я не получил отметку * и не получил уведомление о компиляции несохраненных изменений?

3 ответа3

2

Решение легко: в этом буфере оболочки введите:

(setq buffer-file-name nil)

Затем с помощью курсора справа от ближайшей пары выполните Cx Ce или Mx eval-last-sexp . Тогда вы можете стереть выражение.

Мужчина! Отношение этих парней говорит: «Ну, не делай этого». Это происходит со мной все время, когда я смотрю файл в другом буфере в кадре и хочу переименовать его, сохранив его, но я забываю, что курсор находится в моем буфере оболочки.

0

Не заставляйте буфер посещать файл. Просто сохраните все или все его содержимое в файл с помощью команды write-region (не команда write-file , которая посещает файл). Смотрите документ для write-region: C-h f write-region .

0

В буфере, который вы хотите удалить измененный флаг, оцените следующее выражение в минибуфере, нажав M-:

(set-buffer-modified-p nil)

Это должно переключить измененный флаг для буфера.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .