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?