Emacs collaborative buffers open in the wrong mode

collaboration, emacs, pair-programming, python

Solution

I don't know Rudel well enough to give a 100% solution, but what you want to do is something like this:

(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)))

Only, you need to replace the `...get-name-from-document...` portion of the code with something that evaluates to the file name that you want, for example, if the buffer is named `myfile.py`, then you can change that to `(buffer-name)`. But, if the buffers get odd names, perhaps you need to extract the name from the document object (Rudel internally uses a document object to represent the thing you are sharing). So, if `(buffer-name)` doesn't work, you can try `(rudel-suggested-buffer-name document)`.

i.e. try the above code but using one of these lines:

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

and

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

The `set-auto-mode` will use value of `buffer-file-name` to determine the major mode using the general Emacs mechanisms.

Problem

I am using Emacs and Rudel to collaborate with a remote programmer. Rudel has a concept of published buffers. When my partner publishes a buffer, I can subscribe to it and the we can both edit it simultaneously. My problem is that when he publishes a Python file with a *.py extension and I subscribe to it, my buffer is not set to python-mode automatically (it is in fundamental mode). How can I get it so that the buffer opens with the correct language mode?

Original source