Gnus (почтовый клиент Emacs) создает каталоги ~/Mail/
и ~/News
. Я не хочу загромождать свою домашнюю папку, как я могу изменить эти каталоги, скажем, на ~/.emacs.d/mail/
и ~/.emacs.d/news/
?
3 ответа
Сначала я выполнил apropos-value ~/Mail/
. Это бросило мне много переменных, которые содержат эту строку в своих значениях. На моем Debian я установил пакет emacs24-el
чтобы я мог отслеживать эти переменные в коде. Я запустил description describe-variable
в переменной nnfolder-directory
, значение которой было ~/Mail/
. В пошел к коду и обнаружил, что он инициализируется так:
(defvoo nnfolder-directory (expand-file-name message-directory))
То же самое было с переменной nndraft-directory
, содержащей значение ~/News/
, которое на самом деле пришло из переменной gnus-directory
. По какой-то причине каталог ~/Mail/archive/
все еще создается, я думаю, что nnfolder-directory
инициализируется до того, как я установил message-directory
в файле инициализации.
Резюме: чтобы изменить каталоги почты и новостей, поместите это в файл инициализации:
(setq message-directory "~/.emacs.d/mail/")
(setq gnus-directory "~/.emacs.d/news/")
(setq nnfolder-directory "~/.emacs.d/mail/archive")
Я проследил проблему, наблюдаемую синдикатом (по какой-то причине каталог ~/Mail/archive/
все еще создается). Сначала я подумал, что в коде инициализации gnus действительно есть ошибка, о которой я сообщил здесь:
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18284
Но потом я понял, что настройка message-directory
переопределяется предыдущим определением в моем файле newsrc. Таким образом, вам придется отредактировать ваш newsrc и удалить ошибочное определение, чтобы удалить все следы настроек по умолчанию.
Хотя решение работает для большинства из этих переменных, я не смог установить черновой каталог nndraft-directory
поскольку он переопределяется при вызове gnus
(это единственное исключение). Это в основном потому, что nndraft
считается бэкэндом и поэтому настраивается из nnoo-state-alist
. К сожалению, nnoo-state-alist
настраивается при загрузке и принимает начальное значение nndraft-directory
.
Быстрое и грязное исправление - изменить значение списка:
(setq nndraft-directory "~/.emacs.d/mail/drafts/")
(setcdr (assoc 'nndraft-directory
(nnoo-variables 'nndraft))
nndraft-directory)