Strahinja Val Markovic
61b4808513
Trying to help cmake find libclang.so on Arch
...
Fixes #11 . Also relevant to issue #28 .
2013-02-09 11:11:18 -08:00
Strahinja Val Markovic
78e11f7479
Typo fix
2013-02-07 19:29:59 -08:00
Strahinja Val Markovic
da8da52cdd
Minor tweaks to new intall process
2013-02-07 19:29:59 -08:00
Zeh Rizzatti
2f3303e050
Respects USE_CLANG_COMPLETER flag in CMake build
...
If USE_CLANG_COMPLETER is ON, will try to use the system clang, and if
the version is not the minimum required or not present, download.
2013-02-07 19:29:59 -08:00
Zeh Rizzatti
8036bb6348
Copy libclang inside the python dir
2013-02-07 19:29:59 -08:00
Zeh Rizzatti
6121d61b1b
Add friendly clang selection using cmake
2013-02-07 19:29:59 -08:00
Val Markovic
9bee28a0a8
Merge pull request #26 from spice/relative-clang-root
...
Handle relative DPATH_TO_LLVM_ROOT
2013-02-05 21:01:34 -08:00
Strahinja Val Markovic
02201c866b
Last piece of Windows support.
...
YCM should now compile cleanly on MSVC. Fixes #19 .
2013-02-05 19:40:43 -08:00
Strahinja Val Markovic
2159ed8e39
Changing an include path for readability
2013-02-05 18:31:33 -08:00
Strahinja Val Markovic
b6401ca179
Requiring python 2.5
2013-02-05 16:48:40 -08:00
Strahinja Val Markovic
dffe471a93
Comment typo fix; fixes #31
2013-02-05 12:59:37 -08:00
Alexander Bolodurin
826ec0a12b
Handle relative DPATH_TO_LLVM_ROOT
2013-02-06 01:46:48 +11:00
Strahinja Val Markovic
8b22c4372a
Fixing code style issues
2013-02-02 21:50:05 -08:00
Strahinja Val Markovic
fc1009913e
Updating to latest gmock & gtest
2013-02-02 21:47:41 -08:00
Strahinja Val Markovic
6d127c651e
Removed unused member var from LetterNode; fix #7
...
This makes XCode 4.6 happy again.
2013-02-02 21:24:46 -08:00
Strahinja Val Markovic
f3c6eba389
Throw fatal error if cmake finds python3
2013-02-02 12:22:26 -08:00
Strahinja Val Markovic
d4f0d3c314
Trying to force the use of python 2
2013-02-02 12:11:37 -08:00
Strahinja Val Markovic
fe92678221
Renaming a poorly named variable
2013-01-29 21:40:42 -08:00
Strahinja Val Markovic
594d8365b3
Forcing use of python2 for ycm_core; fixes #2
2013-01-29 21:24:04 -08:00
Strahinja Val Markovic
e8b60fd537
Adding the YcmDebugInfo command
2013-01-26 11:45:14 -08:00
Strahinja Val Markovic
90c495a9c7
Making sure clang crash recovery is turned on
2013-01-26 11:45:14 -08:00
Strahinja Val Markovic
7fc3c47101
Fixing the database-using example code
2013-01-24 19:18:09 -08:00
Strahinja Val Markovic
8cc9c9ca76
Race condition fix; caused latency on first load
...
The issue was that the user could open a C-family file and have it start
compiling in the background. While it is still compiling, he could trigger the
completion system with a member dot operator. Because the file was still
compiling for the very first time, the TranslationUnit object was yet not
created. Sadly, this meant that UpdatingTranslationUnit would return false, and
a new query request would be created, the GUI would hang until it was done
aaaaand terrible lag until the file was compiled.
This was a very rare edge case that could also only be triggered if it takes a
considerable amount of time to compile the file.
2013-01-24 18:37:44 -08:00
Strahinja Val Markovic
326d77fd43
Removing some forgotten code
2013-01-24 11:07:55 -08:00
Strahinja Val Markovic
19637cadda
Renaming ycm_clang_options to ycm_extra_conf
2013-01-24 09:59:21 -08:00
Strahinja Val Markovic
90fe31f98e
Async querying of CompilationDatabase supported
2013-01-23 17:23:51 -08:00
Strahinja Val Markovic
0b60b8d03b
More stlye formatting fixes
2013-01-23 17:23:38 -08:00
Strahinja Val Markovic
440a2c17f2
Updating docs and the example ycm_clang_options.py
2013-01-22 21:05:32 -08:00
Strahinja Val Markovic
3706750b40
astyle format update
2013-01-22 19:42:44 -08:00
Strahinja Val Markovic
ee919417af
Managing memory from the C interface better
2013-01-22 19:40:05 -08:00
Strahinja Val Markovic
970b2fb56c
Kiling a memory leak... I hate C interfaces
2013-01-22 17:29:05 -08:00
Strahinja Val Markovic
482de517ba
Better support for CompilationDatabase
...
We now use the compilation working directory for a file that is specified in the
CompilationDatabase. We don't actually change the working directory of the
process, even temporarily (that would be annoying to users); we munge the flags
coming from the database so that all the relative paths in them are resolved to
absolute ones.
2013-01-22 16:30:49 -08:00
Strahinja Val Markovic
1641bc9683
Formatting more code with astyle
2013-01-19 20:17:12 -08:00
Strahinja Val Markovic
4308130ab3
Formatting more code with astyle
2013-01-19 20:10:52 -08:00
Strahinja Val Markovic
013a56c25c
Formatting the a part of the source with astyle
2013-01-19 20:03:32 -08:00
Strahinja Val Markovic
00db8fd8b1
compilation_database.json now fully supported
2013-01-19 18:53:30 -08:00
Strahinja Val Markovic
c1119c001f
Adding CompilationDatabase support (still WIP)
2013-01-18 17:22:36 -08:00
Strahinja Val Markovic
56f96b6c08
Hide clang pragmas behind an #ifdef
2013-01-17 14:58:50 -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
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
8c709c2e57
NO_CLANG_COMPLETER inverted to USE_CLANG_COMPLETER
2013-01-12 16:38:00 -08: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
7a4fec0f3f
Small whitespace fix
2012-08-24 16:28:56 -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
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
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
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
Strahinja Val Markovic
3e56aea6e3
Adding our custom X_ASSERT macro
2012-08-11 19:01:40 -07:00
Strahinja Val Markovic
04c04c6bce
Not setting c++98compat warning for xcode
2012-08-11 19:00:39 -07:00
Strahinja Val Markovic
ee3ea72e3c
Not parsing llvm cmake when using external clang
...
This speeds up the cmake project regeneration.
2012-08-11 18:59:54 -07:00
Strahinja Val Markovic
f17e45bdc3
Forcing the use of move in one location
2012-08-06 20:02:46 -07:00
Strahinja Val Markovic
ddca4d0cf9
Split the CompletionData constructor into 2 funcs
2012-08-05 21:43:38 -07:00
Strahinja Val Markovic
6216eedbc9
Removing "__" from completion strings
2012-08-05 21:34:29 -07:00
Strahinja Val Markovic
0da734d393
Showing the first func def in the preview window
2012-08-05 21:13:01 -07:00
Strahinja Val Markovic
55267ceb5c
Now showing optional parameters as well
...
Also refactored CompletionData building into a constructor for CompletionData
2012-08-05 21:01:42 -07:00
Strahinja Val Markovic
5f95a2bfde
Showing preview window data for completions
...
Also, const functions have " const" correctly appended in the completion window.
2012-08-05 19:49:54 -07:00
Strahinja Val Markovic
df260ed2a8
Forcing c++ lang in clang options for ycm
2012-08-05 12:55:03 -07:00
Strahinja Val Markovic
feef67c50a
Setting rpath only for non-system, external clang
...
Setting the rpath for the system libclang was for some reason breaking the
ycm_core_tests binary. Also, rpath seems to work funky on Mac OS X.
2012-08-04 19:37:00 -07:00
Strahinja Val Markovic
a2bbbe1a4d
Code style fix
2012-08-04 19:33:28 -07:00
Strahinja Val Markovic
5646eeab5e
More null checks for data coming from clang
2012-08-04 19:29:11 -07:00
Strahinja Val Markovic
3c65c84c7b
Renaming 'indexer' to the more accurate 'ycm_core'
2012-08-04 18:59:22 -07:00
Strahinja Val Markovic
f3ddfd5458
Build option to use system libclang
2012-08-04 18:49:21 -07:00
Strahinja Val Markovic
1fd2515617
clang options file uses more succint dict syntax
2012-08-03 10:26:11 -07:00
Strahinja Val Markovic
f120c0ce1c
Showing function args right next to name now
...
The completion text in the menu is different. We used to just show the func name
in the "main" part of the completion menu, now we show the full signature
without the return type (which is shown on the right)
2012-08-02 21:37:21 -07:00
Strahinja Val Markovic
4765fd88fe
Removing some unused code + fix for crash
...
The crash was caused by clang_disposeString/getCString not checking whether the
given CXString has NULL data members. Fixed with a workaround.
2012-08-01 22:09:31 -07:00
Strahinja Val Markovic
3868f94ac7
Adding a .ycm_clang_options.py file for YCM
2012-08-01 20:50:35 -07:00
Strahinja Val Markovic
618a6acd59
Protecting ALL clang access with a mutex now
2012-08-01 20:09:01 -07:00
Strahinja Val Markovic
eab70838f0
New system for specifying clang flags
...
Now the .ycm_clang_options file is a python script that needs to implement our
API. This enables the user to do arbitrary things when computing flags.
2012-08-01 19:34:20 -07:00
Strahinja Val Markovic
11a52d018c
Protecting diagnostic access with mutex
2012-08-01 17:18:35 -07:00
Strahinja Val Markovic
11e42b49f0
Smarter updating of clang diagnostics display
2012-07-30 19:42:41 -07:00
Strahinja Val Markovic
71e3e86252
Adding option for custom extra rpath
2012-07-30 14:20:05 -07:00
Strahinja Val Markovic
333b71f8d5
Triggering syntastic error display more often
2012-07-29 22:13:42 -07:00
Strahinja Val Markovic
57bd4f7a47
Now possible to use external libclang.so
2012-07-29 20:58:04 -07:00
Strahinja Val Markovic
958a008462
Adding diagnostic extraction support
...
Next step is to add support to Syntastic so that it uses this new functionality
2012-07-28 15:27:30 -07:00
Strahinja Val Markovic
2667a82441
Now using the correct flag to warn on C++11 use
2012-07-28 11:19:26 -07:00
Strahinja Val Markovic
e46ea47df2
Replacing accidental use of C++11 auto
2012-07-27 13:52:56 -07:00
Strahinja Val Markovic
0d9d697b50
Only showing the first overloaded func signature
2012-07-26 21:44:17 -07:00
Strahinja Val Markovic
e9cf3c14b2
Not adding a '(' after a function name insert
2012-07-26 21:44:17 -07:00
Strahinja Val Markovic
3cc4cf8e10
Async clang parsing of the current file
2012-07-26 21:44:17 -07:00