Commit Graph

289 Commits

Author SHA1 Message Date
svermeulen
273a51059b Added missing include to build on win32 2013-05-26 14:01:15 -03:00
Strahinja Val Markovic
2805b0fe85 Better thread safety in IdentifierCompleter
Everything that needs access to filetype_map_ has been split into a new class
called IdentifierDatabase. This class is thread-safe. Previously, multiple
threads could access filetype_map_ at the same time, some reading things from
it, others writing to it. WTF was I doing? My best guess is that I introduced
this vile stupidity when I added the second thread to IdentifierCompleter;
previously it was impossible for multiple threads to stomp on filetype_map_
because only one thread ever accessed it. I changed that some time ago and
forgot to protect filetype_map_.

Idiot.
2013-05-25 11:43:14 -07:00
Strahinja Val Markovic
0649d11bf4 Some docs for CandidateRepository 2013-05-25 11:02:53 -07:00
Strahinja Val Markovic
45cbc7da7f Calling PrepareClangFlags is not needed anymore
ycm_extra_conf.py files used to import clang_helpers and then use the
PrepareClangFlags function; this is now unnecessary since the logic from that
function has been moved to flags.py. The old PrepareClangFlags function is still
there (it just returns the flags it gets) for the sake of backwards
compatibility with old ycm_extra_conf.py files.
2013-05-19 10:48:23 -07:00
Stanislav Golovanov
837a1ab889 Fix FilterAndSortCandidates behavior
FilterAndSortCandidates(completions, 'word', '') should
return a dict, not a list.
2013-05-09 21:33:10 +04:00
Strahinja Val Markovic
88bff3f5cf Making -fPIC the default
Fixes #211
2013-05-05 10:00:32 -07:00
Strahinja Val Markovic
7f676f85ae Code style fixes 2013-05-05 09:47:56 -07:00
Stanislav Golovanov
6b018db10f fix compiling with clang on Windows
This fixes a Visual Studio problem when it cant correctly select
bind and make_shared boost methods due to Argument-dependent name lookup.

Relevant to #19
2013-04-29 21:41:49 +04:00
Strahinja Val Markovic
387102a99f Fix ranking bug with ALL_CAPS variables
GetWordBoundaryChars would return "allcaps" for "ALL_CAPS" instead of "ac". This
would manifest as ranking (for instance) "STDIN_FILENO" ahead of "stdin" for
query "std", which is terrible.

This bug has been present in YCM for many months, but no one noticed the issue.

Fixes #272.
2013-04-28 13:21:13 -07:00
Strahinja Val Markovic
a80739ad6f Not adding -Wc++98-compat on FreeBSD
Fixes #260
2013-04-27 11:07:53 -07:00
Strahinja Val Markovic
67e4495273 Stopgap for unicode chars in filename strings
Such filenames still can't be matched against, but at least we won't throw an
exception when it happens.

Fixes #279, relevant to #278
2013-04-27 10:54:28 -07:00
Strahinja Val Markovic
cb7ee5e3c1 ycm_extra_conf.py file now in the public domain
It was never supposed to be licensed under the GPL since it's effectively
example code (that's also used for YCM compilation flags, but still).

No one has ever edited this file except me, Strahinja Val Markovic, and thus I
can release it into the public domain.
2013-04-26 15:25:19 -07:00
Strahinja Val Markovic
c3b7e55762 FilterAndSortCandidates returns all on empty query
Previously it returned an empty list. It makes mores sense to return the input
list of candidates because conceptually everything matches an empty query.
2013-04-20 13:27:55 -07:00
Strahinja Val Markovic
484c5f7241 Travis CI config file & related required changes 2013-04-18 23:38:29 -07:00
Strahinja Val Markovic
7ff4774e96 Possible fix for random hang on Vim close
Reparse would take the clang lock and then possibly call Destroy while still
holding the lock. Destroy would try to take that same lock, and the mutex is not
recursive. Unpleasantness ensues.

I _think_ this is the root cause of #218, but I can't be sure. Such is life with
threads.

Fixes #218.
2013-04-10 19:45:50 -07:00
Matthew Wesley
a00535f078 Return an empty location instead of segfaulting 2013-04-03 14:58:37 -04:00
Strahinja Val Markovic
1676a3b2a4 Style fixes for C++ 2013-04-01 19:09:37 -07:00
Strahinja Val Markovic
1f094e50d0 GoToDefinition/Declaration commands for C-family
These are accessible through the :YcmCompleter command. The docs have more
information.
2013-03-31 20:38:29 -07:00
Strahinja Val Markovic
c2ef3f785b Updating comments for the string-stripping regex 2013-03-23 10:56:56 -07:00
Val Markovic
bd75efedbc Merge pull request #186 from peter50216/master
C++ IdentifierUtils::RemoveIdentifierFreeText behaves incorrectly.
2013-03-23 10:55:13 -07:00
Strahinja Val Markovic
a3a3250f76 Style fixes for C++ code 2013-03-23 10:47:30 -07:00
Pi-Hsun Shih
83f8d65775 properly test the patch in IdentifierUtils::RemoveIdentifierFreeText 2013-03-21 13:53:54 +08:00
Strahinja Val Markovic
4f12febb44 Clarifying that ycm_extra_conf needs to be changed
Also tweaked YCM's extra conf file so that the flags variable that needs to be
changed is closer to the top of the file.
2013-03-20 18:31:49 -07:00
Strahinja Val Markovic
4cb9f17c5f Cache deletion is now async 2013-03-16 12:10:24 -07:00
Strahinja Val Markovic
1fce7ccec2 Adding the Boost Atomic and Lockfree libraries 2013-03-16 11:00:13 -07:00
Strahinja Val Markovic
c391bdcc62 Reducing RAM consumption by deleting unused caches
When the user deletes a buffer, we can delete the clang caches for that file.
Fixes #184.
2013-03-16 10:41:47 -07:00
Pi-Hsun Shih
2d11be9162 Add test for IdentifierUtils::RemoveIdentifierFreeText 2013-03-15 10:52:13 +08:00
peter50216
6a0525254e Fix handling of escaped \ in char or string. 2013-03-14 12:41:20 +08:00
Strahinja Val Markovic
5d97e709f5 Adding the any_of.hpp file to BoostParts
Fixes #171, fixes #170
2013-03-02 08:39:03 -08:00
Strahinja Val Markovic
a6e83bfe76 Smart-case sensitive filtering
Fixes #120
2013-03-01 22:18:43 -08:00
Strahinja Val Markovic
831c122d06 Placating the compiler playing dumb about types 2013-03-01 20:34:01 -08:00
Strahinja Val Markovic
54ea5db7cc Refactor for loop into std algo call 2013-03-01 20:15:36 -08:00
Strahinja Val Markovic
c8a9d0590e boost::array instead of std::vector in nodelist
This should provide a minor performance boost & memory reduction.
2013-03-01 20:10:12 -08:00
Strahinja Val Markovic
dae3dcdd9e Style fixes and minor refactoring 2013-03-01 20:09:55 -08:00
Strahinja Val Markovic
9e0318d229 Not using the system libclang by default
We used to do this but it was unsafe, as issue #167 proves. YCM has to give
libclang an include to YCM's copy of clang system headers (again, see issue #167
for details) and those headers may not be valid for a newer libclang.

If the user really wants to user the system libclang, then he can just always
call cmake himself. The installation guide in the README goes to great lengths
to explain the simple process of building YCM "by hand".

Fixes #167.
2013-03-01 18:03:28 -08:00
Strahinja Val Markovic
719b497daa More reliable way of adding -fPIC.
Fixes #162
2013-02-27 19:43:41 -08:00
Strahinja Val Markovic
a6a238bcf6 Deleting outdated comment 2013-02-24 14:46:58 -08:00
Strahinja Val Markovic
eb7bec4fdd Refactoring ClangCompleter to use ResultAnd<> 2013-02-23 17:54:04 -08:00
Strahinja Val Markovic
fb62030122 A few more clang cursorkinds supported
Now C-family completion will have fewer compeletion strings labeled as 'u' kind.
2013-02-23 17:34:10 -08:00
Strahinja Val Markovic
3e5ecd6015 ycm_core should be ycm_core.pyd on Windows 2013-02-23 16:10:36 -08:00
Strahinja Val Markovic
6786d4e71b More style fixes 2013-02-23 15:57:55 -08:00
Val Markovic
ce58bc7d75 ycm_core now compiles cleanly with MSVC 2013-02-23 15:57:55 -08:00
Strahinja Val Markovic
e1584a33b0 Code style fixes 2013-02-23 15:54:44 -08:00
Strahinja Val Markovic
46297a1c30 Downloading x86 libclang for Ubuntu x86 2013-02-23 12:54:17 -08:00
Strahinja Val Markovic
fd2fd60f7c Identifier collection now smarter about strings
Previously, a string like 'foo\'bar\'zoo' would make the collection process
think that "bar" is not inside a string because it wouldn't recognize that the
quotes are escaped. Now it does.

Fixes #143.
2013-02-21 22:14:31 -08:00
Val Markovic
3a285e8a31 Merge pull request #122 from cehoffman/cygwin_support
Get cygwin compilation working
2013-02-19 00:13:41 -08:00
Chris Hoffman
e7774cf44b Get cygwin compilation working 2013-02-18 23:55:54 -06:00
Strahinja Val Markovic
8f66862726 Linking with librt only on Linux 2013-02-17 10:04:40 -08:00
Rafal Jeczalik
b1c9aad19f ycm_core needs to be linked with librt under Linux 2013-02-17 18:16:04 +01:00
Strahinja Val Markovic
cdcfae4b41 Bringing back the Boost.Chrono workaround
Fixes #124
2013-02-16 17:10:01 -08:00
Strahinja Val Markovic
e743076e14 Option to collect identifiers n comments/strings
Fixes #98.
2013-02-16 14:00:46 -08:00
Strahinja Val Markovic
90dc16bb99 Destroying clang data last, after threads done
Otherwise this will cause issues if the clang threads are still trying to
access the clang data.
2013-02-16 12:25:29 -08:00
Strahinja Val Markovic
f01a3480f5 Making sure that clang_completer tests included 2013-02-16 12:25:29 -08:00
Strahinja Val Markovic
2ff85a5a60 Only joining threads if they are created 2013-02-16 12:25:29 -08:00
Strahinja Val Markovic
30d5a3b8a5 Wrapping boost threads in scoped_ptr
Boost.Thread deprecated the copy ctor for threads; this is a better approach.
2013-02-16 12:25:29 -08:00
Strahinja Val Markovic
9dfa2f4e11 Fixing thread segfault issues with new Boost 1.53
The answer was to use boost::move() on the functors, but since there is AFAIK no
move emulation support for Boost.Function, the fix may only work on C++11
compilers. That needs to be looked into.
2013-02-16 12:25:29 -08:00
Strahinja Val Markovic
f42c6a5d98 Adding the forgotten boost/utility.hpp 2013-02-16 12:25:29 -08:00
Strahinja Val Markovic
0a46a6ec12 Updating to Boost 1.53 2013-02-16 12:25:28 -08:00
Strahinja Val Markovic
ad8345aa35 Now checking ycm_core version for compatibility 2013-02-12 20:54:27 -08:00
Strahinja Val Markovic
786e6182ff Initial version of omnifunc-based omni_completer
Still a work in progress (needs better triggering and bug fixes)
2013-02-10 20:03:56 -08:00
Strahinja Val Markovic
051fc85be4 Adding a missing include path to YCM's extra conf 2013-02-10 20:03:56 -08:00
Strahinja Val Markovic
41854ded3a Removing an obsolete comment 2013-02-09 15:49:08 -08:00
Ola Jeppsson
57e6af6db8 Use the library path in the environment when looking up clang library.
Use *LD_LIBRARY_PATH when configured to build against the systems libclang.
This patch makes the install script work even when libclang is in a custom path.

Signed-off-by: Ola Jeppsson <ola.jeppsson@gmail.com>
2013-02-09 22:13:16 +01:00
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
e8a4caa561 Some initial minor MSVC support 2013-02-05 18:57:49 -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