Commit Graph

1183 Commits

Author SHA1 Message Date
Fangrui Song
273b670c0d Jump to the closest symbol and add more lsSymbolKind constants 2018-02-13 12:00:43 -08:00
Jacob Dufault
2fab426369 Optimize textDocument/definition for comments 2018-02-13 10:24:43 -08:00
Jacob Dufault
aae6f456de Fix crash in ClangCursor::get_arguments 2018-02-13 10:23:58 -08:00
Fangrui Song
72e654ffed Fix default -resource-dir when clang -print-resource-dir contains ..
Also makes textDocument/definition in comments takes scope resolution
into account, and use detailed names (for Func, without parameters) for workspace/symbol
2018-02-12 23:54:50 -08:00
Fangrui Song
10437aa642 Disable variable PrettyPrint #if CINDEX_VERSION >= 47 and allow trunk libclang in tests 2018-02-12 19:15:39 -08:00
Fangrui Song
ef5db9b3fe Move symbol related structs to symbol.h and add kind/role to textDocument/documentHighlight 2018-02-12 17:15:19 -08:00
Fangrui Song
de1e350c59 Role : uint8_t -> uint16_t; Add Read,Write to Role (#if CINDEX_VERSION >= 48)
Fix textDocument/documentSymbol
2018-02-12 10:15:43 -08:00
Fangrui Song
8a939389d8 Add fuzzy_match.h and let textDocument/definition search for the identifier at point (e.g. in comments) 2018-02-12 08:09:18 -08:00
Fangrui Song
afd38cbce9 Add Id<QueryFile> file; to Use and simplify query.cc 2018-02-11 20:43:54 -08:00
Fangrui Song
2d6fd4e240 Add UseWithFileId to work around textDocument/definition targets that reside in unnamed namespaces 2018-02-11 18:09:28 -08:00
Jacob Dufault
a90dc25c5a Add failing test for issue #443 2018-02-11 17:15:56 -08:00
Jacob Dufault
699cf4b506 Fix IndexUpdate::ToString 2018-02-11 17:15:08 -08:00
Jacob Dufault
886f6f4a2c Show doctest help if requested. 2018-02-11 17:14:45 -08:00
Jacob Dufault
35c407b2ac Don't parse version for json if there is no expected version. 2018-02-11 17:14:27 -08:00
Jacob Dufault
1d98797f26 Remove QueryDb_Handle
Code is harder to read and it doesn't belong in import_pipeline.cc.
2018-02-11 14:31:24 -08:00
Jacob Dufault
95872d36fd Remove some unused declarations 2018-02-11 14:17:03 -08:00
Jacob Dufault
079adea8ee NTString -> nt_string 2018-02-11 14:08:05 -08:00
Jacob Dufault
593ecd8f53 Rename Maybe::has_value to Maybe::HasValue to follow naming conventions 2018-02-11 13:56:34 -08:00
Jacob Dufault
95f6460e6e HasValue -> HasValueForMaybe_ 2018-02-11 13:49:44 -08:00
Jacob Dufault
b71cf25186 Query GetFileId returns Maybe<QueryFileId> 2018-02-11 13:42:48 -08:00
Fangrui Song
aee79b3617 variable_type -> type; remove parent_{id,kind} (they should be inferred from Def::spell; clean up SymbolIdx, Reference, SymbolRef 2018-02-11 10:28:26 -08:00
Fangrui Song
0f8734c416 Make NTString nullable 2018-02-11 09:12:22 -08:00
Fangrui Song
68c5c317f0 Fix build on MSVC
WIP $cquery/random
2018-02-11 01:17:03 -08:00
Fangrui Song
8ab45cb43d std::string {hover,comments} -> NTString (null-terminated string)
Typically, sizeof(std::string) = 32, sizeof(NTString) = 8
hover and comments are usually empty and thus wasteful to spend 24*2 bytes for them
2018-02-10 22:53:35 -08:00
Fangrui Song
e019968f51 Add lexical parent to Func 2018-02-10 20:30:27 -08:00
Fangrui Song
9a6cbafa04 Add lexical parent to Type/Var and definition_spelling->spell, definition_extent->extent 2018-02-10 20:23:46 -08:00
Fangrui Song
3ba9209eea Add config->extension.referenceContainer 2018-02-10 18:34:34 -08:00
Manny Schneck
d79a7a3fa1 Use MAKE_ENUM_HASHABLE to hash SymbolKind 2018-02-11 10:15:28 +08:00
Fangrui Song
420e84329b Derive SymbolRef,Use from Reference and add lexical container to func/var/type uses 2018-02-10 17:33:56 -08:00
scturtle
a50bff0b24 Make gcc happy. 2018-02-10 19:50:39 +08:00
Fangrui Song
bd4482df5e GetDefinitionSpellingOfSymbol: optional -> Maybe 2018-02-10 00:19:17 -08:00
Fangrui Song
749ecf0faa Add {Index,Query}Family to simplify template parameters 2018-02-10 00:06:45 -08:00
Fangrui Song
e7c90b62b5 $cquery/base for virtual void f() = 0 2018-02-09 23:12:34 -08:00
scturtle
1342522f2a Make CI happy. 2018-02-10 12:43:48 +08:00
Fangrui Song
c28426bbb4 Remove QueryLocation and clean up 2018-02-09 19:13:50 -08:00
Fangrui Song
50cf05763b Query* structs: QueryLocation -> Reference 2018-02-09 17:50:47 -08:00
Fangrui Song
aa125e34f3 Work around SIGSEGV and simplify SymbolIdx 2018-02-09 17:05:17 -08:00
Fangrui Song
95515643d8 Remove ToSymbol 2018-02-09 15:39:55 -08:00
Fangrui Song
c4bd7ef44b Rename Reference members 2018-02-09 14:12:35 -08:00
Chao Shen
c5f08c5eb8 Fix a bunch of stuffs in completion. 2018-02-09 20:51:59 +08:00
Fangrui Song
a131ccdcb4 Remove ToQueryLocation 2018-02-08 23:43:18 -08:00
Fangrui Song
67e8132dbe struct QueryFuncRef : Reference {}; 2018-02-08 23:10:54 -08:00
Fangrui Song
4bfb5a3586 struct IndexFuncRef : Reference {}; 2018-02-08 22:06:09 -08:00
Fangrui Song
82b429bfbc QueryLocation -> Reference 2018-02-08 21:26:34 -08:00
Fangrui Song
2d255da07b {Index,Query}Type::uses: Range/QueryLocation -> Reference
And add serialization for Reference
2018-02-08 18:26:09 -08:00
Jacob Dufault
5f85867f88 Scan root directory for includes 2018-02-08 15:27:53 -08:00
Fangrui Song
48a6f836ca Fix SymbolRole serialization and make it hashable 2018-02-08 12:24:48 -08:00
Fangrui Song
715fece4dd QueryLocation and QueryRef 2018-02-08 10:15:55 -08:00
scturtle
be1ed58fc5 Reuse isIncomplete.
Add -fno-limit-debug-info for debugging.
2018-02-09 00:55:39 +08:00
Fangrui Song
dbdab02ff4 Change is_implicit to role in {Index,Query}FuncRef
Add `FileId file` to *DefDefinitionData::Def
2018-02-07 23:27:35 -08:00
Fangrui Song
10c2843846 Add IndexLocation and add role to QueryLocation
IndexFuncRef should be deprecated in favor of IndexLocation
2018-02-07 19:10:39 -08:00
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