Как сбросить цветовую тему?

25

Когда я пробую разные цветовые темы, создается впечатление, что если в новой теме не определен какой-то конкретный элемент, сохраняется старое значение темы, что приводит к некоторому конфликту. Это происходит в Emacs 24, а также в предыдущих версиях color-theme. Есть ли способ сбросить все цвета между ними по умолчанию, чтобы каждая цветовая тема выглядела так, как задумано?

hatmatrix
источник

Ответы:

22

Вы уверены, что используете цветовые темы, а не пользовательские темы Emacs? Цветовые темы определяются библиотекой color-theme.el. Пользовательские темы доступны начиная с Emacs 24 - и они не совпадают с цветными темами.

  1. Если вы используете цветовые темы, тогда ответ прост: просто включите псевдо-цветовую тему с именем [Reset]. Это полностью отменяет тему: удаляет все эффекты, которые она накладывает.

  2. Если вы на самом деле используете пользовательские темы Emacs, то ответ не так прост. Вы не можете отменить применение пользовательской темы. Что вы можете сделать, что очень поможет, так это отключить каждую пользовательскую тему, используя disable-theme, после того, как она была включена, и до включения другой пользовательской темы.

    Вот два способа сделать это «полуавтоматически»:

    Посмотрите эти оригинальные сообщения SO для получения дополнительной информации, и посмотрите вопрос и другие ответы на него на той же странице SO. (Предостережение: принятый ответ на этой странице не является решением проблемы удаления пользовательской темы.)

  3. Имейте в виду, что даже решения, описанные в # 2, не являются общими решениями: они не отменяют применение пользовательской темы - это невозможно сделать. То есть отключение пользовательской темы не восстанавливает никаких настроек, не связанных с темой (например, изменения лица), которые вы могли сделать до включения этой темы и которые были переопределены этой темой.

Другими словами, удаление цветовой темы тривиально; отмена пользовательской темы невозможна. Лучшее, что вы можете сделать для пользовательской темы - это отключить ее относительно других пользовательских тем.

Наилучшим справочным материалом по этому вопросу и способам переключения (например, циклическое переключение) между цветными и пользовательскими темами являются страница Emacs Wiki Color и пользовательские темы .

И будьте предупреждены: в различных местах есть много вводящей в заблуждение информации о пользовательских темах Emacs в этом отношении. Люди по праву были рады, что Emacs добавил пользовательские темы в качестве функции в Emacs 24, и некоторые из них сразу же пришли к ошибочному выводу, что пользовательские темы являются заменой цветным. Они не. У каждого есть свои преимущества. Например, невозможность отмены является серьезным недостатком пользовательских тем.

[ Этот отчет об ошибке GNU Emacs является запросом на улучшение, чтобы исправить невозможность отменить пользовательскую тему (и, таким образом, восстановить более ранние настройки).]

Нарисовался
источник
1
Вы также можете добавить, что если вы выбираете цветовую тему с помощью такой команды, как color-theme-dark-laptopвы, вам нужно вручную сделать снимок, если вы хотите вернуться к предыдущей теме. Например (fset 'color-theme-revert (color-theme-make-snapshot)), даст вам команду color-theme-revertвернуться. Кнопка [Сброс] не будет работать в противном случае. (Чтобы проверить, прав ли я, не color-theme-selectвводите команду перед тем, как сменить тему, так как это сделает недостающий снимок для вас)
user4514
Обратите внимание, что helm-themes автоматически отключит другие темы при выборе новой.
ocodo
1
@EmacsFodder: если вы говорите о пользовательских темах, то отключение других тем недостаточно . Вы не можете обязательно вернуться к исходному состоянию, которое существовало до включения любых пользовательских тем. Эта проблема не существует для цветовых тем - вы можете сделать снимок исходного состояния и вернуться к нему. Смотрите процитированную страницу EmacsWiki и процитированный отчет об ошибках. Здесь нет волшебной серебряной пули, Хелма или чего-то еще. Это из-за (недостатка) способа, которым были разработаны пользовательские темы.
Дрю
@JSG: Да, чтобы иметь возможность вернуться в исходное состояние, прежде чем включать любые цветовые темы, вы должны создать его снимок (который представляет собой псевдоцветную тему). Это объясняется на цитируемой странице EmacsWiki и в отчете об упомянутой ошибке Emacs. Так что да, возможно, вам нужно подумать заранее, но, по крайней мере, можно вернуться к этому состоянию. Эта функция отсутствует для пользовательских тем - отключение пользовательских тем не возвращает вас к исходному состоянию.
Дрю
Это была ценная информация для меня об их различиях, так как я никогда раньше не касался этой темы на Emas, так что спасибо! Просто для дополнительной и обновленной информации, начиная с июля 2016 года в Emacs 25.2.1, теперь кажется, что вы можете сохранить свои собственные настройки как тему - или, по крайней мере, Emacs здесь позволил мне это сделать. Кроме того, я должен явно указать (в customize-themesпользовательском интерфейсе), если я хочу включить более одной темы одновременно. Я предполагаю, что это может быть способом отменить тему, применяемую на случай, если я передумаю. И я также предполагаю, что с каким-то Лиспом можно было бы сохранить автоматическое резервное копирование перед любыми включениями.
Чарльз Роберто Канато
-2

Если вы выбрали одну из встроенных тем из M-x customize-themes, просто закомментируйте строки, которые включают пользовательскую тему в вашей ~/.emacs.

justinp
источник