[置顶] emacs配置开发环境

         周末被这三个插件的版本兼容性问题折腾了一天,网上说法倒是很多,但是很多种说法也不知道听谁的,没有高人指导,自己摸索,真是充满艰辛啊。下面的方法是看国外的网站,

经自己试验成功的。我的环境为archlinux,emacs24(其它版本的linux应该也是可以的)

        1.   下载四个插件,cedet-1.1,ecb-2.40,jdee-2.4.0.1和elib-1.0

         2.   将四个插件解压,将四个插件对应的解压目录拷到自己的emacs加载路径下,我的是~/.emacs.d/site-lisp/下

        3.   编译cedet-1.1,

              cd ~/.emacs.d/site-lisp/cedet-1.1

              make

         4. 编译ecb-2.40

             cd ~/.emacs.d/site-lisp/ecb-2.40

             make


这地方我碰到两个错误,

一个是 Byte-compiling ECB with LOADPATH= …   ,说明你make文件中的路径没有配置正确,ECB是依赖于CEDET的,这时候需要修改makefile文件,来加载正确的CEDET路径。 打开

Makefile文件找到51行,修改 CEDET=  这一行,路径为你cedet1.1的路径,对于我来说的话是~/.emacs.d/site-lisp/cedet-1.1

     另一个是  ECB 2.40 – Error: ECB can only be used with cedet [1.0pre6, 1.0.9]! Please install it and restart Emacs! 的问题。这是ecb-2.40和cedet-1.1的兼容性问题,

注释掉ecb-upgrade.el的如下代码,绕开ecb-2.40的兼容性检查。然后在make 重新编译ECB

  ;; check if vedet-version is correct
(when (or (not (boundp 'cedet-version))
         (ecb-package-version-list<
         (ecb-package-version-str2list cedet-version)
          ecb-required-cedet-version-min)
         (ecb-package-version-list<
          ecb-required-cedet-version-max
          (ecb-package-version-str2list cedet-version))) (setq version-error (concat "cedet ["  cedet-required-version-str-min
                            ", "  cedet-required-version-str-max "]")))

                    5. jdee-2.4.0.1的兼容问题的修改

首先修改  ~/.emacs.d/site-lisp/jdee-2.4.0.1/lisp/jde.el 的第43行    :

由  (defconst jde-cedet-max-version "1.0"     为  (defconst jde-cedet-max-version "1.1"

 然后如果~/.emacs.d/site-lisp/jdee-2.4.0.1/lisp目录下有jde.elc文件的话,将该文件删除   

这样做是因为JDEE所设置的 Emacs的最高版本并不兼容24 ,所以我们需要修改version为1.1来适应Emacs24 , 删除jde.elc 是因为emacs加载是优先加载elc文件,我们要让它读取非编译的

jde.el ,所以删掉jde.elc文件。


6. 加入如下启动命令

在~目录下的.emacs 中添加如下内容,在加载Java文件的时候自动装载JDEE。

;;add jdee cedet and jdee
(add-to-list 'load-path "~/.emacs.d/cedet-1.1/common")
(load-file "~/.emacs.d/cedet-1.1/common/cedet.el")
(add-to-list 'load-path "~/.emacs.d/jdee-2.4.0.1/lisp")
(add-to-list 'load-path (expand-file-name "~/.emacs.d/elib-1.0"))
(require 'jde)

;;add ecb
(add-to-list 'load-path  "~/.emacs.d/ecb-2.40")
(require 'ecb)
(setq stack-trace-on-error t)

;;we need some lisp to prevent fatal errors.
(defun screen-width nil -1)
(setq jde-check-version-flag nil)
(define-obsolete-function-alias 'make-local-hook 'ignore "21.1")
(unless (fboundp 'semantic-format-prototype-tag-java-mode)
(defalias 'semantic-format-prototype-tag-java-mode 'semantic-format-tag-prototype-java-mode))
(require 'hippie-exp)

;;we use something to  load JDEE for .java files :
(add-to-list 'load-path (format "%s/lisp" "~/.emacs.d/jdee-2.4.0.1" "Path to JDEE"))
(autoload 'jde-mode "jde" "JDE mode." t)
(setq auto-mode-alist
      (append '(("\\.java\\'" . jde-mode)) auto-mode-alist))

7.  重启emacs




你可能感兴趣的:(linux,emacs)