2010-03-03 4 views
4

원격 프로그래머와 공동 작업하기 위해 Emacs와 Rudel을 사용하고 있습니다. Rudel은 게시 된 버퍼 개념을 가지고 있습니다. 내 파트너가 버퍼를 게시하면 구독 할 수 있으며 동시에 둘 다 편집 할 수 있습니다.Emacs 협력 버퍼가 잘못된 모드로 열림

내 문제는 그가 * .py 확장자를 가진 Python 파일을 게시하고 구독 할 때 내 버퍼가 파이썬 모드로 자동 설정되지 않는다는 것입니다 (기본 모드에 있음). 올바른 언어 모드로 버퍼가 열리도록하려면 어떻게해야합니까?

내가 100 %의 솔루션을 제공하기 위해 충분히 RUDEL 알고 있지만 싶은 것은이 같은 것입니다하지 않습니다
+0

일종의 offtopic, 그러나 당신은 그것을 어떻게 모두 얻었습니까? 좋은 튜토리얼이 있습니까? (나는 제대로 작동하지 못했던 rudel을 얻지 못했다) – unhammer

+0

정확히 기억할 수는 없지만 Rudel은 설치하기가 쉽지 않았고 제대로 작동하지 못했다. 그것이 작동 할 때조차, 나의와 나의 협동 자의 완충기는 수시로 일의 시간 안에 동기화에서 어울릴 것입니다. 나는 Rudel을 사용하는 것을 포기했다. 요즘 나는 tmux 또는 GNU Screen을 사용하여 Emacs를 실행하는 텍스트 터미널을 공유하는 것을 선호합니다. 단점은이 방법을 사용하면 한 번에 한 사람 만 입력 할 수 있다는 것입니다. 내 의견으로는 더 많은 공동 작업을해야하기 때문에이 방법이 더 좋습니다. – hekevintran

+0

그게 내가 지금 사용하는 tmux와 emacs multi-tty이다. 그러나 우리는 동시에 (이 방법 http://www.emacswiki.org/emacs/tmux_for_collaborative_editing) 입력 할 수 있지만 isearch와 같은 생각이 좀 엉망이 된 것 같아요 ... – unhammer

답변

3

:

(add-hook 'rudel-document-attach-hook 'my-rudel-set-mode-appropriately) 
(defun my-rudel-set-mode-appropriately (document buffer) 
    "try to set the mode appropriately" 
    (set-buffer buffer) 
    (let ((buffer-file-name ...get-name-from-document...)) 
    (set-auto-mode))) 

만, 당신이 코드의 ...get-name-from-document... 부분을 교체해야 예를 들어 버퍼 이름이 myfile.py 인 경우와 같이 원하는 파일 이름으로 평가되는 항목이 있으면 (buffer-name)으로 변경할 수 있습니다. 그러나 버퍼에 이상한 이름이 붙으면 문서 객체에서 이름을 추출해야합니다 (Rudel은 내부적으로 문서 객체를 사용하여 공유하고있는 것을 나타냅니다). 따라서 (buffer-name)이 작동하지 않으면 (rudel-suggested-buffer-name document)을 시도 할 수 있습니다.

즉 위의 코드를 시도하지만,이 라인 중 하나를 사용하여 :

(let ((buffer-file-name (buffer-name))) 

(let ((buffer-file-name (rudel-suggested-buffer-name document))) 

set-auto-modegeneral Emacs mechanisms를 사용하여 주요 모드를 결정하기 위해 buffer-file-name의 값을 사용합니다.

+0

"rudel- 제안 된 버퍼 이름 문서) "? 나는 문서에서 이름을 ... 얻는 것에 대해 분실했다. – hekevintran

+0

@hekevintran 나는 대답을 넓혔다. –

+0

감사합니다. 위대한 작품입니다. – hekevintran

0

나는 루델이 어떻게 작동하는지 전혀 모른다. 그러나 텍스트 파일에서 명시 적으로 모드를 설정해 보셨습니까? 파일의 첫 번째 줄에 이런 식으로 뭔가를 추가하십시오 :

# -*- mode: python; fill-column: 75; comment-column: 50; -*- 

주어진 모드에서이 파일의 확장자를 무시하는 이맥스의 원인이됩니다 파일의 첫 번째 오픈과 같은 라인을 퍼팅.