4

我正在使用 Emacs 和Rudel与远程程序员协作。Rudel 有一个发布缓冲区的概念。当我的合作伙伴发布缓冲区时,我可以订阅它,我们可以同时编辑它。

我的问题是,当他发布带有 *.py 扩展名的 Python 文件并订阅它时,我的缓冲区没有自动设置为 python 模式(它处于基本模式)。我怎样才能得到它,以便缓冲区以正确的语言模式打开?

4

2 回答 2

3

我不太了解 Rudel,无法提供 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使用 的值buffer-file-name来确定使用通用 Emacs 机制的主要模式。

于 2010-03-04T00:05:40.887 回答
0

我对鲁德尔的工作原理一无所知。但是,您是否尝试过在文本文件中明确设置模式?尝试在文件的第一行添加类似这样的内容:

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

在文件中首先放置这样的一行将导致 emacs 忽略文件的扩展名并以给定的模式打开。

于 2010-03-04T01:09:51.587 回答