Jacob Dufault
1b2f5896dc
Use condition variables instead of sleeping.
...
While tricky to do because we have multiple queues, this reduces a lot of unnecessary delay. e2e time goes down from 10-15ms on average to 0-3ms on average. Loading from cache is also nearly instant on the cquery codebase.
2017-04-23 15:45:40 -07:00
Jacob Dufault
63908e3aa0
Renames
2017-04-23 14:24:06 -07:00
Jacob Dufault
7741991b72
Simplify threading model a bit.
2017-04-23 13:19:09 -07:00
Jacob Dufault
4f57b711bb
Remove some unused code
2017-04-23 13:02:41 -07:00
Jacob Dufault
967529f6ee
Remove support for out of process.
...
Eventually out of process will be reintroduced, but at a different level. The actual indexer/querydb will all run in-process. We will run the clang index out of process (and block the indexer thread while running).
2017-04-23 12:45:58 -07:00
Jacob Dufault
14aa4b77e4
Some formatting changes
2017-04-22 00:43:48 -07:00
Jacob Dufault
489f54e538
Remove most of libclangmm
2017-04-22 00:43:48 -07:00
Jacob Dufault
278eb0cd77
Better support for removing data from querydb
2017-04-22 00:43:48 -07:00
Jacob Dufault
44296471b9
Fix indexerCount evaluation
2017-04-22 00:43:48 -07:00
Jacob Dufault
734511f562
Compile fix
2017-04-21 10:00:36 -07:00
Jacob Dufault
406a2ec3fd
Add end-to-end performance reporting.
...
This lets us know exactly how long it took to run a particular request method, including internal message queue delays, etc.
2017-04-21 00:46:51 -07:00
Jacob Dufault
89e6b3cd43
Rename serialized output, update tests.
2017-04-21 00:04:56 -07:00
Jacob Dufault
bb25640d91
Rename instantiations to instances.
2017-04-21 00:03:33 -07:00
Jacob Dufault
bdd433abd4
Fix vscode complaining about overlapping text edits for rename
2017-04-20 23:56:42 -07:00
Jacob Dufault
1fcefb5262
Misc changes
2017-04-20 23:47:17 -07:00
Jacob Dufault
5ef4f55053
Fix code lens for variable instantiations
2017-04-20 23:46:53 -07:00
Jacob Dufault
11d6623938
Update WorkingFile indexed content correctly.
...
We copy the file contents we indexed over to the index cache folder. Then we load those file contents into the WorkingFile instance as needed.
This means code lens should never get out of sync, as the index buffer cache will always be correct.
2017-04-20 23:32:18 -07:00
Jacob Dufault
16dc2971a6
Automatically compute a good value for number of indexer threads to start.
2017-04-20 22:16:52 -07:00
Jacob Dufault
145bf87d70
Add 'cquery: Freshen Index' command.
...
This validates every file is indexed to its current state. It is very useful after, ie, a git checkout.
2017-04-20 21:50:31 -07:00
Jacob Dufault
ead75bb7a3
Force ctor usage on Index_DoIndex
2017-04-20 21:09:54 -07:00
Jacob Dufault
14b47de1db
Cleanup import pipeline, store arguments in indexed file.
...
We no longer store any runtime state (ie, file arguments) in project.cc; we store it and then query it from the cached index file.
2017-04-20 21:06:15 -07:00
Jacob Dufault
d1fe600fcf
Better goto-definition on constructors.
2017-04-20 17:27:21 -07:00
Jacob Dufault
2f691e5365
Fix compile error
2017-04-20 17:16:54 -07:00
Jacob Dufault
f25a603708
Implement GetLastModificationTime for linux
2017-04-20 09:47:24 -07:00
Jacob Dufault
7326b861ac
Simplify dependency management when updating index for a file.
2017-04-20 01:05:19 -07:00
Jacob Dufault
1f6da81009
Preserve dependencies across multiple index runs.
2017-04-20 00:53:33 -07:00
Jacob Dufault
4d9567a0c2
Fix reindexing for header files
2017-04-20 00:25:38 -07:00
Jacob Dufault
d83b1591a4
Serialized indexes are now versioned. Old versions are not imported.
2017-04-19 23:02:24 -07:00
Jacob Dufault
9338bcfd0e
Improvements to loading project.
...
- Don't reindex the file if the modification time has not changed.
- Import file dependencies before importing other files, which might be a full-on index operation.
2017-04-19 22:46:10 -07:00
Jacob Dufault
2780e18040
CompilationEntry -> Project::Entry
2017-04-19 22:01:36 -07:00
Jacob Dufault
b4fb350140
Include file modification time in index
2017-04-19 21:57:44 -07:00
Jacob Dufault
c60fae5abb
Fix import crash
2017-04-19 10:55:54 -07:00
Jacob Dufault
ea045499b6
When looking up symbols map buffer line to index line.
...
This makes editing experience a bit smoother, as you can goto definition before saving.
2017-04-19 00:52:48 -07:00
Jacob Dufault
20864e422a
Fix recursion when loading cache and indexing are both enabled.
...
Also added config options to disable indexing, disable cache writing, and disable cache reading from settings file.
2017-04-19 00:32:59 -07:00
Jacob Dufault
cbe308c0f9
Try to have better behavior when types are defined across multiple files.
2017-04-18 23:56:37 -07:00
Jacob Dufault
eb83ba26e1
Add sparsepp as a replacement for sparsehash
2017-04-18 22:45:54 -07:00
Jacob Dufault
cd50eb9e35
Positions are now 32 bits (down from 96ish)
2017-04-18 22:38:39 -07:00
Jacob Dufault
95b567838c
Remove concept of 'interesting' usage.
...
It never worked well enough. Showing variable instantations for the type will be more useful.
2017-04-18 22:28:33 -07:00
Jacob Dufault
3ce446d202
Do not output interesting usage.
2017-04-18 21:58:39 -07:00
Jacob Dufault
5b70982c04
Fix permissions when creating files on linux
2017-04-18 21:56:02 -07:00
Jacob Dufault
85734278d8
Misc fixes
2017-04-18 17:05:14 -07:00
Jacob Dufault
2e8e3d29c5
Indexer spelling lookup cannot fail
2017-04-18 16:49:55 -07:00
Jacob Dufault
121336c976
Fix build on OSX, update README.md
2017-04-18 10:21:53 -07:00
Jacob Dufault
c615535d33
vscode settings can now include an additional set of clang arguments to apply.
2017-04-17 21:06:01 -07:00
Jacob Dufault
2b6f4b7cdf
Enable configuration of max workspace search results.
2017-04-17 20:54:20 -07:00
Jacob Dufault
c86dd569c1
Enable configuration for the number of indexer threads.
2017-04-17 20:23:52 -07:00
Jacob Dufault
2d4b910836
Allow configuration of cache directory. Use a good default value as well.
2017-04-17 20:02:41 -07:00
Jacob Dufault
26c0bfe71d
Misc fixes
2017-04-17 13:40:50 -07:00
Jacob Dufault
7f4d902dcf
Add alternative compile_commands.json loader using rapidjson.
...
It may be faster than clang. I haven't tested it yet.
2017-04-17 00:06:01 -07:00
Jacob Dufault
5e8e13380d
First iteration of code completion off the main thread. Still one race condition but hopefully it shouldn't happen too often.
2017-04-16 18:22:59 -07:00
Jacob Dufault
c6dead848e
Remove some TODOs, reduce output sleep from 10ms to 2ms
2017-04-16 16:57:31 -07:00
Jacob Dufault
8e18e7a8ad
Add support for project filtering
2017-04-16 16:52:42 -07:00
Jacob Dufault
9d8c027cfb
Set thread names. Fix initialization race condition when not using shared memory.
2017-04-16 15:48:54 -07:00
Jacob Dufault
741e357053
Remove clang-c dependency from command_line.cc
2017-04-16 14:51:47 -07:00
Jacob Dufault
c0fb407447
Cross-process support can now be disabled.
2017-04-16 14:49:48 -07:00
Jacob Dufault
5105f41f6d
A little bit more IPC cleanup
2017-04-16 13:43:30 -07:00
Jacob Dufault
724d8cc3f4
Refactor ipc behind a proxy type so we can (eventually) bypass all serialization when running fully in-process.
2017-04-16 12:02:29 -07:00
Jacob Dufault
2ebaadd696
Small nits
2017-04-16 01:55:14 -07:00
Jacob Dufault
faa3cce185
Add a couple completion kinds.
2017-04-16 01:37:27 -07:00
Jacob Dufault
55f527b975
Spend time on indexer thread doing a higher quality IndexUpdate merge to reduce querydb import time
2017-04-16 01:31:28 -07:00
Jacob Dufault
04a855ebc7
Much better algorithm to sync code lens index locations to the right buffer location
2017-04-16 01:09:12 -07:00
Jacob Dufault
4dcffeb3f3
Use type safe google::dense_hash_map instantiations
2017-04-14 22:55:01 -07:00
Jacob Dufault
5109d27b87
Tons of renames (generally, Queryable -> Query, QueryableTypeDef -> QueryType, QueryableFuncDef -> QueryFunc, QueryableVarDef -> QueryVar)
2017-04-14 22:41:35 -07:00
Jacob Dufault
4135186ae2
Optimize MergeableUpdate so we don't do usr->id lookups when importing on querydb thread
2017-04-14 22:24:49 -07:00
Jacob Dufault
efcc498b79
Remove a couple stale TODOs
2017-04-14 22:15:47 -07:00
Jacob Dufault
1791f4c3b7
Refactor out FindSymbolsAtLocation
2017-04-14 22:14:05 -07:00
Jacob Dufault
c946fd1b8e
Simplify code for building detailed_name
2017-04-14 22:02:03 -07:00
Jacob Dufault
f4e16067b7
Rename qualified_name to detailed_name.
2017-04-14 21:58:07 -07:00
Jacob Dufault
07c984d6c7
- Add type information to qualified_name, remove hover.
...
- Allow tests to automatically update their expecatations
2017-04-14 21:53:10 -07:00
Jacob Dufault
349b982f66
WIP fuzzy search
2017-04-14 18:40:01 -07:00
Jacob Dufault
9826ff193b
Slightly better logging
2017-04-14 17:56:16 -07:00
Jacob Dufault
f263524b19
Fix another threading crash
2017-04-14 17:54:22 -07:00
Jacob Dufault
337c1f0b12
Fix multithread crash
2017-04-14 15:58:07 -07:00
Jacob Dufault
8f1e517c0a
Small tweaks
2017-04-14 15:30:33 -07:00
Jacob Dufault
031c0c2011
Include variable type and function signature in qualified name (better outline and workspace symbol search). Also add WIP rename provider.
2017-04-14 01:21:03 -07:00
Jacob Dufault
71d1b1ffc6
Implement textDocument/documentHighlight
2017-04-13 23:43:50 -07:00
Jacob Dufault
4f770befee
Support textDocument/hover (ie, hover over symbol to see type)
2017-04-13 22:18:02 -07:00
Jacob Dufault
fe0b5cb79c
Cleanup / simplify the querydb import code a little
2017-04-13 19:17:15 -07:00
Jacob Dufault
103b2dac95
Fix querydb import overriding good data with bad
2017-04-13 01:31:25 -07:00
Jacob Dufault
151505dadf
Add TODO to investigate index or import issue
2017-04-13 01:21:24 -07:00
Jacob Dufault
d6123bd861
Every function usage is now considered a call of that function.
...
This means we will now report function calls that happen in the global scope (previously, those would only show up for find all refs).
2017-04-13 00:47:47 -07:00
Jacob Dufault
7a429ed3e6
Fix global symbol search (was searching usr, should search qualified name)
2017-04-12 23:02:01 -07:00
Jacob Dufault
d5e5d96a9e
- Slightly more robust file parsing
...
- Make memory ownership slightly clearer in indexer
2017-04-12 23:01:42 -07:00
Jacob Dufault
94090b7b50
index stl declarations
2017-04-12 00:57:12 -07:00
Jacob Dufault
abbc6380f4
Fix indexing function call when there is implicit ctor call
2017-04-12 00:36:17 -07:00
Jacob Dufault
fdbb820d50
Fix outline and global search for pure virtual methods
2017-04-12 00:19:49 -07:00
Jacob Dufault
12a0db7d10
Don't call NormalizePath in core indexing logic; syscall dominates indexing time
2017-04-12 00:04:06 -07:00
Jacob Dufault
33c91de4c0
Fix goto definition on pure virtual methods
2017-04-11 23:41:19 -07:00
Jacob Dufault
e32adb1786
Fix 'Base' code lens on interface parent types
2017-04-11 23:30:31 -07:00
Jacob Dufault
7f4918ab15
Add "Base" code lens which jumps the editor to the base method definition.
2017-04-11 01:43:35 -07:00
Jacob Dufault
215a9a80fb
- Show code lens for calls to parent and derived methods
...
- Don't show local variables in global symbol search
2017-04-11 00:29:36 -07:00
Jacob Dufault
91febd7343
Make goto declaration work from on a recursively defined type when used inside the type definition
2017-04-10 23:02:53 -07:00
Jacob Dufault
c9a251b7ab
Goto definition intelligently jumps to declaration
2017-04-10 22:43:01 -07:00
Jacob Dufault
76b6a3d4fd
Store indexed dependencies so we can reload all files when restoring from cache. Also slightly improve goto definition source range
2017-04-10 22:26:27 -07:00
Jacob Dufault
e9f0c57708
Implement textDocument/references
2017-04-09 22:34:06 -07:00
Jacob Dufault
88e0d224e3
Still pretty clunky but sort of usable
2017-04-09 17:17:49 -07:00
Jacob Dufault
527439b7c2
WIP on updating index; locations still broken
2017-04-09 17:08:54 -07:00
Jacob Dufault
43ad87ab8d
Some delta tracking improvements. Still not perfect but probably good enough. Also hide refs that have been deleted in source code.
2017-04-09 15:16:06 -07:00
Jacob Dufault
6e90f8db45
Enable partial document change sync, use delta info to keep references/code lens in sync when editing
2017-04-09 12:38:52 -07:00
Jacob Dufault
3cd9ae4d16
Remove some duplicated code in workspace / document symbol creation
2017-04-08 19:48:50 -07:00
Jacob Dufault
96d5815641
cleanup code lens implementation
2017-04-08 19:31:00 -07:00
Jacob Dufault
5ebf4551b1
remove UsrRef
2017-04-08 19:27:07 -07:00
Jacob Dufault
6720a886e3
move some code out of command_line.cc
2017-04-08 19:24:32 -07:00
Jacob Dufault
c25fac0919
Make Resolve location never fail
2017-04-08 16:16:30 -07:00
Jacob Dufault
736b56d730
Remove string_db files
2017-04-08 16:12:14 -07:00
Jacob Dufault
56f0b3a90a
Auto-index header files
2017-04-08 15:54:36 -07:00
Jacob Dufault
460a428ced
Parse now returns a vector of unique_ptrs
2017-04-08 13:00:08 -07:00
Jacob Dufault
f0e8d0110c
Add call refs from ctor context
2017-04-08 11:36:32 -07:00
Jacob Dufault
eec863da9a
Small cleanup
2017-04-08 01:17:29 -07:00
Jacob Dufault
59c7d96ea7
Migrate QueryableVarDef to indicies
2017-04-08 01:07:39 -07:00
Jacob Dufault
fffb3d3fcc
Migrate QueryableFuncDef to indices
2017-04-08 01:04:38 -07:00
Jacob Dufault
64d65584fd
Use indexed ids for QueryTypeDef
2017-04-08 00:52:57 -07:00
Jacob Dufault
d61cc7a077
QueryableLocation now stores a file index
2017-04-08 00:21:00 -07:00
Jacob Dufault
74b1fe7194
QueryFile is now storing symbol indices directly
2017-04-08 00:11:57 -07:00
Jacob Dufault
4249fc4a38
Implement new threading model for computing index updates (prepare IdMap on querydb thread)
2017-04-07 23:45:28 -07:00
Jacob Dufault
22cc140d80
use sparsehash
2017-04-07 18:35:12 -07:00
Jacob Dufault
820a1dc093
compile-fixes
2017-04-07 17:34:13 -07:00
Jacob Dufault
6f071cfeb8
wip IdMap
2017-04-07 01:01:58 -07:00
Jacob Dufault
c5dc7a7ac7
wip towards id migration, use IdMap isntead of IdCache
2017-04-07 00:30:08 -07:00
Jacob Dufault
2d93ceb6db
simplify some code, remove unused class
2017-04-07 00:12:53 -07:00
Jacob Dufault
3368065d94
remove some default ctors
2017-04-07 00:01:21 -07:00
Jacob Dufault
590797bcf2
some renames and add plan for lower mem usage
2017-04-06 23:57:26 -07:00
Jacob Dufault
443ccd24b9
limit workspace result to 1000, fix workspace file search
2017-04-06 23:38:01 -07:00
Jacob Dufault
5d451e020a
rename indexer.cpp to indexer.cc
2017-04-06 23:31:29 -07:00
Jacob Dufault
6114b507e2
Drop Position support from indexer templates
2017-04-06 23:29:18 -07:00
Jacob Dufault
75b2db6dbf
misc
2017-04-06 23:21:16 -07:00
Jacob Dufault
5408540158
cleanup query location usage
2017-04-06 23:20:30 -07:00
Jacob Dufault
547ef3fc3d
simplify position part1
2017-04-06 23:10:17 -07:00
Jacob Dufault
69b1dcadaa
cleanup some query code to prepare for space optimizations
2017-04-06 22:42:57 -07:00
Jacob Dufault
d39d204891
wip
2017-04-05 19:04:58 -07:00
Jacob Dufault
dffbec25d0
wip string cache
2017-04-05 18:52:48 -07:00
Jacob Dufault
2f61e1b4f4
normalize path in -I flag
2017-04-05 18:12:29 -07:00
Jacob Dufault
ce736c84e0
misc-linux-fixes
2017-04-05 10:41:22 -07:00
Jacob Dufault
baa7d2c8cb
reenable serialize to/from tests
2017-04-05 01:30:19 -07:00
Jacob Dufault
17c3a8bf57
Update test with current index state
2017-04-05 01:29:15 -07:00
Jacob Dufault
e3058da622
Store range information in index
2017-04-05 01:06:18 -07:00
Jacob Dufault
ed8fc33cbe
add basic goto-definition, lots of edge cases (need range info)
2017-04-02 19:21:21 -07:00
Jacob Dufault
ae993d6446
wip
2017-04-02 18:34:15 -07:00
Jacob Dufault
cf6456c904
add basic index cache (useful for debugging)
2017-03-30 22:30:50 -07:00
Jacob Dufault
5e7008875d
unify project loading
2017-03-30 21:21:52 -07:00
Jacob Dufault
5b734e4c64
code dedup
2017-03-30 21:15:42 -07:00
Jacob Dufault
82596abc51
misc cleanup
2017-03-30 21:13:58 -07:00
Jacob Dufault
2a3ee89349
wip
2017-03-29 10:12:00 -07:00
Jacob Dufault
843a86a4a9
add asserts
2017-03-29 00:00:53 -07:00
Jacob Dufault
aef8e9267f
fix crash
2017-03-28 23:40:32 -07:00
Jacob Dufault
a19d4f732f
wip
2017-03-28 23:33:38 -07:00
Jacob Dufault
cf1012b98c
small fixes
2017-03-27 22:27:06 -07:00
Jacob Dufault
9ac960109f
wip
2017-03-27 19:35:27 -07:00
Jacob Dufault
4c601c4d37
wip
2017-03-27 18:47:12 -07:00
Jacob Dufault
a8a343420b
misc-linux-fixes
2017-03-27 18:04:37 -07:00
Jacob Dufault
876296d62f
more code completion work
2017-03-26 21:04:48 -07:00
Jacob Dufault
404b853d6f
code completion works (but is still blocking)
2017-03-26 14:40:34 -07:00
Jacob Dufault
7ffdf77b99
textDocument/open close edit, WIP code completion
2017-03-25 23:47:59 -07:00
Jacob Dufault
d3b9743040
wip
2017-03-25 18:37:16 -07:00
Jacob Dufault
cc85f196f4
never elide data for language server json serialization
2017-03-25 17:22:06 -07:00
Jacob Dufault
c8afc0f022
more changes
2017-03-25 16:58:11 -07:00
Jacob Dufault
8219a39a32
move some things into language_server_api.cc
2017-03-25 15:13:19 -07:00
Jacob Dufault
68938bc3df
renames
2017-03-25 14:57:06 -07:00
Jacob Dufault
a31ebb131c
further messaging cleanups
2017-03-25 14:45:49 -07:00
Jacob Dufault
5a2acf17ab
renames
2017-03-25 14:02:45 -07:00
Jacob Dufault
c4a9590398
fixes
2017-03-25 13:40:04 -07:00
Jacob Dufault
38acb8c1a1
move optional to third_party
2017-03-25 13:32:44 -07:00
Jacob Dufault
b6978b1a38
move platform init code to platform
2017-03-25 13:27:28 -07:00
Jacob Dufault
5d922a1e90
misc header cleanup
2017-03-25 13:24:42 -07:00
Jacob Dufault
695048baa7
move code into src
2017-03-25 13:15:00 -07:00
Jacob Dufault
c060e5178b
ipc cleanup
2017-03-25 12:18:25 -07:00
Jacob Dufault
17c3af4d40
make enum hashable
2017-03-24 18:01:41 -07:00
Jacob Dufault
539c779606
fix some warnings
2017-03-24 17:40:01 -07:00
Jacob Dufault
6a72712404
virtual dtor out-of-line
2017-03-24 17:40:01 -07:00
Jacob Dufault
4bdf8c825b
iwp
2017-03-24 00:59:47 -07:00
Jacob Dufault
0037a3e7f5
Add TypedBidiMessageQueue
2017-03-23 22:20:08 -07:00
Jacob Dufault
528d778d9a
osx compile files
2017-03-21 10:06:22 -07:00
Jacob Dufault
cd4d63dd9c
Small winapi fixes
2017-03-20 23:03:59 -07:00
Jacob Dufault
95f6a0df1c
more format
2017-03-20 22:51:34 -07:00
Jacob Dufault
95488507a0
format, doc cleanup
2017-03-20 22:51:16 -07:00
Jacob Dufault
e7390c14f1
Cleanup new MessageQueue impl
2017-03-20 22:40:14 -07:00
Jacob Dufault
4b609c7158
wip
2017-03-19 22:43:48 -07:00
Jacob Dufault
4bd284ee7e
Format
2017-03-19 15:08:36 -07:00
Jacob Dufault
4cec26ae12
WIP
2017-03-19 15:06:22 -07:00