Emacs协作缓冲区在错误的mod中打开

2024-09-29 01:20:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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


Tags: 文件py语言概念编辑远程模式合作伙伴
2条回答

我完全不知道鲁德尔是怎么工作的。但是,您是否尝试在文本文件中显式设置模式?尝试在文件的第一行添加类似的内容:

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

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

我不太了解鲁德尔,不能给出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)。但是,如果缓冲区的名称是奇数,那么您可能需要从document对象中提取该名称(Rudel在内部使用document对象来表示您正在共享的内容)。因此,如果(buffer-name)不起作用,可以尝试(rudel-suggested-buffer-name document)。在

例如,尝试上述代码,但使用以下行之一:

^{pr2}$

以及

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

set-auto-mode将使用buffer-file-name的值来确定使用general Emacs mechanisms的主模式。在

相关问题 更多 >