在我自定义Emacs时,如何考虑elisp函数cd
和cd-absolute
以及elisp变量default-directory
?我的经验使我相信cd-absolute
更改了emacs进程本身的目录(跨缓冲区的全局设置,其中default-directory
未在本地设置),而cd
和{{1} }是缓冲区的本地。尽管如此,内置的帮助还不足以让我对自己的理解感到满意,而且我看到的行为让我怀疑default-directory
在我正在访问的缓冲区中覆盖cd-absolute
。
如果没有答案,我将在help-gnu-emacs列表上进行自己的研究,并且只作为最后的手段,阅读源代码。
答案 0 :(得分:2)
我认为你误解了default-directory
的工作原理。在default-directory
中设置.emacs
对大多数缓冲区都没有影响。正在访问文件的缓冲区的default-directory
的本地值自动设置为存储访问文件的目录。这将覆盖任何先前设定的default-directory
。
如果通过cd
(或cd-absolute
)更改缓冲区的当前目录,则仅为该缓冲区设置default-directory
。如果随后打开新文件,则新缓冲区的default-directory
将设置为新文件的目录。
如果打开一个未访问文件的新缓冲区,则此新缓冲区的default-directory
值将与前一个缓冲区的值相同。这是唯一一种cd
的结果将应用于缓冲区以外的缓冲区的情况。
cd-absolute
不适合互动使用。据我所知,这是一个与cd
不同的便利函数,只是路径被视为绝对,而不是相对路径。
鉴于这一切,你想做什么?
答案 1 :(得分:0)
如果你想在Emacs启动后进入某个目录,请在你的init文件的末尾写下:
(dired "~/PATH/TO/DIRECTORY")