设定新的 home 不太好吧, *nix 下site-lisp应该是 755,虽然你说的是 windows 下,但这种不一致终归是不好的
试试这个
https://github.com/ran9er/init.emacs/bl ... otstrap.el
windows 和 *nix 通用
三种加载方式
1.把该文件拷贝为 .emacs 或者 site-start.el
2.在 .emacs 或者 site-start.el 中加载该文件
(load "....../bootstart")
3.指定配置文件夹(*init-dir*)然后加载该文件
[lisp]
(defvar *init-dir*
((lambda (init-name-match base-dir)
((lambda (x) (file-name-as-directory
(or (car (sort x 'file-newer-than-file-p))
(make-temp-name ""))))
(mapcar (lambda (x) (if (file-directory-p x) x (make-temp-name "")))
(directory-files base-dir t init-name-match t))))
"init.*emacs\\|emacs.*init" (apply 'expand-file-name
(cond
((eq system-type 'windows-nt)
`(".." ,exec-directory))
(t
`("~"))))
))
(load (expand-file-name "bootstrap" *init-dir*))
[/lisp]
把所有的配置文件放到 *init-dir*文件夹中,会按顺序加载(只加载 el或者 elc 文件,可以通过改扩展名控制文件是否加载)
*init-dir* 文件夹的位置,在windows中是 emacs 的安装目录下,在*nix中是 HOME 目录下
文件夹的名字包含 init.*emacs 或者 emacs.*init ……为什么这么二逼呢?因为开始的时候我把这个文件夹命名为 emacs.init ,后来觉得不好,改为 init.emacs
又后来发现从github上下载存档,解压后类似 init.emacs-master 、init.emacs-59f00fc79e3383783df66b253f5c954892efe45c这种形式,
为了省略重命名文件夹这一步骤,让它能够识别各种马甲……如果有多个符合要求的文件夹,使用最新的那个;
如果没有符合要求的,使用该文件所在文件夹……也就是说,可以直接把所有配置文件放在HOME中,把该文件改为 .emacs也可以
或者像你那样,把所有文件放在 site-lisp 中,把该文件改为 site-start.el (这种方式不推荐)
当然,给配置文件胡乱起个名字,类似 /x/x/x/x/x.el,而配置文件夹在另外一个地方 /y/y/y/y,这种做法虽然不可取,但仍然是每个公民神圣不可侵犯的权利,这种情况,适用上面第三种加载方式
(defvar *init-dir* "/y/y/y/y")
(load "/x/x/x/x/x.el")
如果配置文件在配置文件夹中,可以直接读取
(load "/x/x/x/x/x/x.el")
这个文件还有一些其它功能,比如:
加载 _autoload_ 文件夹中的 autoload 函数
按需加载 _extensions 文件夹中的文件
自动编译加载为 elc 文件
计算各文件的加载时间