Need help with auto-complete-clang?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

brianjcj
192 Stars 34 Forks 16 Commits 17 Opened issues

Description

auto complete source for clang. AC+Clang+Yasnippet!

Services available

!
?

Need anything else?

Contributors list

# 402,975
Python
Shell
Go
12 commits
# 404,044
Haskell
Shell
elm
1 commit
  • Introduction

The AC sources for Clang. Combine the power of AC, Clang and Yasnippet.

if you don't have Yasnippet, I recommend you install one. if you don't want to install Yasnippet, you can try snippet.el instead. if you don't install any of them, this script will still work for you any way.

  • Install

Here is my configurations for AC and auto-complete-clang for your reference.

#+BEGIN_SRC emacs-lisp (add-to-list 'load-path (concat myoptdir "AC")) (require 'auto-complete-config) (add-to-list 'ac-dictionary-directories (concat myoptdir "AC/ac-dict"))

(require 'auto-complete-clang)

(setq ac-auto-start nil) (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-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)

#+END_SRC

  • Screenshot

Refer to the screenshot folder.

  • Note

    • Now clang is able to parse codes from standard output. Saving the file before parsing is no longer necessary. So the default value of ac-clang-auto-save is now changed to nil. If you still use the old version of clang and this may not work for you. In this case, you can change the ac-clang-auto-save back to t.
  • Troubleshooting

    • clang fails to find the standard inlcude files?

    It is because clang's include file search path is not correct. Here is the solution: - find out the include file search pathes of your g++:

    #+BEGINEXAMPLE echo "" | g++ -v -x c++ -E - #+ENDEXAMPLE

    you wil get something like this:

    #+BEGIN_EXAMPLE

    include "..." search starts here:

    include <...> search starts here:

    /usr/include/c++/4.6 /usr/include/c++/4.6/x8664-linux-gnu/. /usr/include/c++/4.6/backward /usr/lib/gcc/x8664-linux-gnu/4.6.1/include /usr/local/include /usr/lib/gcc/x8664-linux-gnu/4.6.1/include-fixed /usr/include/x8664-linux-gnu /usr/include End of search list. #+END_EXAMPLE - setting the ac-clang-flags to include these default include pathes. e.g.,

    #+BEGINSRC emacs-lisp (setq ac-clang-flags (mapcar (lambda (item)(concat "-I" item)) (split-string " /usr/include/c++/4.6 /usr/include/c++/4.6/x8664-linux-gnu/. /usr/include/c++/4.6/backward /usr/lib/gcc/x8664-linux-gnu/4.6.1/include /usr/local/include /usr/lib/gcc/x8664-linux-gnu/4.6.1/include-fixed /usr/include/x8664-linux-gnu /usr/include " ))) #+ENDSRC

    You can put it into your .emacs file.

    Then code completion works just fine!

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.