文件监控,对于 Emacs 自动保存文件没有此文件或目录。

3

Gulp会监听文件以实现livereload功能

gulp.watch([
    '/templates/**/*.hbs'
], ['build-dev-templates']);

但是当我在Emacs上编辑时,它会创建类似于.#index.hbs的自动保存文件,而Gaze则会出现以下错误:

Error: ENOENT,没有这个文件或目录'app/client/templates/.#index.hbs'

我该如何解决这个问题?

3个回答

4
你可以尝试使用以下模式来排除你的监视器备份文件:

gulp.watch([
  '/templates/**/*.hbs',
  '!/templates/**/.#*'
], ['build-dev-templates']);

2
一种选择是将您的备份文件移动到其他地方。我使用这个片段来自 What the .emacs.d!?将所有备份文件放入~/.emacs.d/backups中:
(setq backup-directory-alist
      `(("." . ,(expand-file-name
                 (concat user-emacs-directory "backups")))))

您应该能够使用类似的技术来移动自动保存文件。类似以下内容的代码应该可以工作:
(setq auto-save-file-name-transforms
          `((".*" ,(expand-file-name
                    (concat user-emacs-directory "auto-save")) t)))

1
转念一想,这些文件并不是备份文件,而是自动保存的文件。我该如何摆脱它们? - eguneys
@Facebook,我相信你可以使用auto-save-file-name-transforms的相同技术。请查看我的更新答案。 - Chris
最终这也没有帮助,问题是Emacs会创建指向锁定文件的符号链接,(setq create-lockfiles nil) 可以解决,不知道是否有其他替代方法。 - eguneys
我认为应该修复Emacs而不是Gulp。所以这个答案很棒。 - eguneys
你尝试过(setq make-backup-files nil)或者输入M-x auto-save-mode来完全关闭文件创建吗? - Preview
Emacs正在执行正确的操作:锁定文件必须在同一个目录中,以确保它被原子地创建(!)。其他情况可能会导致不同编辑器实例之间的竞争。 - vbraun

1

对我来说,唯一有效的方法是禁用 .# 文件的创建:

(setq create-lockfiles nil)

这个功能已经在Emacs 24.3中添加了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接