Commit Graph

855 Commits

Author SHA1 Message Date
Strahinja Val Markovic
f9a516704b Now explicitly adding the clang includes to flags 2013-01-17 17:08:28 -08:00
Strahinja Val Markovic
0922864eda Moving clang includes to clang_includes folder 2013-01-17 17:08:11 -08:00
Strahinja Val Markovic
56f96b6c08 Hide clang pragmas behind an #ifdef 2013-01-17 14:58:50 -08:00
Strahinja Val Markovic
611a07aa56 Adding back a missing boost header 2013-01-17 14:50:43 -08:00
Strahinja Val Markovic
ca5fe75c67 Changing the default to not add 'preview'
This means that from now on, the 'preview' window will not be shown by default
to users for completions.
2013-01-14 20:45:55 -08:00
Strahinja Val Markovic
5ac3d40691 No error when no clang support and cpp file opened
Previously, when the user opened a cpp/c/objc/objcpp file and clang support was
not compiled in, there would be an error message printed in vim.
2013-01-13 20:56:10 -08:00
Strahinja Val Markovic
cc53a46f54 ClangCompleter tests not built when no libclang
When the user doesn't want semantic completion with clang, then tests that test
those features are not included in the test binary.
2013-01-13 17:33:35 -08:00
Strahinja Val Markovic
3763dc8a78 Removing support for static linking to libclang 2013-01-13 16:45:06 -08:00
Strahinja Val Markovic
f7bfc49d29 Removing the in-tree copy of llvm+clang 2013-01-13 16:43:06 -08:00
Strahinja Val Markovic
eb24fc8b34 Now using PATH_TO_LLVM_ROOT
This is the first step towards eliminating the in-tree copy of llvm.
2013-01-13 16:39:53 -08:00
Strahinja Val Markovic
3899d36df9 Extra comment pointing to boost bug report 2013-01-13 14:40:32 -08:00
Strahinja Val Markovic
121d88518e Updating to boost 1.52 2013-01-13 14:38:19 -08:00
Strahinja Val Markovic
0373fb254e We now use @loader_path on Mac for libclang
This makes sure that our local copy of libclang.dylib is preferred over the
system one.
2013-01-13 12:51:09 -08:00
Strahinja Val Markovic
fa21622655 Updating local clang includes to 3.2
We have to have these beneath the folder where ycm_core.so is placed so that we
get fast completions. If these files are not here, then clang fails to
precompile a file preamble and completions are slow.
2013-01-13 12:49:49 -08:00
Strahinja Val Markovic
ccc890a634 Gitignore now ignores dylib files as well 2013-01-13 12:35:05 -08:00
Strahinja Val Markovic
8c709c2e57 NO_CLANG_COMPLETER inverted to USE_CLANG_COMPLETER 2013-01-12 16:38:00 -08:00
Strahinja Val Markovic
c9adb9e86e Comment update in vimsupport.py 2012-09-24 19:20:33 -07:00
Strahinja Val Markovic
29cddc5adc Removing unnecessary declaration 2012-09-06 14:00:33 -07:00
Strahinja Val Markovic
a6b4b7fd27 LetterHash -> LetterNodeListMap 2012-09-06 12:56:08 -07:00
Strahinja Val Markovic
ae57c9c39b ClanUtils functions are now all in one place
Also, internal ClanUtils functions are now in an unnamed namespace
2012-09-06 12:09:32 -07:00
Strahinja Val Markovic
b48111bb2f Adding a missing header
This compiled previously by accident.
2012-09-06 12:08:34 -07:00
Strahinja Val Markovic
607b25e16b Lowering the visibility of some typdefs 2012-09-06 11:58:16 -07:00
Strahinja Val Markovic
909450ec13 Adding a few run-time asserts 2012-09-06 11:58:02 -07:00
Strahinja Val Markovic
fc3bc60fae Moving the Result.h include out of Candidate.h 2012-09-06 11:37:22 -07:00
Strahinja Val Markovic
04991d874d Moving a comment closer to the related code 2012-09-05 21:49:51 -07:00
Strahinja Val Markovic
85d034f3e0 Adding more filetypes to ignore by default 2012-09-04 19:25:07 -07:00
Strahinja Val Markovic
7a4fec0f3f Small whitespace fix 2012-08-24 16:28:56 -07:00
Strahinja Val Markovic
d0223a8f0b Easier to move in insert mode now
The completion menu would interfere with moving in insert mode with the arrow
keys. This is now solved.
2012-08-20 20:55:25 -07:00
Strahinja Val Markovic
0e65074148 Fixing compilation with no NO_CLANG_COMPLETER 2012-08-17 15:09:15 -07:00
Strahinja Val Markovic
f4d7d6ffdf ClangCompleter can now not be compiled
One more thing needs to be done though: the clang_completer.py file needs to not
trigger at all when YCM has been compiled without cpp support. FIX THAT!
2012-08-17 13:32:42 -07:00
Strahinja Val Markovic
7992d63fb8 Adding the COPYING file with the license 2012-08-16 19:33:36 -07:00
Strahinja Val Markovic
0c17c49a66 Per-filetype turning off of filetype completion
So things like the ClangCompleter can be turned off fully and the user can rely
on identifier completion only.
2012-08-15 21:29:43 -07:00
Strahinja Val Markovic
dc2f52edbf Adding a max_diagnostics_to_display user option 2012-08-15 20:58:21 -07:00
Strahinja Val Markovic
daef17feb4 Support for showing extra info for diagstics
This was intended to show the full clang output for a given diagnostic,
including notes. But it appears that libclang does not provide this
functionality...
2012-08-15 19:39:03 -07:00
Strahinja Val Markovic
a4d344aa36 Avoid an extra clang reparse if not needed 2012-08-13 21:06:44 -07:00
Strahinja Val Markovic
bb6244e090 Handling clang parse errors instead of segfaulting 2012-08-13 20:51:04 -07:00
Strahinja Val Markovic
4a4eea0d8a Final workaround for bug with vim-notes use
The vim-notes plugin adds 'longest' to completeopt in its filetype plugin. This
breaks ycm. The result is that the user can't type at all after a notes file has
been visited.

We work around this by setting our completeopt settings on every buffer visit
and CursorHold event.
2012-08-13 20:47:45 -07:00
Strahinja Val Markovic
bcf9ddff32 Now properly ignoring unwanted filetypes
The previous implementation of ignoring filetypes the user doesn't want
completions for was deeply flawed. This one actually works...
2012-08-13 19:01:55 -07:00
Strahinja Val Markovic
f74ddbcec5 New TODO to check TU creation success 2012-08-13 15:51:55 -07:00
Strahinja Val Markovic
0903d5151b Fix for unique_future in c++03 having private ctor 2012-08-13 10:13:51 -07:00
Strahinja Val Markovic
d099492a0f Adding a TODO; another var good for Boost.Atomic 2012-08-12 19:08:43 -07:00
Strahinja Val Markovic
f500ecaffb Fix for hang on insert enter after "foo.bar"
If the user had code like "foo.bar" and then entered insert mode after the 'r'
in "bar", YCM would cause vim to hang.

The problem happened because a sorting task was created that would try to sort
on the latest clang result but none would be created because a clang task was
not created in this occasion. clang_data_ready_ would remain false and would
never be set to true, thus causing an infinite loop in SortingThreadMain since
the thread would forever wait on the mutex.

This was rectified with better handling of the clang results cache. Now the
cache is a full class and it also stores the line & column number of the
location for which the results were computed. Better logic is in place for the
cache invalidation.
2012-08-12 19:01:39 -07:00
Strahinja Val Markovic
f99e89f812 Fix for "lclose not allowed here" error on open
The problem was caused by a race condition of all things. ClangCompleter would
set possibly_completions_ready when starting the first parse pass for the file
and then would try to extract diagnostics for the file before the diagnostics
were done. Technically this was not a problem because only an empty diagnostics
vector would be returned, but this triggered Syntastic because hey, we have some
diagnostics to show (even though we don't).

And then Syntastic would try to close the location list window during startup
when this operation is not available. Technically it's Syntastic's fault, but a
more principled way to check for done diagnostics is to return and use a future
for file parsing operations and this solution also works around the Syntastic
issue.
2012-08-12 14:36:36 -07:00
Strahinja Val Markovic
fef702eef0 Reversed the logic for the no-results-found var 2012-08-12 14:07:38 -07:00
Strahinja Val Markovic
de8f45c202 Possible fix for rare completion-repeat bug
On rare occasions a bug can occur where the user is trying to type text but the
completion system is erasing it as he types. I believe this new approach should
fix that problem. It also replaces the old system for preventing an infinite
loop to occur when there are no completions to show to the user.
2012-08-11 21:20:17 -07:00
Strahinja Val Markovic
d793919969 Removing old debugging statement 2012-08-11 21:19:06 -07:00
Strahinja Val Markovic
67c69197d8 Refactorings and removing dead code 2012-08-11 20:13:12 -07:00
Strahinja Val Markovic
6a2f8c859c Using -x c++ in clang opts so that headers compile
The problem is that clang loves to assume that .h files are in C. -x c++ gives
it a nudge in the right direction.
2012-08-11 19:46:22 -07:00
Strahinja Val Markovic
f88c9feb4f Refactored the clang completer; many bugs fixed
This change should fix the random hangs and segfaults when using the clang
completer. Also, assertion errors printed to the console on vim exit should go
away too, same thing with segfaults on vim exit. These "on exit" errors were
caused by not cleanly shutting down the background threads; both the identifier
completer and the clang one now join the threads on destruction. This results in
a clean shutdown.

The new clang completer architecture now uses only one clang thread (again)
instead of a completion and parsing thread. Since the parsing task needs to wait
on the completion task if it was started first (and vice-versa) there's no point
to using two threads. The desired "simplicity" of using two threads for these
two tasks actually created needless complexity (and bugs). Sigh. Such is life.

A TranslationUnit abstraction was also created and this in turn also reduces the
complexity of the clang completer.

The clang completer now also has some (very) basic tests.
2012-08-11 19:37:08 -07:00
Strahinja Val Markovic
04c01c2ad0 Removing some commented-out code 2012-08-11 19:06:46 -07:00