牛羚(Emacs 的邮件客户端)创建目录~/Mail/
和~/News
。我不想让我的主文件夹杂乱无章,我怎样才能将这些目录更改为~/.emacs.d/mail/
和~/.emacs.d/news/
?
答案1
首先我执行了apropos-value ~/Mail/
。它向我抛出了许多变量,它们的值中包含此字符串。在我的 Debian 上,我安装了软件包,emacs24-el
以便可以在代码中追踪这些变量。我运行describe-variable
了变量nnfolder-directory
,其值为~/Mail/
。进入代码并发现它是这样初始化的:
(defvoo nnfolder-directory (expand-file-name message-directory))
nndraft-directory
包含值的变量也是如此~/News/
,该值实际上来自变量gnus-directory
。由于某种原因,目录~/Mail/archive/
仍然被创建,我认为nnfolder-directory
是在我设置message-directory
init 文件之前初始化的。
恢复:要更改您的邮件和新闻目录,请将其放入初始化文件:
(setq message-directory "~/.emacs.d/mail/")
(setq gnus-directory "~/.emacs.d/news/")
(setq nnfolder-directory "~/.emacs.d/mail/archive")
答案2
我跟踪了 sindikat 发现的问题(由于某种原因,目录~/Mail/archive/
仍然被创建)。起初我以为 gnus 初始化代码中确实有一个错误,我已在此处报告:
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18284
但后来我意识到该message-directory
设置已被我的 newsrc 文件中的先前定义覆盖。因此,您必须编辑您的 newsrc 并删除有问题的定义,以便删除默认设置的所有痕迹。
答案3
虽然该解决方案适用于大多数变量,但我无法设置草稿目录,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)