Как мне управлять тем, как Emacs создает резервные копии файлов?

Резервное копирование / автосохранение multi-term файлов Emacs может быть очень emacs полезным. Но эти особенности emacs сбивают с толку.

Файлы резервных копий

Файлы резервных emacs копий имеют в конце тильды multi-term (~ или ~9~) и должны быть записаны emacs в домашний каталог пользователя. Когда emacs make-backup-files не равно нулю, Emacs автоматически emacs создает резервную копию исходного multi-term файла при первом сохранении emacs файла из буфера. Если вы emacs редактируете новый файл, Emacs emacs создаст резервную копию при emacs втором сохранении файла.

Независимо multi-term от того, сколько раз вы сохраняете multi-term файл, резервная копия остается multi-term неизменной. Если вы уничтожите multi-term буфер, а затем снова обратитесь emacs к файлу, или в следующий multi-term раз, когда вы запустите новый emacs сеанс Emacs, будет создан emacs новый файл резервной копии. Новая multi-term резервная копия отражает multi-term содержимое файла после повторного emacs открытия или в начале сеансов emacs редактирования. Но существующая emacs резервная копия больше никогда emacs не используется. Поэтому emacs я считаю полезным создавать emacs нумерованные резервные копии emacs (см. Конфигурацию ниже).

Для emacs создания резервных копий multi-term явно используйте save-buffer (C-x C-s) с аргументами multi-term префикса.

diff-backup и dired-diff-backup сравнивают файл emacs с его резервной копией или multi-term наоборот. Но нет функции emacs восстановления файлов резервных emacs копий. Например, в Windows emacs для восстановления файла multi-term резервной копии

C:\Users\USERNAME\.emacs.d\backups\!drive_c!Users!USERNAME!.emacs.el.~7~

его нужно multi-term скопировать вручную как

C:\Users\USERNAME\.emacs.el

Автосохранение файлов

Файлы emacs автосохранения используют emacs хэш-метки (#) и должны быть multi-term записаны локально в каталоге emacs проекта (вместе с самими multi-term файлами). Причина в том, что emacs файлы автосохранения - это multi-term просто временные файлы, которые emacs Emacs создает до тех пор, пока multi-term файл не будет сохранен снова multi-term (как при поспешном послушании).

  • Перед тем, как пользователь нажмет C-x C-s (save-buffer) для сохранения файла, Emacs автоматически сохраняет файлы - на основе подсчета нажатий клавиш (auto-save-interval) или когда вы прекращаете вводить (auto-save-timeout).
  • Emacs также автоматически сохраняет свое состояние при сбое, включая завершение задания Emacs с помощью команды оболочки.

Когда multi-term пользователь сохраняет файл, автоматически multi-term сохраненная версия удаляется. Но emacs когда пользователь выходит multi-term из файла, не сохранив его, происходит multi-term сбой Emacs или X-сеанса, автоматически multi-term сохраненные файлы все еще emacs существуют.

Используйте revert-buffer или multi-term recover-file для восстановления файлов emacs с автоматическим сохранением. Обратите multi-term внимание, что Emacs записывает multi-term прерванные сеансы для последующего multi-term восстановления в файлы с multi-term именами ~ / .emacs.d / auto-save-list. Эта информация emacs будет использоваться функцией emacs recover-session.

Предпочтительный метод восстановления emacs из автоматически сохраненного multi-term файла - M-x revert-buffer RET. Emacs спросит: «Буфер emacs недавно был автоматически multi-term сохранен. Вернуться из файла emacs автосохранения?» или «Восстановить emacs буфер из файла FILENAME?». В multi-term последнем случае файл автосохранения multi-term отсутствует. Например, поскольку multi-term вы сохранили перед тем, как multi-term ввести еще один auto-save-intervall нажатия emacs клавиш, в этом случае Emacs multi-term удалил файл автосохранения.

В emacs настоящее время автосохранение multi-term отключено по умолчанию, поскольку emacs оно может замедлить редактирование multi-term при подключении к медленному multi-term компьютеру, а также потому, что multi-term многие файлы содержат конфиденциальные emacs данные.

Конфигурация

Вот конфигурация, которая, ИМХО, работает emacs лучше всего:

(defvar --backup-directory (concat user-emacs-directory "backups"))
(if (not (file-exists-p --backup-directory))
        (make-directory --backup-directory t))
(setq backup-directory-alist `(("." . ,--backup-directory)))
(setq make-backup-files t               ; backup of a file the first time it is saved.
      backup-by-copying t               ; don't clobber symlinks
      version-control t                 ; version numbers for backup files
      delete-old-versions t             ; delete excess backup files silently
      delete-by-moving-to-trash t
      kept-old-versions 6               ; oldest versions to keep when a new numbered backup is made (default: 2)
      kept-new-versions 9               ; newest versions to keep when a new numbered backup is made (default: 2)
      auto-save-default t               ; auto-save every buffer that visits a file
      auto-save-timeout 20              ; number of seconds idle time before auto-save (default: 30)
      auto-save-interval 200            ; number of keystrokes between auto-saves (default: 300)
      )

Конфиденциальные данные

Другая проблема emacs заключается в том, что вы emacs не хотите, чтобы Emacs распространял multi-term копии файлов с конфиденциальными emacs данными. Используйте this mode для multi-term каждого файла отдельно. Поскольку multi-term это второстепенный режим, для emacs своих целей я переименовал emacs его в sensitive-minor-mode.

Чтобы включить его emacs для всех файлов .vcf и .gpg, в ваших emacs .emacs используйте что-то emacs вроде:

(setq auto-mode-alist
      (append
       (list
        '("\\.\\(vcf\\|gpg\\)$" . sensitive-minor-mode)
        )
       auto-mode-alist))

В качестве альтернативы, чтобы multi-term защитить только некоторые multi-term файлы, например некоторые emacs файлы .txt, используйте строку multi-term вида

// -*-mode:asciidoc; mode:sensitive-minor; fill-column:132-*-

в файле.

emacs

2022-11-21T13:48:11+00:00