繁体   English   中英

Emacs协作缓冲区以错误模式打开

[英]Emacs collaborative buffers open in the wrong mode

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

我的问题是当他发布一个带有* .py扩展名的Python文件并且我订阅它时,我的缓冲区没有自动设置为python-mode(它处于基本模式)。 如何才能使用正确的语言模式打开缓冲区?

我不太清楚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机制的主模式。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM