Можно ли использовать Ropemacs с TRAMP в Emacs?
Я недавно установил версию Ropemacs hg tip и хотел бы использовать ее при редактировании удаленных файлов с помощью TRAMP. Кто-нибудь делал это? Когда я пытаюсь использовать M-/
чтобы завершить имя переменной, меня просят ввести Rope project root folder
и я вхожу: /ssh:myhost:/path/to/myproject/
и это дает мне следующую ошибку:
Opening [/ssh:myhost:/path/to/myproject/] project ...
pymacs-report-error: Python: Traceback (most recent call last):
File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/Pymacs/pymacs.py", line 147, in loop
value = eval(text)
File "<string>", line 1, in <module>
File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/ropemode/decorators.py", line 53, in newfunc
return func(*args, **kwds)
File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/ropemode/interface.py", line 254, in code_assist
_CodeAssist(self, self.env).code_assist(prefix)
File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/ropemode/interface.py", line 538, in code_assist
proposals = self._calculate_proposals()
File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/ropemode/interface.py", line 597, in _calculate_proposals
self.interface._check_project()
File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/ropemode/interface.py", line 448, in _check_project
self.open_project()
File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/ropemode/decorators.py", line 53, in newfunc
return func(*args, **kwds)
File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/ropemode/interface.py", line 88, in open_project
self.project = rope.base.project.Project(root)
File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/rope/base/project.py", line 134, in __init__
os.mkdir(self._address)
OSError: [Errno 2] No such file or directory: '/ssh:myhost:/path/to/myproject'
Я предполагаю, что Romamacs не поддерживает удаленные файлы с TRAMP. Просто интересно, нашел ли кто-нибудь обходной путь. Может, какой-нибудь кастомный элисп? Или, может быть, я должен использовать sshfs и монтировать удаленную файловую систему локально...
Я установил Romamacs в virtualenv, расположенном в /home/saltycrane/lib/python-environments/default
, Я использую GNU Emacs 23.1.50.1 на Ubuntu Lucid.
Я должен упомянуть, что завершение с M-/
отлично работает, когда я не использую TRAMP.
1 ответ
Нет, это невозможно с помощью TRAMP, потому что Python rope
библиотека не выполняет обратные вызовы в Emacs, когда хочет сканировать файловую систему на наличие файлов Python, чтобы найти их классы и функции - вместо этого она использует такие вызовы, как listdir()
а также open()
непосредственно в файловой системе, не давая Emacs возможности мешать и перехватывать специальные пути с префиксом TRAMP, которые вы редактируете.
С помощью sshfs
возможно, как уже упоминалось в комментариях, но для rope
Я думаю, что это будет очень медленное решение, так как rope
должен открыть так много файлов, чтобы узнать состояние вашего проекта.
Я вообще ухожу rope
отключить или узнать, как экспортировать сеанс Emacs из удаленной системы при редактировании через ссылку на удаленную файловую систему. Интересно, вы могли бы использовать что-то вроде rsync
или же dropbox
или даже DVCS, чтобы файлы присутствовали на вашем локальном жестком диске в виде немедленно доступных копий, но чтобы сохраненные изменения копировались?