Emacs IDE

庸置疑,Emacs是这个世界上最强悍的编辑器了。在此不想引起Emacs vs VI 的论战。Emcas的扩展能力可以说是无限的,这点从后来的Eclipse、Firefox之类的架构可以看出其影响力。

编辑器、IDE都在不断的发展和进步,Emacs这个老家伙也没有停止其步伐。最近23.1正式发布,内置支持Unicode编码,还增加了很多新功能。Textmate是编辑器的后起之秀,有很多新鲜的好用的功能,其他编辑器争相模仿,不过只能在Mac OSX上使用,也贵的要命。对于Emacs和Vim来说,利用其脚本扩展是轻易而举的。Emacs就出现了几个好用的插件。Yasnippet和Auto Complete就是其中佼佼者。

Yasnippet的不用多说,能实现Textmate的bundle功能。官方网站有详细介绍和说明,用起来很是顺手,不过bundles明显缺少,对于日常使用C++,python也够了。

Yasnippet

对于Emacs的自动补全就有点麻烦了。智能提示已经是IDE的标配,Emacs当然也可以,只是要借助很多插件。首先必备的是cedet,主要是用其中的semantic,当然还可以加上ECB,浏览代码更方便。不过加上之后会慢很多。自动补全还有一个轻量级的Auto complete,可以和semantic、yasnippet等搭配使用。如图:

Auto Complete

最新development version可以通过auto-install-batch安装,不过配置时发现一些问题。auto-complete-yasnippet.el中,

(defun ac-yasnippet-candidate ()
(let ((table (yas/snippet-table major-mode)))
(if table
(ac-yasnippet-candidate-1 table))))

需要修改为:

(defun ac-yasnippet-candidate ()
(let ((table (yas/snippet-table-p major-mode)))
(if table
(ac-yasnippet-candidate-1 table))))

另外,在.emacs中增加配置:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Auto complete
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(when (require 'auto-complete nil t)
  (require 'auto-complete-extension nil t) ;optional
  (require 'auto-complete-yasnippet nil t) ;optional
  (require 'auto-complete-semantic nil t)  ;optional
  (require 'auto-complete-gtags nil t)     ;optional

  (require 'auto-complete-cpp)
  (ac-c++-init)
  (require 'auto-complete-emacs-lisp)
  (ac-emacs-lisp-init)
  (require 'auto-complete-python)
  (ac-ropemacs-init)
  (require 'auto-complete-ruby)
  (ac-ruby-init)
  (require 'auto-complete-css)
  (ac-css-init)

  (require 'ac-anything)
  (define-key ac-complete-mode-map (kbd "C-:") 'ac-complete-with-anything)

  (setq-default ac-sources '(ac-source-yasnippet
			     ac-source-semantic
			     ac-source-imenu
			     ac-source-abbrev
			     ac-source-words-in-buffer
			     ac-source-files-in-current-dir
			     ac-source-filename))

  (global-auto-complete-mode t)
  (define-key ac-complete-mode-map "\t" 'ac-expand)
  (define-key ac-complete-mode-map "\r" 'ac-complete)
  (define-key ac-complete-mode-map "\M-n" 'ac-next)
  (define-key ac-complete-mode-map "\M-p" 'ac-previous)
  (setq ac-auto-start 1)
  (global-set-key "\M-/" 'ac-start)
  (define-key ac-complete-mode-map "\M-/" 'ac-stop)
  (setq ac-dwim t)
  (setq ac-override-local-map nil)        ;don't override local map

  ;; Enables omnicompletion with `c-mode-common'.
  (add-hook 'c-mode-common-hook
	    '(lambda ()
	       (add-to-list 'ac-omni-completion-sources
			    (cons "\\." '(ac-source-semantic)))
	       (add-to-list 'ac-omni-completion-sources
			    (cons "->" '(ac-source-semantic)))
	       (add-to-list 'ac-sources 'ac-source-gtags)))
)
 

对于python,还需要ropemacs插件,这样对于Python还有refactor的功能了。但是Rope和autocomplete的配合在新版本中不能使用以前的方法,如果使用老版本的auto complete可以参考 http://www.enigmacurry.com/2009/01/21/autocompleteel-python-code-completion-in-emacs/ 。目前还没有找到更好的办法,但使用ropemacs自动提示也没有问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值