【发布时间】:2012-11-24 06:18:56
【问题描述】:
我在我的 Windows 7 计算机上安装了多个 emacs,每个配置都略有不同。假设installation1 和installation2,其中installation1 是主要的emacs,installation2 是附属的。
我想维护两组.emacs 文件和.emacs.d. 目录,这样installation1 在默认的HOME 或%appdata% 目录中查找它(C-x C-f ~/.emacs RET),但是 installation2 在这些目录中根本找不到 .emacs 文件。也就是说,我希望installation2 不查看HOME 或%appdata% 位置的.emacs.d 目录或.emacs 文件。理想情况下,这将通过为 installation2 重新定义 ~ 扩展来实现。
我想我可以拥有一个(add-to-list 'load-path "C:/installation2-location/.emacs.d/lisp/") 并将其保存到与installation2 emacs 可执行文件位于同一目录中的.emacs 文件中,但我不确定这是一个可靠的解决方案。
欢迎提出建议。
【问题讨论】:
-
这种完全分离真的有必要吗?您知道可以从命令行设置站点和用户初始化文件吗?并且您可以设置
.emacs文件以选择几种基本配置中的一种,具体取决于例如一个环境变量(我猜在 Windoze 上不太有用),一个命令行参数等。 -
@tripleee 您能否再细分一下——我认为我不完全理解您的建议。您是说我从命令行使用
> runemacs --init-file=.emacs-installation1 --init-directory=C:/installation1-location/.emacs.d之类的东西启动 emacs(我不确定这些开关是否存在——emacs --help没有显示这样的选项,但可能存在类似的东西)?我完全不确定您对环境的建议是什么意思,但正如您所提到的,这可能是因为我使用的是 Windows(最好的操作系统,顺便说一句)。 ;) -
Windows 有像
%home%这样的环境变量,但它们的行为不像在类 Unix 系统上那样,因此使用一些本机机制可能会更好——想到注册表,但它是全局的AFAICT,我不知道从 Elisp 访问它的难易程度。 -
如果你有一个单独的用户,那么
emacs -u him运行他的 Emacs 配置文件而不是你的。您可能更喜欢emacs -q -l a:\files\config.el甚至emacs -Q作为“白名单”。进一步查看linux.die.net/man/1/emacs -
我不确定你为什么想要两个不同的配置,为什么你有两个不同的安装,为什么你特别想在一个安装中使用一个配置,在另一个安装中使用另一个配置。你能提供一些细节吗?根据您的具体需求,解决方案可能简洁明了,也可能相当复杂且不可靠。