2010-05-11 9 views
18

Recientemente instalé la versión hg tip de Ropemacs y me gustaría utilizarla al editar archivos remotos usando TRAMP. ¿Alguien ha hecho esto? Cuando trato de utilizar M-/ para completar un nombre de variable, se me pide que introduzca la Rope project root folder y entro: /ssh:myhost:/path/to/myproject/ y me da el siguiente error:¿Es posible usar Ropemacs con TRAMP en Emacs?

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' 

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

Instalé mazos de cuerda 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 completar con M-/ funciona bien cuando no estoy usando TRAMP.

+3

Usar sshfs es probablemente el enfoque pragmático. Esperar hasta que los hermanos de cuerda reciban soporte para trabajar sobre TRAMP, o parchear mazos de cables usted mismo, es definitivamente más esfuerzo. –

+0

+1 para sshfs, que sigue el principio de modularidad de la filosofía de Unix y no solo funciona con Emacs. –

Respuesta

6

No, esto no es posible el uso de vagabundo, porque la biblioteca de Python rope hace no hacer llamadas de nuevo en Emacs cuando se quiere analizar el sistema de archivos para los archivos de Python para encontrar sus clases y funciones - en su lugar, utiliza las llamadas como listdir() y open() en el sistema de archivos directamente, sin darle a Emacs la oportunidad de interponerse en el camino e interceptar las rutas especiales con prefijo TRAMP que está editando.

Usando sshfs podría ser posible, como han mencionado los comentarios, pero para rope me imagino que sería una solución muy lenta , ya rope tiene que abrir tantos archivos para averiguar el estado de su proyecto.

Por lo general, dejo rope apagado, o bien descubro cómo exportar una sesión de Emacs desde el sistema remoto, cuando edito 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 guardados se copien.

Cuestiones relacionadas