LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1479|回复: 23

请问能不能建立两个.emacs呢?

[复制链接]
发表于 2006-1-5 13:01:26 | 显示全部楼层 |阅读模式
我的emacs装了ecb之后启动速度有点慢,于是我想可不可以建立两个.emacs文件,用不同的参数启动emacs的时候它读取不同的.emacs文件,选择加载不加载ecb,或者也许更好的做法是在emacs里面定义一个命令,想要加载ecb的时候再用那个命令加载,但是我不知道具体怎么做,向大家请教一下,谢谢!
发表于 2006-1-5 13:51:30 | 显示全部楼层
你可以参考一下 Emacs 的 --eval 选项。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-5 14:21:06 | 显示全部楼层
恩,是这样的,我已经为自己建立了一个文件叫做en(emacs -nw),里面的内容是:
  1. emacs -Q -nw -eval "(custom-set-variables  '(transient-mark-mode t))" \
  2.     -eval "(fset 'yes-or-no-p 'y-or-n-p)" \
  3.     -eval "(global-set-key "\C-h" 'delete-backward-char)" \
  4.     -eval "(define-key global-map "\M-h" 'backward-kill-word)" \
  5.     $*
复制代码
主要用在控制台下使用。
但是图形界面下的emacs,.emacs文件的内容也不少,如果一行一行的-eval是不是太麻烦?
Emacs里面有没有一次执行一个文件里面的首有lisp的命令?
回复 支持 反对

使用道具 举报

发表于 2006-1-5 14:52:13 | 显示全部楼层
你可以把它们写到一个函数中,然后用 -f 选项。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-5 15:03:05 | 显示全部楼层
哦!我看到好像有一个script选项可以运行脚本!试试!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-5 15:10:40 | 显示全部楼层
呵呵!这个选项好像是只执行script而不启动emacs编辑器的窗口呀。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-5 15:16:12 | 显示全部楼层
我不会lisp语言,请herberteuler指点一下。
如果我在emacs窗口里面用M-x ecb-active调用的,那么在lisp文件里面应该怎么写呢?
还有就是,象你说的那样,写一个函数,比如,我的函数要实现的是用load-file来加载一个里面有关e加载ecb的el文件。应该怎么写呢?
或者是,我直接把加载的那些代码写到这个函数里面去,比如,那些代码是
  1. (add-to-list 'load-path "~/emacs/packages/speedbar-0.14beta4")
  2. (add-to-list 'load-path "~/emacs/packages/eieio-0.17")
  3. (add-to-list 'load-path "~/emacs/packages/semantic-1.4.4")
  4. (setq semantic-load-turn-everything-on t)
  5. (require 'semantic-load)
  6. (add-to-list 'load-path "~/emacs/packages/COGRE-0.2")
  7. (require 'cogre)
  8. (add-to-list 'load-path "~/emacs/packages/ecb-2.32")
  9. (require 'ecb)
  10. ; 这儿最好还加一句调用ecb-active的,但是应该怎么写呢?(ecb-active)好像不对
复制代码
如果这个函数的名字叫做ecb,我可以在Emacs里面用M-x ecb来调用的话,应该怎么写呢?谢谢了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-5 15:31:04 | 显示全部楼层
我在.emacs文件里面这样写:
  1. (defun load-ecb ()
  2.   "load ecb packages and active it
  3. added by pluskid to make his emacs start faster not loading
  4. ecb packages on startup."
  5.   (add-to-list 'load-path "~/emacs/packages/speedbar-0.14beta4")
  6.   (add-to-list 'load-path "~/emacs/packages/eieio-0.17")
  7.   (add-to-list 'load-path "~/emacs/packages/semantic-1.4.4")
  8.   (setq semantic-load-turn-everything-on t)
  9.   (require 'semantic-load)
  10.   (add-to-list 'load-path "~/emacs/packages/COGRE-0.2")
  11.   (require 'cogre)
  12.   (add-to-list 'load-path "~/emacs/packages/ecb-2.32")
  13.   (require 'ecb))
复制代码
可是我用M-x load-ecb调用的时候emacs说:[No match]
用describe-function load-ecb倒是能看到我写的说明,函数到底是怎样写的呀?:ask
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-5 15:40:07 | 显示全部楼层
哦!我知道了!原来要加上
(interactive "")
才能用M-x func-name调用呀!还有就是ecb-active原来是我把名字写错了,是ecb-activate:
  1. (defun ecb ()
  2.   "load ecb packages and active it
  3. added by pluskid to make his emacs start faster not loading
  4. ecb packages on startup."
  5.   (interactive "")
  6.   (add-to-list 'load-path "~/emacs/packages/speedbar-0.14beta4")
  7.   (add-to-list 'load-path "~/emacs/packages/eieio-0.17")
  8.   (add-to-list 'load-path "~/emacs/packages/semantic-1.4.4")
  9.   (setq semantic-load-turn-everything-on t)
  10.   (require 'semantic-load)
  11.   (add-to-list 'load-path "~/emacs/packages/COGRE-0.2")
  12.   (require 'cogre)
  13.   (add-to-list 'load-path "~/emacs/packages/ecb-2.32")
  14.   (require 'ecb)
  15.   (ecb-activate)
  16. )
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-1-5 16:09:41 | 显示全部楼层
呵呵,你写的 ecb 实际上不必是 interactive 的,你可以用 emacs -f ecb 来启动 Emacs 啊。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表