2010-05-11 37 views
18

Gần đây tôi đã cài đặt phiên bản hg tip của Ropemac và tôi muốn sử dụng nó khi chỉnh sửa các tệp từ xa bằng TRAMP. Có ai đã làm điều này không? Khi tôi cố gắng sử dụng M-/ để hoàn thành một tên biến, tôi đang yêu cầu nhập Rope project root folder và tôi hãy nhập: /ssh:myhost:/path/to/myproject/ và nó mang lại cho tôi những lỗi sau:Có thể sử dụng Ropemacs với TRAMP trong Emacs không?

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' 

Tôi tưởng tượng ropemacs không hỗ trợ các file từ xa với TRAMP . Chỉ cần tự hỏi nếu có ai tìm được cách giải quyết. Có lẽ một số elisp tùy chỉnh? Hoặc có thể tôi nên sử dụng sshfs và gắn hệ thống tệp từ xa tại địa phương ...

Tôi đã cài đặt ropemac trong một virtualenv tại /home/saltycrane/lib/python-environments/default. Tôi đang sử dụng GNU Emacs 23.1.50.1 trên Ubuntu Lucid.

Tôi nên đề cập đến việc hoàn thành với M-/ hoạt động tốt khi tôi không sử dụng TRAMP.

+3

Sử dụng sshfs có lẽ là cách tiếp cận thực dụng. Chờ đợi cho đến khi ropemacs được hỗ trợ để làm việc trên TRAMP, hoặc vá ropemacs mình, chắc chắn là nỗ lực nhiều hơn nữa. –

+0

+1 cho sshfs, tuân theo nguyên lý mô đun của triết lý Unix và không chỉ hoạt động với Emacs. –

Trả lời

6

Không, điều này không thể sử dụng TRAMP, vì thư viện Python rope không không thực hiện cuộc gọi trở lại vào Emacs khi nó muốn để quét hệ thống tập tin cho các tập tin Python để tìm các lớp học và chức năng của họ - thay vào đó, nó sử dụng các cuộc gọi như listdir()open() trên hệ thống tệp trực tiếp, mà không cho Emacs một cơ hội để cản đường và chặn các đường dẫn TRAMP có tiền tố đặc biệt mà bạn đang chỉnh sửa.

Sử dụng sshfs có thể là có thể, như các ý kiến ​​đã đề cập đến, nhưng đối với rope tôi tưởng tượng rằng nó sẽ là một giải pháp rất chậm, vì rope phải mở quá nhiều file để tìm hiểu tình trạng của dự án của bạn.

Tôi thường rời khỏi rope tắt hoặc tìm cách xuất phiên Emac từ hệ thống từ xa, khi chỉnh sửa qua liên kết hệ thống tệp từ xa. Tôi tự hỏi nếu bạn có thể sử dụng một cái gì đó như rsync hoặc dropbox hoặc thậm chí DVCS sao cho các tệp sẽ xuất hiện trên ổ cứng cục bộ của bạn dưới dạng bản sao có thể truy cập ngay lập tức, nhưng những thay đổi bạn lưu sẽ được sao chép?

Các vấn đề liên quan