Emacs:打开大型仓库中的任何文件

arn*_*nab 13 emacs

我需要的

一种快速/ git高效的方式来打开large()repo(〜9.8k文件)下的任何文件.

上下文

我尝试了各种解决方案,比如Textmate.elfind-file-in-repository.我通过之前的SO问题找到了这些解决方案,例如thisthis以及LocateFilesAnywhere EmacsWiki.

虽然这两种解决方案都适用于小型到mdeium回收,但在这种情况下,它们几乎无法使用.当我开始输入文件名时,在看到任何结果之前有几秒钟的延迟.而改变搜索的任何部分也非常滞后.

我认为主要问题是在键入任何字符时,emacs/ find-file-in-repository启动一个shell命令(git ls-files...).当我停止打字时,我真的只需要这样做.

问题

  • 这个用例有没有更好的图书馆?
  • 如果没有,当我打字时如何在命令中引入延迟?也就是说,当我进入时find-file-in-repository,我希望只有在我停止输入时才调用find-command(比如说300ms的间隙).

arn*_*nab 18

摘要

在我收到三个答案后,我尝试了它们(也回答了我自己的问题,因为上述解决方案都不适合我).我终于安顿下来了helm-ls-git.以下是我的观点比较:

抛射物

  • 花了大约30分钟来索引回购.由于射弹不知道.gitignore,实际的文件数量更像是52k.
  • 可以定制,但最好的东西(即理解git)是可取的
  • 可能需要不时地使缓存重新索引无效.由于新文件每天都会添加到回购中,因此这将是昂贵且频繁的.

舵-CMD叔

  • 从描述和来源看起来很好.
  • 难以安装,因为它没有发布在melpa/marmalade等.这个问题的更多细节我打开了.

GNU Global

  • 没有尝试,因为它可能会有与Projectile相同的问题(git-unaware,需要它自己的"索引",可能需要不时保持)

事件jr答案却开辟了更多的选择:helm直到现在我还没有意识到.看看melpa的helm相关插件,我发现了以下内容:

helm-git

  • 这看起来很有希望
  • 很容易安装,package.el因为它在melpa中
  • 我也使用和爱magit- 所以这看起来很合适.
  • 然而,它仍然失败了magit-git-dir: symbol is void一种错误.没有太多潜水,但看起来需要更新.打开了一个问题

helm-ls-git

  • 正如自述文件所述,这是独立的.
  • 到目前为止一直工作得非常好.易于安装(melpa),速度快.