2

「foobar」という名前のプロジェクトがあります。チェックアウトすると、すべてのソースが「foobar/foobar」フォルダーにあります。最上位の foobar ディレクトリには、内部の foobar ディレクトリ以外には何も含まれていないため、意味がありませんが、最初はそのようにプロジェクトにチェックインされており、私の管理外です。これにより、パスが長くなり読みにくくなるという残念な結果が生じるため、トップレベルの foobar の名前を「foobar-checkout」に変更し、「foobar-checkout/foobar」にリンクする「foobar」という名前のシンボリック リンクを作成します。このようにして、「foobar/foobar/source.c」の代わりに「foobar/source.c」を開くことができます。

これは、シェルにいるとき、および最初にemacsでファイルを開くときに機能しますが、その後、emacsはシンボリックリンクを解決します。そのため、source.c を開いた状態で Ctrl+x Ctrl+f を押して新しいファイルを開くと、一覧表示されるパスは「foobar/」ではなく「foobar-checkout/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 に答える