2010-06-22 18 views
6

Ich benutze Emacs, um eine Reihe von Dateitypen zu bearbeiten, und möchte eine einfache visuelle Warteschlange, um .c-Dateien von .vhd oder .py-Dateien zum Beispiel zu erzählen. Wie kann ich dem Hauptmodus für diese Sprache eine benutzerdefinierte Hintergrundfarbe hinzufügen?Emacs benutzerdefinierte Hintergrundfarbe durch Modus

Antwort

6

Sie können dies über Haken tun. Unter anderem kann man haken wenn ein neuer Hauptmodus startet. Fügen Sie so etwas in Ihre .emacs-Datei ein, und Emacs setzt Ihre Hintergrundfarbe bei jedem Python-Modus auf violett.

(add-hook 'python-mode-hook 
      (lambda() 
       (set-background-color "purple"))) 

Zurücksetzen die Hintergrundfarbe auf die Standardeinstellung in dem Fall, dass Sie in einen Modus umschalten zurück, die keinen expliziten Set-Hintergrund Haken hat es als eine Übung für den Leser überlassen.

Sie können auch manuell die Hintergrundfarbe mit M-x Set-background-color

+0

Danke, das ist, was ich suchte. –

+0

Beachten Sie, dass Sie die Hintergrundfarbe nicht * pro Puffer * oder * pro Fenster * ändern können, sondern nur pro Bild (siehe die Antwort von Trey Jackson unten). – Thomas

4

Sie können die Hintergrundfarbe auf einem Puffer-by-Puffer Basis festgelegt. Siehe die SU-Frage How can I change the background colour of a single emacs buffer?.

Die erste Antwort dort zeigt, wie Sie den Hintergrund für einen einzelnen Emacs-Rahmen ändern können, der für Sie funktionieren könnte, wenn Sie einen Rahmen pro Datei (oder pro Modus) haben.

3

Für die Nachwelt, wie dieser Thread ist 4 Jahre alt, ist es jetzt in Emacs 24.4 + möglich, Gesichter auf einem Puffer lokalen Ebene zu ändern. Definieren Sie einfach ein Gesicht und verwenden Sie (face-remap-add-relative), um das Gesicht, das Sie wollen, damit zu tauschen.

definieren defface a:

(defface my-special-face '((t :background "aqua"))) 

Dann einen Haken in den Modus Ihrer Wahl hinzufügen:

(add-hook 'python-mode-hook 
      (lambda() 
      (face-remap-add-relative 'default 'my-special-face)))