当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : .emacs.el之艺术
帖子发表于 : 2008-07-20 23:42 
头像

注册: 2006-01-19 11:55
帖子: 1114
地址: HUST
送出感谢: 0 次
接收感谢: 0 次
前段时间台机废了,可怜我的.emacs和site-lisp没有迁移到本子里,真是痛苦。还好小zhanzhan在论坛ftp上留了个打包好的emacs23,免却了fix编译依赖的痛苦,不过从头来再做一次.emacs的痛苦是免不了了,这时看到了地狱兰兰的一个.emacs.el的配置,真是绝了,自己稍微学习了一下,分享给大家。
大家都知道,当emacs的mod多了的时候,管理一个.emacs文件就成为了一件让人头痛的事情,如何解决这问题呢?兰兰给了我们一个美妙的思路:模仿apache的mods管理方式。 debian系的apache打包中,往往将各个模块的载入设置文件放入mods-available中,而通过软链接连到mods-enable中,同时在apache.conf中设置载入mods-enable中所有的文件,这样就可以方便用户随时添加删除mods了。要在emacs上实现这一点是十分简单的,看.emacs.el文件吧:
引用:
;;emacs loading file
;;classfoo<juanzhewudi@gmail.com>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;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;;
;;;;;;;

在你的.emacs.d中建立两个文件夹,mods-available和mods-enabled,然后如上设置你的.emacs.el,使得其在载入的时候通过正则匹配mods-enabled中的所有.el结尾的文件,这样,所有的mod配置文件就能一一载入了。

引用:
~/.emacs.d$ ls
auto-save-list mods-available mods-enabled settings site-lisp


好,现在让我们来配置一个mod,就拿eim来作为例子吧。eim是一个emacs下的中文输入法,下载eim后,将其内容拷贝到.emacs.d/site-lisp中,
引用:
~/.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.d/mods-available中建立一个文件02-eim-mode.el,注意,这里头部的数字是有作用的,通过数字的大小可以控制正则匹配时的先后顺序,实现mod载入顺序的设置.eim是个比较重要的mod,所以,编号靠前...
引用:
~/.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

其内容如下,和正常的.emacs文件中的设置没什么两样,不过是集中到了一个文件中,方便维护
引用:
~/.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")


这样,在mods-available中就有了一个载入eim的配置文件了,为了使得这个文件生效,把它软链接到mods-enabled中就可以了。

这只是兰兰的.emacs.el中的冰山一角,还有其他的更牛的内容,请参见:
http://www.emacs.cn/DotEmacs/HellwolfDotEmacs

再次向兰兰致敬


_________________
http://www.classfoo.org


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-07-23 14:00 
头像

注册: 2005-08-15 0:04
帖子: 1880
地址: 南7技校
送出感谢: 0 次
接收感谢: 0 次
真是火星来的。。。。


_________________
飞得高,飞得低,学习再学习,多少大秘密!
http://zhan.blog.ubuntu.org.cn


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-07-23 20:14 
头像

注册: 2006-01-19 11:55
帖子: 1114
地址: HUST
送出感谢: 0 次
接收感谢: 0 次
zhan 写道:
真是火星来的。。。。

:twisted:


_________________
http://www.classfoo.org


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-07-23 20:14 
头像

注册: 2006-01-19 11:55
帖子: 1114
地址: HUST
送出感谢: 0 次
接收感谢: 0 次
人家骗点专家分容易么,别拆穿


_________________
http://www.classfoo.org


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译