python - 是否可以在 Emacs 中将 Ropemacs 与 TRAMP 一起使用?

标签 python emacs tramp ropemacs

我最近安装了 Ropemacs 的 hg tip 版本,我想在使用 TRAMP 编辑远程文件时使用它。有人做过吗?当我尝试使用 M-/ 完成一个变量名时,我被要求输入 Rope 项目根文件夹,然后我输入:/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 并在本地挂载远程文件系统......

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

我应该提一下,当我不使用 TRAMP 时,使用 M-/ 完成可以正常工作。

最佳答案

不,这是不可能使用 TRAMP 实现的,因为 Python rope 库在想要扫描文件系统以查找 Python 文件时会调用回 Emacs它们的类和函数——相反,它直接在文件系统上使用像 listdir()open() 这样的调用,而不给 Emacs 一个机会来阻止并拦截您正在编辑的带有 TRAMP 前缀的特殊路径。

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

在跨远程文件系统链接进行编辑时,我通常会关闭 rope,或者弄清楚如何从远程系统导出 Emacs session 。我想知道您是否可以使用 rsyncdropbox 甚至 DVCS 之类的东西,以便将文件作为可立即访问的副本存在于本地硬盘驱动器上,但是这样您保存的更改会被复制吗?

关于python - 是否可以在 Emacs 中将 Ropemacs 与 TRAMP 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2815228/

相关文章:

python - 如何在 Python 中就地解压列表或元组?

python - 如何添加2个列表python的int元素

python - mysql 如何对文本数据进行排序?

emacs - 如何使用 Emacs/deftheme 更改所选文本的突出显示颜色?

emacs lisp,如何获取缓冲区主要模式?

emacs - Tramp-Mode 不会与 sudo shell 断开连接?

python - 在 emacs 中使用 flymake 和 tramp 远程运行 pyflakes?

python - Django - 如何通过用户先前选择的选项填充表单中的 manytomany 字段

emacs - 存储在文件中的elisp 代码的结果值?

emacs - 使用 emacs tramp 与 rsync 进行远程开发