之前也一直在用Emacs工具进行程序代码的编写工作,但是只是对Linux环境下的这个工具进行了相应的配置工作,在Windows下只是用其最精简的版本,也没有安装什么相关的插件。前几天越用越感觉不方便,与其这样用Emacs,还不如用UltraEdit或者其他的一些工作,生发了要对Windows7环境下的Emacs安装相应的插件,实现和VS同样的功能,废话到此,开始安装配置工作。

一、需要的插件

  Emacs: Emacs-24.3版本   可以到GNU的官网自行下载

  CEDET: CEDET-1.1版本  可以到Github上或者Sourceforge自行下载

  ECB:  ECB-2.40版本     可以到Github上或者Sourceforge自行下载

二、安装

2.1 安装Emacs工具

       该工具不用安装,只要将下载来的压缩包解压缩即可,放在你自己的目录中。运行后,会在用户目录下产生.emacs文件,和.emacs.d的文件夹,我的具体在C:/users/AppData/Roaming/(至于为什么是这个目录我也一直没有找到答案)目录下。如果在这个目录下没有,可以自己创建一个文件,注意,这个文件是隐藏的,要想显示就要把隐藏文件打开才行。这个.emacs就是配置Emacs的文件;

2.2 安装CEDET插件

       2.2.1 编译插件

      下载来的这几个插件都是压缩包的形式,将压缩包放在.emacs.d中,自己可以创建一个专门用来安装插件的文件夹,如我自己创建的是plugin。将压缩包拖到这个文件夹下,进行解压,这个插件在安装到Emacs中之前是需要编译的。

  $ cd ./plugin/cedet-1.1
  $ make

       这个地方需要注意,很有可能make之后编译通不过,有各种因素导致而成。如果碰到不能编译通过的情况时不用着急,可以先尝试清除之前编译出错的痕迹:

  $ make clean-autoloads
  $ make clean-all

       然后尝试执行:

  $ make ebuild

       这个编译目标可以顺利通过。

      在这个编译过程中,可能会碰到一个问题,会提示:


  Warning: cedet-called-interactively-p called with 0 arguments, but requires 1

   如果碰到这个问题,可以这样解决:打开Emacs的配置文件.emacs,在对cedet搜索路径前,添加一句:


  (setq byte-compile-warnings nil)

        编译过程中还会碰到另外一个问题,会弹出如下的提示:


  Symbol's value as variable is void: stack-trace-on-error

   此时,可以在添加前一个清除编译警告的后面再添加一句:


  (setq stack-trace-on-error t)

         2.2.2 配置CEDET插件到Emacs配置文件中

        用任何一个文本编辑器打开前面创建的.emacs文件,将Cedet的路径添加到Emacs搜索路径中:

  ;; Configuration for CEDET plugin
  (add-to-list 'load-path "~/plugin/cedet-1.1/common")
  (load-file "~\\plugin\\cedet-1.1\\common\\cedet.el")
  (global-ede-mode 1)
  (semantic-load-enable-code-helpers)
  (global-srecode-minor-mode 1)

 这儿需要注意,如果出现无法打开load-file: cedet.el,最好用绝对路径。如我的:

  (load-file "D:\\TDDOWNLOAD\\emacs-24.3\\site-lisp\\install\\cedet-1.1\\common\\cedet.el")

2.3 安装ECB插件

         2.3.1 编译ecb插件包

         ECB插件是Emacs中用来浏览代码的一个插件。下载后,也是需要编译下的。

   $ cd ./ecb-2.40

   ECB的编译较麻烦些,因为如果你直接在命令行中敲make时,会提示打不开/common/cedet.el,因为ECB是依赖前一步安装的cedet,所以这个安装顺序不能搞反,一定要先安装cedet

   此时,你进入到ecb-2.40的目录中,打开该目录下的Makefile文件,看到其中第51行处有一个变


    # -------- Compiling ECB with the cedet-library 1.0 ----------------------
   # cedet >= 1.0 (contains a.o. semantic >= 2.0, eieio >= 0.18 and speedbar
   # >= 0.15). Set here the full path to the cedet-installation directory.
   CEDET=/cygdrive/d/TDDOWNLOAD/emacs-24.3/site-lisp/install/cedet-1.1
   # You can set here more load-paths to arbitrary packages if you want. But
   # this is really not necessary!
   LOADPATH=##D:\TDDOWNLOAD\emacs-24.3\site-lisp\install\ecb-2.40

“CEDET”,之前失败是因为没有对这个变量进行正确的指定,这个变量表示的就是你之前安装cedet1.1的目录。这个非常重要,否则是编译不过的。将CEDET=后面的内容替换为你安装cedet1.1的绝对地址,我的如下:

  CEDET=/cygdrive/d/TDDOWNLOAD/emacs-24.3/site-lisp/install/cedet-1.1

         因为我是在Cygwin下编译的。如果不想自动加载ecb插件的话,可以将下面LOADPATH变量留空,不赋任何值。此时,就可以编译了。在这,指定目录位置时的书写方式很重要,不像我们在windows下的书写方式,D:/path/to/install,将“:”省略了,全部都用“/”代替。如果编译时总是提示无法打开……/common/cedet.el,就说明你的目录没有指定正确。

         2.3.2 配置ecb

         添加搜索路径:

  (add-to-list 'load-path "D:\TDDOWNLOAD\emacs-24.3\site-lisp\install\ecb-2.40")

   打开相应的模式:

   (require 'ecb)
  (require 'ecb-autoloads)
  (setq ecb-auto-activate t
      ecb-tip-of-the-day nil)

   此时,可以保存.emacs配置文件,从任何地方启动Emacs,然后从菜单中选择"tool->start code browser",可能会弹出如下的提示:


    error: 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插件目录下的"ecb-upgrade.el",用文本编辑器打开该文件,将


   (defconst ecb-required-cedet-version-max '(1 0 4 9))


   修改为


    (defconst ecb-required-cedet-version-max '(1 1 4 9))

   并且将该文件中的1169-1180之间的代码注释掉,不让他进行版本检查:


   ;; 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
   ;;                                    "]")))

   此时,再利用同样的命令进行编译。

   编译通过后,还有一件非常重要的事,一定要对Emacs的配置文件.emacs进行byte-compile一次,即用Emacs打开.emacs文件,按M-x,输入byte-compile-file,然后输入.emacs,即要编译的文件,回车,将配置文件编译一次,这样才能保证一些选项是可用。我之前就没有做这项工作,导致总是提示部分工作不能顺利往下走。此时,如果还有需求,可以根据这两个插件目录下的相关文件介绍进行配置。