我想在每次啓動emacs時啓用rainbow-mode
,而不必使用M-x rainbow-mode
。如何在emacs啓動時默認啓用非全局副模式?
我想我有一些命令放在我的.emacs文件中。
我嘗試了所有的以下的,但他們沒有工作:
(require 'rainbow-mode)
(rainbow-mode initialize)
(global-rainbow-mode)
更一般地,我怎麼在啓動時自動加載任何模式/包?
我想在每次啓動emacs時啓用rainbow-mode
,而不必使用M-x rainbow-mode
。如何在emacs啓動時默認啓用非全局副模式?
我想我有一些命令放在我的.emacs文件中。
我嘗試了所有的以下的,但他們沒有工作:
(require 'rainbow-mode)
(rainbow-mode initialize)
(global-rainbow-mode)
更一般地,我怎麼在啓動時自動加載任何模式/包?
rainbow-mode
不是全局次要模式,所以需要在每個緩衝區的基礎上啓用它。
我只用它的CSS,所以我有:
(add-hook 'css-mode-hook 'my-css-mode-hook)
(defun my-css-mode-hook()
(rainbow-mode 1))
如果真正希望它是全球性的,無處不在,你可以很容易地定義一個全局次要模式自己:
(define-globalized-minor-mode my-global-rainbow-mode rainbow-mode
(lambda() (rainbow-mode 1)))
(my-global-rainbow-mode 1)
您可以添加任何邏輯到那個(lambda() (rainbow-mode 1))
函數(將在每個緩衝區中評估),以便決定是否實際上是請致電(rainbow-mode 1)
對於給定的緩衝區,所以如果您對elisp感到滿意,那麼您可以輕鬆擴展此方法以涵蓋您對所討論模式的特定要求。
更一般地,我怎麼在啓動時自動加載任何模式/包?
它可以有所不同,但我已經展示的方法就足夠了最輕微的模式:要麼你希望他們啓用每當MODE
啓用(即一些具體的其他模式名稱),在這種情況下,你可以使用MODE-hook
根據css-mode-hook
示例的變量(總是可用的);或者您希望永久啓用該模式,在這種情況下,全局小模式是一種好方法(因爲您可以在全局範圍內打開和關閉它)。某些次要模式默認爲全局模式(或提供全局變體),但您可以根據需要創建自己的模式,如my-global-rainbow-mode
示例。
另外要注意,模式可以衍生從其他模式,在這種情況下所有相關MODE-hook
鉤將運行(詳見https://stackoverflow.com/a/19295380/324105)。一個常見的使用案例是使用prog-mode-hook
來啓用所需的所有所需的功能,這些功能是從它派生的編程模式(這是大多數編程模式)。
請記住,許多(希望大多數)圖書館和軟件包將提供使用說明。如果找不到文檔,請務必嘗試使用M-xfind-library
訪問庫文件,然後通讀頂部的註釋。通常有一個非常豐富的「評論」部分,有時這是最終用戶文檔的主要來源,並解釋如何啓用其功能。
您可以在不通過my-css-mode-hook的情況下執行'(add-hook'css-mode-hook'rainbow-mode)'。 – Stefan
Stefan:僅在Emacs 24中,否則會切換模式,我不傾向於認爲每個人都已升級。 (在我的情況下,該功能也做了一堆其他的事情,所以我確實需要它:) – phils
謝謝你!我用它來全局啓用goto-address-mode。最後,我輸入.emacs:'(define-globalized-minor-mode global-goto-address-mode goto-address-mode (lambda()(goto-address-mode 1)))'然後按事故在檢查模式的配置時發現定製值,所以最終我讓全局模式激活由定製來處理。 – pupitetris