Emacs всегда просит доверять цветовой теме при запуске

10

Мой Emacs всегда спрашивает меня, стоит ли доверять выбранной цветовой теме или нет. Я всегда отвечаю yи yдоверяю и помню свой выбор. Я загружаю цветовую тему вручную:

(load-theme 'my-favourite-theme)

Я полагаю, это потому, что под загрузкой цветовой темы размещены простые настройки. Это какой-то способ исправить это? Или я должен просто делегировать загрузку цветовой темы на простые настройки?

Geradlus_RU
источник
2
load-themeимеет необязательные аргументы: (load-theme THEME &optional NO-CONFIRM NO-ENABLE)- Если используется непосредственно в вашем файле инициализации, он должен вызываться с ненулевым аргументом NO-CONFIRM. , , Другими словами, используйте: (load-theme 'my-favourite-theme t)
юрист
1
так мне нужно (load-theme 'name t nil)или просто (load-theme 'name t)?
Geradlus_RU
2
Необязательные аргументы, которые nilнеобходимо включить ТОЛЬКО, если последующий необязательный аргумент не является nil. Например, если вы хотите, чтобы первый необязательный аргумент был, nilа второй необязательный аргумент был t, то nilдля первого аргумента потребуется. Поскольку второй необязательный аргумент nil- вы можете его опустить или включить - не имеет значения. Иногда я использую nilнеобязательные аргументы, когда нет последующего nilнеобязательного аргумента, просто чтобы знать, сколько необязательных аргументов возможно для конкретной функции, то есть визуального напоминания.
юрист
То, что предлагает @lawlist, - это обходной путь, а не решение. Желательно выяснить, почему у вас возникает эта проблема, поскольку она может вызвать другие проблемы. На самом деле, я много видел эту проблему, поэтому очень хотел бы знать причину.
Малабарба
@Geradlus_RU Если вы не указали в качестве аргумента NO-CONFIRM значение t, emacs будет задавать вам этот вопрос снова каждый раз после обновления этого пакета темы (поскольку его контрольная сумма .el изменяется). Это тот случай? Если вы продолжаете получать эти приглашения каждый раз, когда запускаете emacs (даже если тема .el не была обновлена), убедитесь, что контрольная сумма темы сохранена в emacs, а также прочитана emacs во время запуска. Один из возможных сценариев заключается в том, что вы сохранили файл custom.el в виде отдельного файла (emacs запоминает безопасные темы для них), но вы не загружаете этот файл в init.
Каушал Моди

Ответы:

10

Ваш init.elфайл, вероятно, содержит такой фрагмент:

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 ...)

Помимо прочего, этот фрагмент отвечает за сохранение и восстановление custom-safe-themesпеременной. Поэтому, если это происходит в конце вашего файла инициализации (как это обычно бывает), вы, вероятно, добавили свою (load-theme ...)строку над ним, что объясняет, почему Emacs не знает о ваших безопасных темах во время запуска.

Просто переместите этот фрагмент в начало вашего файла инициализации, и это должно решить вашу проблему.

Malabarba
источник
4

Я использую мо-им , и просто

(require 'moe-theme)
(moe-dark)

загрузит тему без ошибок / предупреждений / подсказок , но если я M-x load-themeв Emacs, она выдаст что-то вроде «относиться к теме как к безопасной», и я нашел решение для этого:

(setq custom-safe-themes t)

Я не знаю, решит ли это вашу проблему, но вы можете попробовать.

CodyChan
источник