如何在已安装的卷上禁用 emacs 的 vc 集成?

如何在已安装的卷上禁用 emacs 的 vc 集成?

我在 OSX (Emacs24) 上运行 Emacs,有时我必须在已挂载的 sshfs 卷上编辑文件。但是,Emacs 的 vc 集成(特别是 git)在 sshfs 挂载上的速度真的很慢。

我想选择性地禁用 vc-mode,无论是在配置中还是使用 .dir-locals.el。我该怎么做?

答案1

正如 pmr 提到的,您可以从后端列表中删除 git。

默认后端列表(RCS CVS SVN SCCS Bzr Git Hg Mtn Arch)

不同的方式在 emacs 中设置变量。

只需编辑~/.emacs文件并添加以下两行即可解决问题(注意 Git 已从列表中删除)

;; Disable git backend to speed up sshfs file load among other things
(setq vc-handled-backends (quote (RCS CVS SVN SCCS Bzr Hg Mtn Arch)))

答案2

我会尝试修改变量vc-处理后端我的 Emacs 版本描述为:

vc-handled-backends 是定义在 `vc-hooks.el' 中的变量,其值为 (RCS CVS SVN SCCS Bzr Git Hg Mtn Arch)

文档:将使用 VC 的版本控制后端列表。将尝试此列表中的条目以确定文件是否处于此类版本控制之下。从列表中删除条目可防止在访问由该后端管理的文件时激活 VC。空列表将完全禁用 VC。

您可以自定义这个变量。

在 Emacs 23.1 版本中引入了此变量,或者更改了其默认值。

答案3

我认为写周围建议vc-git-registered(甚至vc-registeredvc-find-file-hook)将是最好的行动方案。

在那里,您可以检查文件路径或通过设置的某些变量的值.dir-locals.el

答案4

(setq vc-ignore-dir-regexp
      (format "\\(%s\\)\\|\\(%s\\)"
              vc-ignore-dir-regexp
              tramp-file-name-regexp))

假设你在上面安装了一些东西,/tmp/mnt应该可以通过附加另一行格式\\|\\(%s\\)并添加到/tmp/mnt/*字符串列表中来实现

(setq vc-ignore-dir-regexp (format "\\(%s\\)\\|\\(%s\\)\\|\\(%s\\)"
                                     vc-ignore-dir-regexp
                                     tramp-file-name-regexp
                                     "/tmp/mnt/*"))

来源

相关内容