作者:小啊小刺猬0801_302 | 来源:互联网 | 2023-09-11 15:40
我正在使用Emacs和Rudel与远程程序员合作.Rudel有一个已发布缓冲区的概念.当我的合作伙伴发布缓冲区时,我可以订阅它,我们可以同时编辑它.我的问题是当他发布一个带有*
我正在使用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,那么您可以将其更改为(缓冲区名称).但是,如果缓冲区得到奇怪的名称,可能需要从文档对象中提取名称(Rudel内部使用文档对象来表示您正在共享的内容).因此,如果(缓冲区名称)不起作用,您可以尝试(rudel-suggested-buffer-name文档).
即尝试上面的代码,但使用以下其中一行:
(let ((buffer-file-name (buffer-name)))
和
(let ((buffer-file-name (rudel-suggested-buffer-name document)))
set-auto-mode将使用buffer-file-name的值来确定使用general Emacs mechanisms的主模式.