Commit Graph

1132 Commits

Author SHA1 Message Date
Fangrui Song
9b0256355e Address ODR violation spot by @Riatre and work around .o .a in compile_commands.json 2018-02-07 10:27:30 -08:00
Chao Shen
8bee5c6ccf Disable limiting completion result.
Because vscode cache the include completion results.
But for emacs, the json is too large to load.
TODO Make some fields optional.
2018-02-08 00:28:35 +08:00
scturtle
2e6d596a5a Speedup sorting and limit number of completion results. 2018-02-07 16:15:29 +08:00
Fangrui Song
e76a336f19 Remove --debug in favor of LIBCLANG_DISABLE_CRASH_RECOVERY=1
ci/before_deploy.sh: Use the latest libclang.so
2018-02-07 00:00:04 -08:00
Fangrui Song
9e730aacd4 Make before_deploy.sh work on FreeBSD 2018-02-06 22:46:05 -08:00
Fangrui Song
e440a7c52f Convert some copy constructors to move constructors in query.cc 2018-02-06 21:45:58 -08:00
Fangrui Song
55c7519e93 Move ImportOrUpdate and header cleanup 2018-02-06 21:27:07 -08:00
Fangrui Song
0016d214c3 Convert copy constructor to move constructors piecemeal
If I replace all the important constructors used in query.cc, there will be a weird issue that strings following "Applying index update for " are empty.
2018-02-06 20:54:17 -08:00
Jacob Dufault
0cfb5391d1 Add --record in favor of --log-stdin-stdout-to-stderr.
This should be more useful and can hopefully be adapted to writing tests.
2018-02-06 20:27:35 -08:00
Peter Elmers
47a8f20b20 Match directory before looking at included files. 2018-02-06 15:05:30 -08:00
Chao Shen
1e3815db2d Fix include completion with filterText.
Fix #423
2018-02-06 16:14:05 +08:00
Fangrui Song
1a82f1f113 We may should represent Query{Func,Type,Var} as a bag of definitions and references 2018-02-05 10:16:43 -08:00
Fangrui Song
cd96cb9570 threaded_queue: queue -> deque
IndexMergeIndexUpdates: use TryPopBack() and see
2018-02-04 22:15:48 -08:00
Fangrui Song
3839d1e5ab Decouple QueryDb_ImportMain 2018-02-04 21:22:21 -08:00
Fangrui Song
a8fb2264a9 Reflect IndexFuncRef 2018-02-04 17:49:00 -08:00
Chao Shen
093dbac30c Fix compilation. 2018-02-05 09:34:39 +08:00
Fangrui Song
217d238c78 Use clang_getCursorPrettyPrinted if CINDEX_VERSION >= 47
Closes #366
2018-02-04 15:23:23 -08:00
Fangrui Song
1349cbfde3 Simplify EachWithGen 2018-02-04 13:43:29 -08:00
Fangrui Song
d573a68130 Simplify operator== 2018-02-04 10:09:58 -08:00
Guillaume Papin
65d7edd9b9 refactor CompareLsCompletionItem (#412)
Since not everything is a reference,
std::make_tuple() seems more appropriate than std::tie().
For heavy types, std::cref() can be used to preserve the reference.
2018-02-04 09:31:23 -08:00
Guillaume Papin
24702a25b0 add detailedLabel completion style
Some completion UI, such as Emacs' completion-at-point and company-lsp,
display completion item label and detail side by side.
This does not look right, when you see things like:
    "foo" "int foo()"
    "bar" "void bar(int i = 0)"
When this option is enabled, the completion item label is very detailed,
it shows the full signature of the candidate.
The detail just contains the completion item parent context.
Also, in this mode, functions with default arguments,
generates one more item per default argument
so that the right function call can be selected.
That is, you get something like:
    "int foo()" "Foo"
    "void bar()" "Foo"
    "void bar(int i = 0)" "Foo"
Be wary, this is quickly quite verbose,
items can end up truncated by the UIs.
2018-02-03 20:56:14 -08:00
Fangrui Song
7a1464cadb Fix #410 2018-02-03 20:37:39 -08:00
Fangrui Song
985dec101d Generation 2018-02-03 19:51:30 -08:00
Fangrui Song
0a721ff247 Simplify query.h 2018-02-03 18:16:30 -08:00
scturtle
15dd552610 Complex include completion. 2018-02-04 09:45:58 +08:00
Chao Shen
e16753d261 Improve completion. 2018-02-04 09:45:58 +08:00
Fangrui Song
e5128d3db9 Wrap Query* references with WithGen 2018-02-03 17:44:20 -08:00
Fangrui Song
3d6d000297 Add Generation gen; to Query{Func,Type,Var} and corresponding ToQueryLocation 2018-02-03 14:52:26 -08:00
Riatre Foo
54c587a700 Look for .cquery in any directory above the source file in the hierarchy. (#409)
* Look for .cquery in any directory above the source file in the hierarchy.

Currently cquery only reads compiler arguments (.cquery) from project
root. Under some circumstances (e.g. remote compiling), generating a
compilation database with correct path in it is non-trivial, and
allowing per directory compile arguments usually helps.

* unused var buf
2018-02-03 13:16:38 -08:00
Fangrui Song
6933870962 Change symbol id from size_t to RawId (uint32_t currently) 2018-02-03 10:35:17 -08:00
Riatre Foo
b145243a64 Fix #393 again. (#402)
28cd33e actually changed the behaviour of GetFilesInFolderHelper.
2018-02-02 10:51:14 -08:00
Fangrui Song
12e41c609e Fix #393 2018-02-01 23:35:34 -08:00
Fangrui Song
e42f6b6191 optional<...> GetQuery*IdFromUsr -> Maybe 2018-02-01 23:17:34 -08:00
Fangrui Song
ae999f9c92 size_t Query*::symbol_idx -> Maybe<Id<void>> 2018-02-01 22:52:03 -08:00
Fangrui Song
3c6f3f661f Use Maybe<Id<T>> for {Func,Type,Var}DefDefinitionData
sizeof(db->funcs[0].def) 224  (-24)
sizeof(db->types[0].def) 248  (-24)
sizeof(db->vars[0].def) 160   (-24)
2018-02-01 22:31:43 -08:00
Fangrui Song
392cd79d04 Add Maybe<T> and change definition_{spelling,extent} from optional to Maybe
sizeof(db->funcs[0].def) decreases from 248 to 232
sizeof(db->types[0].def) decreases from 272 to 256
sizeof(db->vars[0].def) decreases from 184 to 168
2018-02-01 21:39:23 -08:00
Nathan Ridge
74f9be1d6f Use symbol kind 'Parameter' for template parameters
Clients can distinguish between function and template parameters based
on storage class.
2018-02-01 20:07:11 -08:00
Fangrui Song
ce6f1c7294 QueryDatabase::{detailed_names,short_names} -> GetSymbol{DetailedName,ShortName} 2018-02-01 18:15:22 -08:00
Fangrui Song
2fb85732c0 Add RemoveSymbol 2018-02-01 17:25:06 -08:00
Fangrui Song
642975ea17 Reflect string_view and fix workspace/symbol 2018-02-01 13:48:41 -08:00
Fangrui Song
0d715e7bcf Handle int8_t int16_t uint8_t uint16_t enum constants
Clean up clang_complete
2018-02-01 12:21:58 -08:00
Chao Shen
5b6945d909 Remove last CR. 2018-02-01 17:12:36 +08:00
Fangrui Song
490f52205f Clean serializer 2018-02-01 00:39:31 -08:00
Chao Shen
57ea5f7cb9 Check the function name appearance before publish semantic highlight. 2018-02-01 16:27:31 +08:00
Jacob Dufault
e0e3a39d5d Fix clang 3.5 compile error 2018-01-31 21:49:56 -08:00
Jacob Dufault
c98d53cfe2 Indexer now has access to |config| 2018-01-31 21:48:49 -08:00
Fangrui Song
e259bb91d3 Use string_view for lsSymbolInformation 2018-01-31 21:40:40 -08:00
Fangrui Song
6d6c1639d0 Type-dependent member access expressions 2018-01-31 21:23:00 -08:00
Jacob Dufault
b02c92e335 Reduce file reads in import_pipeline 2018-01-31 21:20:38 -08:00
Jacob Dufault
301d295f79 Remove std::experimental uses 2018-01-31 21:18:32 -08:00
Jacob Dufault
a2c1cb4a83 Enable make* indexing by default 2018-01-31 20:21:16 -08:00
Fangrui Song
8108de0cfa Change short_names/detailed_names from const std::string& to std::string_view 2018-01-31 19:53:50 -08:00
Fangrui Song
c33aa113db Use short_name for tests but short_name_{offset,size} for lang server 2018-01-31 17:22:30 -08:00
Fangrui Song
9944617df6 Fix #385 2018-01-31 16:48:26 -08:00
Fangrui Song
768f4ecb6e Enable "Make" hack only if config->index.make_unique is true. 2018-01-31 11:10:20 -08:00
Fangrui Song
871ae34a1b Hotfix of stale file contents in 186898 2018-01-31 08:42:25 -08:00
Fangrui Song
3e16055b31 Change some API const std::string& -> std::string_view 2018-01-31 00:35:04 -08:00
Fangrui Song
4c895bef0b Make optional<string> {hover,comments} non-optional 2018-01-30 23:48:34 -08:00
Fangrui Song
77dca1936b Change TypeDefDefinition::short_name from string to string_view 2018-01-30 23:01:59 -08:00
Fangrui Song
93269ecfd4 Change std::string FuncDefDefinition::short_name to ShortName() 2018-01-30 22:40:02 -08:00
Fangrui Song
41f87887bb Change std::string VarDefDefinition::short_name to ShortName() 2018-01-30 22:04:55 -08:00
scturtle
699d2f3655 Fix completion of headers. 2018-01-31 09:59:51 +08:00
Fangrui Song
5d88eb959d Remove index.builtinTypes and fix doc 2018-01-30 09:16:20 -08:00
Riatre Foo
ab2a836d57 Remove unused variable ex in initialize.cc (#376) 2018-01-30 09:03:46 -08:00
Fangrui Song
c8605dc4a9 Group source files outside of the project by a cache sub-directory 2018-01-29 23:53:32 -08:00
Jacob Dufault
fe3b9c4a8a Revert "Fix completion of headers."
This reverts commit ce0aab3afa4b7d80d46c901d1bb8234ac18fa70b.
2018-01-29 21:52:38 -08:00
Jacob Dufault
f6a2a55209 Import pipeline improvements
- Cache manager is created by request
- Index is always associated with its contents
- Reduced frequently of file reads
2018-01-29 21:34:36 -08:00
Jacob Dufault
a8b68d21d7 Fix potential crash 2018-01-29 21:34:36 -08:00
scturtle
e145f77996 Fix completion of headers. 2018-01-30 13:11:56 +08:00
Fangrui Song
5bd466ab17 Fix #372 2018-01-29 19:08:19 -08:00
Jacob Dufault
0eb7d415d7 usr_to_file uses new NormalizedPath type 2018-01-29 16:56:00 -08:00
Jacob Dufault
7579d71b85 Simplify MAKE_REFLECT_TYPE_PROXY 2018-01-29 16:35:01 -08:00
Jacob Dufault
a392301be3 Format 2018-01-29 16:27:43 -08:00
Jacob Dufault
233a108814 Add docs to config.h, remove enableCacheRead/enableCacheWrite. 2018-01-29 16:14:23 -08:00
Jacob Dufault
55338e7481 Simplify, readd --wait-for-input 2018-01-29 15:43:22 -08:00
Fangrui Song
09d7da2893 Don't emit semantic highlight for operators or lambda (#369)
Fixes #368
2018-01-29 09:28:17 -08:00
Fangrui Song
795dfc670c Update tests after specialization handling 2018-01-28 23:40:57 -08:00
Fangrui Song
b7ce3dd60a Better template specialization 2018-01-28 23:05:51 -08:00
Fangrui Song
dc1c72ce30 Remove definition from uses for TemplateVisitor 2018-01-28 22:41:53 -08:00
Fangrui Song
535c2c20a3 Escape more characters in ECMA-262 uriReserved
Fixes #248
2018-01-28 22:11:53 -08:00
Fangrui Song
16bf3158c5 Add SymbolRole to SymbolRef and fix $cquery/{base,derived} by ordering definitions before uses 2018-01-28 20:39:41 -08:00
Fangrui Song
777193d02f Better template specialization 2018-01-28 18:31:11 -08:00
Fangrui Song
fb3cd89b05 Move language_server_api.h structs to initialize.cc 2018-01-28 14:39:48 -08:00
Fangrui Song
640d72f85c Check --init and remove --wait-for-input 2018-01-28 14:06:35 -08:00
Fangrui Song
1e7727f75a Allow empty initializationOptions or cacheDirectory (which disables cache read/write) 2018-01-28 13:52:04 -08:00
Fangrui Song
80213e8a23 Complete with empty context 2018-01-28 13:26:34 -08:00
Fangrui Song
bdb880e0a5 Serialize VarDefDefinitionData::{parent_kind,parent_id} 2018-01-28 12:34:31 -08:00
Fangrui Song
79b60561d1 Remove CXCursor_MacroDefinition from uses 2018-01-28 11:42:40 -08:00
Fangrui Song
818ef8a834 -h --help for help. --language-server is the default mode 2018-01-28 10:53:17 -08:00
Fangrui Song
45b57bd729 [test] Use system 'diff' on POSIX. 2018-01-27 22:31:17 -08:00
Fangrui Song
70bbe6c64c Use major/minor versions for IndexFile
Fixes #364
2018-01-27 21:47:37 -08:00
Fangrui Song
5763201838 Remove is_type_member & VarDefDefinitionData::declaring_type
Rename ClangStorageClass to StorageClass
Add semantic_parent & semantic_parent_kind (but not serialized yet)
Move query.h SymbolKind to indexer.h SymbolKind and make it uint8_t
2018-01-27 20:46:06 -08:00
Fangrui Song
aeb63ce3ad Add magic/version to "cacheFormat": "msgpack" 2018-01-27 19:21:35 -08:00
Fangrui Song
d605217c1a matcher.cc: use std::regex_search instead of std::regex_match
Prototype of non-working `dependencies` parameter of $cquery/freshenIndex
2018-01-27 10:42:18 -08:00
Jacob Dufault
e3d3a492d0 Return default value 2018-01-27 10:20:54 -08:00
Phil Wise
74a39e7ea8 Fix build on Ubuntu 16.04
On Ubuntu 16.04 I get the following compile error in release mode:

../../src/indexer.cc: In function ‘ClangStorageClass {anonymous}::GetStorageClass(CX_StorageClass)’:
../../src/indexer.cc:130:1: error: control reaches end of non-void function [-Werror=return-type]

cc1plus: all warnings being treated as errors
2018-01-27 09:03:08 -08:00
Fangrui Song
d6003e1991 workspace/didChangeWatchedFiles 2018-01-26 23:17:49 -08:00
Fangrui Song
0bbabbcbd2 Move IndexVar::def::declarations to IndexVar::declarations 2018-01-26 21:50:17 -08:00
Fangrui Song
e892c23955 Change declaration to declarations in IndexVar 2018-01-26 18:21:15 -08:00
Fangrui Song
6b3673a438 Remove definition_spelling from uses in IndexVar
Instead, specify `include_decl = true` in GetUsesOfSymbol
2018-01-26 18:01:14 -08:00
Fangrui Song
37809def7c Add bool include_decl parameter to GetUsesOfSymbol
Fixes #350

Function declarations/definitions are not counted if include_decl is
false.
We should do similar thing to Var and Type.
2018-01-26 17:31:50 -08:00
Fangrui Song
723c78409f Move is_operator from indexer to semantic highlighting 2018-01-26 10:08:56 -08:00
Fangrui Song
351e7b6c95 Add ClangStorageClass storage; to {Func,Var}DefDefinitionData and semantic highlighting.
This can be used to differentiate local/global variables, template parameters.
Also make msgpack deserialization robust.
2018-01-26 09:47:42 -08:00
Fangrui Song
3ef0abec14 WIP DidChangeWatchedFiles 2018-01-25 23:04:07 -08:00
Fangrui Song
1aec53621f Use std::vector<std::string> files_removed;
It turns out this field is not used.
2018-01-25 22:42:58 -08:00
Fangrui Song
50c6ed1dd3 Clean up SetTypeName 2018-01-25 22:25:19 -08:00
Fangrui Song
63b793619d Set names in ResolveToDeclarationType and type declarations. 2018-01-25 21:38:39 -08:00
Fangrui Song
7aea052f09 Re-pick "Handle template <class T> class A" but does not assign names to templates without body 2018-01-25 12:35:59 -08:00
Jacob Dufault
7f9f6e0c6b Revert "Handle template <class T> class A; and attribute variable uses to specialized template if exists"
This reverts commit 8da62430e575022e206b66bad58b376002422f32.
2018-01-25 11:46:03 -08:00
Jacob Dufault
d14f17212d Do not show code lens on namespaces.
There are too many references for editors to handle well.
2018-01-25 11:22:55 -08:00
Fangrui Song
684ad961ad Handle template <class T> class A; and attribute variable uses to specialized template if exists 2018-01-25 01:13:07 -08:00
Fangrui Song
403c892838 --debug disables libclang crash recovery 2018-01-25 00:01:30 -08:00
Fangrui Song
db1f707027 Add --debug to disable libclang crash recovery
We can add more debug facility later.
2018-01-24 23:32:42 -08:00
Fangrui Song
706a3d0017 Attribute enum to its underlying type's uses 2018-01-24 21:55:59 -08:00
Fangrui Song
d2c4c34bc0 Replace std::cin.get with getchar. Fix #334
To avoid C++ iostream headache:
std::cin has a bad() state
std::{cin,cout} are also tied by default, reading from cin will cause a flush of cout, which may deadlock
2018-01-24 21:32:07 -08:00
Jacob Dufault
61efdcc721 Better inline code lens location for functions 2018-01-24 19:15:18 -08:00
Jacob Dufault
3f4866208f Fix unit tests properly 2018-01-24 10:42:09 -08:00
Fangrui Song
549f4f3674 Fix --test-unit 2018-01-24 10:26:01 -08:00
Fangrui Song
c4e8db2964 Index namespaces as Type 2018-01-24 00:57:50 -08:00
Fangrui Song
b4e1e4fd3a Remove enableComments, make index.comments default to 2, and index builtin types 2018-01-23 22:56:13 -08:00
Jan Niklas Hasse
358c001d3c Don't use MSVC specific exception handler for MinGW 2018-01-23 10:01:10 -08:00
Fangrui Song
8ef2b95a45 Fix lsDocumentUri::GetPath on Windows 2018-01-23 09:02:36 -08:00
Fangrui Song
ce49a5c8d9 Stop appending to insert after a placeholder if snippetSupport is false 2018-01-22 22:21:32 -08:00
Fangrui Song
d4a4e15976 Store client capability snippetSupport into config
Rename filterAndSortCompletionResponse to completion.filterAndSort
Rename index.builtin_types to index.buitinTypes
2018-01-21 10:09:09 -08:00
Snibod
69d439ae8d Detect Windows absolute paths in LoadCompilationEntriesFromDirectory 2018-01-21 07:44:35 -08:00
Fangrui Song
e4d4c7b139 Better $cquery/vars 2018-01-20 23:42:11 -08:00
Fangrui Song
bf7ffb3c9d Strip CXType_RValueReference 2018-01-20 23:12:23 -08:00
Fangrui Song
bc28bfef45 Cleanup 2018-01-20 22:55:29 -08:00
Fangrui Song
6acea187c7 Add initialization option index.builtin_types for indexing builtin types
Also deprecate enableComments in favor of index.comments

Make $cquery/vars work on variables (by obtaining their types first).
This is currently the only way to list instances of builtin types.
2018-01-20 22:46:03 -08:00
scturtle
619ad11f9e Let GetExecutablePath() return real path on osx. (#325) 2018-01-20 20:37:24 -08:00
Fangrui Song
b5c9e22ad1 Explicitly use std::move to make clang 3.5 compile 2018-01-20 19:19:24 -08:00
Fangrui Song
a57798154d Explicitly use std::move to make clang 3.5 compile 2018-01-20 17:59:43 -08:00
Fangrui Song
8c6a87b3a3 Fix signatureHelp signature selection heuristic 2018-01-20 16:21:13 -08:00
Fangrui Song
c36eda70f9 Rename SubstringMatch to SubsequenceMatch and use it to pre-filter completion items
Fix #321
2018-01-20 13:15:43 -08:00
Fangrui Song
2e0f14bef8 Add whitelist/blacklist to $cquery/freshenIndex 2018-01-20 11:39:44 -08:00
Fangrui Song
273af8306f Move GetQueryFileIdFromPath to unnamed namespace, make them inline and optional 2018-01-20 10:44:30 -08:00
Fangrui Song
76c38787df CXCursor_OverloadCandidate is lsCompletionItemKind::Text
See clang/test/Index for some OverloadCandidate cases, they all start with Text.
2018-01-20 10:07:52 -08:00
Fangrui Song
c5bb14e86b Use INVALID_ID instead of optional and clean up 2018-01-20 09:59:12 -08:00
Ka Ho Ng
b6539a2639 Add INVALID_ID as a constant for Id class Template
This is for identifying invalid ID from normal ID.
2018-01-20 09:38:19 -08:00
khng300
427f7b79e3 Use GetQuery{Type,Func,Var}IdFromUsr for querying QueryDatabase::usr_to_{type,func_var} (#315)
* Use GetQuery{Type,Func,Var}IdFromUsr for querying usr_to_{type,func_var}

Instead of directly touching usr_to_{type,func_var}, use dedicated
methods to touch them for more abstraction around QueryDatabase.

* Use `Usr` as parameter for GetQueryVarIdFromUsr()

To maintain code consistency with other similar helpers.
2018-01-20 08:57:41 -08:00
scturtle
b8a3e089ce Response on index error. (#319) 2018-01-19 23:56:49 -08:00
Fangrui Song
57e95590e8 Remove GetIndexPosFromBufferPos range check 2018-01-19 23:23:52 -08:00
Fangrui Song
6c45663002 Support #include for textDocument/references 2018-01-19 21:11:03 -08:00
Fangrui Song
b305beb419 Address nitpicking 2018-01-19 19:05:26 -08:00
Fangrui Song
8f41aa72de Better error reporting in ResponseMessage 2018-01-19 15:33:32 -08:00
Fangrui Song
90c2a54bbc Better error reporting in ResponseMessage. Fix #317 2018-01-19 14:31:49 -08:00
Fangrui Song
8eff5e2e4f Add BaseIpcMessage::GetRequestId 2018-01-19 10:00:06 -08:00
Fangrui Song
5c43bd9a09 Remove IpcMessage 2018-01-19 01:06:02 -08:00
Fangrui Song
58aa00e6c8 Switch to {Request,Notification}Message 2018-01-19 01:01:56 -08:00
Fangrui Song
0e2b2cfb0c Switch to {Request,Notification}Message 2018-01-19 00:56:09 -08:00