2009-12-26 4 views
2

После открытия файла в Emacs (над SSH туннелю, SSHFS смонтированной файловой системы) Я получаю символические ссылки, как это:Почему sshfs вызывают артефакты Emacs?

.#jobid.php -> [email protected]:1260471633 

Мы определили, что это Emacs блокировки файлов.

Философия sshfs монтируется с follow_symlinks и transform_symlinks, но, похоже, отказывается возвращать ссылку «текст» через readlink, поэтому emacs не удаляет их.

ответ

2

Если вы ищете документацию, Emacs ссылается на эти файлы как file locks.

Вместо использования SSHFS/FUSE, вы можете получить доступ к удаленным файлам непосредственно из Emacs:

C-x C-f /ssh:host.name:/path/to/file RET 

Emacs не создает блокировку файлов при редактировании удаленных файлов в этом manner-- поиска «TRAMP» для более информация о редактировании удаленных файлов. (К сожалению, я думаю, Emacs не может сказать, что ваша точка монтирования FUSE поддерживается удаленной файловой системой или что создание файловых блокировок на ней проблематично.)

1

Эти символические ссылки используются emacs для предотвращения одновременного изменения нескольких экземпляров emacs. Символьная ссылка обычно уходит, когда вы сохраняете файл, но похоже, что fuse-sshfs мешает этому процессу, поскольку цель символической ссылки не является реальным файлом (это не должно быть, но sshfs ожидает его).

К сожалению, я не знаю, как отключить эту функцию или заставить emacs хранить эти символические ссылки в другом каталоге (я редко использую emacs, и я ничего не нашел в руководстве), поэтому у вас может быть я просто периодически удаляю их вручную, боюсь.

0

Эти символические ссылки создаются Emacs, когда буфер посещает файл, и они не позволяют двум экземплярам Emacs редактировать один и тот же файл (как упоминалось в других ответах). Emacs ссылается на это как «обнаружение столкновения».

К сожалению, единственный способ предотвратить это поведение в GNU emacs - во время компиляции. В исходных документах описывается, как это сделать, изменяя заголовок.

Это потому, что функции lock-buffer и unlock-buffer являются примитивами и вызываются другими примитивами для создания этих символических ссылок. В более старых версиях Emacs они могут быть переопределены или defaliased в elisp, но примитив не заметит этого изменения.

1

Опция follow_symlinks заставляет символические ссылки на удаленной системе появляться как фактические файлы. Это полезно, когда символическая ссылка ссылается на цель на удаленном узле вне каталога, который монтируется через sshfs, но это нарушает предположения Emacs, поскольку, когда Emacs создает символическую ссылку, он ожидает, что тот же путь будет выглядеть как символическая ссылка позже.

Однако, вы должны быть в состоянии сделать все символьные ссылки на удаленную работе хоста правильно, все еще появляются в симлинках с помощью transform_symlinks опции (а не follow_symlinks) и всегда монтажа корня удаленной системы (а не только вашего дома каталог или что-то еще). Это должно позволить emacs злоупотреблять символическими ссылками как lockfiles, одновременно делая доступными удаленные цели симлинк.

 Смежные вопросы

  • Нет связанных вопросов^_^