我设置的emacs作为我的Ruby开发环境。我通过执行M-x编译然后进行耙测试来运行测试。我已经设立适当的编译错误的正则表达式,ALIST使得得到的编译缓冲可以识别测试失败,并让他们点击,但我面对的麻烦编译找到文件使用正确的目录下找到从文件。 想我逛文件PROJ家用/测试/红宝石测试file.rb和命中M-X编译,然后使用“耙测试”的编译命令。生成的编译缓冲区将“proj-home/test /”设置为默认目录,而rake测试输出有错误user [./test/ruby-test-file.rb:nn]。所以当compile-find-file试图找到错误信息中指定的文件时,它会在“proj-home/test /./test/ruby-test-file.rb”中查找,这显然是错误的。的Emacs:导航编译错误
如何使编译找到文件在正确的地方看?我花了一段时间调试函数,并阅读compile.el中的函数定义,但没有喜悦。 有一点让我感到惊讶的是,从外壳cd'd到“proj-home/test”正确地运行耙测试运行测试(即使耙文件在“proj-home”中,而不是“proj-home”/test“),所以它看起来像耙有一些内置的智能,它允许它搜索目录树,并找到父目录中的Rakefile。
这种智能抽佣可能会造成混乱的Emacs,什么是当前目录下就应该使用。
emacs维基在这里:http://www.emacswiki.org/emacs/CompileCommand有一个代码片段,通过搜索父目录(位于“使用最近的Makefile运行Make”)来查找文件,但是我仍然没有弄清楚是否需要使用该文件代码片段。
这肯定让我更接近的解决方案 - 关键是要设置默认目录中的编译命令。 我不清楚为什么你建议我使用一个建议,而不是修改编译命令来使用函数来找到正确的默认目录。建议是因为有建议,任何改变都会成为我的.emacs的一部分,所以不会被emacs升级吹走? – Rohith 2009-12-14 16:54:40
嗯,我不喜欢重新定义一个预先存在的功能:这意味着大量的复制和粘贴,代码重复...... 当然,未来升级可能会有问题,但不仅仅是:函数可能会在它后面加载已经被告知,事情会以你的身份发生。但是如果你重新定义了它,并且在它重新定义之后被加载,那么将使用原始定义。 – 2009-12-16 19:39:19