在GNU emacs中,cd、cd绝对目录和默认目录如何比较?
在定制Emacs时,我应该如何考虑elisp函数在GNU emacs中,cd、cd绝对目录和默认目录如何比较?,emacs,elisp,Emacs,Elisp,在定制Emacs时,我应该如何考虑elisp函数cd和cd absolute以及elisp变量默认目录?我的经验使我相信,cd-absolute会更改emacs进程本身的目录(跨缓冲区的全局设置,default directory不是本地设置的),而cd和default directory是缓冲区的本地设置。但是,内置的帮助不足以让我理解,而且我看到的行为让我怀疑cd absolute正在覆盖我正在访问的缓冲区中的默认目录 结束编辑 如果我在这里没有得到答案,我将不得不对列表进行我自己的研究,并
cd
和cd absolute
以及elisp变量默认目录
?我的经验使我相信,cd-absolute
会更改emacs进程本身的目录(跨缓冲区的全局设置,default directory
不是本地设置的),而cd
和default directory
是缓冲区的本地设置。但是,内置的帮助不足以让我理解,而且我看到的行为让我怀疑cd absolute
正在覆盖我正在访问的缓冲区中的默认目录
结束编辑
如果我在这里没有得到答案,我将不得不对列表进行我自己的研究,并且,作为最后的手段,我将不得不阅读源代码。我认为您误解了默认目录的工作原理。在.emacs
中设置默认目录
,对大多数缓冲区没有影响。正在访问文件的缓冲区的default directory
本地值将自动设置为存储所访问文件的目录。这将超过先前设置的默认目录的任何值
如果您通过cd
(或cd absolute
)更改缓冲区的当前目录,这将仅为该缓冲区设置默认目录。如果随后打开一个新文件,则新缓冲区的默认目录将设置为新文件的目录
如果打开一个不访问文件的新缓冲区,则此新缓冲区的默认目录
值将与前一个缓冲区的值相同。只有在这种情况下,cd
的结果才会应用于从中调用它的缓冲区以外的缓冲区
cd-absolute
不用于交互式使用。据我所知,这是一个方便的函数,它与cd
不同之处在于路径被视为绝对路径,而不是相对路径
考虑到所有这些,您想做什么?还有一种情况,即为缓冲区设置了默认目录
,缓冲区充当进程输入/输出,这取决于您如何启动进程,实际上它的行为有点笨拙。您可以稍后更改该缓冲区中的默认目录,但这不会影响与它关联的进程。泰勒,我不担心我的.emacs
文件。我正在编写的自定义函数的一个示例是,将当前缓冲区中的文件与我编辑的文件进行区分。我想让它和流浪汉一起工作。我还在尝试。我认为默认目录在这种情况下不会有用。缓冲区文件名和文件名目录,再加上cd,很可能就是你想要的。泰勒的答案是彻底的。我花了几周时间才找到困扰我的行为的原因。结果是编译开始
与默认目录
有冲突。我在自己编写的自定义函数中使用了compilation start
,但不知道会有什么副作用。我还不知道如何澄清这个问题,但我还有另一个数据点。我使用的是乔·基恩的background.el版本。它设置默认方向
。我还在研究这个。谢谢你纠正拼写,Richard。我本打算拼写read r-e-e-d,但后来我软化了我的立场。