Emacs:'查找文件'而不更改工作目录

Kar*_*arl 4 emacs elisp

我的c/c ++项目往往有相当简单的目录结构,分离出src,include,bin等.我也倾向于在最上面的目录中有一个主makefile.当在Emacs中这样工作时,我总是必须发布M-x cd uppermost-dir,以便我的编译快捷方式按预期工作.

有没有办法让当前目录与我启动Emacs的目录相同?也就是说,当我打开文件时,我可以阻止Emacs更改其工作目录吗?

或者,对于典型的工作流程,是否存在一些关键的问题,在Emacs中只有这样的目录层次结构?

jus*_*nhj 7

一种方法可以做到这一点:

在项目调用的根目录中创建一个文件 .dir-locals.el

每当您在目录或其子目录中打开文件时,都会读取此信息.

要备份到根文件夹并运行make作为编译命令,只需将其放在.dir-locals.el文件中即可.

((nil . ((compile-command . "cd ~/mycode/c/; make"))))
Run Code Online (Sandbox Code Playgroud)

nil 是设置局部变量的模式(nil表示任意),所以要只为C++模式这样做,你可以这样做......

((c++-mode . ((compile-command . "cd ~/mycode/c/; make"))))
Run Code Online (Sandbox Code Playgroud)

显然你可以设置一个包含更多选项的列表,例如为java文件运行ant等等.

目录本地的emacs手册条目


Ben*_*Ben 5

在执行任何操作之前make,使用--directory参数调用以强制它更改为该目录:

make --directory /path/to/your/project