Wie setze ich ein Farbschema zurück?

25

Wenn ich verschiedene Farbthemen ausprobiere, sieht es so aus, als ob, wenn ein bestimmtes Element im neuen Thema nicht definiert ist, der alte Themawert beibehalten wird und dies zu Konflikten führt. Dies geschieht in Emacs 24 und auch in früheren Versionen mit color-theme. Gibt es eine Möglichkeit, alle Farben dazwischen auf die Standardeinstellungen zurückzusetzen, sodass jedes Farbthema wie beabsichtigt aussieht?

hatmatrix
quelle

Antworten:

22

Sind Sie sicher, dass Sie Farbthemen und keine benutzerdefinierten Emacs-Themen verwenden? Farbthemen werden von der Bibliothek definiert color-theme.el. Benutzerdefinierte Designs sind ab Emacs 24 verfügbar - und sie sind nicht mit Farbdesigns identisch.

  1. Wenn Sie verwenden Farbe Themen dann ist die Antwort einfach: das Pseudo - Farbe-Thema namens ermöglichen [Reset]. Das macht das Thema komplett rückgängig: Entfernt alle Effekte, die es auferlegt hat.

  2. Wenn Sie tatsächlich benutzerdefinierte Emacs- Designs verwenden, ist die Antwort nicht so einfach. Sie können die Anwendung eines benutzerdefinierten Designs nicht rückgängig machen. Was Sie tun können, was sehr hilfreich ist, ist , jedes benutzerdefinierte Thema zu deaktivieren , indem Sie verwenden disable-theme, nachdem es aktiviert wurde und bevor Sie ein anderes benutzerdefiniertes Thema aktivieren .

    Hier sind zwei Möglichkeiten, dies "halbautomatisch" zu tun:

    Weitere Informationen finden Sie in den ursprünglichen SO-Beiträgen. Die Frage und andere Antworten finden Sie auf derselben SO-Seite. (Warnung: Die akzeptierte Antwort auf dieser Seite ist keine Antwort auf das Problem, ein benutzerdefiniertes Thema rückgängig zu machen.)

  3. Beachten Sie, dass selbst die in Nummer 2 beschriebenen Lösungen keine allgemeinen Lösungen sind: Sie machen die Anwendung eines benutzerdefinierten Themas nicht rückgängig - dies ist nicht möglich . Das heißt, ein eigenes Thema zu deaktivieren wiederherstellen nicht alle Nicht-Thema Anpassungen (zB Gesicht verändert) , dass Sie dieses Themas vor der Aktivierung gemacht haben könnten und die von diesem Thema außer Kraft gesetzt wurden.

Mit anderen Worten, ein Verhängnis Farbe Thema ist trivial; Ein benutzerdefiniertes Design rückgängig zu machen ist unmöglich. Das Beste, was Sie für ein benutzerdefiniertes Thema tun können, ist, es im Verhältnis zu anderen benutzerdefinierten Themen zu deaktivieren.

Die beste Referenz für diese Frage und für das Umschalten (z. B. Radfahren) zwischen Farb- und benutzerdefinierten Themen ist die Emacs-Wiki-Seite Farbe und benutzerdefinierte Themen .

Und seien Sie gewarnt: Es gibt an verschiedenen Stellen eine Menge irreführender Informationen zu Emacs benutzerdefinierten Themen in dieser Hinsicht. Die Leute waren zu Recht aufgeregt, dass Emacs in Emacs 24 benutzerdefinierte Themen hinzufügte, und einige von ihnen kamen sofort zu dem falschen Schluss, dass benutzerdefinierte Themen ein Ersatz für Farbthemen waren. Sie sind nicht. Jeder hat einige Vorteile. Das Nicht-Rückgängigmachen ist beispielsweise ein großer Nachteil von benutzerdefinierten Designs.

[ Dieser GNU Emacs-Fehlerbericht ist eine Erweiterungsanforderung, um die Unfähigkeit zu beheben, ein benutzerdefiniertes Design rückgängig zu machen (und somit frühere Anpassungen wiederherzustellen).]

Drew
quelle
1
Sie können auch hinzufügen, dass Sie, wenn Sie ein Farbthema mithilfe eines Befehls wie folgt auswählen color-theme-dark-laptop, manuell einen Schnappschuss erstellen müssen, wenn Sie zum vorherigen Thema zurückkehren möchten. Zum Beispiel (fset 'color-theme-revert (color-theme-make-snapshot))werden Sie den Befehl geben color-theme-revertzurückzukehren. Die Schaltfläche [Zurücksetzen] funktioniert ansonsten nicht. (Um zu testen, ob ich recht habe, geben Sie den Befehl erst ein, wenn color-theme-selectSie das Thema geändert haben, da dadurch der fehlende Schnappschuss für Sie erstellt wird.)
user4514
Bitte beachten Sie, dass Helm-Themes andere Themes automatisch deaktivieren, wenn Sie ein neues auswählen.
ocodo
1
@EmacsFodder: Wenn Sie über benutzerdefinierte Themen sprechen, reicht es nicht aus, andere Themen zu deaktivieren . Sie können nicht unbedingt zum ursprünglichen Zustand zurückkehren, bevor Sie benutzerdefinierte Designs aktiviert haben. Dieses Problem tritt bei Farbthemen nicht auf. Sie können eine Momentaufnahme des Ausgangszustands erstellen und zu diesem zurückkehren. Siehe die zitierte EmacsWiki-Seite und den zitierten Fehlerbericht. Hier gibt es keine magische Silberkugel, Helm oder sonst etwas. Dies liegt an der fehlerhaften Gestaltung von benutzerdefinierten Designs.
Drew
@JSG: Ja, um in den Ausgangszustand zurückzukehren, bevor Sie Farbthemen aktivieren, sollten Sie einen Schnappschuss davon erstellen (was einem Pseudofarbthema entspricht). Dies wird in der zitierten EmacsWiki-Seite und im zitierten Emacs-Fehlerbericht erklärt. Ja, Sie müssen vielleicht vorausdenken, aber es ist zumindest möglich, in diesen Zustand zurückzukehren. Diese Funktion fehlt für benutzerdefinierte Designs. Wenn Sie benutzerdefinierte Designs deaktivieren, kehren Sie nicht zum ursprünglichen Status zurück.
Drew
Dies war eine wertvolle Information für mich über ihre Unterschiede, da ich Emas noch nie angesprochen habe, also danke! Nur aus Gründen zusätzlicher und aktualisierter Informationen, ab Juli 2016 auf Emacs 25.2.1, können Sie jetzt anscheinend auch Ihre eigenen Einstellungen als Thema speichern - oder Emacs hier lässt es mich zumindest tun. Außerdem muss ich explizit angeben (auf der customize-themesBenutzeroberfläche), ob ich mehr als ein Thema gleichzeitig aktivieren möchte. Ich vermute, dass dies eine Möglichkeit sein könnte, ein angewendetes Thema rückgängig zu machen, falls ich es mir anders überlege. Und ich vermute auch, dass man mit etwas Lisp ein automatisches Backup erstellen kann, bevor es aktiviert wird.
Charles Roberto Canato
-2

Wenn Sie eines der integrierten Designs aus ausgewählt haben M-x customize-themes, kommentieren Sie einfach die Zeilen aus, die das benutzerdefinierte Design in Ihrem aktivieren ~/.emacs.

justinp
quelle