Emacs: 'Find file' 不改变工作目录

标签 emacs elisp

我的 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/

相关文章:

emacs - Emacs 中的 gdb : how to enable the readline features?

macos - 在 Mac OS X 上使用 GUI(从 Dock)启动 Emacsclient

emacs - 使用 Emacs Lisp 下载文件

emacs - 在 Emacs 中撤消缓冲区搜索

emacs - inferior-lisp 有什么自卑的地方?

emacs - "Package-Requires"太长怎么办?

emacs - 使 emacs 语义自动完成提示 "always on"

Emacs:使用矩形命令时的非字符输入事件

emacs - 如何让 Emacs 自动重新加载 TAGS 文件?

emacs - emacs 中的斜体字