First try at fixing the snippet engine.

Only currently works on the "native" engine.
Suppress the now useless hack on snippets.
Merge branch 'master' into snips
Merge branch 'master' into snips
Update snipmate and ultisnips to use the new interface.

I didn't tested it with ultisnips but due to the similarity of the code,
it should works. Some features were removed for now and may be
reintroduced in the future.
Merge branch 'master' into snips
Correct dummy example
Fix UltiSnips snippets
Merge branch 'snips'
Instead of a common formatting between libclang and clang, compute the 'args_pos' when filling the dictionnary used by vim for the completion.
Add a function to set the snippet engine: g:ClangSetSnippetEngine.
Don't allow duplicate entry in the completion popup.
Remove some lines in the TODO
Adds `tags' to .gitignore file, useful with pathogen

Ignore `tags' files created when using pathogen.
Merge pull request #95 from jimenezrick/add-gitignore

Adds `tags' to .gitignore file (useful with pathogen)
Remove unused function

Signed-off-by: Tobias Grosser <tobias@grosser.es>
libclang: Evaluate the options before starting a new thread

This fixes an error that arise because vim variables are not yet available
in the thread's context. This was the original error message:

Error detected while processing function <SNR>50_Detect:
E121: Undefined variable: b:clang_user_options
E15: Invalid expression: b:clang_user_options
Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\Python27\Lib\threading.py", line 530, in __bootstrap_inner
    self.run()
  File "SOMEPATHHERE/plugin/libclang.py", line 223, in run
    getCurrentTranslationUnit()
  File "SOMEPATHHERE/plugin/libclang.py", line 23, in
getCurrentTranslationUnit
    userOptionsLocal = splitOptions(vim.eval("b:clang_user_options"))
vim.error: invalid expression

Signed-off-by: Tobias Grosser <tobias@grosser.es>
libclang: Parse the python bindings only once

We accidently parsed the whole python bindings whenever we changed the
file that is in the vim buffer. This does not only cost runtime, but it
also yields to locking problems as we may allocate more than one lock.

Signed-off-by: Tobias Grosser <tobias@grosser.es>
cindex.py: Port 'python bindings: Synchronize cursor kinds'

Original commit message:
==================================================================
    commit 4ed73ce03bbdc56692f3bc232cb64632dc9dbc0f
    Author: Tobias Grosser <grosser@fim.uni-passau.de>
    Date:   Sat Feb 5 17:53:47 2011 +0000

    python bindings: Synchronize cursor kinds

    clang-c/Index.h contained cursor kinds not yet available in the
    python bindings.

    Contributed-By: jmuizelaar@mozilla.com

    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124951
==================================================================
cindex.py: Port 'Improve the Python bindings for libclang in a few ways'

Original commit message:
========================================================================
    commit 8be80e1e6effd5a333bc70e7f030dc9397d0554e
    Author: Douglas Gregor <dgregor@apple.com>
    Date:   Wed Jul 6 03:00:34 2011 +0000

    Improve the Python bindings for libclang in a few ways, from Eli
    Bendersky. Specifically:

    * Implemented a new function in libclang: clang_isAttribute

    * Fixing TranslationUnit.get_includes to only go through the
    * argument
    * buffer when it contains something. This fixed a crash on Windows

    * clang_getFileName returns CXString, not char*. Made appropriate
    * fixes in cindex.py - now the relevant tests pass and we can see
    * the
    * full locations correctly again (previously there was garbage in
    * place of the file name)
    * Exposed clang_getCursorDisplayName to the python bindings

    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134460
========================================================================