2010-05-11 13 views
18

Ich habe vor kurzem die HG-Tip-Version von Ropemacs installiert und möchte sie beim Bearbeiten von Remote-Dateien mit TRAMP verwenden. Hat jemand das getan? Wenn ich versuche, M-/ zu verwenden, um einen Variablennamen zu vervollständigen, wird mich gebeten, die Rope project root folder eingeben und ich eingeben: /ssh:myhost:/path/to/myproject/ und es gibt mir die folgende Fehlermeldung:Ist es möglich, Ropemacs mit TRAMP in Emacs zu verwenden?

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' 

ich ropemacs vorstellen, nicht entfernte Dateien mit TRAMP unterstützen . Ich frage mich nur, ob jemand einen Workaround gefunden hat. Vielleicht eine benutzerdefinierte elisp? Oder vielleicht sollte ich sshfs verwenden und das Remote-Dateisystem lokal mounten ...

Ich installierte Ropemacs in einem virtualenv bei . Ich verwende GNU Emacs 23.1.50.1 auf Ubuntu Lucid.

Ich sollte erwähnen, dass die Fertigstellung mit M-/ funktioniert, wenn ich nicht TRAMP benutze.

+3

Die Verwendung von sshfs ist wahrscheinlich der pragmatische Ansatz. Zu warten, bis Ropemacs Unterstützung für die Arbeit mit TRAMP bekommen oder Ropemacs selbst patchen, ist definitiv mehr Aufwand. –

+0

+1 für sshfs, das dem Modularitätsprinzip der Unix-Philosophie folgt und nicht nur mit Emacs zusammenarbeitet. –

Antwort

6

Nein, das ist nicht möglich TRAMP verwenden, weil der Python rope Bibliothek tut nicht make zurück in Emacs aufruft, wenn es will, das Dateisystem für Python-Dateien scannen ihre Klassen und Funktionen zu finden - stattdessen verwendet es Anrufe wie listdir() und open() direkt auf dem Dateisystem, ohne Emacs die Möglichkeit zu geben, die speziellen TRAMP-Präfix-Pfade, die Sie gerade bearbeiten, zu stören.

sshfs Verwendung könnte möglich sein, da die Kommentare schon erwähnt haben, aber für rope Ich stelle mir vor, dass es eine sehr langsam Lösung wäre, da rope so viele Dateien zu öffnen hat, um den Zustand Ihres Projekts zu erfahren.

Ich lasse rope im Allgemeinen aus oder finde heraus, wie man eine Emacs-Sitzung vom fernen System exportiert, wenn ich über eine remote-Dateisystemverbindung bearbeite. Ich frage mich, ob Sie etwas wie rsync oder dropbox oder sogar ein DVCS verwenden könnten, so dass die Dateien auf Ihrer lokalen Festplatte als sofort verfügbare Kopien vorhanden wären, aber damit die Änderungen, die Sie speichern, kopiert werden?

Verwandte Themen