大家都知道,当emacs的mod多了的时候,管理一个.emacs文件就成为了一件让人头痛的事情,如何解决这问题呢?兰兰给了我们一个美妙的思路:模仿apache的mods管理方式。 debian系的apache打包中,往往将各个模块的载入设置文件放入mods-available中,而通过软链接连到mods-enable中,同时在apache.conf中设置载入mods-enable中所有的文件,这样就可以方便用户随时添加删除mods了。要在emacs上实现这一点是十分简单的,看.emacs.el文件吧:
在你的.emacs.d中建立两个文件夹,mods-available和mods-enabled,然后如上设置你的.emacs.el,使得其在载入的时候通过正则匹配mods-enabled中的所有.el结尾的文件,这样,所有的mod配置文件就能一一载入了。;;emacs loading file
;;classfoo<[email protected]>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;define the place to put modes;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq emacs-d "~/.emacs.d/")
(setq site-lisp (concat emacs-d "site-lisp/"))
;;;;;;;;;;;;;;;;;;;;
;;lod all the mods;;
;;;;;;;;;;;;;;;;;;;;
(setq mods-dir (concat emacs-d "mods-enabled"))
(mapc 'load(directory-files mods-dir t "\\.el\\'"))
;;;;;;;
;;end;;
;;;;;;;
好,现在让我们来配置一个mod,就拿eim来作为例子吧。eim是一个emacs下的中文输入法,下载eim后,将其内容拷贝到.emacs.d/site-lisp中,~/.emacs.d$ ls
auto-save-list mods-available mods-enabled settings site-lisp
这时,在.emacs.d/mods-available中建立一个文件02-eim-mode.el,注意,这里头部的数字是有作用的,通过数字的大小可以控制正则匹配时的先后顺序,实现mod载入顺序的设置.eim是个比较重要的mod,所以,编号靠前...~/.emacs.d/site-lisp$ ls
autoconf emacs-goodies-el mule-ucs sdcv
browse-kill-ring erc prolog-el subdirs.el
debian-startup.el festival.el psvn w3m
dictionaries-common js2 pymacs wikipedia-mode
ecb line-number pymacs-elisp
eim msf-abbrev.el python-mode
其内容如下,和正常的.emacs文件中的设置没什么两样,不过是集中到了一个文件中,方便维护~/.emacs.d/mods-available$ ls
00-emacs-main.el 02-eim-mode.el 10-mediawiki-mode.el
01-linenumber-mode.el 05-browse-kill-ring-mode.el 99-emacs-theme.el
这样,在mods-available中就有了一个载入eim的配置文件了,为了使得这个文件生效,把它软链接到mods-enabled中就可以了。~/.emacs.d/mods-available$ cat 02-eim-mode.el
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;settings of the eim chinese input method;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq inhibit-startup-message t)
(setq eim-path (concat site-lisp "eim/"))
(setq default-major-mode 'text-mode)
(fset 'yes-or-no-p 'y-or-n-p)
(add-to-list 'load-path eim-path)
(autoload 'eim-use-package "eim" "Another emacs input method")
(register-input-method
"eim-wb" "euc-cn" 'eim-use-package
"五笔" "汉字五笔输入法" eim-path)
(register-input-method
"eim-py" "euc-cn" 'eim-use-package
"拼音" "汉字拼音输入法" (concat eim-path "py.txt"))
;;eim settings
(add-hook 'eim-py-load-hook
(lambda ()
(let ((map (eim-mode-map)))
(define-key map "," 'eim-previous-page)
(define-key map "." 'eim-next-page))))
(setq default-input-method "eim-py")
这只是兰兰的.emacs.el中的冰山一角,还有其他的更牛的内容,请参见:
http://www.emacs.cn/DotEmacs/HellwolfDotEmacs
再次向兰兰致敬