2013-04-16 6 views
27

Ich möchte rainbow-mode bei jedem Start von Emacs aktivieren, anstatt M-x rainbow-mode zu verwenden.Wie aktiviert man standardmäßig einen nicht-globalen Minor-Modus beim Start von Emacs?

Ich denke, es gibt einen Befehl, den ich in meine .emacs-Datei eingegeben habe.

Ich habe versucht, alle folgenden, aber keiner von ihnen arbeitet:

(require 'rainbow-mode) 

(rainbow-mode initialize) 

(global-rainbow-mode) 

Allgemeiner gesagt, wie lade ich jeden Modus/Paket automatisch beim Start?

Antwort

30

rainbow-mode ist kein globaler untergeordneter Modus, daher muss er pro Puffer aktiviert werden.

ich es nur für CSS, so habe ich:

(add-hook 'css-mode-hook 'my-css-mode-hook) 
(defun my-css-mode-hook() 
    (rainbow-mode 1)) 

Wenn Sie wirklich es global sein wollen, überall, können Sie leicht eine globale Minor-Modus selbst definieren:

(define-globalized-minor-mode my-global-rainbow-mode rainbow-mode 
    (lambda() (rainbow-mode 1))) 

(my-global-rainbow-mode 1) 

Sie können jede beliebige Logik zu dieser (lambda() (rainbow-mode 1)) Funktion hinzufügen (die in jedem Puffer ausgewertet wird), um zu entscheiden, ob eigentlichanrufen sollfür einen bestimmten Puffer, wenn Sie also mit elisp vertraut sind, können Sie diesen Ansatz problemlos erweitern, um Ihre spezifischen Anforderungen für den betreffenden Modus zu erfüllen.


Allgemeiner gesagt, wie lade ich jeden Modus/Paket automatisch beim Start?

Es kann variieren, aber die Ansätze, die ich gezeigt habe würde für die meisten kleineren Modi genügen: Entweder Sie wollen, dass sie aktiviert, wenn MODE aktiviert ist (einige spezifische andere Modusname ist), in dem Fall, dass Sie die MODE-hook verwenden können Variable (die immer verfügbar sein wird) gemäß dem css-mode-hook Beispiel; oder Sie möchten, dass der Modus dauerhaft aktiviert ist. In diesem Fall ist ein globaler Minor-Modus ein guter Ansatz (da Sie ihn global ein- und ausschalten können). Einige untergeordnete Modi sind standardmäßig global (oder stellen globale Varianten bereit), Sie können jedoch bei Bedarf auch eigene erstellen, wie im Beispiel my-global-rainbow-mode.

bewusst sein, auch die Modi aus anderen Modi abgeleitet werden kann, in welchem ​​Fall alle relevanten MODE-hook Haken wird ausgeführt (Einzelheiten https://stackoverflow.com/a/19295380/324105 sehen). Ein häufiger Anwendungsfall ist die Verwendung von prog-mode-hook, um die gewünschte Funktionalität für die Programmiermodi zu aktivieren, die davon abgeleitet sind (die meisten Programmiermodi).

Denken Sie daran, dass viele (hoffentlich die meisten) Bibliotheken und Pakete Gebrauchsanweisungen enthalten. Wenn Sie die Dokumentation nicht finden können, versuchen Sie M-xfind-library, um die Bibliotheksdatei zu besuchen, und lesen Sie sich die Kommentare oben durch. Es gibt oft einen sehr informativen "Kommentar" -Abschnitt, und manchmal ist dies die primäre Quelle der Endbenutzer-Dokumentation, und erklären, wie sie ihre Funktionalität aktivieren.

+9

Sie können einfach '(add-hook' css-mode-hook 'rainbow-mode) 'ohne durch' my-css-mode-hook 'gehen. – Stefan

+3

Stefan: nur in Emacs 24, sonst schaltet sich der Modus um, und ich bin nicht geneigt anzunehmen, dass jeder aufgerüstet hat. (Und in meinem Fall macht diese Funktion auch eine Menge anderer Dinge, also brauche ich sie :) – phils

+0

Danke! Ich habe dies verwendet, um den goto-address-mode global zu aktivieren. Am Ende habe ich .emacs: '(define-globized-minor-mode global-goto-adresse-mode goto-adresse-mode (lambda() (goto-adresse-modus 1)))) und dann mit Unfall fand den Wert auf anpassen beim Überprüfen der Konfiguration für den Modus, so dass ich am Ende lassen Sie den globalen Modus Aktivierung von anpassen. – pupitetris