Gnus (Emacs's mail client) creates directories ~/Mail/
and ~/News
. I don't want to clutter my home folder, how can i change this directories to, say, ~/.emacs.d/mail/
and ~/.emacs.d/news/
?
3 Answers
First i executed apropos-value ~/Mail/
. It threw me many variables, that contain this string in their values. On my Debian i installed package emacs24-el
so i could track down these variables in code. I ran describe-variable
on the variable nnfolder-directory
, which value was ~/Mail/
. In went to the code and found out it's initialized like this:
(defvoo nnfolder-directory (expand-file-name message-directory))
The same was with the varible nndraft-directory
that contained value ~/News/
, which actually came from variable gnus-directory
. For some reason the directory ~/Mail/archive/
is still created, i think nnfolder-directory
is initialized before i set message-directory
in init file.
Resume: to change your mail and news directories, put this into init file:
(setq message-directory "~/.emacs.d/mail/")
(setq gnus-directory "~/.emacs.d/news/")
(setq nnfolder-directory "~/.emacs.d/mail/archive")
-
-
Thanks for the tip about
apropos-value
– I had no idea one could do that!– unhammerJul 1, 2016 at 6:32
I've traced the problem sindikat observed (that for some reason the directory ~/Mail/archive/
is still created). At first I thought there was indeed a bug in gnus initialization code which I've reported here:
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18284
But then I realized that the message-directory
setting was being overriden by a previous definition in my newsrc file. So you will have to edit your newsrc and remove the offending definition in order to remove every trace of the default setting.
While the solution works for most of those variables, I couldn't set the draft directory nndraft-directory
since it's overridden when calling gnus
(that's the only exception). That's mostly because nndraft
is considered a backend and is therefore configured from the nnoo-state-alist
list. Sadly, nnoo-state-alist
is configured at loading and takes the initial nndraft-directory
value.
A quick and dirty fix would be to change the list value:
(setq nndraft-directory "~/.emacs.d/mail/drafts/")
(setcdr (assoc 'nndraft-directory
(nnoo-variables 'nndraft))
nndraft-directory)