参考文章
1、http://blog.csdn.net/cherylnatsu/article/details/7670445
2、http://blog.csdn.net/hengrjgc/article/details/43231327
3、http://blog.csdn.net/booirror/article/details/8120896
经过了几天的折腾终于把emacs中C语言的智能代码提示功能完成了。
第一部下载主要插件
llvm
clang
popup.el
cl-lib.el (这个还没用到)
auto-complete-clang
auto-complete
yasnippet
其中llvm,clang在ubuntu下直接用sudo apt install 命令安装即可
popup.el https://github.com/auto-complete/popup-el/
cl-lib.el https://github.com/emacs-mirror/emacs/blob/master/lisp/emacs-lisp/cl-lib.el
auto-complete https://github.com/auto-complete/auto-complete
auto-complete-clang https://github.com/brianjcj/auto-complete-clang
yasnippet https://github.com/joaotavora/yasnippet
git@gitee.com:auto-complete/popup-el.git
git@gitee.com:auto-complete/auto-complete.git
git@gitee.com:brianjcj/auto-complete-clang.git
git@gitee.com:joaotavora/yasnippet.git
把这些文件git clone 到 ~/.emacs.d目录下.
把popup.el (cl-lib.el )复制到auto-complete中。
这一步就是一个巨坑,在这里坑了好长时间,去他妹妹的~~
如果 不把这个文件复制 到那里,会出现各种问题 =w=
通过这个命令找出
echo "" | g++ -v -x c++ -E -
/usr/include/c++/5
/usr/include/i386-linux-gnu/c++/5
/usr/include/c++/5/backward
/usr/lib/gcc/i686-linux-gnu/5/include
/usr/local/include
/usr/lib/gcc/i686-linux-gnu/5/include-fixed
/usr/include/i386-linux-gnu
/usr/include
找出上面需要的文件,可能 与此外不同。
(require 'package)
(add-to-list 'package-archives
'("elpy" . "https://jorgenschaefer.github.io/packages/"))
(package-initialize)
;(elpy-enable)
;;
(global-linum-mode t)
(column-number-mode t)
;;把下面的目录填到与你所下载的文件目录对应好(此句可以删除)
;;加载auto-complete插件
(add-to-list 'load-path "~/.emacs.d/auto-complete")
(require 'auto-complete-config)(ac-config-default)
;;加载yasnippet插件
(add-to-list 'load-path "~/.emacs.d/yasnippet")
(require 'yasnippet)(yas/global-mode 1)
;;加载auto-complete-clang插件
(add-to-list 'load-path "~/.emacs.d/auto-complete-clang")
(require 'auto-complete-clang)
(setq ac-auto-start t)
(setq ac-quick-help-delay 0.5)
;; (ac-set-trigger-key "TAB")
;; (define-key ac-mode-map [(control tab)] 'auto-complete)
(define-key ac-mode-map [(control tab)] 'auto-complete)
(defun my-ac-config () (setq ac-clang-flags (mapcar(lambda (item)(concat "-I" item))
(split-string "
/usr/include/c++/5
/usr/include/i386-linux-gnu/c++/5
/usr/include/c++/5/backward
/usr/lib/gcc/i686-linux-gnu/5/include
/usr/local/include
/usr/lib/gcc/i686-linux-gnu/5/include-fixed
/usr/include/i386-linux-gnu /usr/include
")))
(setq-default ac-sources '(ac-source-abbrev ac-source-dictionary ac-source-words-in-same-mode-buffers))
(add-hook 'emacs-lisp-mode-hook 'ac-emacs-lisp-mode-setup)
;; (add-hook 'c-mode-common-hook 'ac-cc-mode-setup)
(add-hook 'ruby-mode-hook 'ac-ruby-mode-setup)
(add-hook 'css-mode-hook 'ac-css-mode-setup)
(add-hook 'auto-complete-mode-hook 'ac-common-setup)
(global-auto-complete-mode t))
(defun my-ac-cc-mode-setup ()
(setq ac-sources (append '(ac-source-clang ac-source-yasnippet) ac-sources)))
(add-hook 'c-mode-common-hook 'my-ac-cc-mode-setup)
;; ac-source-gtags
(my-ac-config)
编译的话,M+x 运行 shell
之后 就正常的gcc -o a a.c
运行 ./a
git clone git@gitee.com:mengtianwxs/popup-el.git
git clone git@gitee.com:mengtianwxs/yasnippet.git
git clone git@gitee.com:mengtianwxs/auto-complete.git
;;------------------------------------------
;;插件添加
;;-----------------------------------------
;;自动补全
(add-to-list 'load-path "~/.emacs.d/auto-complete/")
(require 'auto-complete-config)
(ac-config-default)
;;添加yasnippet
(add-to-list 'load-path "~/.emacs.d/yasnippet")
(require 'yasnippet)
(yas/global-mode 1)
;;------------------------------------------
;;插件添加结束
;;------------------------------------------
;;use hotkey alt-p RET TAB
(define-key ac-mode-map (kbd "M-p") 'auto-complete)