簡體   English   中英

如何重新加載emacs主模式?

[英]How to reload an emacs major mode?

我在某些主模式下有緩沖區,在另一個緩沖區中有模式文件本身(* .el)。 編輯* .el文件后,我希望看到第一個緩沖區中反映的更改,而不重新啟動emacs。 我試圖運行-mode函數,但它沒有更改緩沖區。 謝謝

如果您的模式使用(provide 'foo-mode)提供功能(應該! (provide 'foo-mode)那么您可以

Mx卸載功能RET foo-mode RET

然后正常加載模式(如果您有適當的自動加載,則使用foo-mode ,否則使用load-libraryload-file )。

M-x load-file your-mode.el

要么

M-x eval-buffer

然后在緩沖區中打開和關閉行為,大概是通過這樣做

M-x your-mode
M-x your-mode

或者,如果您的模式識別出前綴參數

C-u 1 M-x your-mode

注意:當您加載文件時, defvar不會覆蓋現有值,因此如果您更改defvar調用中的值,則需要通過在光標處於devfar時執行CMx來專門評估這些devfar表達式,或使用Mx:並在表達式中鍵入。 有關在Emacs中評估lisp的文檔,請參閱此頁面

編輯模式源時,必須確保評估更改的功能 - 僅將文件保存到文件是不夠的,因為內部Emacs仍將使用舊代碼。

例如,您可以跳轉到使用MCe處理的函數定義的末尾,並使用Cx Ce計算函數。 從那時起,Emacs將使用當前的定義。

這也適用於模式定義,但通常調用具有Mx模式名稱的模式實現為切換:您調用它一次,它激活模式,再次調用它,它取消激活模式。 因此,您可能需要兩次執行Mx模式名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM