Jak zresetować motyw kolorów?

25

Kiedy próbuję użyć różnych motywów kolorów, wydaje się, że jeśli określony element nie jest zdefiniowany w nowym motywie, stara wartość motywu zostaje zachowana, co prowadzi do pewnych sprzeczności. Dzieje się tak w emacs 24, a także we wcześniejszych wersjach color-theme. Czy istnieje sposób na zresetowanie wszystkich kolorów pomiędzy domyślnymi, aby każdy motyw kolorów wyglądał zgodnie z przeznaczeniem?

hatmatrix
źródło

Odpowiedzi:

22

Czy na pewno używasz motywów kolorowych, a nie niestandardowych motywów Emacsa? Motywy kolorów są definiowane przez bibliotekę color-theme.el. Własne motywy są dostępne wyjścia z Emacs 24 - i są one nie taki sam jak kolor tematów.

  1. Jeśli używasz motywów kolorów, odpowiedź jest prosta: po prostu włącz pseudo-motyw kolorów o nazwie [Reset]. To całkowicie odwraca temat: usuwa wszystkie nałożone efekty.

  2. Jeśli faktycznie używasz niestandardowych motywów Emacsa, odpowiedź nie jest taka prosta. Nie można cofnąć zastosowania niestandardowego motywu. To, co możesz bardzo pomóc, to wyłączyć każdy niestandardowy motyw, używając disable-themego po włączeniu i przed włączeniem innego niestandardowego motywu.

    Oto dwa sposoby wykonania tego „półautomatycznie”:

    Zobacz te oryginalne posty SO, aby uzyskać trochę więcej informacji, i zobacz pytanie i inne odpowiedzi na to na tej samej stronie SO. (Zastrzeżenie: zaakceptowana odpowiedź na tej stronie nie jest odpowiedzią na problem cofnięcia niestandardowego motywu).

  3. Pamiętaj, że nawet rozwiązania opisane w punkcie 2 nie są rozwiązaniami ogólnymi: nie cofają zastosowania niestandardowego motywu - nie ma na to sposobu. Oznacza to, że wyłączenie niestandardowego motywu nie przywraca żadnych dostosowań innych niż motyw (np. Zmian twarzy), które mogły zostać wprowadzone przed włączeniem tego motywu i które zostały zastąpione przez ten motyw.

Innymi słowy, cofnięcie motywu kolorowego jest banalne; cofnięcie niestandardowego motywu jest niemożliwe. Najlepsze, co możesz zrobić dla niestandardowego motywu, to wyłączyć go względem innych niestandardowych motywów.

Najlepszym odniesieniem do tego pytania i sposobów przełączania (np. Cyklicznego) pomiędzy kolorowymi i niestandardowymi motywami jest strona Emacs Wiki Kolor i niestandardowe motywy .

I ostrzegam: w różnych miejscach jest sporo mylących informacji na temat niestandardowych motywów Emacsa w tym zakresie. Ludzie byli słusznie podekscytowani tym, że Emacs dodał niestandardowe motywy jako funkcję Emacsa 24, a niektórzy z nich od razu doszli do błędnego wniosku, że niestandardowe motywy zastępują motywy kolorowe. Oni nie są. Każdy ma pewne zalety. Brak możliwości cofnięcia jest na przykład główną wadą niestandardowych motywów.

[ Ten raport o błędach GNU Emacs jest prośbą o ulepszenie, aby zaradzić niemożności cofnięcia niestandardowego motywu (a tym samym przywrócenia wcześniejszych dostosowań).]

Drew
źródło
1
Możesz również dodać, że jeśli wybierzesz motyw kolorystyczny za pomocą polecenia takiego jak color-theme-dark-laptopwtedy, musisz ręcznie zrobić migawkę, jeśli chcesz powrócić do poprzedniego motywu. Np. (fset 'color-theme-revert (color-theme-make-snapshot))Da ci polecenie color-theme-revertcofnięcia. W przeciwnym razie przycisk [Resert] nie będzie działał. (Aby sprawdzić, czy mam rację, nie color-theme-select
wydawaj
Uwaga: motywy steru automatycznie wyłączają inne motywy podczas wybierania nowego.
ocodo
1
@EmacsFodder: Jeśli mówisz o niestandardowych motywach, wyłączenie innych motywów nie wystarczy . Nie można koniecznie powrócić do stanu początkowego, który istniał przed włączeniem dowolnych motywów niestandardowych. Ten problem nie występuje w przypadku motywów kolorów - możesz zrobić migawkę stanu początkowego i powrócić do niego. Zobacz cytowaną stronę EmacsWiki i cytowany raport o błędach. Nie ma tu magicznej srebrnej kuli, hełmu lub innej. Wynika to z (niedoskonałości) sposobu zaprojektowania niestandardowych motywów.
Drew
@JSG: Tak, aby móc powrócić do stanu początkowego, przed włączeniem jakichkolwiek motywów kolorów, należy utworzyć jego migawkę (co odpowiada pseudokolorowemu motywowi). Jest to wyjaśnione w cytowanej stronie EmacsWiki i cytowanym raporcie o błędach Emacsa. Tak, być może będziesz musiał myśleć z wyprzedzeniem, ale przynajmniej można wrócić do tego stanu. Tej funkcji brakuje w przypadku motywów niestandardowych - wyłączenie motywów niestandardowych nie spowoduje powrotu do stanu początkowego.
Drew
To była dla mnie cenna informacja o ich różnicach, ponieważ nigdy wcześniej nie poruszałam tego tematu w Emas, więc dziękuję! Tylko ze względu na dodatkowe i zaktualizowane informacje, od lipca 2016 r. Na Emacs 25.2.1, teraz wydaje się, że możesz również zapisać własne ustawienia jako motyw - lub przynajmniej Emacs tutaj pozwól mi to zrobić. Ponadto muszę wyraźnie wskazać (w customize-themesinterfejsie użytkownika), czy chcę włączyć więcej niż jeden motyw w tym samym czasie. Domyślam się, że mogą to być sposoby cofnięcia zastosowania motywu na wypadek zmiany zdania. Zgaduję również, że przy niektórych Lispach można zachować automatyczne tworzenie kopii zapasowych przed włączeniem.
Charles Roberto Canato,
-2

Jeśli wybrałeś jeden z wbudowanych motywów M-x customize-themes, po prostu skomentuj linie, które włączają niestandardowy motyw w twoim ~/.emacs.

justinp
źródło