我的 c/c++ 项目往往有相当简单的目录结构,将 src、include、bin 等分开。我也倾向于在最上面的目录中有一个主 makefile。在 Emacs 中这样工作时,我总是必须发出 M-x cd uppermost-dir 以便我的编译快捷方式按预期工作。
有没有办法让当前目录与我启动 Emacs 的目录相同?也就是说,我可以在打开文件时阻止 Emacs 更改它的工作目录吗?
或者,对于 Emacs 中像这样的目录层次结构的典型工作流程,我是否遗漏了一些重要的东西?
最佳答案
一种方法可以做到这一点:
在你的项目根目录下创建一个文件调用 .dir-locals.el
每当您打开目录或其子目录中的文件时,都会读取该文件。
为了备份到根文件夹并运行 make 作为编译命令,只需将其放入 .dir-locals.el
文件。
((nil . ((compile-command . "cd ~/mycode/c/; make"))))
nil
是为(nil 表示任何)设置局部变量的模式,因此要仅针对 C++ 模式执行此操作,您可以改为执行此操作...((c++-mode . ((compile-command . "cd ~/mycode/c/; make"))))
显然,您可以设置一个包含更多选项的列表,比如为 java 文件运行 ant 等等。
emacs manual entry for directory locals
关于Emacs: 'Find file' 不改变工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6367743/