emacs学习3
Table of Contents
1 emacs24的中ELPA
引用emacswiki.org/emacs/ELPA中对ELPA的描述:
"Our goal is to make it simple to install,use,and upgrade Emacs Lisp packages. We supply ##package.el###,a simple package manager for Emacs,and a repository of pre-packed Emacs Lisp code."
package.el是emacs的包管理工具,自24版开始內置在emacs中,黙认包管理库是FSF的 库,http://elpa.gnu.org/packages/。 ELPA支持多个包管理库,我按照emacswiki中的说 明设置了三个库,gnu库包含的包较少,如cedet,ecb都没有,marmalgae,mepla包含很多 包,有些很新,来源于github:
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("marmalage" . "http://marmalade-repo.org/packages/") ("melpa" . "http://melpa.milkbox.net/packages/"))
2 emacs24字体设置
(setq default-frame-alist (font . "Monaco 12")
这是一般用的字体设置,可应用于所有frame的黙认字体,但是对于中英文混排的文章,需 要对中文和英文使用不同的字体。emacs支持根据字符编码找合适的字体,需要按编码进行 设置,如让emacs在遇到汉字时用“微软雅黑”,而不是"Monaco",要这样设置:
(set-fontset-font (frame-parameter nil 'font) 'han (font-spec :family "Microsoft YaHei" :size 18))
除了han以外,还有kana,symbol,cjk-misc,bopomofo这些编码集也要设置,可以使用 elisp的dolist做循环操作,减少不必要的重复:
(dolist (character '(han kana symbol cjk-misc bopomofo)) (set-fontset-font (frame-parameter nil 'font) character (font-spec :family "Microsoft YaHei" :size 18)))
还有,原来对字体的设置方法要改成下面才能和中文配合,否则emacs会忽略英文字体设置,所 以最终版本是:
(set-face-attribute 'default nil :font "Monaco 12") (dolist (character '(han kana symbol cjk-misc bopomofo)) (set-fontset-font (frame-parameter nil 'font) character (font-spec :family "Microsoft YaHei" :size 18)))
看看配置成的效果:
3 emacs与windows整合
3.1 右键直接打开文件
在配置文件中加入,(start-server t),然后用Emacs编辑一个文件时,可以 用emacsclientw.exe -n –alternate-editor=runemacs "%1"打开文件,可以在已打开的 emacs中显示文件,因为emacs打开后再不关闭,用这种方式打开文件很快。
编辑一个注册表文件:
REGEDIT4 [HKEY_CLASSES_ROOT\*\shell] [HKEY_CLASSES_ROOT\*\shell\openwemacs] @="Edit &with Emacs" # The above value appears in the global context menu, # i.e., when you right click on a file. # (The '&' makes the next character a shortcut.) [HKEY_CLASSES_ROOT\*\shell\openwemacs\command] @="D:\\soft\\emacs24.3\\bin\\emacsclientw -n --alternate-editor=runemacs \"%1\"" # The above has to point to where you install Emacs
双击加入注册表中,在任一个文件上点右键会出现“Edit with Emacs”,点击“Edit with Emacs” ,文件会在已打开的emacs中出现。
3.2 与vs结合
在vs的菜单“工具”下面通过“外部工具”加入一个自定义的外部工具emacs,命令栏输 入:D:\soft\emacs24.3\bin\emacsclientw.exe,参数栏输入:-n -a "D:\soft\emacs24.3\bin\runemacs.exe" +$(CurLine) $(ItemPath),见下图。
打开菜单“选项”下面的“键盘”,点中“工具.外部命令1”,设置快捷 键:”Ctrl+Tab“,见下图,这样每次用vs浏览代码时,如果看到想编辑的内容,直接按 "Ctrl+Tab"就可以把emac呼出,光标会自动放在文件刚刚看到的那行上面,编辑完了再按 "Alt+Tab"切换到vs中。打开菜单“选项”下面的“文档”,选中“自动加载更改(如果已保 存)”,避免毎次都弹出对话框让你确认是否重新载入。
4 ecb2.4
emacs24.4自带了cedet2.0,从elpa安装ecb2.4后出现错误,运行ecb-activate, 提示说ecb2.4最大支持cedet 1.0.9版本,我们可以在ecb-cedet-wrapper.el 的83行找到最大支持版本的定义:
ECB can only be used with [1.0pre6, 1.0.9]! Please install it and restart Emacs!
(defconst ecb-cedet-required-version-max '(1 0 4 9) "Maximum version of CEDET currently accepted by ECB. See `ecb-required-cedet-version-min' for an explanation.") ;; 改成 (defconst ecb-cedet-required-version-max '(2 0 4 9) "Maximum version of CEDET currently accepted by ECB. See `ecb-required-cedet-version-min' for an explanation.")
byte-compile-file编译ecb-cedet-wrapper.el,关闭emacs,打开emaca,再次运行ecb-activate,出现如下错误:
ECB 2.40 uses CEDET 2.0 (contains semantic 2.2, eieio 1.4, speedbar 1.0). All requirements for ECB 2.40 fulfilled - Enjoy it! ad-handle-definition: `custom-save-all' got redefined The ECB is now deactivated. ecb-clean-up-after-activation-failure: ECB 2.40: Errors during the basic setup of ECB. (error-type: void-function, error-data: (ecb-enable-own-temp-buffer-show-futition)) Package assoc is obsolete!
解决办法:在ecb.el中找到(ecb-enable-own-temp-buffer-show-futition) 这 句,改为(ecb-enable-own-temp-buffer-show-function),用 byte-compile-file编译ecb.el。