18

我最近安装了 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'

我想ropemacs 不支持带有TRAMP 的远程文件。只是想知道是否有人找到了解决方法。也许一些自定义省略?或者也许我应该使用 sshfs 并在本地挂载远程文件系统......

我在位于的 virtualenv 中安装了ropemacs /home/saltycrane/lib/python-environments/default。我在 Ubuntu Lucid 上使用 GNU Emacs 23.1.50.1。

M-/我应该提到,当我不使用 TRAMP 时,完成工作很好。

4

1 回答 1

6

不,使用 TRAMP 是不可能的,因为当 Pythonrope库想要扫描文件系统中的 Python 文件以查找它们的类和函数时,它不会调用回 Emacs — 相反,它直接在文件系统上使用listdir()open()让 Emacs 有机会妨碍并拦截您正在编辑的特殊 TRAMP 前缀路径。

正如评论所提到的,使用sshfs可能是可能的,但rope我想这将是一个非常缓慢的解决方案,因为rope必须打开这么多文件才能找出项目的状态。

在跨远程文件系统链接进行编辑时,我通常会离开rope,或者弄清楚如何从远程系统导出 Emacs 会话。我想知道您是否可以使用类似 DVCS 之类的东西,rsync甚至可以使用dropboxDVCS 使文件作为可立即访问的副本出现在您的本地硬盘驱动器上,但是您保存的更改会被复制过来?

于 2011-09-13T23:07:36.773 回答