2

我有一个项目,称之为“foobar”,当我结帐时,它的所有源代码都在文件夹“foobar/foobar”中。因为顶级 foobar 目录除了内部 foobar 目录之外什么都不包含,所以没有意义,但这就是最初将事情签入项目的方式,它不在我的控制范围内。这具有使路径更长且更难阅读的不幸效果,因此我将顶层 foobar 重命名为“foobar-checkout”,然后创建一个名为“foobar”的符号链接,链接到“foobar-checkout/foobar”。这样我可以打开“foobar/source.c”而不是“foobar/foobar/source.c”。

这适用于我在 shell 中以及第一次在 emacs 中打开文件时,但之后 emacs 将解析符号链接。因此,如果我打开 source.c 并按 Ctrl+x Ctrl+f 打开一个新文件,它列出的路径是“foobar-checkout/foobar/”而不是“foobar/”。有没有办法让emacs不解析符号链接,这样我就可以享受更短的路径?

4

2 回答 2

0

我刚刚在 GNU Emacs 22.2.1 上试过这个,它似乎没有解决我的符号链接。符号链接的解析是否可能不是普通的 emacs 行为,而是文件打开模块(如 ffap.el)无意中引入的东西?

无论哪种方式,我都无法测试我的想法,但我突然想到您可能会覆盖 file-symlink-p,目前描述为:

file-symlink-p is a built-in function in `C source code'.

(file-symlink-p FILENAME)

Return non-nil if file FILENAME is the name of a symbolic link.
The value is the link target, as a string.
Otherwise it returns nil.

This function returns t when given the name of a symlink that
points to a nonexistent file.

如果您将其修改为始终返回 nil,则 emacs 可能无法解析符号链接:

(defun file-symlink-p (FILENAME)
    nil)

当然,这可能会破坏其他一些东西,但也许值得一试。

于 2012-05-08T14:04:17.360 回答
0

您可能喜欢使用directory-abbrev-alist或者也许vc-follow-symlinks.

于 2012-05-08T16:15:00.837 回答