[英]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.