`
seagle0128
  • 浏览: 43534 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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
分享到:
评论
4 楼 seagle0128 2009-09-27  
更新一下,现在可以下载使用 auto-complete-config.el,就不用作那些patch了。initialize之后,使用很爽。但是python的自动补全还是有些问题。
3 楼 seagle0128 2009-09-27  
metadmin 写道
使用eclipse,而不是emacs不一定就是差距吧~~~


我使用eclipse,但使用emacs快捷键,非常爽。


我指的是思维的差距哈,老外喜欢DIY,对很多古老的语言也用的很成熟,其实没有那么追新
2 楼 metadmin 2009-09-11  
使用eclipse,而不是emacs不一定就是差距吧~~~


我使用eclipse,但使用emacs快捷键,非常爽。
1 楼 seagle0128 2009-09-08  
估计这年头用emacs的不多,我看老外很多用emacs而不是eclipse开发java。国内和国外还差距挺大

相关推荐

Global site tag (gtag.js) - Google Analytics