python emacs tramp ropemacs

python - ¿Es posible usar Ropemacs con TRAMP en Emacs?



(1)

Recientemente instalé la versión hg tip de Ropemacs y me gustaría usarla cuando edite archivos remotos utilizando TRAMP. ¿Alguien ha hecho esto? Cuando trato de usar M-/ para completar un nombre de variable, se me pide que ingrese a la Rope project root folder y que ingrese: /ssh:myhost:/path/to/myproject/ y me da el siguiente error:

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''

Me imagino que ropemacs no admite archivos remotos con TRAMP. Me pregunto si alguien ha encontrado una solución. Tal vez algún elisp personalizado? O tal vez debería usar sshfs y montar el sistema de archivos remoto localmente ...

Instalé ropemacs en un virtualenv ubicado en /home/saltycrane/lib/python-environments/default . Estoy usando GNU Emacs 23.1.50.1 en Ubuntu Lucid.

Debo mencionar que la finalización con M-/ funciona bien cuando no estoy usando TRAMP.


No, esto no es posible usando TRAMP, porque la biblioteca de rope Python no hace llamadas a Emacs cuando quiere escanear el sistema de archivos en busca de archivos de Python para encontrar sus clases y funciones; en cambio, usa llamadas como listdir() y open() en el sistema de archivos directamente, sin darle a Emacs la oportunidad de interponerse e interceptar las rutas especiales con el prefijo TRAMP que está editando.

El uso de sshfs podría ser posible, como lo mencionaron los comentarios, pero para la rope , imagino que sería una solución muy lenta, ya que la rope tiene que abrir tantos archivos para averiguar el estado de su proyecto.

Por lo general, dejo la rope o me imagino cómo exportar una sesión de Emacs desde el sistema remoto, al editar a través de un enlace de sistema de archivos remoto. Me pregunto si podría usar algo como rsync o dropbox o incluso un DVCS para que los archivos estén presentes en su disco duro local como copias de acceso inmediato, pero para que los cambios que guarde se copien.