Совместные буферы Emacs открываются в неправильном режиме - PullRequest
4 голосов
/ 04 марта 2010

Я использую Emacs и Rudel для совместной работы с удаленным программистом. У Руделя есть концепция опубликованных буферов. Когда мой партнер публикует буфер, я могу подписаться на него, и мы можем редактировать его одновременно.

Моя проблема в том, что когда он публикует файл Python с расширением * .py и я подписываюсь на него, мой буфер не устанавливается в режим python автоматически (он находится в основном режиме). Как я могу получить так, чтобы буфер открывался с правильным языковым режимом?

Ответы [ 2 ]

3 голосов
/ 04 марта 2010

Я не знаю Руделя достаточно хорошо, чтобы дать 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) , Но если буферы получают нечетные имена, возможно, вам нужно извлечь имя из объекта документа (Рудель внутренне использует объект документа для представления того, чем вы делитесь). Так что, если (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 будет использовать значение buffer-file-name для определения основного режима, используя общие механизмы Emacs .

0 голосов
/ 04 марта 2010

Я абсолютно ничего не знаю о том, как работает Рудель. Тем не менее, вы пытались явно установить режим в текстовом файле? Попробуйте добавить что-то вроде этого в первую строку файла:

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

Если в файле указать строку, подобную этой, сначала emacs проигнорирует расширение файла и откроет его в указанном режиме.

...