2013-04-16 5 views
27

M-x rainbow-modeを使用するのではなく、emacsを起動するたびにrainbow-modeを有効にします。emacsの起動時に、デフォルトで非グローバルマイナーモードを有効にするには?

私は自分の.emacsファイルにいくつかのコマンドがあると思います。

私は、次のすべてを試みたが、それらのどれも働いていない:より一般的に

(require 'rainbow-mode) 

(rainbow-mode initialize) 

(global-rainbow-mode) 

を、どのように私は起動時に自動的に任意のモード/パッケージをロードするのですか?

答えて

30

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))関数(すべてのバッファで評価される)に任意のロジックを追加してと呼ぶことができますを使用していますので、elispに慣れていれば、この方法を簡単に拡張して、問題のモードの特定の要件をカバーすることができます。より一般的に


、どのように私は起動時に自動的に任意のモード/パッケージをロードするのですか?

それは変えることができるが、私が示されてきたアプローチは、ほとんどのマイナモードのために十分であろう:あなたはMODEが有効になっている時はいつでも彼らはあなたがMODE-hookを使用することができ、その場合には、(いくつかの特定の他のモード名であること)を有効にしたいどちらか変数(これは常に利用可能です)は、css-mode-hookの例に従います。そうでない場合は、モードを永続的に有効にする必要があります。グローバルなマイナーモードは、グローバルにオンとオフを切り替えることができるため、良いアプローチです。一部のマイナーモードはデフォルトでグローバルになっています(またはグローバルバリアントを提供します)が、my-global-rainbow-modeの例のように必要に応じて独自のモードを作成できます。

はまた、モードはが(詳細はhttps://stackoverflow.com/a/19295380/324105を参照)、その場合内のすべての関連MODE-hookフックが実行され、他のモードからを導き出すことができることに注意してください。一般的な使用例は、prog-mode-hookを使用して、すべて(ほとんどのプログラミングモード)から派生したプログラミングモードを使用可能にすることです。

多くの(願わくはほとんどの)ライブラリとパッケージが使用方法を提供することに注意してください。ドキュメントが見つからない場合は、M-xfind-libraryにアクセスしてライブラリファイルにアクセスしてから、上部のコメントを読んでください。多くの場合、非常に有益な「解説」セクションがあり、時にはこれがエンドユーザーのドキュメントの主要なソースであり、その機能を有効にする方法について説明します。

+9

'my-css-mode-hook'を経由せずに'(add-hook 'css-mode-hook' rainbow-mode) 'を実行するだけです。 – Stefan

+3

Stefan:Emacs 24でのみ、それ以外の場合はモードをトグルします。私は誰もがアップグレードされたと想定するつもりはありません。 (そして、私の場合はその機能も他のものをやっているので、私はそれを必要とします:) – phils

+0

ありがとう!私はgoto-address-modeをグローバルに有効にするためにこれを使用しました。最後に、私は.emacsを入れました: '(define-globalized-minor-modeグローバル - goto-address-mode goto-address-mode (lambda()(goto-address-mode 1)))'事故は、モードの設定をチェックしながらカスタマイズの価値を見いだしたので、最終的に私はグローバルモードの起動をカスタマイズすることができました。 – pupitetris

関連する問題