我在几台计算机(Linux和Windows机箱)上使用Emacs,我的.emacs.d通过ownCloud同步:.emacs(在〜或Appdata中)只加载{ownCloud directory} / .emacs.d / init.el。
我的问题是,如何根据操作系统/用户名将init.el的路径作为变量。
例如,Zenburn theme上的自述文件需要您的init包含
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")
但是,由于我的主目录和.emacs.d的路径因机器而异,因此不起作用。 我正在考虑这样的事情来补救它:
(add-to-list 'custom-theme-load-path "{THE DIRECTORY THAT CONTAINS THIS INIT FILE}/themes/")
可以这样做吗?我只用两周时间使用Emacs,所以不要咬得太厉害:P
答案 0 :(得分:3)
变量system-type
决定了Linux和Windows机器之间的关系。变量user-login-name
是不言自明的。我使用这些来加载不同的文件,具体取决于我所在的机器。
(if (eq system-type 'gnu/linux)
(when (string= user-login-name "home user name")
(load-file "/path/to/file"))
(when (string= user-login-name "work user name")
(load-file "/path/to/other-file")))
老实说,这更适合杂项配置。我不建议使用它来更改您的emacs目录位置。
相反,在每台计算机上创建符号链接,以便假装您的emacs目录位于标准位置。 (我已经在4台不同的机器上做了几年了,而且一切顺利。)
最后,回答你的上一个问题。 init文件已经是一个变量,其名称为user-init-file
。要提取它所在的目录
(file-name-directory user-init-file)
答案 1 :(得分:2)
有user-emacs-directory
变量。