4

私はEmacsとRudelを使用してリモートプログラマーとコラボレーションしています。Rudelには、公開されたバッファの概念があります。私のパートナーがバッファを公開するとき、私はそれをサブスクライブすることができ、私たちは両方が同時にそれを編集することができます。

私の問題は、彼が* .py拡張子の付いたPythonファイルを公開し、それをサブスクライブすると、バッファーが自動的にpython-modeに設定されないことです(基本モードです)。バッファが正しい言語モードで開くようにするにはどうすればよいですか?

4

2 に答える 2

3

私はルーデルを100%の解決策を与えるのに十分なほどよく知りませんが、あなたがしたいことは次のようなものです:

(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-mode値を使用して、一般的なEmacsメカニズムbuffer-file-nameを使用してメジャーモードを決定します。

于 2010-03-04T00:05:40.887 に答える
0

私はルーデルがどのように機能するかについてまったく知りません。ただし、テキスト ファイルでモードを明示的に設定しようとしましたか? ファイルの最初の行に次のようなものを追加してみてください。

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

このような行をファイルの最初に置くと、emacs はファイルの拡張子を無視し、指定されたモードで開きます。

于 2010-03-04T01:09:51.587 に答える