Почему emacs создает временные символические ссылки для измененных файлов?
Когда я изменяю буфер, Emacs автоматически создает временную символическую ссылку в том же каталоге, что и редактируемый файл (например, foo.c):
.#foo.c -> [email protected]:1296583136
где '12345' - это PID Emacs '(я не знаю, что означает последнее число).
Почему Emacs создает эти ссылки и как я могу предотвратить это?
Обратите внимание, что я отключил режим автоматического сохранения (M-x auto-save-mode
) и отключил файлы резервных копий (M-x set-variable -> make-backup-files -> nil
). Когда я сохраняю измененный буфер или отменю его изменения, символическая ссылка исчезает.
В частности, я пытаюсь запретить Emacs создавать эти ссылки, потому что они вызывают изменение временной метки каталога, что заставляет нашу систему сборки перестраивать весь модуль вместо компиляции и связывания для одного измененного файла:/
Спасибо за любой вклад!
Обновление. Чтобы Emacs постоянно создавать блокирующие файлы, вы можете изменить src/filelock.c
и создать собственный двоичный файл:
void
lock_file (fn)
Lisp_Object fn;
{
return;
// Unused code below...
}
Обновление 2: ответ Арне правильный. Теперь можно отключить файлы блокировки в последней версии Emacs (24.3.1), добавив это в ваш файл .emacs:
(setq create-lockfiles nil)
Ответы
Ответ 1
Обновление: Emacs 24.3 был выпущен с полной поддержкой этой новой настройки!
В текущей строке emacs вы можете просто настроить переменную create-lockfiles:
C-h v create-lockfiles
Документация:
Non-nil означает использование lockfiles, чтобы избежать редактирования конфликтов.
В вашем файле инициализации вы можете установить
(setq create-lockfiles nil)
Получить его через
bzr branch bzr://bzr.savannah.gnu.org/emacs/trunk emacs-trunk
make
src/emacs
(я узнал об этом, потому что решил принять активное участие и просто добавить такой вариант самостоятельно...:))
Ответ 2
Символьная ссылка - это система блокировки файлов emacs: символическая ссылка указывает, что экземпляр emacs редактирует этот файл. Если другой экземпляр пытается отредактировать один и тот же файл, emacs выдаст предупреждение. См. http://www.gnu.org/software/emacs/manual/html_node/emacs/Interlocking.html
Это не имеет ничего общего с автоматическим сохранением.
Я не могу найти, как изменить или отключить блокировку файлов из emacs.
Ответ 3
Как я понимаю, большинство редакторов:
- открыть файл temp
- сохранить файл temp
- переименовать файл temp → файл
Это намного безопаснее, чем усечение и переписывание файла на месте, что приведет к потере файла, если система потерпит крах в тот момент (или в любое время между тем и когда файл физически выгружается на диск).
Возможно, вы сможете отключить это, но я думаю, что лучший вариант - изменить вашу систему сборки.